Inspiration
Floods are one of the deadliest and most frequent natural disasters on Earth. The 2022 Pakistan floods submerged one-third of the country and affected over 33 million people. What struck me most was that emergency responders struggled to get accurate flood maps quickly — optical satellites were blocked by clouds at the exact moment visibility was needed most. I wanted to build something that removes that bottleneck entirely, using radar imagery that sees through clouds and works in real-time.
What it does
FloodSense AI detects flooded regions at pixel level from Sentinel-1 SAR (Synthetic Aperture Radar) satellite imagery. A user uploads a dual-polarization VV+VH SAR image and the model returns a binary flood segmentation mask within seconds — highlighting exactly which areas are flooded. The interactive Streamlit dashboard displays confidence scores and a flood severity indicator, giving disaster responders actionable information fast.
How we built it
- Model: U-Net with ResNet34 encoder (segmentation-models-pytorch), pretrained on ImageNet and fine-tuned for binary flood segmentation
- Dataset: Sen1Floods11 — 446 georeferenced Sentinel-1 SAR chips covering 11 real flood events across multiple continents
- Loss Function: 50% Cross-Entropy + 50% Dice Loss with class weights to handle flood/non-flood imbalance
- Training: Mixed precision (AMP) on NVIDIA RTX 3050 Laptop GPU (4GB VRAM) with early stopping and learning rate scheduling
- Deployment: Streamlit dashboard with dark mission-control theme
Challenges we ran into
Training under a 4GB VRAM constraint was the biggest challenge. SAR imagery introduces unique speckle noise, gradual flood boundaries, and mixed pixels at water-vegetation interfaces — all of which make clean segmentation harder than standard image datasets. Class imbalance between flooded and non-flooded pixels required careful handling through weighted loss functions. Getting the combined Cross-Entropy + Dice loss to converge stably under mixed precision took significant tuning.
Accomplishments that we're proud of
Achieving a Macro Dice Score of 0.8941, Mean IoU of 0.8184, and Pixel Accuracy of 95.74% on the held-out test set — entirely on consumer laptop hardware — is what I'm most proud of. These are research-grade results obtained without access to cloud GPUs or high-end workstations, making the pipeline genuinely accessible to anyone trying to replicate or build on it.
What we learned
I deepened my understanding of semantic segmentation for remote sensing, the specific challenges of SAR imagery (speckle noise, polarization bands), and how to handle real-world class imbalance in satellite datasets. I also learned how to optimize a deep learning training pipeline for low-VRAM environments using AMP and gradient management — skills directly applicable to real-world deployment constraints.
What's next for FloodSense AI
- Multi-temporal input: Pre/post-flood SAR pairs to distinguish permanent water bodies from newly flooded land
- Cloud deployment: Docker containerization for public access without local setup
- Larger backbone: ResNet50 / EfficientNet at 512×512 resolution on higher-VRAM hardware
- Model explainability: Grad-CAM integration to visualize which regions drive predictions
- Real-time pipeline: Direct integration with ESA's Copernicus Open Access Hub for automated processing of new Sentinel-1 passes
Built With
- amp
- cuda
- fp16
- matplotlib
- numpy
- python
- pytorch
- rasterio
- resnet34
- scikit-learn
- segmentation-models-pytorch
- sen1floods11
- streamlit
- torchvision
- u-net
Log in or sign up for Devpost to join the conversation.