In this work, we compare the performance of interest point detectors and descriptors. We evaluate the detectors based on their repeatability and coverage. We also introduce matching ratios as a metric for measuring the performance of detectors, providing a comprehensive study. Descriptors are compared based on their ability to correctly estimate homography. The distintiveness and accuracy of descriptors is qualitatively assessed using the reprojection error of the nearest neighbor matches.
For more details, please see
This script evaluates interest features on the full sequences of HPatches Dataset. The following features are supported as of now:
- SIFT (
sift
) - ORB (
orb
) - SFOP (
sfop
) - It has no descriptor - SuperPoint (
superpoint
) - D2Net (
d2net
) - LIFT (
lift
)
- Python 3.6+
- OpenCV
- PyTorch
- h5py imageio imagesize matplotlib numpy scipy tqdm
- For using LIFT: Goto this link and
pip3 install -r requirements.txt
(You may skip Theano.) - For using SIFT: You must have OpenCV with SIFT support
- CMake
- Run
setup.sh
. It will download the HPatches Dataset, setup SFOP and LIFT. It will also get the pre-trained models for LIFT, SuperPointNet and D2-Net. - To evaluate the keypoint detectors, you have to extract them first:
python extract_features.py --features orb
- Now you can run the evaluation scripts for detectors and descriptors
python evaluate_kp_detector.py --features orb
python evaluate_descr.py --features orb
- The results will be stored in the
results
directory by the name of the features used. - To see the result table, go to the
results
directory and run
python view_kp_results.py --features orb
python view_descr_results.py --features orb