Earth observation / Research experiment
TerraMind Flood Mapping
Test whether extra, automatically labelled radar images improve flood segmentation.
- My contribution
- I built the staged fine-tuning and evaluation pipeline around the existing TerraMind backbone: weak-label pretraining, encoder extraction, a fresh decoder, and evaluation on two splits.
- Tools & methods
- TerraTorch · TerraMind · Sentinel-1 SAR · UNet
The problem
What this project investigates
Flood mapping needs to work when cloud obscures optical imagery. This experiment uses Sentinel-1 radar and asks whether plentiful but noisy training labels help when hand-labelled examples are scarce.
The build
What I built
A TerraTorch pipeline adapts TerraMind Large to flood segmentation on Sen1Floods11. A direct fine-tune on hand labels is compared with weak-label pretraining followed by a second fine-tune. Bolivia is held out to test performance on a different flood event.
Evaluation
More labels did not improve this recipe.
Flood-class intersection over union (IoU) measures overlap between predicted and labelled flood regions. Higher is better. These values are reported in the existing project write-up; the training logs are not part of this portfolio repository.
| Evaluation split | Hand labels only | Weak pretrain + fine-tune |
|---|---|---|
| Official test · 90 chips | 0.653 | 0.647 |
| Bolivia holdout · 15 chips | 0.598 | 0.541 |
The Bolivia result fell from 0.598 to 0.541. The additional weak labels did not translate into better generalisation in this comparison.
The official-test difference is small; the write-up supplies no repeated-run uncertainty estimates. The Bolivia result covers one held-out event, so it should not be generalised to every geography.
Implementation
Two training stages. Two evaluation splits.
- Prepare the data
Use 4,160 automatically labelled chips and the official hand-labelled splits: 252 training, 89 validation and 90 test. Keep 15 Bolivia chips separate.
- Pretrain with weak labels
Train the encoder–decoder on Otsu-derived masks, selecting the checkpoint against clean validation labels.
- Extract and fine-tune
Extract the encoder weights, attach a fresh UNet decoder and fine-tune on the hand-labelled training set.
- Evaluate both splits
Compare with direct fine-tuning on the official test split and the Bolivia holdout.
Technical choices
Decisions behind the build
Separate the test questions
The official test split measures performance within the dataset split. The Bolivia holdout probes generalisation to an event excluded from training.
Use clean validation labels
Weak pretraining uses automatically generated Otsu masks, but checkpoint selection uses hand-labelled validation data.
Restart the decoder
The second stage takes the pretrained encoder and a fresh UNet decoder, then fine-tunes on the hand-labelled training split.
Current status
What the evidence shows
The published write-up reports slightly lower official-test IoU after weak pretraining and a larger drop on Bolivia. More labels did not improve this recipe. Label bias is a possible explanation, not an established cause.
Further work & evidence gaps
Sentinel-2 fusion, frozen-encoder variants and a live tile-selection demo are listed as future work. They are not delivered features of this prototype.