CoolFace
Datasetpublic

sanmay4119/geofm-agriculture-benchmark

GeoFM Agriculture Benchmark Sample data and fine-tuned weights accompanying our ACM SIGSPATIAL 2026 paper, released so other researchers can run inference with SatMAE, Prithvi, and SpectralGPT on our multi-temporal crop segmentation and change-detection tasks. This is not the full training dataset — it's a set of representative chips per region/model plus the fine-tuned checkpoints, enough to run and sanity-check inference end-to-end. Contact the authors if you need the complete… See the full description on the dataset page: https://huggingface.co/datasets/sanmay4119/geofm-agriculture-benchmark.

sourceHugging Faceotherupdated 1d agoView on Hugging Face
0likes262downloads
Dataset Card

GeoFM Agriculture Benchmark

Sample data and fine-tuned weights accompanying our ACM SIGSPATIAL 2026 paper, released so other researchers can run inference with SatMAE, Prithvi, and SpectralGPT on our multi-temporal crop segmentation and change-detection tasks.

This is not the full training dataset — it's a set of representative chips per region/model plus the fine-tuned checkpoints, enough to run and sanity-check inference end-to-end. Contact the authors if you need the complete dataset.

Code: https://github.com/Sanmay-Das/Benchmarking-GeoFMs-for-Agriculture-Applications You need this repository for the model architecture definitions — the checkpoints here are weights only and cannot be loaded without it.

Quickstart

bash
git clone https://github.com/Sanmay-Das/Benchmarking-GeoFMs-for-Agriculture-Applications.git
pip install torch rasterio numpy pandas tqdm huggingface_hub
python
import sys, torch
from huggingface_hub import hf_hub_download

REPO = "sanmay4119/geofm-agriculture-benchmark"
CODE = "Benchmarking-GeoFMs-for-Agriculture-Applications"   # cloned above

# --- Change detection: SatMAE ---
sys.path.insert(0, f"{CODE}/SatMAE/ChangeDetection")
from src.model_cd_satmae import build_satmae_cd

ckpt_path = hf_hub_download(REPO, "weights/change_detection/satmae_cd_north_carolina.pth",
                            repo_type="dataset")
model = build_satmae_cd(pretrain_path=None)
ckpt  = torch.load(ckpt_path, map_location="cpu")
model.load_state_dict(ckpt["model"])       # note: checkpoints are dicts, not bare state_dicts
model.eval()

# model takes two tensors (t1, t2), each (B, 6, 96, 96), z-score normalized.
# Returns log-probabilities; class 1 = changed.

Model builders by task

TaskModelImport path (within the code repo)Builder
Change detectionSatMAESatMAE/ChangeDetection → src.model_cd_satmaebuild_satmae_cd()
Change detectionPrithviprithvi_finetune/ChangeDetection → src.model_cd_prithvibuild_prithvi_cd()
Change detectionSpectralGPTIEEE_TPAMI_SpectralGPT/downstream_tasks/ChangeDetection → src.model_cd_spectralgptbuild_spectralgpt_cd()
SegmentationSpectralGPTIEEE_TPAMI_SpectralGPT/downstream_tasks/SegMunich → src.models_vit_tensor_CD_2vit_base_patch8(...)
SegmentationPrithviuses mmsegmentation — build_segmentor(cfg.model) with the repo's configsee infer_prithvi_*.py
SegmentationSatMAEsee evaluate_seg_*.py in the code repo—

All checkpoints load the same way: torch.load(path)["model"].

Prithvi segmentation additionally requires mmsegmentation and its config file; the change-detection models are plain PyTorch and are the easiest starting point.

Reference inference scripts (chipping, normalization, stitching, georeferencing) live in the code repo as infer_cd_<model>_<region>.py and infer_<model>_<region>.py — these are the exact scripts used for the paper, though their input paths point at our cluster and need repointing at the data downloaded from here.

Repository layout

satmae/                                   # segmentation chips (shared across all 3 models)
  <region>/images/*.tif                   # input chips, multi-temporal
  <region>/labels/*.tif                   # crop-type labels (coverage varies, see below)

change_detection/                         # model-specific chipping
  satmae/EastNC_sample/{images,labels}/       # 60 chip pairs (t1/t2 + change mask)
  prithvi/EastNC_sample/{images,labels}/      # 60 chip pairs
  spectralgpt/EastNC_sample/{images,labels}/  # 60 chip pairs

weights/
  segmentation/      {prithvi,satmae,spectralgpt}_seg_<region>.pth
  change_detection/  {prithvi,satmae,spectralgpt}_cd_<region>.pth

Available checkpoints

Segmentation (~16 GB total):

ModelIowaMinnesotaNorth CarolinaCalifornia
Prithvi✓✓——
SatMAE✓✓✓*—
SpectralGPT✓✓✓✓

Change detection (~21 GB total):

ModelIowaMinnesotaNorth CarolinaCalifornia
Prithvi✓✓✓✓
SatMAE✓✓✓✓
SpectralGPT———✓

\ `satmae_seg_north_carolina.pth` is a completed training run (val mIoU ≈ 0.306) that is not reported in the paper*, where SatMAE segmentation on North Carolina is listed as future work. It is included here for completeness; treat it as an additional result, not a paper result.

Segmentation data coverage

Chips are shared across all three models for a given region (only the fine-tuned weights differ). Label coverage is uneven:

RegionImagesLabelsStatus
SouthMN10,00010,000Fully paired
CentIA9,9953,955Partial — subset of images have ground truth
EastNC9,995870Partial — subset of images have ground truth
EastIA9,9880Images only — inference only, no evaluation

All images can be run through the models regardless of label availability; labels are only needed to reproduce metrics. Change-detection samples are fully paired (60 t1/t2 pairs + 60 masks each).

Citation

If you use this data or these weights, please cite our ACM SIGSPATIAL 2026 paper (citation to be added upon publication).

Contact

Questions about the full dataset or this release: open a discussion on this repo or contact the authors.