README.md
November 7, 2025 ยท View on GitHub
GeoDistill: Geometry-Guided Self-Distillation for Weakly Supervised Cross-View Localization
๐ About

We introduce GeoDistill, a weakly supervised selfdistillation paradigm that enhances local discriminative feature learning for robust cross-view localization. We demonstrate that this learning paradigm applies to different localization frameworks and improves their performance by over 10% without architectural modifications. Furthermore, we demonstrate that while FoV-based masking as a naive data augmentation impairs performance, it significantly improves the performance of localization frameworks when applied within our proposed teacher-student self-distillation pipeline.
๐ฆ Checkpoints
๐ Download pretrained models
๐ Training
Set up
We train and test our codes under the following environment:
- Ubuntu 18.04
- CUDA 12.0
- Python 3.8.16
- PyTorch 1.13.0
To get started, follow these steps:
Clone this repository.
git clone https://github.com/tongshw/GeoDistill.git
cd GeoDistill
Training
We released our implementation of G2SWeakly and GeoDistill with G2SWeakly both VGG and DINO variants.
We apply mask in both ground image and feature maps when base model is G2SWeakly, and when use CCVPE as base model, we apply mask to the descriptor.
Before training, you need to set the pre-trained weight loading path for the teacher and student models in the config file.
# to train our implemented G2SWeakly in VIGOR cross area
python -u train_vigor.py --train True --train_g2sweakly True --cross_area True
# to train orientation estimator
python -u train_orientation.py --train True --cross_area True
๐ Evaluation
2-DoF Evaluation
To evaluate the Geodistill model, follow these steps:
- Download the VIGOR dataset and set its path to '/home/< usr >/Data/VIGOR'.
- Download the pretrained models.
- set 'model' in dataset/config_vigor.json as your pth file path
- Run the following command:
python -u train_vigor.py --train False --cross_area True
3-DoF Evaluation
set 'model' and 'orientation_model' in dataset/config_vigor.json as your pth file path
python -u eval_3dof_vigor.py --cross_area True
๐ Citation
If you find our work helpful, please cite:
@misc{tong2025geodistillgeometryguidedselfdistillationweakly,
title={GeoDistill: Geometry-Guided Self-Distillation for Weakly Supervised Cross-View Localization},
author={Shaowen Tong and Zimin Xia and Alexandre Alahi and Xuming He and Yujiao Shi},
year={2025},
eprint={2507.10935},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2507.10935},
}