All Projects → GrumpyZhou → image-matching-toolbox

GrumpyZhou / image-matching-toolbox

Licence: MIT license
This is a toolbox repository to help evaluate various methods that perform image matching from a pair of images.

Programming Languages

Jupyter Notebook
11667 projects

Projects that are alternatives of or similar to image-matching-toolbox

evaluator
No description or website provided.
Stars: ✭ 35 (-86.11%)
Mutual labels:  evaluation
go-eek
Blazingly fast and safe Go evaluation library, created on top of Go pkg/plugin package
Stars: ✭ 37 (-85.32%)
Mutual labels:  evaluation
hypergraph-matching
Code of the paper "Game theoretic hypergraph matching for multi-source image correspondences". [论文代码] 超图匹配和多源图像特征点匹配。
Stars: ✭ 45 (-82.14%)
Mutual labels:  image-matching
DiscEval
Discourse Based Evaluation of Language Understanding
Stars: ✭ 18 (-92.86%)
Mutual labels:  evaluation
audio degrader
Audio degradation toolbox in python, with a command-line tool. It is useful to apply controlled degradations to audio: e.g. data augmentation, evaluation in noisy conditions, etc.
Stars: ✭ 40 (-84.13%)
Mutual labels:  evaluation
PySODEvalToolkit
PySODEvalToolkit: A Python-based Evaluation Toolbox for Salient Object Detection and Camouflaged Object Detection
Stars: ✭ 59 (-76.59%)
Mutual labels:  evaluation
vcf stuff
📊Evaluating, filtering, comparing, and visualising VCF
Stars: ✭ 19 (-92.46%)
Mutual labels:  evaluation
travelling-salesman
Rules for Kiwi.com travelling salesman competition
Stars: ✭ 14 (-94.44%)
Mutual labels:  evaluation
texpr
Boolean evaluation and digital calculation expression engine for GO
Stars: ✭ 18 (-92.86%)
Mutual labels:  evaluation
S-measure
Structure-measure: A New Way to Evaluate Foreground Maps, IJCV2021 (ICCV 2017-Spotlight)
Stars: ✭ 43 (-82.94%)
Mutual labels:  evaluation
cyberrating
🚥 S&P of Blockchains
Stars: ✭ 13 (-94.84%)
Mutual labels:  evaluation
word-benchmarks
Benchmarks for intrinsic word embeddings evaluation.
Stars: ✭ 45 (-82.14%)
Mutual labels:  evaluation
pdq evaluation
Evaluation code for using probabilistic detection quality (PDQ) measure for probabilistic object detection tasks. Currently supports COCO and robotic vision challenge (RVC) data.
Stars: ✭ 34 (-86.51%)
Mutual labels:  evaluation
verif
Software for verifying weather forecasts
Stars: ✭ 70 (-72.22%)
Mutual labels:  evaluation
CBLUE
中文医疗信息处理基准CBLUE: A Chinese Biomedical Language Understanding Evaluation Benchmark
Stars: ✭ 379 (+50.4%)
Mutual labels:  evaluation
sfm-disambiguation-colmap
Making Structure-from-Motion (COLMAP) more robust to symmetries and duplicated structures
Stars: ✭ 189 (-25%)
Mutual labels:  image-matching
table-evaluator
Evaluate real and synthetic datasets with each other
Stars: ✭ 44 (-82.54%)
Mutual labels:  evaluation
eval-estree-expression
Safely evaluate JavaScript (estree) expressions, sync and async.
Stars: ✭ 22 (-91.27%)
Mutual labels:  evaluation
Machine-learning-toolkits-with-python
Machine learning toolkits with Python
Stars: ✭ 31 (-87.7%)
Mutual labels:  evaluation
datasets
🤗 The largest hub of ready-to-use datasets for ML models with fast, easy-to-use and efficient data manipulation tools
Stars: ✭ 13,870 (+5403.97%)
Mutual labels:  evaluation

A Toolbox for Image Feature Matching and Evaluations

In this repository, we provide easy interfaces for several exisiting SotA methods to match image feature correspondences between image pairs. We provide scripts to evaluate their predicted correspondences on common benchmarks for the tasks of image matching, homography estimation and visual localization.

TODOs & Updates

  • Add LoFTR method (2021-7-8)
  • Add simple match visualization (2021-7-8)
  • Use immatch as a python lib under develop mode. Check install.md for details. (2021-7-22)
  • Add SIFT method (opencv version) (2021-7-25)
  • Add script to eval on RobotCar using HLoc (2021-7-31)
  • Add Dog-AffNet-Hardnet (Contributed by Dmytro Mishkin 👏, 2021-8-29)
  • Add AUC metric and opencv solver for Homography estimation on HPatches (#20, 2022-1-12)
  • Add COTR (A naive wrapper without tuning parameters, 2022-3-29)
  • Add support to eval on Image Matching Challenge
  • Add scripts to eval on SimLoc challenge.

Comments from QJ: Currently I am quite busy with my study & work. So it will take some time before I release the next two TODOs.

Supported Methods & Evaluations

Sparse Keypoint-based Matching:

Semi-dense Matching:

Supported Evaluations :

  • Image feature matching on HPatches
  • Homography estimation on HPatches
  • Visual localization benchmarks:
    • InLoc
    • Aachen (original + v1.1)
    • RobotCar Seasons (v1 + v2)

Repository Overview

The repository is structured as follows:

  • configs/: Each method has its own yaml (.yml) file to configure its testing parameters.
  • data/: All datasets should be placed under this folder following our instructions described in Data Preparation.
  • immatch/: It contains implementations of method wrappers and evaluation interfaces.
  • outputs/: All evaluation results are supposed to be saved here. One folder per benchmark.
  • pretrained/: It contains the pretrained models of the supported methods.
  • third_party/: The real implementation of the supported methods from their original repositories, as git submodules.
  • notebooks/: It contains jupyter notebooks that show example codes to quickly access the methods implemented in this repo.
  • docs/: It contains separate documentation about installation and evaluation. To keep a clean face of this repo :).

👉Refer to install.md for details about installation.

👉Refer to evaluation.md for details about evaluation on benchmarks.

Example Code for Quick Testing

To use a specific method to perform the matching task, you simply need to do:

  • Initialize a matcher using its config file. See examples of config yaml files under configs folder, eg., patch2pix.yml. Each config file contains multiple sections, each section corresponds to one setting. Here, we use the setting (tagged by 'example') for testing on example image pairs.
  • Perform matching
import immatch
import yaml
from immatch.utils import plot_matches

# Initialize model
with open('configs/patch2pix.yml', 'r') as f:
    args = yaml.load(f, Loader=yaml.FullLoader)['example']
model = immatch.__dict__[args['class']](args)
matcher = lambda im1, im2: model.match_pairs(im1, im2)

# Specify the image pair
im1 = 'third_party/patch2pix/examples/images/pair_2/1.jpg'
im2 = 'third_party/patch2pix/examples/images/pair_2/2.jpg'

# Match and visualize
matches, _, _, _ = matcher(im1, im2)    
plot_matches(im1, im2, matches, radius=2, lines=True)

example matches

👉 Try out the code using example notebook .

Notice

  • This repository is expected to be actively maintained (at least before I graduate🤣🤣) and gradually (slowly) grow for new features of interest.
  • Suggestions regarding how to improve this repo, such as adding new SotA image matching methods or new benchmark evaluations, are welcome 👏.

Regarding Patch2Pix

With this reprository, one can reproduce the tables reported in our paper accepted at CVPR2021: Patch2Pix: Epipolar-Guided Pixel-Level Correspondences[pdf]. Check our patch2pix repository for its training code.

Disclaimer

  • All of the supported methods and evaluations are not implemented from scratch by us. Instead, we modularize their original code to define unified interfaces.
  • If you are using the results of a method, remember to cite the corresponding paper.
  • All credits of the implemetation of those methods belong to their authors .
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].