jarvisyjw / GV-Bench

A geometric verification benchmark targeting long-term loop closure detection.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GV-Bench: Benchmarking Local Feature Matching for Geometric Verification of Long-term Loop Closure Detection

Description

Abstract

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.

Run-time Analysis

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.

Description

News

  • ๐Ÿš€ 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!

Release Timeline

  • Appendix for visualization
    • Visualization of image matches
    • Visualization of inliers' distirbution
  • Release benchmark sequences.
    • Benchmark-easy
      • Day
      • Weather
      • Night-easy
      • Season-easy
    • Benchmark-hard
  • 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

Installation

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 .

Usage

  • 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 gt/ foler with data structure:
        image0 image1 1/0(label)

Acknowledgement

  • This work builds upon hloc, thanks for their amazing work.
  • Contact: jingwen.yu@connect.ust.hk

About

A geometric verification benchmark targeting long-term loop closure detection.

License:MIT License


Languages

Language:Python 100.0%