Skip to content
back to the cosmos

Research that converges

Flood-GAN

A physics-aware GAN that translates all-weather SAR radar into optical-quality flood imagery at 1024×1024 — published research, with a dual-head generator that learns flood boundaries as water, not texture.

Floods do their worst under storm clouds — exactly when optical satellites go blind. SAR radar sees through cloud, but raw SAR is unreadable to the analysts who draw flood boundaries and route relief. The research question: can a model translate radar to optical-quality imagery faithful enough that the water in it is really water — not a convincing hallucination?

FID
28.4
at 1024×1024
PSNR
31.25
vs. ground truth
SSIM
0.94
flood-mask IoU
0.87
NDWI boundary
resolution
1024²
training
~200 GPU-h
tracked in W&B

the bar it had to clear

how it actually works

water maskphysics losssyntheticadversarial gradientSAR inputSentinel-1Augmentcrops · flips · speckleGeneratordual-head U-NetNDWI headwater index supervisionDiscriminatorreal vs. syntheticFlood map1024×1024 optical

hover or tab a step to see how it works — or trace a route above.

  1. 01

    Radar sees through clouds

    Synthetic-aperture radar penetrates cloud cover but reads as speckled intensity — useless to a human analyst without translation.

  2. 02

    Honest augmentation

    Augmentations preserve SAR speckle statistics — synthetic variety must not destroy the physics the model is meant to learn.

  3. 03

    Two heads, one truth

    Head one renders optical imagery; head two predicts NDWI water masks. Supervising on the water index injects physics into an otherwise aesthetic loss.

  4. 04

    Published resultFID 28.4

    FID 28.4 at 1024×1024 — with PSNR 31.25 and SSIM 0.94 against ground truth optical imagery.

see what the model sees

The generator translates radar to optical. Drag the handle: raw SAR speckle on the left, the mapped flood extent on the right.

SAR radaroptical flood map

Illustrative — drag to translate raw SAR speckle into the mapped flood extent (the water index the generator is supervised on). Real quality lives in the numbers above: FID 28.4 · PSNR 31.25 · SSIM 0.94.

the problem

Floods hide under clouds. Optical satellites can’t see through them; SAR radar can, but humans can’t read raw SAR. The task: translate radar to optical-quality flood imagery faithful enough to map flood boundaries — where a GAN’s natural instinct, to synthesize a plausible-looking picture, is exactly the failure mode to defeat.

the approach

  • A dual-head U-Net generator translates SAR to optical; the second head is supervised on NDWI (a water index), injecting physics into the loss — flood boundaries are learned as water, not texture.
  • A speckle-preservation term keeps SAR’s structural noise from being smoothed into false land; EMA weight averaging stabilizes adversarial training.
  • The discriminator’s confidence is the training signal made visible: it decays from near-certain toward 50/50 as the generator converges — equilibrium you can watch.
  • ~200 GPU-hours in Docker, every run tracked in Weights & Biases. FID 28.4 at 1024×1024; PSNR 31.25, SSIM 0.94.

the calls that mattered

Every architecture is a set of trade-offs taken on purpose. These are the load-bearing ones.

Give the generator a second head supervised on a water index (NDWI).

A single rendering head optimizes an aesthetic loss and will invent convincing texture. The NDWI head forces the network to predict where water physically is, so flood boundaries are learned as water and survive cloud and lighting.

the trade-offA multi-task loss to balance and NDWI ground truth to prepare — more supervision, to earn a physical faithfulness the adversarial loss alone will not give.

Penalize smoothing with a speckle-preservation term.

SAR’s structural noise carries signal; a generator left to minimize error alone smooths it into false, flat “land.” The speckle term keeps the radar physics intact end to end.

the trade-offSlightly noisier optical output than a pure-smoothing model — the honest trade, since the noise is where the water boundary lives.

Stabilize the duel with EMA weight averaging + a visible convergence signal.

GANs at 1024×1024 are notoriously unstable. EMA-averaged generator weights damp the oscillation, and the discriminator’s decaying confidence (near-certain → 50/50) makes convergence something you diagnose, not guess.

the trade-offEMA adds a shadow copy of the weights and a warmup before it helps — cheap insurance against a run that diverges after 150 GPU-hours.

what shipped

The model translates SAR to 1024×1024 optical flood imagery at FID 28.4, PSNR 31.25, and SSIM 0.94 against ground-truth optical — with flood boundaries that hold because they are supervised as water, not texture. Training reaches a stable adversarial equilibrium in ~200 GPU-hours, every run tracked in Weights & Biases and reproducible from a fixed config. Published research.

what’s next

  • Temporal input — a short SAR time series instead of a single frame, so rising vs. receding water becomes legible.
  • A calibrated uncertainty map beside each flood boundary, so responders see confidence, not just a line.
  • Distillation to a lighter generator for near-real-time inference on operational SAR feeds.

built with

PyTorchPyTorch LightningCUDADockerWeights & Biases