README.md

November 7, 2025 ยท View on GitHub

GeoDistill: Geometry-Guided Self-Distillation for Weakly Supervised Cross-View Localization

๐Ÿ  About

image-20230831214545912

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:

  1. Download the VIGOR dataset and set its path to '/home/< usr >/Data/VIGOR'.
  2. Download the pretrained models.
  3. set 'model' in dataset/config_vigor.json as your pth file path
  4. 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}, 
}

๐Ÿ‘ Acknowledgements

  • This work is based on G2SWeakly and CCVPE, we thank the authors for the contribution.