Satellite-to-UAV SatDronePair Data Generation
简体中文 | English
This page converts DenseUAV, GTA-UAV, SUES-200, and UAV-VisLoc into the paired UAV–satellite format used by Satellite-to-UAV Stage-A:
upstream raw data -> source converter -> SatDronePair/{4 sources}
-> manifest.jsonl -> Stage-A train/eval
Download each upstream dataset from its official source and follow its license terms:
Data source |
Official entry point |
Contents required by the converter |
|---|---|---|
DenseUAV |
GPS text and full train/test image |
|
GTA-UAV |
|
|
SUES-200 |
|
|
UAV-VisLoc |
Full sequence and |
1. Install the tools and create directories
Run from the repository root:
python -m pip install -e ".[s2r-data]"
python -m tools.s2r.data_generation --help
The unified data-generation entry point is:
python -m tools.s2r.data_generation <dataset> <command> [args...]
The final directory is fixed as:
SatDronePair/
├── denseuav/{drone,satellite,pairs.csv,dataset_info.json}
├── gta/{drone,satellite,pairs.csv,dataset_info.json}
├── sues/{drone,satellite,pairs.csv,dataset_info.json}
└── uavvisloc/{drone,satellite,pairs.csv,dataset_info.json}
Store intermediate variants separately from the final data:
export PAIR_ROOT=/path/to/SatDronePair
export PAIR_WORK=/path/to/SatDronePair-work
mkdir -p "$PAIR_ROOT" "$PAIR_WORK"
To reuse a parameter set, copy and edit config.example.yaml, then pass --config runtime/s2r/data_generation.yaml to the unified entry point. Explicit CLI arguments override YAML values.
2. Convert the four data sources
2.1 DenseUAV
--dataset-root needs to contain Dense_GPS_{train,test}.txt, train/ and test/:
python -m tools.s2r.data_generation denseuav build_pairs \
--dataset-root /path/to/DenseUAV \
--output-dir "$PAIR_ROOT/denseuav" \
--workers 16
2.2 GTA-UAV
--data-root points to GTA-UAV-LR. Converter will merge same-area/cross-area before heading check Duplicates in protocols are exported only once per physical pair while preserving the protocol ID and original split at pairs.csv:
python -m tools.s2r.data_generation gta_uav build_pairs \
--data-root /path/to/GTA-UAV-LR \
--output-dir "$PAIR_ROOT/gta" \
--workers 8
2.3 SUES-200
The original directory needs to contain satellite-view/ and drone_view_512/:
python -m tools.s2r.data_generation sues pipeline \
--data-root /path/to/SUES-200-512x512 \
--output-dir "$PAIR_WORK/sues_export" \
--heights 150,200,250,300 \
--nadir-min-conf 0.30 \
--skip-preview
python -m tools.s2r.data_generation sues merge_variants \
--dataset-dir "$PAIR_WORK/sues_export" \
--variant-map "orig:satellite:drone,crop384:satellite_crop384:drone_crop384,crop256:satellite_crop256:drone_crop256" \
--output-dir "$PAIR_ROOT/sues"
The result retains three training variants: orig, crop384, and crop256.
2.4 UAV-VisLoc
--data-root requires a CSV, drone image, and satellite TIF for each sequence:
python -m tools.s2r.data_generation uavvisloc export_selected \
--data-root /path/to/UAV-VisLoc/data \
--sat-bounds-csv /path/to/UAV-VisLoc/satellite_coordinates_range.csv \
--output-dir "$PAIR_WORK/uavvisloc_orig" \
--allow-missing-pose
python -m tools.s2r.data_generation uavvisloc center_recrop_pairs \
--dataset-dir "$PAIR_WORK/uavvisloc_orig" \
--output-dir "$PAIR_WORK/uavvisloc_crop384" \
--crop-size 384 \
--output-size 512
python -m tools.s2r.data_generation uavvisloc merge_variants \
--variant \
"orig=$PAIR_WORK/uavvisloc_orig" \
"crop384=$PAIR_WORK/uavvisloc_crop384" \
--output-dir "$PAIR_ROOT/uavvisloc"
The result retains the orig and crop384 variants. The satellite crop scale is estimated from altitude; inspect the preview images to verify the generated pairs.
For SUES and UAV-VisLoc, center_recrop_pairs selects the matching schema from the image fields in pairs.csv.
3. Build the manifest
Strict mode checks four pairs.csv and all their image references:
python -m tools.s2r.scripts.build_manifest \
--data_root "$PAIR_ROOT" \
--output_path runtime/s2r/manifests/manifest_v1.jsonl \
--val_ratio 0.1 \
--seed 42 \
--skip_missing false
The split is grouped by location: DenseUAV by base location, GTA-UAV by satellite tile, SUES-200 by scene_id, and UAV-VisLoc by seq_id. The complete dataset contains 19,365 records: DenseUAV 5,464, GTA-UAV 5,102, SUES-200 1,497, and UAV-VisLoc 7,302.
For Stage-A training and retrieval evaluation, see Satellite-to-UAV Stage-A Training.
4. Inspect data quality
Generate previews of the four data sources respectively:
python -m tools.s2r.data_generation denseuav sample_preview --dataset-dir "$PAIR_ROOT/denseuav"
python -m tools.s2r.data_generation gta_uav sample_preview --dataset-dir "$PAIR_ROOT/gta"
python -m tools.s2r.data_generation sues sample_preview --dataset-dir "$PAIR_ROOT/sues"
python -m tools.s2r.data_generation uavvisloc sample_preview --dataset-dir "$PAIR_ROOT/uavvisloc"
Preview images are for manual inspection and are not used during training. Keep dataset_info.json, pairs.csv, drone/, and satellite/ in each final data directory. Intermediate variants can be removed after validating the manifest.