-
-
FLOODPRINT turns community flood reports into early warnings for Port Harcourt.
-
How it works: Observe, analyse, verify, remember, predict, alert.
-
DBSCAN clusters nearby reports into emerging flood hotspots.
-
Results: Flood Vision reaches 0.87 flood recall; the risk model’s limits are reported openly.
-
Flood Memory: Each neighbourhood keeps its flood history after the water is gone.
-
Model Evaluation: the risk model is tested on later years and compared with a seasonal baseline.
-
Flood Vision is the AI that classifies a flood photo and shows its confidence. It never verifies a report on its own.
Inspiration
Every rainy season, the same streets in Port Harcourt flood. Weather apps tell me it will rain, but not which roads are under water or which neighbourhoods flood every year. I built FLOODPRINT so the city remembers where the water goes
What it does
Residents report floods with a photo. Flood Vision classifies the photo, and an admin verifies the report. FLOODPRINT maps the reports, finds hotspots, keeps each neighbourhood's flood history, and estimates risk from live rainfall.
How I built it
I wrote it in Python with Streamlit, SQLite, scikit-learn, PyTorch and Folium.
- Flood Vision: a frozen OpenCLIP ViT-B/32 encoder with a logistic-regression head, $P(y=k \mid x) = \operatorname{softmax}_k(Wz + b)$. I trained it on 1,562 human-verified Open Images photos. In 5-fold cross-validation it reached 0.90 accuracy and 0.87 flood recall.
- Risk model: a Random Forest trained on NOAA rainfall from 102 West African weather stations, labelled with 186 recorded large floods. It estimates the chance of a flood in the next 7 days.
- Hotspots:DBSCAN clustering on haversine distance, $\varepsilon = 450$ m.
Challenges
The risk model is modest. On test years it reached ROC-AUC 0.76, below a simple seasonal baseline at 0.80, and I report that openly. Many data hosts were blocked while I was building, so I sourced public data from GitHub and AWS S3 instead.
What I learned
Always compare against a baseline. Label quality matters more than model choice. Showing uncertainty clearly builds trust.
Built with help from Claude Code (Anthropic).
Built With
- clip
- computer-vision
- dbscan
- folium
- joblib
- leaflet.js
- machine-learning
- noaa-gsod
- numpy
- open-images
- open-meteo
- openclip
- pandas
- pillow
- plotly
- pytest
- python
- pytorch
- random-forest
- scikit-learn
- sqlite
- streamlit
- xgboost
Log in or sign up for Devpost to join the conversation.