Skip to content

stschubert/VPR_Tutorial

Repository files navigation

Visual Place Recognition: A Tutorial

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},
}

How to run the code

Online

We provide the Jupyter Notebook demo.ipynb that runs the code, shows intermediate results, and provides some additional explanations.

Local

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
precision-recall curve P=f(R) output_images/matchings.jpg Examples for true positive (TP) and false positive (FP)

Requirements

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

List of existing open-source implementations for VPR (work in progress)

Descriptors

Holistic descriptors

AlexNet code* paper
AMOSNet code paper
DELG code paper
DenseVLAD code paper
HDC-DELF code paper
HybridNet code paper
NetVLAD code paper

Local descriptors

D2-Net code paper
DELF code paper
LIFT code paper
Patch-NetVLAD code paper
R2D2 code paper
SuperPoint code paper

Local descriptor aggregation

DBoW2 code paper
HDC (Hyperdimensional Computing) code paper
iBoW (Incremental Bag-of-Words) / OBIndex2 code paper
VLAD (Vector of Locally Aggregated Descriptors) code* paper

Sequence methods

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

Misc

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.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •