Work in progress: This repository provides the example code from our paper "Visual Place Recognition: A Tutorial". The code performs VPR on the GardensPoint day_right--night_right dataset. Output is a plotted pr-curve, matching decisions, two examples for a true-positive and a false-positive matching, and the AUC performance, as shown below.
If you use our work for your academic research, please refer to the following paper:
@article{SchubertVisual,
title={Visual Place Recognition: A Tutorial},
author={Stefan Schubert and Peer Neubert and Sourav Garg and Michael Milford and Tobias Fischer},
journal={arXiv 2303.03281},
year={2023},
}
We provide the Jupyter Notebook demo.ipynb that runs the code, shows intermediate results, and provides some additional explanations.
python3 demo.py
The GardensPoints Walking dataset will be downloaded automatically. You should get an output similar to this:
python3 demo.py
===== Load dataset
===== Load dataset GardensPoint day_right--night_right
===== Compute local DELF descriptors
===== Compute holistic HDC-DELF descriptors
===== Compute cosine similarities S
===== Match images
===== Evaluation
===== AUC (area under curve): 0.7419284432277942
===== R@100P (maximum recall at 100% precision): 0.36
===== recall@K (R@K) -- R@1: 0.85 , R@5: 0.925 , R@10: 0.945
Precision-recall curve | Matchings M | Examples for a true positive and a false positive |
---|---|---|
![]() |
![]() |
![]() |
The code was tested with the following library versions. Note that Tensorflow or PyTorch is only required if the corresponding image descriptor is used.
pipreqs VPR_Tutorial/ --print
- matplotlib==3.1.2
- numpy==1.17.4
- Pillow==9.5.0
- scikit_image==0.19.3
- scipy==1.3.3
- skimage==0.0
- tensorflow==2.12.0
- tensorflow_hub==0.13.0
- torch==1.13.1+cpu
- torchvision==0.14.1+cpu
AlexNet | code* | paper |
AMOSNet | code | paper |
DELG | code | paper |
DenseVLAD | code | paper |
HDC-DELF | code | paper |
HybridNet | code | paper |
NetVLAD | code | paper |
D2-Net | code | paper |
DELF | code | paper |
LIFT | code | paper |
Patch-NetVLAD | code | paper |
R2D2 | code | paper |
SuperPoint | code | paper |
DBoW2 | code | paper |
HDC (Hyperdimensional Computing) | code | paper |
iBoW (Incremental Bag-of-Words) / OBIndex2 | code | paper |
VLAD (Vector of Locally Aggregated Descriptors) | code* | paper |
Delta Descriptors | code | paper |
MCN | code | paper |
OpenSeqSLAM | code* | paper |
OpenSeqSLAM 2.0 | code | paper |
OPR | code | paper |
SeqConv | code | paper |
SeqNet | code | paper |
SeqVLAD | code | paper |
VPR | code | paper |
ICM | code | paper | Graph optimization of the similarity matrix S |
SuperGlue | code | paper | Local descriptor matching |
*Third party code. Not provided by the authors. Code implements the author's idea or can be used to implement the authors idea.