Inspiration

The poles are melting, and it's easy to feel like there's nothing an individual can do about something that vast. But local pollution drives the same kind of ecological damage at a scale anyone can act on: microplastics leach into soil, wildlife chokes on litter, and glass left in dry terrain can spark wildfires through a lensing effect. We wanted to build something that makes that connection visible and actionable in the time it takes to point a camera at the ground. The polar bear became our mascot almost immediately — it's the most recognizable symbol of a warming planet, and we wanted PolarVision to feel like a small, concrete act of solidarity with it.

What it does

PolarVision turns a live camera feed into an ecological risk report. Point it at litter — a plastic bottle, a cigarette butt, a glass bottle, a can — and it draws a bounding box around each item in real time, tells you how long it takes to decompose, and calculates an ecological risk score. If it detects glass or metal that could start a wildfire through sunlight refraction, it raises a confidence-gated fire-risk alert. Every scan can be dropped as a pin on a shared cleanup map — red for fire risk, yellow for waste, green for confirmed-clean areas — so volunteers or local teams can see what needs attention. Once someone cleans a spot, they log how: cleaned it themselves, notified a volunteer team, or reported it to their municipality, closing the loop from detection to real-world action.

How we built it

The detection core runs a YOLO11 model fine-tuned on the TACO (Trash Annotations in Context) dataset, served through a FastAPI backend. Each detected class is mapped to a hand-built ecological risk table — decomposition time, risk level, and fire-hazard flag — which the backend uses to compute a per-scene risk score and trigger fire alerts. Report data (location, detected waste, risk score, cleanup status) is stored and served through a small set of REST endpoints. The frontend is a Next.js + Tailwind + Framer Motion app: a scroll-driven landing page introduces the project and its SDG goals with a custom-animated floating polar bear, leading into a live scanner (camera feed with detection overlays) and a Leaflet.js map with a dark CARTO basemap showing cleanup pins in real time.

Challenges we ran into

Finding a working detection model took real trial and error — general-purpose COCO-trained detectors completely miss litter like wrappers or cigarette butts, and an early pretrained weight turned out to be in an incompatible legacy YOLOv5 format our tooling couldn't load. Once we had a working TACO-trained model, we had to tune confidence thresholds, image size, and class-agnostic NMS to stop it from double-labeling the same object or missing small items in low-resolution frames.

Deployment turned into its own engineering problem. We moved from GPU inference locally to trying to serve the same model on free-tier cloud hosting, and ran head-first into the real cost of running a vision model without a GPU: our first deploy died with an out-of-memory kill during model warm-up on a 512MB free instance. We fixed it by lazy-loading the model on first request instead of at startup, pinning PyTorch to a single thread, and switching to the CPU build of torch — turning a hard crash into a controlled, predictable memory footprint. We also had to design around an honest model limitation: our detector can't reliably distinguish glass from plastic bottles, so our fire-risk logic treats bottle detections as a confidence-gated probabilistic alert rather than a false certainty.

Accomplishments that we're proud of

We're proud of shipping a complete, working pipeline in a week — live camera detection, ecological risk scoring, a fire/safety alert system, and a persistent cleanup map with a community-reporting workflow, not just a demo detector in a notebook. We're especially proud of designing the risk system to be honest about model uncertainty instead of overclaiming, and of debugging our way through a real production memory constraint instead of just throwing more hardware at it.

What we learned

We learned how much of an ML product's real difficulty lives outside the model itself — dataset licensing and format compatibility, memory-constrained deployment, and the gap between a model's training distribution (litter photographed outdoors, on the ground) and real-world test conditions all shaped our results as much as the model architecture did. Debugging an out-of-memory crash on a free CPU instance taught us more about how PyTorch actually allocates memory than any tutorial had. We also learned to design for a model's blind spots rather than hide them — turning "the model isn't sure if this is glass" into a feature (a graded alert) instead of a bug.

What's next for PolarVision

Next, we want to fine-tune further on user-submitted and self-captured field photos to close the gap between TACO's training distribution and real outdoor conditions, and add on-device or edge inference so the scanner works offline in remote natural areas. We'd like to open the cleanup map to real volunteer organizations and municipalities as an actual reporting channel, add a lightweight verification step (before/after photos) for marked-clean pins, and extend detection to e-waste and larger dumping sites. Longer term, we see PolarVision as a crowdsourced environmental monitoring layer — not just for litter, but for tracking cleanup impact over time in the places most affected by a warming climate.

Built With

Share this project:

Updates

Submission history