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.
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
git clone https://github.com/Sanmay-Das/Benchmarking-GeoFMs-for-Agriculture-Applications.git
pip install torch rasterio numpy pandas tqdm huggingface_hubimport 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
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>.pthAvailable checkpoints
Segmentation (~16 GB total):
Change detection (~21 GB total):
\ `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:
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.
