Read a SAR flood scene in five widgets.
No reading required. Every teaching point is a control you can move.
A Honduras-trained network — UNetRSMamba, a.k.a.
CS-Mamba — applied zero-shot to the
26 November 2025 Banda Aceh flood.
W1What is inside a single SAR tile?
Sample one 224² tile and see what's inside.
Each KuroSiwo-format tile directory packs 6 GeoTIFFs: VV + VH at three acquisition times — pre-event 1 (21 Oct, baseline), pre-event 2 (2 Nov, approach) and co-event (26 Nov, main flood scene). Press Sample to load a random tile from the …-tile Banda Aceh test split. Each click round-trips to the WSL box in ~1 s.



Three Sentinel-1 VV composites — the same scene, ~11 days apart. Each tile the model sees is a 224 × 224 px crop of these, stacking all 6 bands (VV + VH at each of the three dates). About 911 such tiles make up the Banda Aceh test split. When the GPU endpoint is online, the Sample button above will sample one at random and show its 6 bands.
Each tile is 6 GeoTIFFs: VV and VH polarisation at three acquisition times. Water scatters radar away (dark); built-up areas scatter it back (bright). The six channels stacked in this exact order are what every forward pass sees.
W2How does the clamp rescue — or kill — the prediction?
Drag the clamp, watch the model's view of Banda Aceh change.
Every bar is a VH backscatter bucket. Everything to the right of your clamp value gets clipped to the ceiling — identical to the model. Find the clamp that keeps the flood tail visible without drowning in speckle. This one runs entirely in your browser.
Banda Aceh's VH runs 5–8× brighter than the Honduras training mean. Clamp = ∞ lets the bright tail dominate gradients; clamp = 0.15 cuts into the flood signal and it vanishes. 0.30 is the sweet spot we ship.
W3What is actually inside CS-Mamba?
Click an encoder level. See its tensors, its block count, its job.
CS-Mamba is a U-Net where every block is a two-branch residual cell: a convolution for local speckle, a Mamba state-space scan for long-range water connectivity. Four encoder levels, mirrored by four decoder levels, skip-connected at each scale. 40.55 M params total.
# two-branch residual cell · shape preserved
x = x + conv_branch(x) # depthwise 3×3 → BN → GELU → 1×1
x = x + mamba_branch(x) # RSMamba: fwd + rev + shuffle, gated fusion
x = x + mlp(norm(x)) # LayerNorm → FFN Conv handles short-range speckle; Mamba scan propagates information along connected water bodies. real source ↗
Four encoder levels mirrored by four decoder levels with skip connections at every scale. Each block is a two-branch residual cell — convolution for local SAR speckle, Mamba scan for long-range water connectivity.
W4How did the 37-epoch run actually go?
Scrub through the 37-epoch run that produced the checkpoint above.
The inference you see on the case page is not magic — it comes from a specific checkpoint, saved at a specific epoch of a specific training run. Below is the real shape of that run: loss, per-class IoU, learning-rate schedule, and the exact epoch where the best weights were picked.
Note · The run is real: 37 epochs, best val at epoch 12, 79.79 % test mIoU with TTA. Per-epoch curve values below are an approximation that matches the three-phase summary in TEACHING_NOTES_BEST_MODEL.md. The full 37-row log ships at `public/sources/checkpoints/UNetRSMamba_FloodFocus2/`.
Three phases: A (1–6) learn "not water"; B (7–11) focal loss kicks in and Flood Recall leaps 25 → 81 %; C (12–37) plateau with precision drift. Best val at epoch 12. Test mIoU 79.79 % with TTA.
W5Why this architecture and not one of the four we tried first?
Five models. Same data. Click any row for the post-mortem.
Same KuroSiwo Honduras split (6322 train · 649 val · 911 test). Same FloodFocus loss. Five different architectures were trained to completion. CS-Mamba is lower on val than UNet but higher on test — the most instructive row is not the winner, it's that reversal.
CS-Mamba's val mIoU is two points below UNet's — but its test mIoU is four points above. The teaching point is not that CS-Mamba wins; it is that the val→test gap lies about generalisation.