Project OpenEye
ML visual geolocation that won HackKentucky Grand Champion.
Role: ML + full-stack (team of 3)

Overview
A full-stack ML demo that takes a photo shot on the University of Louisville campus and predicts the exact latitude/longitude it was taken from. EXIF GPS is preferred when present; otherwise a fine-tuned ResNet152 regresses coordinates from pixels alone. Built end-to-end over a single weekend and won Grand Champion at HackKentucky (KY Combinators).
Highlights
- Fine-tuned ResNet152 regressor outputs normalized (lat, lon) projected into the campus bounding box.
- Median localization error ~70 m (best ~17 m) across held-out, ground-truth test photos.
- Flask + PyTorch inference backend with a Next.js / React / Mapbox frontend.
- Reproducible validation notebook and 15 ground-truth test images committed to the repo.
How it works
A user uploads an image on the /search page. The Flask backend reads EXIF GPS via piexif; if valid GPS falls inside the UofL campus box, those coordinates are returned directly. Otherwise the image runs through the fine-tuned ResNet152, which outputs normalized (lat, lon) in [0,1]² that is projected back into the campus bounding box. The frontend renders a Mapbox map, drops a marker, and reverse-geocodes an address.
Honest limitations
A hackathon prototype: the model was trained on a small hand-collected campus dataset, so out-of-distribution inputs still resolve to a point inside the box. Trained weights (~236 MB) are not distributed in the public repo. An experimental OSINT panel that called an LLM from the browser was intentionally left inert for security.