Inspiration

Conservation researchers rely heavily on camera traps to monitor wildlife, but manual review of the resulting images is a massive bottleneck — studies show up to 70% of camera-trap images are "blank" false triggers (wind, rain, shifting shadows), and researchers can spend weeks sorting through thousands of photos before any real analysis begins. We wanted to build something that gives that time back.

What it does

TrapTriage is a platform that screens batches of camera-trap photos automatically. Upload a zip file of images, and it:

  • Runs Microsoft's open-source MegaDetectorV6 model to detect animals, people, or vehicles in each photo
  • Automatically filters out blank/false-trigger images
  • Flags low-confidence detections for a human to double-check, rather than silently guessing
  • Draws bounding boxes and confidence scores directly onto the images
  • Presents everything in a clean, live results dashboard — no manual sorting required

How we built it

We built this as a local Flask web app with a Python backend. The core detection is powered by MegaDetectorV6 (via Microsoft's PyTorch-Wildlife library), which we run locally using downloaded model weights. On top of that raw detection output, we wrote our own triage layer: a confidence-threshold system that decides what counts as a confirmed detection versus something that needs human review, a tallying system for summary statistics, and bounding-box rendering using PIL. The frontend is a custom-styled dashboard built with Flask templates.

Challenges we ran into

Getting a hosted demo tool to accept a batch upload turned out to be trickier than expected — we eventually traced a stubborn upload failure back to hidden macOS metadata files silently corrupting our zip archives. We also had to work around network restrictions that blocked direct access to hosted model weights, which led us to download the weights manually and run the model fully offline instead.

Accomplishments that we're proud of

Getting a real, working end-to-end pipeline — from raw image upload to a styled results dashboard — running entirely locally with no external API dependency, within a very tight build window.

What we learned

How camera-trap based conservation research actually works day-to-day, and how a small amount of automation (even just an off-the-shelf detector plus a thoughtful triage layer) can meaningfully reduce a real, well-documented workload for researchers.

What's next for TrapTriage

Adding species-level classification on top of animal/blank detection, batch trend tracking over time (sightings per week/month), and packaging this as a hosted tool that conservation groups could use without any local setup.

Built With

Share this project:

Updates

Submission history