CYGNSS–SAR Daily Flood Mapping at 90 m Resolution
This repository contains pre-trained model weights for the flood mapping framework described in:
Daily Flood Mapping at 90 m Resolution Through Physically-Constrained CYGNSS–SAR Fusion Gauthier Malandrin, Cynthia Gerlein-Safdi IEEE Transactions on Geoscience and Remote Sensing, 2026 (under review)
Code and inference scripts: github.com/gauthiermalandrin1903/cygnss-sar-flood-mapping
Overview
The framework bridges the spatio-temporal trade-off between SAR and GNSS-R flood mapping by learning to downscale daily CYGNSS observations from ~1 km to 90 m resolution, using Sentinel-1 SAR acquisitions from adjacent dates as spatial anchors, conditioned on MERIT Hydro topographic variables.
Key results:
- IoU = 0.703 on 3,647 test tiles spanning 7 flood-prone regions (2019–2025)
- Outperforms SAR-only state of the art (IoU = 0.67, Misra et al. 2025)
- Calibrated uncertainty estimates via conditional diffusion model (ECE = 0.073)
Model Files
| File | Size | Description |
|---|---|---|
checkpoints/best_model_final_vv.pth |
121 MB | Temporal U-Net (10.55M parameters) |
checkpoints/best_model_diffusion.pth |
27 MB | Conditional diffusion model (1.1M parameters) |
model/norm_stats.json |
1 KB | Z-score normalization statistics |
Quick Start
from inference.predict import FloodPredictor
predictor = FloodPredictor.from_pretrained() # downloads weights automatically
flood_map, prob_map = predictor.predict(
sar_a="path/to/s1_A.tif",
cygnss_b="path/to/cygnss_B.nc",
sar_c="path/to/s1_C.tif",
merit_dir="path/to/merit_hydro/",
region_bbox=(lon_min, lat_min, lon_max, lat_max)
)
Citation
@article{malandrin2026flood,
title={Daily Flood Mapping at 90 m Resolution Through
Physically-Constrained CYGNSS--SAR Fusion},
author={Malandrin, Gauthier and Gerlein-Safdi, Cynthia},
journal={IEEE Transactions on Geoscience and Remote Sensing},
note={Under review},
year={2026}
}
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support