Skip to content
 
 

Repository files navigation

SeasonStereo

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.

Links

Repository Layout

.
├── 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

Installation

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.txt

The MonSter/MonSter++ wrapper requires the vendored MonSter code and a Depth-Anything V2 checkpoint. The expected checkpoint paths are listed below.

Data And Checkpoints

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 checkpoints

Expected 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.

Full training split

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.

Training

The main training configs are in season_stereo/training_configs/.

bash season_stereo/run_experiments.sh

Equivalent direct command:

python season_stereo/train_monster.py \
  --config-name exp4-pseudoGT_0.05-photo_0.1_buildings-smooth_0.1

For a minimal training smoke test without the released validation split, use skip_validation=true as shown in REPRODUCE_FROM_CROPPED_IMAGES.md.

Evaluation

bash season_stereo/run_evaluation.sh

The default evaluation script compares the MonSter++ baseline checkpoint and the SeasonStereo checkpoint on the released test subsets.

Preprocessing

Each preprocessing folder has a dedicated README:

Citation

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}
}

About

SeasonStereo: Robust Dense Stereo Matching for Multi-Date Satellite Imagery via Generative AI

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages