README.md

September 23, 2026 · View on GitHub

SatDepth: A Novel Dataset for Satellite Image Matching

Rahul Deshmukh

Paper | Preprint | Project Page | Ask DeepWiki

This repository provides code and resources for the SatDepth dataset. Please make sure to visit our project page for visualizations and an interactive demo of the dataset.

pipeline


Announcements

  • [24 Nov 2025] Our work has been accepted for publication in the IEEE Journal of Selected Topics in Applied Earth Observations and Remote Sensing (JSTARS). This page will be updated once the DOI becomes available.
  • [11 Dec 2025] Early access to paper is now available on IEEE Explore
  • [Jun 2026] Sharing the GCP annotations

Abstract

Recent advances in deep-learning based methods for image matching have demonstrated their superiority over traditional algorithms, enabling correspondence estimation in challenging scenes with significant differences in viewing angles, illumination and weather conditions. However, the existing datasets, learning frameworks, and evaluation metrics for the deep-learning based methods are limited to ground-based images recorded with pinhole cameras and have not been explored for satellite images. In this paper, we present ``SatDepth'', a novel dataset that provides dense ground-truth correspondences for training image matching frameworks meant specifically for satellite images. Satellites capture images from various viewing angles and tracks through multiple revisits over a region. To manage this variability, we propose a dataset balancing strategy through a novel image rotation augmentation procedure. This procedure allows for the discovery of corresponding pixels even in the presence of large rotational differences between the images. We benchmark four existing image matching frameworks using our dataset and carry out an ablation study that confirms that the models trained with our dataset with rotation augmentation outperform (up to 40% increase in precision) the models trained with other datasets, especially when there exist large rotational differences between the images.


Dataset Download Instructions

The dataset is zipped into tar files and has a total size of 611 GB. You can download it using the following steps:

  • Download the tar files using wget -m -P <download-datadir> https://engineering.purdue.edu/RVL/Database/satdepth/dataset/satdepth.tar.part.{0000..0122}
  • Combine the tar files into a single tar file using cat satdepth.tar.part.* > satdepth.tar
  • Unzip the combined tar file using tar -xf satdepth.tar

Setup

  • Clone the repo git clone git@github.com:rahuldeshmukh43/satdepth.git <path-to-satdepth-repo>
  • Build conda environment:
    • Using conda env create -f <path-to-satdepth-repo>/environment.yml.
    • Alternatively, you can download our conda environment from link. Make sure to download all the zip files in the same folder, then unzip to your conda env folder using the command unzip satdepth_conda_env.zip -d <path-to-your-conda-env-folder>
  • Add repo to python path by adding to your bashrc - export PYTHONPATH=$PYTHONPATH:<path-to-satdepth-repo>
  • Build depthifypp following instructions from depthifypp readme file
[Setup LoFTR]

The steps for setting up LoFTR are as follows:

  1. Clone the LoFTR repo as follows:

    cd ./scripts/setup_external
    bash ./scripts/setup_external/setup_loftr.sh
    cd -
    
  2. LoFTR uses SuperGluePretrainedNetwork for optimal transport. Run the command below to download superglue.

    cd external/LoFTR/src/loftr/utils  
    wget https://raw.githubusercontent.com/magicleap/SuperGluePretrainedNetwork/master/models/superglue.py 
    cd -
    
[Setup SatDepth Dataset]

To setup satdepth dataset for model training/testing you will need to follow the steps below:

  • Download SatDepth Dataset to <download-datadir> using download instructions
  • Make data directory with the following folder structure
    <path-to-satdepth-repo>/data/satdepth/
    ├── index/
    ├── test/
    └── train/
    
  • Download the index_contents.zip file and unzip to data/satdepth/index directory.
  • Create soft links to dataset as follows:
    # train data
    ln -s <download-datadir>/jacksonville <path-to-satdepth-repo>/data/satdepth/train/jacksonville
    
    # test data
    ln -s <download-datadir>/jacksonville <path-to-satdepth-repo>/data/satdepth/test/jacksonville
    ln -s <download-datadir>/argentina <path-to-satdepth-repo>/data/satdepth/test/argentina
    ln -s <download-datadir>/omaha <path-to-satdepth-repo>/data/satdepth/test/omaha
    ln -s <download-datadir>/ucsd <path-to-satdepth-repo>/data/satdepth/test/ucsd
    

Model Weights

We provide model weights for the models benchmarked in our paper. We provide model weights for with and without rotation augmentation. The model weights are shared through clickable google-drive links.

Model NameWith Rotation AugmentationWithout Rotation Augmentation
satLoFTRsat_loftr_with_rot_augsat_loftr_without_rot_aug
satMatchFormersat_matchformer_with_rot_augsat_matchformer_without_rot_aug
satDualRCsat_dualrc_with_rot_augsat_duralrc_without_rot_aug
satCAPSsat_caps_with_rot_augsat_caps_without_rot_aug

Running Training and Testing

We provide training and testing scripts for the SatLoFTR model on the SatDepth dataset in this repository. Detailed instructions for training and evaluating the model are provided below.

Training

To train the model on SatDepth dataset follow these steps:

  • Make sure you have setup the repo and dataset as detailed above in Setup Section
  • Edit the train_pairlist and val_pairlist in the file <path-to-satdepth-repo>/scripts/sat_loftr/sat_train.yaml to point it to the correct index csv files.
  • Set the logdir in <path-to-satdepth-repo>/scripts/sat_loftr/sat_train.sh file. This the output directory.
  • Run training script using the command bash sat_train.sh

Testing

To test the model on SatDepth dataset follow these steps:

  • Make sure you have setup the repo and dataset as detailed above in Setup Section
  • Set the test_pairlist in the file <path-to-satdepth-repo>/scripts/sat_loftr/sat_test.yaml to point to the desired testing AOI index cscv file.
  • Set the experiment name (exp_name) and checkpoint path (ckpt_path) in the <path-to-satdepth-repo>/scripts/sat_loftr/sat_test.yaml
  • Set outdir in the file <path-to-satdepth-repo>/scripts/sat_loftr/sat_test.sh. This is where the testing outputs will be saved
  • Run the testing script using the command bash sat_test.sh <testing-set-name> We also provide scripts for testing with simulated rotation using the <path-to-satdepth-repo>/scripts/sat_loftr/sat_test_simulated_rot.sh. To run this script, follow the above instructions for testing.

Ground Control Point Annotations

We share the archive gcps.tar.gz, which contains annotations of Ground Control Points (GCPs) on satellite images as described in our paper. The GCP coordinates were originally recorded by Innovative Imaging & Research Corp., and we annotated their locations on the corresponding satellite images. The annotations can be viewed here. The file structure of this archive mimics that of the dataset, and additional details are given below.

File Structure
gcps/
└── aoi_rect_piece_<aoi_num>/
    └── gcp/
        ├── aoi_rect_piece_<aoi_num>_gcp.csv
        ├── aoi_rect_piece_<aoi_num>_gcp.kml
        └── annotations/
            └── GCP_<gcp_id>_annotations.csv
FileDescription
aoi_rect_piece_<aoi_num>_gcp.csvGCP coordinates for a given AOI
aoi_rect_piece_<aoi_num>_gcp.kmlSame GCP data in KML format (viewable in Google Earth)
GCP_<gcp_id>_annotations.csvPer-GCP pixel annotations on satellite images
CSV Schemas

aoi_rect_piece_<aoi_num>_gcp.csv

ColumnDescription
Point IDUnique identifier for the GCP
LatitudeGCP latitude (degrees)
LongitudeGCP longitude (degrees)
HeightGCP elevation

GCP_<gcp_id>_annotations.csv

ColumnDescription
Image basenameFilename of the satellite image
LatGCP latitude (degrees)
LonGCP longitude (degrees)
HtGCP elevation
PixelXAnnotated GCP pixel location (x) in the image (-1 when cannot annoatate)
PixelYAnnotated GCP pixel location (y) in the image (-1 when cannot annoatate)

Cite

Please cite our work if you find it useful:

@ARTICLE{deshmukh2025satdepth,
  author={Deshmukh, Rahul and Kak, Avinash C.},
  journal={IEEE Journal of Selected Topics in Applied Earth Observations and Remote Sensing}, 
  title={SatDepth: A Novel Dataset for Satellite Image Matching}, 
  year={2026},
  volume={19},
  number={},
  pages={894-903},
  doi={10.1109/JSTARS.2025.3637154}}

Acknowledgements: This research is based upon work supported in part by the Office of the Director of National Intelligence (ODNI), Intelligence Advanced Research Projects Activity (IARPA), via Contract #2021-21040700001. The views and conclusions contained herein are those of the authors and should not be interpreted as necessarily representing the official policies, either expressed or implied, of ODNI, IARPA, or the U.S. Government. The U.S. Government is authorized to reproduce and distribute reprints for governmental purposes not withstanding any copyright annotation therein.