Benchmarking Foundation Models for Cryosphere Applications
Python
11
81 commits
updated Oct 4, 2026
A Benchmark for Evaluating Geospatial Foundation Models on Cryosphere Applications


Cryo-Bench is a community benchmark that evaluates geospatial foundation models (GFMs) on six cryosphere segmentation datasets spanning five components: supraglacial debris, glacial lakes (two sensing configurations), sea ice, calving fronts, and Antarctic ice-shelf extent. It is built on top of the PANGAEA evaluation protocol using multi-sensor satellite imagery from Sentinel-1/2, Landsat-8, WorldView-2, and historical SAR missions.
Cryo-Bench includes six benchmark tasks covering five components of the cryosphere:
| Dataset | Component | Location | Sensors | Classes | Ancillary Data | Paper | Download |
|---|---|---|---|---|---|---|---|
| GSDD | Supraglacial Debris | Global | Sentinel-2 | Binary | Slope, Elevation, Velocity | Article | Zenodo |
| GLID | Glacial Lakes | Himalayas | WorldView-2, Sentinel-2, Landsat-8, Gaofen-2 | Binary | β | Article | Zenodo |
| GLB | Glacial Lakes (multi-source) | High Mountain Asia | Sentinel-2, Sentinel-1, terrain (11 bands) | Binary | Slope, Elevation | Article | Zenodo |
| SICD | Sea Ice | Canadian & Greenlandic Arctic | Sentinel-1 | Multiclass | Incidence Angle | Article | HuggingFace |
| CaFFe | Calving Fronts | Greenland, Alaska, Antarctic Peninsula | ERS-1/2, Envisat, RADARSAT-1, ALOS PALSAR, TSX, TDX, Sentinel-1 | Multiclass | β | Article | PANGAEA |
| Shelf-Bench | Ice-Shelf Extent | Antarctica | SAR, Sentinel-1 | Binary | Article | Zenodo |
git clone https://github.com/Sk-2103/Cryo-Bench.git
cd Cryo-Bench
conda env create -f environment.yml
conda activate pangaea-bench
Download the dataset(s) you need from the links in the table above and note the local path you
extract them to (<data_root>). pangaea/run.py is the entry point and takes a Hydra config for
every axis (dataset, encoder, decoder, ...), so a full run looks like this:
python -m torch.distributed.run --standalone --nproc_per_node=1 pangaea/run.py \
task=segmentation preprocessing=seg_default criterion=cross_entropy \
dataset=sicd_rgb encoder=unet_encoder decoder=seg_unet \
dataset.root_path=<data_root>/SICD work_dir=./work_dir/unet_sicd \
finetune=true limited_label_train=1
That reproduces the U-Net/SICD cell of the table below (27.17 mIoU). A few things to swap out:
encoder is any file under configs/encoder/: dofa, terramind_large, croma_joint,
vit_scratch, unet_encoder, ... For anything other than the U-Net baseline, use
decoder=seg_upernet.dataset is any file under configs/dataset/: gssd, glid, glb_random, sicd_sar,
sicd_rgb, zone_mapping_sar, zone_mapping_optical, shelf_bench.finetune=false freezes the encoder, the default evaluation regime for every GFM (the two
from-scratch baselines always need finetune=true, since they have no pretrained weights).
limited_label_train=0.1 runs the few-shot regime instead of the full training set.See the paper for the full protocol (crop sizes, learning-rate schedule, normalization per dataset, evaluation regimes).
Cryo-Bench/
βββ pangaea/ # evaluation framework
β βββ datasets/ # one module per dataset (gssd, glid, glb, sicd_tiled, zone_mapping_*, shelf_bench)
β βββ encoders/ # GFM wrappers (CROMA, DOFA, TerraMind, Prithvi, SatlasNet, Scale-MAE, SpectralGPT, SSL4EO-S12, ...) and the U-Net/ViT baselines
β βββ decoders/ # UPerNet (GFMs) and U-Net (baseline) segmentation heads
β βββ engine/ # trainer / evaluator
β βββ utils/
βββ configs/ # Hydra configs, one subdirectory per axis
β βββ dataset/ # 8 configs, one per dataset/modality variant
β βββ encoder/ # 20 configs: 13 GFMs plus dataset-specific modality variants, and 2 baselines
β βββ decoder/ # seg_unet.yaml, seg_upernet.yaml
β βββ preprocessing/, task/, criterion/, optimizer/, lr_scheduler/
βββ assets/ # README images
The table reports mIoU (β) with frozen encoders and 100% training data, using the UPerNet decoder across all six datasets. Rows are ordered by six-dataset average mIoU. U-Net and ViT are trained from scratch. Avg Rank is the mean of a model's rank (1-15) on each of the six datasets individually, and can read differently from the ordering by Avg mIoU (e.g. DOFA has a better Avg Rank than RemoteCLIP despite a lower Avg mIoU).
Bold = best performance Β· Italic = second best
| Model | GSDD | GLID | GLB | SICD | CaFFe | Shelf-Bench | Avg. mIoU β | Avg Rank β |
|---|---|---|---|---|---|---|---|---|
| U-Net | 73.89 | 91.58 | 80.46 | 27.17 | 59.82 | 82.97 | 69.31 | 2.67 |
| TerraMind | 74.63 | 88.26 | 79.91 | 33.27 | 46.64 | 84.46 | 67.86 | 3.17 |
| RemoteCLIP | 73.42 | 90.89 | 78.09 | 24.25 | 56.64 | 83.59 | 67.81 | 5.17 |
| DOFA | 72.96 | 92.61 | 79.39 | 20.41 | 50.71 | 87.08 | 67.19 | 4.83 |
| GFM-Swin | 73.00 | 89.69 | 78.42 | 14.17 | 58.12 | 85.63 | 66.50 | 6.33 |
| Scale-MAE | 73.47 | 90.91 | 79.16 | 9.74 | 58.19 | 83.28 | 65.79 | 6.33 |
| CROMA | 74.15 | 78.52 | 77.68 | 21.81 | 42.03 | 81.15 | 62.56 | 6.17 |
| ViT | 74.41 | 78.14 | 79.81 | 15.58 | 40.25 | 81.86 | 61.67 | 6.00 |
| S12-MoCo | 73.03 | 75.51 | 75.45 | 19.86 | 36.21 | 74.97 | 59.17 | 10.00 |
| SatlasNet | 73.70 | 77.03 | 74.74 | 19.62 | 33.96 | 73.00 | 58.67 | 10.17 |
| S12-MAE | 73.51 | 75.71 | 75.43 | 12.28 | 36.99 | 75.93 | 58.31 | 9.67 |
| S12-Data2Vec | 73.68 | 75.19 | 74.59 | 11.49 | 35.96 | 75.79 | 57.78 | 11.33 |
| S12-DINO | 71.19 | 75.69 | 75.17 | 12.74 | 35.58 | 75.28 | 57.61 | 11.67 |
| Prithvi | 70.52 | 71.11 | 74.96 | 12.58 | 32.01 | 74.41 | 55.93 | 13.50 |
| SpectralGPT | 73.22 | 70.87 | 72.82 | 14.39 | 32.70 | 66.75 | 55.12 | 13.00 |
This project is licensed under the MIT License.
Cryo-Bench builds on the PANGAEA benchmark. We thank the developers of DOFA, TerraMind, Prithvi, SatlasNet, and all other foundation models included in this benchmark. We also thank the dataset authors of GSDD, GLID, GLB, SICD, CaFFe, and Shelf-Bench for making their data publicly available.
Benchmarking Foundation Models for Cryosphere Applications
Python
11
81 commits
updated Oct 4, 2026
A Benchmark for Evaluating Geospatial Foundation Models on Cryosphere Applications


Cryo-Bench is a community benchmark that evaluates geospatial foundation models (GFMs) on six cryosphere segmentation datasets spanning five components: supraglacial debris, glacial lakes (two sensing configurations), sea ice, calving fronts, and Antarctic ice-shelf extent. It is built on top of the PANGAEA evaluation protocol using multi-sensor satellite imagery from Sentinel-1/2, Landsat-8, WorldView-2, and historical SAR missions.
Cryo-Bench includes six benchmark tasks covering five components of the cryosphere:
| Dataset | Component | Location | Sensors | Classes | Ancillary Data | Paper | Download |
|---|---|---|---|---|---|---|---|
| GSDD | Supraglacial Debris | Global | Sentinel-2 | Binary | Slope, Elevation, Velocity | Article | Zenodo |
| GLID | Glacial Lakes | Himalayas | WorldView-2, Sentinel-2, Landsat-8, Gaofen-2 | Binary | β | Article | Zenodo |
| GLB | Glacial Lakes (multi-source) | High Mountain Asia | Sentinel-2, Sentinel-1, terrain (11 bands) | Binary | Slope, Elevation | Article | Zenodo |
| SICD | Sea Ice | Canadian & Greenlandic Arctic | Sentinel-1 | Multiclass | Incidence Angle | Article | HuggingFace |
| CaFFe | Calving Fronts | Greenland, Alaska, Antarctic Peninsula | ERS-1/2, Envisat, RADARSAT-1, ALOS PALSAR, TSX, TDX, Sentinel-1 | Multiclass | β | Article | PANGAEA |
| Shelf-Bench | Ice-Shelf Extent | Antarctica | SAR, Sentinel-1 | Binary | Article | Zenodo |
git clone https://github.com/Sk-2103/Cryo-Bench.git
cd Cryo-Bench
conda env create -f environment.yml
conda activate pangaea-bench
Download the dataset(s) you need from the links in the table above and note the local path you
extract them to (<data_root>). pangaea/run.py is the entry point and takes a Hydra config for
every axis (dataset, encoder, decoder, ...), so a full run looks like this:
python -m torch.distributed.run --standalone --nproc_per_node=1 pangaea/run.py \
task=segmentation preprocessing=seg_default criterion=cross_entropy \
dataset=sicd_rgb encoder=unet_encoder decoder=seg_unet \
dataset.root_path=<data_root>/SICD work_dir=./work_dir/unet_sicd \
finetune=true limited_label_train=1
That reproduces the U-Net/SICD cell of the table below (27.17 mIoU). A few things to swap out:
encoder is any file under configs/encoder/: dofa, terramind_large, croma_joint,
vit_scratch, unet_encoder, ... For anything other than the U-Net baseline, use
decoder=seg_upernet.dataset is any file under configs/dataset/: gssd, glid, glb_random, sicd_sar,
sicd_rgb, zone_mapping_sar, zone_mapping_optical, shelf_bench.finetune=false freezes the encoder, the default evaluation regime for every GFM (the two
from-scratch baselines always need finetune=true, since they have no pretrained weights).
limited_label_train=0.1 runs the few-shot regime instead of the full training set.See the paper for the full protocol (crop sizes, learning-rate schedule, normalization per dataset, evaluation regimes).
Cryo-Bench/
βββ pangaea/ # evaluation framework
β βββ datasets/ # one module per dataset (gssd, glid, glb, sicd_tiled, zone_mapping_*, shelf_bench)
β βββ encoders/ # GFM wrappers (CROMA, DOFA, TerraMind, Prithvi, SatlasNet, Scale-MAE, SpectralGPT, SSL4EO-S12, ...) and the U-Net/ViT baselines
β βββ decoders/ # UPerNet (GFMs) and U-Net (baseline) segmentation heads
β βββ engine/ # trainer / evaluator
β βββ utils/
βββ configs/ # Hydra configs, one subdirectory per axis
β βββ dataset/ # 8 configs, one per dataset/modality variant
β βββ encoder/ # 20 configs: 13 GFMs plus dataset-specific modality variants, and 2 baselines
β βββ decoder/ # seg_unet.yaml, seg_upernet.yaml
β βββ preprocessing/, task/, criterion/, optimizer/, lr_scheduler/
βββ assets/ # README images
The table reports mIoU (β) with frozen encoders and 100% training data, using the UPerNet decoder across all six datasets. Rows are ordered by six-dataset average mIoU. U-Net and ViT are trained from scratch. Avg Rank is the mean of a model's rank (1-15) on each of the six datasets individually, and can read differently from the ordering by Avg mIoU (e.g. DOFA has a better Avg Rank than RemoteCLIP despite a lower Avg mIoU).
Bold = best performance Β· Italic = second best
| Model | GSDD | GLID | GLB | SICD | CaFFe | Shelf-Bench | Avg. mIoU β | Avg Rank β |
|---|---|---|---|---|---|---|---|---|
| U-Net | 73.89 | 91.58 | 80.46 | 27.17 | 59.82 | 82.97 | 69.31 | 2.67 |
| TerraMind | 74.63 | 88.26 | 79.91 | 33.27 | 46.64 | 84.46 | 67.86 | 3.17 |
| RemoteCLIP | 73.42 | 90.89 | 78.09 | 24.25 | 56.64 | 83.59 | 67.81 | 5.17 |
| DOFA | 72.96 | 92.61 | 79.39 | 20.41 | 50.71 | 87.08 | 67.19 | 4.83 |
| GFM-Swin | 73.00 | 89.69 | 78.42 | 14.17 | 58.12 | 85.63 | 66.50 | 6.33 |
| Scale-MAE | 73.47 | 90.91 | 79.16 | 9.74 | 58.19 | 83.28 | 65.79 | 6.33 |
| CROMA | 74.15 | 78.52 | 77.68 | 21.81 | 42.03 | 81.15 | 62.56 | 6.17 |
| ViT | 74.41 | 78.14 | 79.81 | 15.58 | 40.25 | 81.86 | 61.67 | 6.00 |
| S12-MoCo | 73.03 | 75.51 | 75.45 | 19.86 | 36.21 | 74.97 | 59.17 | 10.00 |
| SatlasNet | 73.70 | 77.03 | 74.74 | 19.62 | 33.96 | 73.00 | 58.67 | 10.17 |
| S12-MAE | 73.51 | 75.71 | 75.43 | 12.28 | 36.99 | 75.93 | 58.31 | 9.67 |
| S12-Data2Vec | 73.68 | 75.19 | 74.59 | 11.49 | 35.96 | 75.79 | 57.78 | 11.33 |
| S12-DINO | 71.19 | 75.69 | 75.17 | 12.74 | 35.58 | 75.28 | 57.61 | 11.67 |
| Prithvi | 70.52 | 71.11 | 74.96 | 12.58 | 32.01 | 74.41 | 55.93 | 13.50 |
| SpectralGPT | 73.22 | 70.87 | 72.82 | 14.39 | 32.70 | 66.75 | 55.12 | 13.00 |
This project is licensed under the MIT License.
Cryo-Bench builds on the PANGAEA benchmark. We thank the developers of DOFA, TerraMind, Prithvi, SatlasNet, and all other foundation models included in this benchmark. We also thank the dataset authors of GSDD, GLID, GLB, SICD, CaFFe, and Shelf-Bench for making their data publicly available.