Judge access

  • Live demo: https://floodsight.calmcliff-1848a7e4.eastasia.azurecontainerapps.io
  • Access code for new analyses: smiles-trishuli
  • The finished analyses (Trishuli case study, Crete, Buner, Sri Lanka, Slovenia) and the offline demo open without a code.
  • Each connection can run 5 new analyses on our account. After that, enter your own free Copernicus Sentinel Hub client ID and secret under "Use my own Copernicus keys" (the access code is still needed). We never ask for passwords.
  • The first visit after a quiet period takes 1–3 minutes to start; a new analysis takes about 5–10 minutes.

Inspiration

In August 2026 a flash flood tore through the Trishuli valley in Nepal. In the first hours after a disaster like this, rescue teams need three answers fast: where are the water and debris, what is damaged, and which villages have lost their road to a hospital? Monsoon clouds hide optical satellites, mountains distort radar, and debris is much harder to see than open water. We study at IIT Mandi, in the Himalayan foothills, where floods and landslides come with every monsoon. We wanted a tool that answers those three questions from free satellite data, for any area and date, and is honest about what it cannot see.

What it does

You draw a box on the map and pick a flood date. From raw Copernicus data, FloodSight produces:

  • A flood and debris map. Every detection is labelled confirmed (two independent sources agree), possible (one source) or unknown (the radar could not see it). Nothing undetected is ever called safe.
  • Damage: buildings, roads and bridges hit, from the OpenStreetMap as it was before the event.
  • Cut-off villages: which settlements lost every road route to a hospital, with travel times, a "who to reach first" list and nearby helicopter landing candidates.
  • A flow path: click any point upstream, such as a glacial lake, to see where water would go and which villages, hospitals and bridges lie along the river.
  • A one-page situation report in English, and in Nepali for areas in Nepal, plus CSV and GIS files.

On the Trishuli case study, 96% of what FloodSight flags is damaged on the official Copernicus EMS map, 98% of the road length it closes is confirmed damaged, and it finds 28 settlements cut off from a hospital.

How we built it

  • Raw radar processing: Sentinel-1 Level-1 GRD image pairs from the same orbit track, before and after the flood (VV and VH). Our own chain removes thermal noise, calibrates and corrects for terrain; by default the same steps run on the Copernicus Data Space servers.
  • Terrain: from the Copernicus DEM we compute slope, height above the nearest river (HAND), radar blind spots and a published mountain mask, so water is only accepted where it can physically pond.
  • AI: a Siamese U-Net (ResNet-34) trained on the Kuro Siwo dataset, split by flood event so no test flood was ever seen in training. It compares the before and after images to find new flood water.
  • Physics rules detect debris, which the training data does not label, and Sentinel-2 adds a second sensor where the sky is clear.
  • Fusion by independent evidence: agreement between the AI, the second radar track or Sentinel-2 raises confidence. There are no tuned weights.
  • Cut-off analysis: a road network extended 15 km beyond the area, with shortest routes to hospitals before and after the damage.
  • Stack: Python, PyTorch, FastAPI and React, with 165 automated tests, deployed as a container on Azure.

We report three scores against the reference map:

$$\text{Precision} = \frac{TP}{TP + FP}, \qquad \text{Recall} = \frac{TP}{TP + FN}, \qquad \text{IoU} = \frac{TP}{TP + FP + FN}$$

where $TP$ is the area both maps mark as damaged, $FP$ the area only we mark, and $FN$ the area only the reference marks. On flood events the model never trained on, the AI raises IoU by $+0.17$ over the radar rules alone (0.653 vs 0.479). It was kept over eight alternatives by a rule we fixed before training any of them.

Challenges we ran into

  • Debris in narrow valleys. Fresh debris on an already rocky riverbed barely changes the radar signal, and many damaged strips are only 1–3 pixels wide. Our recall in the Himalaya is 48% (Trishuli), and 34% and 10% (Buner). We report this openly rather than tuning the case study to look better.
  • An AI that never saw mountains. Its training floods have almost no steep ground, while Trishuli is 82% steep. We kept the AI for what it is good at, water, and let physics handle debris.
  • Bugs that only real data revealed. A track-merge overflow let a blind radar track overwrite one that could see, and at first "confirmed" debris was less precise than single-source debris. We fixed both, re-ran everything, and logged the old and new numbers.
  • Free-tier limits and deployment: rate-limited map services, processing-unit budgets, and a missing system library in the cloud container, which we caught while testing the live site.

Accomplishments that we're proud of

  • A full chain from raw satellite data to "which village needs help first", working for hills and plains with the same settings.
  • Blind tests decided before running them: a 2026 flood in Crete, a Himalayan flash flood in Pakistan, a never-used Kuro Siwo event, and a second dataset (Sen1Floods11).
  • Confidence labels that mean something: on the blind tests, confirmed detections were 60–94% precise, against 2–54% for single-source ones.
  • A public tuning log, where every setting is dated together with the data used to choose it.

What we learned

  • A high score means little unless you know which data chose the settings. Splitting by flood event and fixing tests in advance changed how we work.
  • For a responder, saying "we don't know here" is more useful than a confident wrong map.
  • Debris and water are different problems. One model cannot do everything, and physics is still a strong partner to AI.

What's next for FloodSight

  • Radar coherence (Sentinel-1 SLC) to see debris that brightness alone misses.
  • Debris-labelled training data, and Sentinel-2 inside the network.
  • Before-images from the same season in earlier years, so seasonal change is not mistaken for damage.
  • Testing with local disaster agencies, and more languages for the situation report.

Built With

Share this project:

Updates

Submission history