Inspiration

Monterey Road in Coyote Valley, San Jose, has a wildlife problem. A VTA wildlife crossing is planned, but it isn't funded until about 2028-30. Until then, drivers have no warning when an animal is on or near the road.

What it does

Crossing-Watch is an interim warning prototype. A webcam on a Raspberry Pi 5 runs YOLO11n with OpenCV. When an animal is detected inside a road-side zone for 3 of the last 5 frames, the monitor shows a red ALERT and a status panel reads ANIMAL / NEAR ROAD / SLOW DOWN. Each event is logged to a CSV file. Optional Arduino LEDs can mirror the alert.

The model is trained on COCO, which has no deer or coyote classes. The screen says "animal," and the model's guess at the species is saved separately as a raw label, because those guesses are often wrong.

How we built it

  • Python, OpenCV, and Ultralytics YOLO11n (COCO-pretrained), run at imgsz 320 on a Raspberry Pi 5 at about 10.6 FPS
  • A polygon zone check and a 3-of-5-frame decision rule with a 5-second hold, covered by unit tests
  • CSV logging and an evaluation script run on recorded clips

Challenges

  • COCO has no wildlife classes, so species labels are unreliable. We report animal presence, not species.
  • Keeping the decision logic stable on a small device at low frame rate.
  • Live animals/props/pics for testing
  • Demo set-up

What we learned

Detection is the easy part. Keeping the output honest and the alert timing predictable matters more.

Accomplishments

  • Detection, zone logic, alert hold, and CSV logging working end to end on a Raspberry Pi 5
  • 4 of 4 recorded test clips triggered correctly with 0 false alarms

Limitations and next steps

This is a prototype and does not prove fewer collisions. The test set is 4 short clips, so the evaluation is preliminary. Next steps: longer recordings with measured false alarms, missed detections, and alert latency; a species-level model trained on local wildlife; and a field test on Monterey Road.

Built With

Share this project:

Updates

Submission history