Irrigation canals mapped from Sentinel-1 and Sentinel-2

A U-Net maps canals and roads at 10 m from free satellite images. This page shows the test scores and a set of example chips.

What the model does

The goal is a map of irrigation canals: main canals, laterals and ditches. Roads are a second output class. A lined canal next to a road looks much like the road at 10 m, so the model learns roads to keep them apart from canals.

Each input chip is 256 by 256 pixels at 10 m, so 2.56 km on a side. The model sees 12 bands. Eight come from Sentinel-2 (blue, green, red and near infrared), as two 2024 median composites from Fields of the World: one from the planting season (window A) and one from the harvest season (window B). Four come from Sentinel-1 radar (VV and VH backscatter), as medians over January to June and July to December 2024.

The model is a U-Net with an EfficientNet-B3 encoder. The labels come from OpenStreetMap, national canal layers and the project's own review. A reviewer checked each chip and marked whether its canal and road labels were complete. The primary model, combo_tta__canal3_tta, combines several networks. Three networks trained on canals alone decide the canal pixels. An ensemble of four networks trained on canals and roads decides the road pixels. Every network also sees the image flipped three ways, and the outputs are averaged.

The score is the relaxed F1. Both the true and the predicted canals are thinned to one pixel wide lines. A predicted line pixel counts as correct when a true canal lies within 2 pixels (20 m), and a true pixel counts as found when a predicted canal lies within 2 pixels. Precision is the share of predicted canal that is correct. Recall is the share of true canal that is found. F1 is their harmonic mean. Plain pixel overlap (IoU) treats a one pixel shift of a one pixel wide canal as a total miss, so it is shown only for reference.

The test chips sit in 0.5 degree blocks that never appear in training or validation.

Results

Primary model on the test chips

193 test chips in 23 regions, 95 of them in Peru.

0.537canal relaxed F1
0.539canal precision
0.535canal recall
0.245canal pixel IoU
0.526road relaxed F1
0.242road pixel IoU

Road precision is 0.477 and road recall is 0.586. Mean per-chip canal score by region, from the experiment log: Peru, half the test chips, 0.51; Fergana 0.86, Sindh 0.84, the Nile Delta places 0.82 to 0.87. France, Spain and the Jezreel Valley score near zero or low, because their official ditch layers hold channels narrower than a 10 m pixel.

Training data snapshots

The training set grew as chips were reviewed. Each snapshot froze the chips used for a round of runs. Runs on different snapshots are scored on different test chips, so their scores are not directly comparable.

snapshotchips usedtrain / val / test
A, 2026-11-01 midday342 (trainable, plus 17 canal-only)249 / 60 / 33
B, 2026-11-01 evening694 (plus 73 canal-only and 176 fields-ignored)467 / 99 / 128
C, 2026-11-01 night1,039 (all three kinds)716 / 143 / 180
D, 2026-11-02 morning1,046 (653 trainable, 178 canal-only, 215 fields-ignored)717 / 146 / 183
E, 2026-11-02 afternoon1,134 (709 trainable, 203 canal-only, 222 fields-ignored)768 / 169 / 197

Learning curve

The canal-only recipe was trained on 25, 50, 75 and 100 percent of the snapshot E training chips, with two seeds each. A smaller share is a subset of every larger one. The score is canal relaxed F1 on the same 193 test chips.

0.350.400.450.500.5525%50%75%100%seed 7: 0.418seed 8: 0.380mean: 0.3990.399seed 7: 0.472seed 8: 0.490mean: 0.4810.481seed 7: 0.519seed 8: 0.519mean: 0.5190.519seed 7: 0.529seed 8: 0.529mean: 0.5290.529share of snapshot E training chipscanal relaxed F1

Line and large dots: mean of two seeds. Small gray dots: each seed.

share of training chipsseed 7seed 8mean
25%0.4180.3800.399
50%0.4720.4900.481
75%0.5190.5190.519
100%0.5290.5290.529

The curve flattens: 25 to 50 percent adds 0.08, 75 to 100 percent adds 0.01. The 75 percent seed 8 run was scored on 200 test chips, not 193.

Wet and dry season inputs

A canal holds more water in some months than in others, and a road never does. This test added Sentinel-2 medians of the wettest and the driest three months of each chip (green, red, near infrared and shortwave infrared) to the canal-only model. The score is canal relaxed F1 on 193 test chips.

inputsseed 7seed 8mean
S1 plus S20.4920.4710.482
plus wet and dry season S20.4990.5060.503
plus season S2 and water indices0.4960.4970.497

The season bands add about 0.02 canal F1. The two S1 plus S2 seeds differ by 0.021, so the gain is no larger than the seed spread. The season bands were not adopted.

Snapshot F

Snapshot F added about 350 reviewed chips to snapshot E. The table gives canal relaxed F1 on both test sets. Runs named r5 were trained on E, runs named r8 on F.

runF test (232 chips)E test (193 chips)
r5canal_ctx80_s1s2 (E)0.5370.529
r5canal_ctx80_seed8_s1s2 (E)0.5360.529
r8canal_ctx80_F_s70.5400.529
r8canal_ctx80_F_s80.5400.528
r8canalroad_ctx80_F_s70.5290.517
r8canalroad_ctx80_F_s80.5410.531

The F models match the E models on both test sets, so the 350 chips added since E did not raise canal F1.

One model for canals and roads

The r8canalroad runs in the table above learn canals and roads together. The canal plus road model keeps canal F1 within seed noise and adds roads at relaxed F1 0.553 and 0.561 on the F test. In the seed 8 run, 11.0 percent of canal pixels are predicted as road and 10.3 percent of road pixels as canal.

Road veto on the primary model

The canal-only networks never see roads, so some of their canal calls fall on roads. This test drops a canal call wherever the canal and road ensemble gives road a probability above a threshold. Scores on the 193 test chips. "Canal as road" is the share of true canal pixels predicted as road. "Road as canal" is the share of true road pixels predicted as canal.

road veto abovecanal precisioncanal recallcanal F1canal IoUcanal as roadroad as canalroad IoU
none0.5390.5350.5370.2450.0790.1980.242
0.30.5420.4720.5050.2190.1550.1180.258
0.40.5410.4960.5170.2300.1280.1410.255
0.50.5400.5100.5250.2360.1100.1590.252
0.60.5380.5210.5300.2390.0990.1720.249

Canal recall falls at every threshold, while canal precision moves by less than 0.004, so canal F1 falls. The primary model has no veto.

Canal errors on natural water

A false canal pixel is a predicted canal pixel that is not labeled canal. The table gives the share of the primary model's false canal pixels on each kind of ground. Rivers, streams, lakes and wetlands come from OpenStreetMap.

where the false canal pixels lieall test chipsPeruother regions
river0.0230.0170.045
stream0.0080.0020.029
lake0.00100.004
wetland0.0040.0050.001
natural water, total0.0360.0230.078
labeled road0.2380.2300.262
labeled field0.1760.2210.028
other background0.5380.5190.601

Natural water is a small part of the canal errors: 3.6 percent of the false canal pixels on the test chips (2.3 percent in Peru), against 24 percent on labeled roads and 54 percent on unlabeled background.

Example chips

Pick a chip to see the imagery, the labels and the primary model's prediction. The white box is the 2.56 km chip. Images, predictions, canal labels and road labels cover the 7.68 km context around it. Field labels are shown inside the chip only. Chips marked "test" were held out from training. Chips from the road only regions are new and have no prediction yet.

Image
Labels
Prediction
canal   road