- Initial repo structure
- DReSS-D Dataset
- Training scripts
- Testing scripts
Cross-view localization (CVL) matches ground-level images with aerial references to determine the geo-position of a camera, enabling smart vehicles to self-localize offline in GNSS-denied environments. However, most CVL methods output only a single observation, the camera pose, and lack the redundant observations required by surveying principles, making it challenging to assess localization reliability through the mutual validation of observational data. To tackle this, we introduce Slice-Loc, a two-stage method featuring an a-contrario reliability validation for CVL. Instead of using the query image as a single input, Slice-Loc divides it into sub-images and estimates the 3-DoF pose for each slice, creating redundant and independent observations. Then, a geometric rigidity formula is proposed to filter out the erroneous 3-DoF poses, and the inliers are merged to generate the final camera pose. Furthermore, we propose a model that quantifies the meaningfulness of localization by estimating the number of false alarms (NFA), according to the distribution of the locations of the sliced images.
Building on DReSS, the DReSS-D dataset is provided, which includes ground and aerial images from six cities across six continents: Sydney, Chicago, Johannesburg, Tokyo, Rio, and London. DReSS-D provides a depth map for each panoramic image. The dataset is provided for academic research purposes only.
DReSS: Baidu Netdisk, Huggingface part-1, Huggingface-part2.
DReSS-D: Baidu Netdisk.
Please prepare the data as follows:
DReSS-D:
Chicago:
panorama: ...
sat_img: ...
depth: ...
...
split_slice_loc:
Chicago: ...
Set up a cache folder to store the slice-level image of panoramic images. Then run as follow.
python -m processing.preprocessing.py --pro_root /Path_To/the_slice_data --data_root /Path_To/DReSS-D
After slicing the data, train the CCVPE model or use the checkpoints we provide at: Baidu Netdisk, Google Drive.
python train_CCVPE_Model.py --batch_size 12 --training True --rotation_range 45 --cross_area True --pro_root /Path_To/the_slice_data --data_root /Path_To/DReSS-D
Set up a output folder to save the result.
python Sliced_Pose_Estimation.py --cross_area True --ckpt_path /Path_To_Cross/model.pt --rotation_range 45 --pro_root /Path_To/the_slice_data --data_root /Path_To/DReSS-D --save_root /Path_To/Save_Folder
python Camera_Pose_Estimation.py --cross_area True --rotation_range 45 --pro_root /Path_To/the_slice_data --data_root /Path_To/DReSS-D --save_root /Path_To/Save_Folder
This code is based on the amazing work of: CCVPE, HC-Net and AuxGeo. We appreciate the previous open-source works.
For any other questions please contact Mingtao Xiong [xiongmingtao@whu.edu.cn]
If you find this work useful, please cite:
@article{ZHANG2026421,
title = {Cross-view localization via redundant sliced observations and a-contrario validation},
journal = {ISPRS Journal of Photogrammetry and Remote Sensing},
volume = {236},
pages = {421-437},
year = {2026},
issn = {0924-2716},
doi = {https://doi.org/10.1016/j.isprsjprs.2026.04.014},
url = {https://www.sciencedirect.com/science/article/pii/S0924271626001863},
author = {Yongjun Zhang and Mingtao Xiong and Yi Wan and Gui-Song Xia},
}
