KyriakiTych/image-matching
[![Contributors][contributors-shield]][contributors-url] [![Forks][forks-shield]][forks-url] [![Stargazers][stars-shield]][stars-url] [![Issues][issues-shield]][issues-url]
<p align="center"> <h1 align="center"><br><ins>Image Matching WebUI</ins><br>find matches between 2 images</h1> </p>
Description
This simple tool efficiently matches image pairs using multiple famous image matching algorithms. The tool features a Graphical User Interface (GUI) designed using gradio. You can effortlessly select two images and a matching algorithm and obtain a precise matching result. Note: the images source can be either local images or webcam images.
Here is a demo of the tool:
The tool currently supports various popular image matching algorithms, namely:
- [x] LightGlue, ICCV 2023
- [x] DeDoDe, ArXiv 2023
- [x] DarkFeat, AAAI 2023
- [ ] ASTR, CVPR 2023
- [ ] SEM, CVPR 2023
- [ ] DeepLSD, CVPR 2023
- [x] GlueStick, ArXiv 2023
- [ ] ConvMatch, AAAI 2023
- [x] SOLD2, CVPR 2021
- [ ] LineTR, RA-L 2021
- [x] DKM, CVPR 2023
- [x] RoMa, Arxiv 2023
- [ ] NCMNet, CVPR 2023
- [x] TopicFM, AAAI 2023
- [x] AspanFormer, ECCV 2022
- [x] LANet, ACCV 2022
- [ ] LISRD, ECCV 2022
- [ ] REKD, CVPR 2022
- [x] ALIKE, ArXiv 2022
- [x] SGMNet, ICCV 2021
- [x] SuperPoint, CVPRW 2018
- [x] SuperGlue, CVPR 2020
- [x] D2Net, CVPR 2019
- [x] R2D2, NeurIPS 2019
- [x] DISK, NeurIPS 2020
- [ ] Key.Net, ICCV 2019
- [ ] OANet, ICCV 2019
- [ ] SOSNet, CVPR 2019
- [x] SIFT, IJCV 2004
How to use
HuggingFace
Just try it on HF <a href='https://huggingface.co/spaces/Realcat/image-matching-webui'><img src='https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Spaces-blue'> 
or deploy it locally following the instructions below.
Requirements
git clone --recursive https://github.com/Vincentqyw/image-matching-webui.git
cd image-matching-webui
conda env create -f environment.yaml
conda activate imwrun demo
python3 ./app.pythen open http://localhost:7860 in your browser.
Add your own feature / matcher
I provide an example to add local feature in hloc/extractors/example.py. Then add feature settings in confs in file hloc/extract_features.py. Last step is adding some settings to model_zoo in file extra_utils/utils.py.
Contributions welcome!
External contributions are very much welcome. Please follow the PEP8 style guidelines using a linter like flake8 (reformat using command python -m black .). This is a non-exhaustive list of features that might be valuable additions:
- [x] add webcam support
- [x] add line feature matching algorithms
- [x] example to add a new feature extractor / matcher
- [x] ransac to filter outliers
- [ ] add rotation images options before matching
- [ ] support export matches to colmap (#issue 6)
- [ ] add config file to set default parameters
- [ ] dynamically load models and reduce GPU overload
Adding local features / matchers as submodules is very easy. For example, to add the GlueStick:
git submodule add https://github.com/cvg/GlueStick.git third_party/GlueStickIf remote submodule repositories are updated, don't forget to pull submodules with git submodule update --remote, if you only want to update one submodule, use git submodule update --remote third_party/GlueStick.
Resources
Acknowledgement
This code is built based on Hierarchical-Localization. We express our gratitude to the authors for their valuable source code.
[contributors-shield]: https://img.shields.io/github/contributors/Vincentqyw/image-matching-webui.svg?style=for-the-badge [contributors-url]: https://github.com/Vincentqyw/image-matching-webui/graphs/contributors [forks-shield]: https://img.shields.io/github/forks/Vincentqyw/image-matching-webui.svg?style=for-the-badge [forks-url]: https://github.com/Vincentqyw/image-matching-webui/network/members [stars-shield]: https://img.shields.io/github/stars/Vincentqyw/image-matching-webui.svg?style=for-the-badge [stars-url]: https://github.com/Vincentqyw/image-matching-webui/stargazers [issues-shield]: https://img.shields.io/github/issues/Vincentqyw/image-matching-webui.svg?style=for-the-badge [issues-url]: https://github.com/Vincentqyw/image-matching-webui/issues
