Local package detection is a good edge-AI project
Somebody's porch camera caught the whole thing on video, perfectly timestamped, and nobody was watching when it mattered.
That camera had spent weeks firing a notification for every delivery van, every cat, and a plastic bag doing cartwheels in the wind, until the household learned to swipe every alert away unread. A narrow, bounded detector fixes exactly that: it earns back your attention.
Small-board AI gets bad advice from both directions: treat a Raspberry Pi or Orange Pi like a shrunken gaming PC, or write off the whole category for not talking like a frontier model. Package detection, run from a doorbell or porch camera wired into Frigate or a small vision worker, sits in the gap between those two takes: narrow and visually distinct enough for a small, specialized model, with a household workflow simple enough that the board doesn't need headroom for anything clever. It needs to recognize one thing reliably and hand the decision to ordinary code, inside a real appliance: power, cooling, storage, an OS, radio or accelerator support, and whatever service uses the result.
The job is four lines, not a shopping list
Write the event, the input, the output, and the deadline in four lines. "Add AI to the camera" is a wish, not a spec. "A parcel sits in the porch zone long enough to be gone, so it fires one local notification with a thumbnail" is testable, and you'll know exactly when it's wrong.
That does double duty: it defines the delivery zone, gathers day and night examples, and works out how to debounce repeat detections into one event, while showing what needs no model: a timer, a zone boundary, a state machine. Test against your own porch, light, and network, because edge deployments amplify what's ordinary more than a newer model ever will.
Before you trust any of it, write down what actually happened, not what the demo suggested:
- board, OS, power supply, and cooling in use
- model file and runtime version behind the result
- real footage next to the action you expected
- cold-start latency, warm latency, sustained rate
- memory, temperature, and power draw
- false alerts, missed ones, and how it recovered
None of that is about accuracy alone. A household feature has to survive a reboot, reconnect once the network returns, avoid repeating a notification, and fail in a way you can see and work around, with a manual override. Nobody should have to know which container crashed just to turn on a porch light.
Nothing important should run through the model
The opening story names the common failure: a detector that fires on any box-shaped object anywhere in frame is barely better than one that fires on nothing at all. A model that interprets a scene, summarizes an event, or ranks a few options is doing something useful; handing it sole custody of a lock, a heater, an alarm, a valve, a battery, or a person is a different, and wrong, call. Put ranges, permissions, timeouts, confirmations, and interlocks in deterministic code, underneath whatever the model decides. Camera text, calendar entries, a webpage, an MQTT payload, a voice transcript: all of it is untrusted data, never an instruction, until something boring checks it first.
The camera stops recording, the data doesn't
Running the model on your own hardware solves one privacy problem: the frame never gets uploaded for inference. It solves nothing else. The recording, the event log, the thumbnail, the backup, the dashboard reachable from your phone: each is a copy, outliving the decision it was made for. Decide on purpose what gets kept, how long, and who can reach it later, including you, mid-debug, at midnight. The most private frame is the one the camera never takes. The next best is thrown away the instant the decision gets made.
Make it boring enough to trust
Run the detector under a service manager or a small, pinned container, not a terminal window somebody left open. Keep configuration separate from the model file, and write a health check that proves the function works, not just that a process holds a port open. Back up the controller state and record which model hash produced which behavior, with a known-good storage image ready for a board wedged behind a router.
Power and heat belong in the acceptance test, not an afterthought. Let the enclosure reach its real operating temperature, then measure current draw at the wall with the peripherals attached. If the board throttles, swaps, corrupts storage, or steals cycles the house needs elsewhere, the project isn't finished, whatever the bench number said.
The rule that holds up: combine location, timing, and persistence before anything counts as an alert, not just a box somewhere in frame. Edge AI earns its place as a narrow layer above sensors you trust and below a household policy you understand. When the model goes down, whatever it protected should get simpler and keep going, not stop cold.
None of this proves a cheap board can run a model; that part was never in doubt. It proves you can build one small capability that still works once the novelty wears off and the board disappears behind a router nobody looks at again. Before calling it done, unplug the network for a few minutes, walk away, and see whether the notification shows up once the connection returns. If it doesn't, you haven't shipped a doorbell feature. You've shipped a demo that lives near your door.