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
Image Matching WebUI (IMCUI) 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:
| Algorithm | Supported | Conference/Journal | Year | GitHub Link |
|---|---|---|---|---|
| RIPE | ✅ | ICCV | 2025 | Link |
| RDD | ✅ | CVPR | 2025 | Link |
| LiftFeat | ✅ | ICRA | 2025 | Link |
| DaD | ✅ | ARXIV | 2025 | Link |
| MINIMA | ✅ | ARXIV | 2024 | Link |
| XoFTR | ✅ | CVPR | 2024 | Link |
| EfficientLoFTR | ✅ | CVPR | 2024 | Link |
| MASt3R | ✅ | CVPR | 2024 | Link |
| DUSt3R | ✅ | CVPR | 2024 | Link |
| OmniGlue | ✅ | CVPR | 2024 | Link |
| XFeat | ✅ | CVPR | 2024 | Link |
| RoMa | ✅ | CVPR | 2024 | Link |
| DeDoDe | ✅ | 3DV | 2024 | Link |
| Mickey | ❌ | CVPR | 2024 | Link |
| GIM | ✅ | ICLR | 2024 | Link |
| ALIKED | ✅ | ICCV | 2023 | Link |
| LightGlue | ✅ | ICCV | 2023 | Link |
| DarkFeat | ✅ | AAAI | 2023 | Link |
| SFD2 | ✅ | CVPR | 2023 | Link |
| IMP | ✅ | CVPR | 2023 | Link |
| ASTR | ❌ | CVPR | 2023 | Link |
| SEM | ❌ | CVPR | 2023 | Link |
| DeepLSD | ❌ | CVPR | 2023 | Link |
| GlueStick | ✅ | ICCV | 2023 | Link |
| ConvMatch | ❌ | AAAI | 2023 | Link |
| LoFTR | ✅ | CVPR | 2021 | Link |
| SOLD2 | ✅ | CVPR | 2021 | Link |
| LineTR | ❌ | RA-L | 2021 | Link |
| DKM | ✅ | CVPR | 2023 | Link |
| NCMNet | ❌ | CVPR | 2023 | Link |
| TopicFM | ✅ | AAAI | 2023 | Link |
| AspanFormer | ✅ | ECCV | 2022 | Link |
| LANet | ✅ | ACCV | 2022 | Link |
| LISRD | ❌ | ECCV | 2022 | Link |
| REKD | ❌ | CVPR | 2022 | Link |
| CoTR | ✅ | ICCV | 2021 | Link |
| ALIKE | ✅ | TMM | 2022 | Link |
| RoRD | ✅ | IROS | 2021 | Link |
| SGMNet | ✅ | ICCV | 2021 | Link |
| SuperPoint | ✅ | CVPRW | 2018 | Link |
| SuperGlue | ✅ | CVPR | 2020 | Link |
| D2Net | ✅ | CVPR | 2019 | Link |
| R2D2 | ✅ | NeurIPS | 2019 | Link |
| DISK | ✅ | NeurIPS | 2020 | Link |
| Key.Net | ❌ | ICCV | 2019 | Link |
| OANet | ❌ | ICCV | 2019 | Link |
| SOSNet | ✅ | CVPR | 2019 | Link |
| HardNet | ✅ | NeurIPS | 2017 | Link |
| SIFT | ✅ | IJCV | 2004 | Link |
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 imcui
pip install -e .
or using docker:
docker pull vincentqin/image-matching-webui:latest
docker run -it -d \
-p 7860:7860 \
-p 8000:8000 \
-p 8001:8001 \
-p 8265:8265 \
--name imc-test \
vincentqin/image-matching-webui:latest
then webui and api server are auto-run.
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.4-py3-none-any.whl.
File metadata
- Download URL: imcui-0.0.4-py3-none-any.whl
- Upload date:
- Size: 97.2 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
907ebf922a0583f1951494c8f83f448dfaae508d890489affb71c3538bb11f17
|
|
| MD5 |
bbe4cef7dd91d5ea09a21319c7944dc8
|
|
| BLAKE2b-256 |
3e9d5ed7238435ce2a4c11b15039105c1730ed8a55d41c85121cc717a63fd50e
|
Provenance
The following attestation bundles were made for imcui-0.0.4-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.4-py3-none-any.whl -
Subject digest:
907ebf922a0583f1951494c8f83f448dfaae508d890489affb71c3538bb11f17 - Sigstore transparency entry: 293283832
- Sigstore integration time:
-
Permalink:
Vincentqyw/image-matching-webui@56e76ffc082ea16bc34e1e470b209f0f7c57699e -
Branch / Tag:
refs/tags/v0.0.4 - Owner: https://github.com/Vincentqyw
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@56e76ffc082ea16bc34e1e470b209f0f7c57699e -
Trigger Event:
release
-
Statement type: