Diachronic stereo matching for multi-date satellite imagery.
This repository contains the release code for the SeasonStereo paper: training, evaluation, dataset preprocessing, semantic masks, synthetic seasonal data utilities, and similarity/pair-selection tools. Large datasets, generated products, and model checkpoints are distributed separately through Hugging Face.
- Project page
- Paper: coming soon
- Dataset
- Checkpoints
.
├── season_stereo/ # training and test evaluation
├── preprocessing/
│ ├── rectification/ # rectified training split generation
│ ├── segmentation/ # water/tree/building mask inference
│ ├── similarity/ # pair metrics and pseudo-GT disparity helpers
│ └── synthetic_data_generation/ # optional seasonal image generation
├── docs/ # static project page draft
├── REPRODUCE_FROM_CROPPED_IMAGES.md # minimal from-scratch smoke test
├── requirements.txt
└── README.md
Create a fresh environment and install PyTorch for your CUDA version. The example below uses CUDA 12.1 wheels.
conda create -n seasonstereo python=3.10 -y
conda activate seasonstereo
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121
pip install -r requirements.txtThe MonSter/MonSter++ wrapper requires the vendored MonSter code and a Depth-Anything V2 checkpoint. The expected checkpoint paths are listed below.
| Asset | Location |
|---|---|
| Data (test/val splits, cropped tiles, seasonal variants, masks, train subset) | Alvaritox/seasonstereo-data |
| SeasonStereo checkpoint | Alvaritox/seasonstereo |
pip install -U "huggingface_hub[cli]"
hf download Alvaritox/seasonstereo-data --repo-type dataset --local-dir data
hf download Alvaritox/seasonstereo season-stereo-final.pth --local-dir checkpointsExpected local layout after downloading the release assets:
data/
diachronic-stereo-synthetic/
train/
val/
test/
experiments/
train_aois.csv
val_aois.csv
synchronic_only/
L/
R/
homography/
Train-Track3-cropped/
Train-Track3-cropped-synthetic/
water_segmentation/
tree_segmentation/
building_segmentation/
checkpoints/
monster++-mix_all.pth
depth_anything_v2_vitl.pth
season-stereo-final.pth
openearthmap_segformer_mit-b2.pt
The download layout differs slightly from the layout the scripts expect. After downloading, move segmentation_masks/{water,tree,building}_segmentation/ to data/ and diachronic-stereo-synthetic/synchronic_only/ to data/synchronic_only/.
The scripts and configs use these relative paths directly. If your folders are elsewhere, edit the path lines in the relevant .sh file or YAML config, or pass Hydra overrides on the command line.
The full rectified training split (~700 GB across 77 AOIs) is not distributed. The dataset repository ships diachronic-stereo-synthetic/train_subset/, a single-AOI sample with the exact same structure, so the data format and the training loop can be inspected and run end to end.
To build the complete training split, run the generation pipeline on the released cropped tiles as described in REPRODUCE_FROM_CROPPED_IMAGES.md. Every input it needs is in the dataset repository: real crops, seasonal variants, synchronic_only reference pairs and homographies, and semantic masks. Dropping the --limit and --max-reference-pairs flags reproduces the full split rather than the smoke-test subset.
The main training configs are in season_stereo/training_configs/.
bash season_stereo/run_experiments.shEquivalent direct command:
python season_stereo/train_monster.py \
--config-name exp4-pseudoGT_0.05-photo_0.1_buildings-smooth_0.1For a minimal training smoke test without the released validation split, use skip_validation=true as shown in REPRODUCE_FROM_CROPPED_IMAGES.md.
bash season_stereo/run_evaluation.shThe default evaluation script compares the MonSter++ baseline checkpoint and the SeasonStereo checkpoint on the released test subsets.
Each preprocessing folder has a dedicated README:
- Rectification
- Segmentation masks
- Similarity metrics and pair selection
- Synthetic seasonal generation
The final citation will be added after publication metadata is available.
@inproceedings{seasonstereo2026,
title = {SeasonStereo: Diachronic Stereo Matching for Multi-Date Satellite Imagery},
author = {Authors},
booktitle = {Venue},
year = {2026}
}