2024 · Solo · hardware & Python
Feeder Watch
A Raspberry Pi camera that notices which birds visit our backyard feeder.
- Python
- Raspberry Pi
- OpenCV
- TensorFlow Lite
The problem
My mom and I keep a loose list of the birds that show up at our feeder, but most visits happen while we're at school or work. I wanted to know who was coming by when nobody was looking — and it seemed like a good excuse to learn a little about computer vision.
What I built
A Raspberry Pi 4 with a camera module sits in a weatherproofed box pointed at the feeder. A motion detector in OpenCV wakes up a small image classifier, which guesses the species and saves a cropped photo when it's confident.
Each evening it writes a short summary: which species came, roughly when, and the best photo of each. We read it at dinner more often than I expected.
- Motion gating keeps the classifier idle most of the day, so the Pi stays cool
- A pretrained bird model fine-tuned on about 1,100 of my own labeled photos
- Confidence threshold tuned to prefer missing a bird over naming the wrong one
- Logged 23 species over one winter, including a pileated woodpecker
Tech stack
- PythonCapture loop, logging, and the nightly summary script
- OpenCVBackground subtraction to detect motion near the feeder
- TensorFlow LiteSmall quantized classifier that runs on the Pi's CPU
- Raspberry Pi 4Plus a camera module and a lot of weatherstripping
What I learned
Real-world data is messy. The model was great on clean photos and confused by snow, shadows, and squirrels. Most of my time went into collecting and labeling better examples, not writing code.
I also learned to be honest about accuracy. It still calls some house finches purple finches, and I've written that down rather than hiding it.