GV-Bench: Benchmarking Local Feature Matching for Geometric Verification of Long-term Loop Closure Detection
Visual loop closure detection is an important module in visual simultaneous localization and mapping (SLAM), which associates current camera observation with previously visited places. Loop closures correct drifts in trajectory estimation to build a globally consistent map. However, a false loop closure can be fatal, so verification is required as an additional step to ensure robustness by rejecting the false positive loops. Geometric verification has been a well-acknowledged solution that leverages spatial clues provided by local feature matching to find true positives. Existing feature matching methods focus on homography and pose estimation in long-term visual localization, lacking references for geometric verification. To fill the gap, this paper proposes a unified benchmark targeting geometric verification of loop closure detection under long-term conditional variations. Furthermore, we evaluate six representative local feature matching methods (handcrafted and learning-based) under the benchmark, with in-depth analysis for limitations and future directions.
We measure the runtime of six methods listed in Table I on NVIDIA GeForce RTX 3090 GPU and Intel i7-13700K CPU over 10K runs. The results are shown in figure below as inference time over performance, i.e., max recall @100 precision. We can conclude that the runtime of six local feature matching methods is at a millisecond level on a modern GPU. The choice can be made based on the trade-off between time efficiency and performance.
-
๐ Releasing the visualization of image matching results. (google drive)
-
๐ ๐ Releasing the benchmark (easy)! Checkout the image pairs from
dataset/release/pairs
and images from google drive -
โญ Benchmark usage is coming soon!
- Appendix for visualization
- Visualization of image matches
- Visualization of inliers' distirbution
- Release benchmark sequences.
- Benchmark-easy
- Day
- Weather
- Night-easy
- Season-easy
- Benchmark-hard
- Benchmark-easy
- Release Local feature extraction and matching implementation
- Release evaluation tools
- Release data analysis tools
- Expansion to other verification methods
- Dopplergangers
- Semantics
- Keypoint topology
- Release sequence version of benchmark
We use part of the HLoc code for feature extraction and matching.
git clone && cd GV-Bench
git submodule init
git submodule update
cd third_party/Hierarchival-Localization
git checkout gvbench # this is a customized fork version
python -m pip install -e .
- Download the dataset sequences from google drive and put it under the
dataset/
folder. - Extract and match feature using hloc (Take SuperPoint and SuperGlue as an example).
-
Extract features: SIFT, SuperPoint, and DISK
python gvbench_utils.py --extraction --image_path /path/to image/ --output_path /path/to/output python gvbench_utils.py --extraction --image_path dataset/images/ --output_path dataset/output/features/
-
Match features: SIFT-NN, SIFT-LightGlue (Not yet implemented), SuperPoint-NN, DISK-NN, SuperPoint-SuperGlue, SuperPoint-LightGlue, DISK-LightGlue, LoFTR
# all methods except LoFTR python gvbench_utils.py --matching --pairs /path/to/pairs --features /path/to/feature/root/folder --output_path /path/to/matches/output # LoFTR is different from above methods thus python gvbench_utils.py --matching_loftr --pairs datasets/GV-Bench/release/gt/day.txt --features datasets/GV-Bench/release/features --output_path datasets/GV-Bench/release/matches
-
Image pairs files
- We prepare pairs file for matching under
pairs/
foler. - e.g.
day.txt
means single image pairs andday_5.txt
means sequence image pairs.
- We prepare pairs file for matching under
-
- This work builds upon hloc, thanks for their amazing work.
- Contact:
[email protected]