README.md
September 23, 2026 · View on GitHub
SatDepth: A Novel Dataset for Satellite Image Matching
Paper |
Preprint |
Project Page |
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.
|
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>
- Using
- 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:
-
Clone the LoFTR repo as follows:
cd ./scripts/setup_external bash ./scripts/setup_external/setup_loftr.sh cd - -
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/indexdirectory. - 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 Name | With Rotation Augmentation | Without Rotation Augmentation |
|---|---|---|
| satLoFTR | sat_loftr_with_rot_aug | sat_loftr_without_rot_aug |
| satMatchFormer | sat_matchformer_with_rot_aug | sat_matchformer_without_rot_aug |
| satDualRC | sat_dualrc_with_rot_aug | sat_duralrc_without_rot_aug |
| satCAPS | sat_caps_with_rot_aug | sat_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_pairlistandval_pairlistin the file<path-to-satdepth-repo>/scripts/sat_loftr/sat_train.yamlto point it to the correct index csv files. - Set the
logdirin<path-to-satdepth-repo>/scripts/sat_loftr/sat_train.shfile. 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_pairlistin the file<path-to-satdepth-repo>/scripts/sat_loftr/sat_test.yamlto 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
outdirin 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
| File | Description |
|---|---|
aoi_rect_piece_<aoi_num>_gcp.csv | GCP coordinates for a given AOI |
aoi_rect_piece_<aoi_num>_gcp.kml | Same GCP data in KML format (viewable in Google Earth) |
GCP_<gcp_id>_annotations.csv | Per-GCP pixel annotations on satellite images |
CSV Schemas
aoi_rect_piece_<aoi_num>_gcp.csv
| Column | Description |
|---|---|
Point ID | Unique identifier for the GCP |
Latitude | GCP latitude (degrees) |
Longitude | GCP longitude (degrees) |
Height | GCP elevation |
GCP_<gcp_id>_annotations.csv
| Column | Description |
|---|---|
Image basename | Filename of the satellite image |
Lat | GCP latitude (degrees) |
Lon | GCP longitude (degrees) |
Ht | GCP elevation |
PixelX | Annotated GCP pixel location (x) in the image (-1 when cannot annoatate) |
PixelY | Annotated 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.