Image Matching Webui: A tool for matching images using sota algorithms with a Gradio UI
Project description
Image Matching WebUI
Matching Keypoints between two images
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:
- MINIMA, ARXIV 2024
- XoFTR, CVPR 2024
- EfficientLoFTR, CVPR 2024
- MASt3R, CVPR 2024
- DUSt3R, CVPR 2024
- OmniGlue, CVPR 2024
- XFeat, CVPR 2024
- RoMa, CVPR 2024
- DeDoDe, 3DV 2024
- Mickey, CVPR 2024
- GIM, ICLR 2024
- ALIKED, ICCV 2023
- LightGlue, ICCV 2023
- DarkFeat, AAAI 2023
- SFD2, CVPR 2023
- IMP, CVPR 2023
- ASTR, CVPR 2023
- SEM, CVPR 2023
- DeepLSD, CVPR 2023
- GlueStick, ICCV 2023
- ConvMatch, AAAI 2023
- LoFTR, CVPR 2021
- SOLD2, CVPR 2021
- LineTR, RA-L 2021
- DKM, CVPR 2023
- NCMNet, CVPR 2023
- TopicFM, AAAI 2023
- AspanFormer, ECCV 2022
- LANet, ACCV 2022
- LISRD, ECCV 2022
- REKD, CVPR 2022
- CoTR, ICCV 2021
- ALIKE, TMM 2022
- RoRD, IROS 2021
- SGMNet, ICCV 2021
- SuperPoint, CVPRW 2018
- SuperGlue, CVPR 2020
- D2Net, CVPR 2019
- R2D2, NeurIPS 2019
- DISK, NeurIPS 2020
- Key.Net, ICCV 2019
- OANet, ICCV 2019
- SOSNet, CVPR 2019
- HardNet, NeurIPS 2017
- SIFT, IJCV 2004
How to use
HuggingFace / Lightning AI
or deploy it locally following the instructions below.
Requirements
Install from pip [NEW]
Update: now support install from pip, just run:
pip install imcui
Install from source
git clone --recursive https://github.com/Vincentqyw/image-matching-webui.git
cd image-matching-webui
conda env create -f environment.yaml
conda activate imw
pip install -e .
or using docker:
docker pull vincentqin/image-matching-webui:latest
docker run -it -p 7860:7860 vincentqin/image-matching-webui:latest python app.py --server_name "0.0.0.0" --server_port=7860
Deploy to Railway
Deploy to Railway, setting up a Custom Start Command in Deploy section:
python -m imcui.api.server
Run demo
python app.py --config ./config/config.yaml
then open http://localhost:7860 in your browser.
Add your own feature / matcher
I provide an example to add local feature in imcui/hloc/extractors/example.py. Then add feature settings in confs in file imcui/hloc/extract_features.py. Last step is adding some settings to matcher_zoo in file imcui/ui/config.yaml.
Upload models
IMCUI hosts all models on Huggingface. You can upload your model to Huggingface and add it to the Realcat/imcui_checkpoints repository.
Contributions welcome!
External contributions are very much welcome. Please follow the PEP8 style guidelines using a linter like flake8. This is a non-exhaustive list of features that might be valuable additions:
- support pip install command
- add CPU CI
- add webcam support
- add line feature matching algorithms
- example to add a new feature extractor / matcher
- 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 imcui/third_party/GlueStick
If remote submodule repositories are updated, don't forget to pull submodules with:
git submodule update --init --recursive # init and download
git submodule update --remote # update
if you only want to update one submodule, use git submodule update --remote imcui/third_party/GlueStick.
To format code before committing, run:
pre-commit run -a # Auto-checks and fixes
Contributors
Resources
Acknowledgement
This code is built based on Hierarchical-Localization. We express our gratitude to the authors for their valuable source code.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file imcui-0.0.2-py3-none-any.whl.
File metadata
- Download URL: imcui-0.0.2-py3-none-any.whl
- Upload date:
- Size: 96.9 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c19167afd8f588caa08598a7a5f27d364ef31adba38914ec07d3ad7b7be08573
|
|
| MD5 |
620922081301a89254e6a1e828d32233
|
|
| BLAKE2b-256 |
00cd7341e3d70757cd8b12d8979878086c8edf79ac9ab2c3538edee236a3a491
|
Provenance
The following attestation bundles were made for imcui-0.0.2-py3-none-any.whl:
Publisher:
release.yml on Vincentqyw/image-matching-webui
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
imcui-0.0.2-py3-none-any.whl -
Subject digest:
c19167afd8f588caa08598a7a5f27d364ef31adba38914ec07d3ad7b7be08573 - Sigstore transparency entry: 159904408
- Sigstore integration time:
-
Permalink:
Vincentqyw/image-matching-webui@7a5cc96cf8605bab2422f8c715bead4e65e8efe8 -
Branch / Tag:
refs/tags/v0.0.2 - Owner: https://github.com/Vincentqyw
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@7a5cc96cf8605bab2422f8c715bead4e65e8efe8 -
Trigger Event:
release
-
Statement type: