
vincentqyw/image-matching-webui
Developer tools๐ค image matching webui
๊ฐ์
Image Matching WebUI Matching Keypoints between two images 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. : the images source can be either local images or webcam images. https://github.com/Vincentqyw/image-matching-webui/assets/18531182/263534692-c3484d1b-cc00-4fdc-9b31-e5b7af07ecd9 The tool currently supports various popular image matching algorithms, namely: or deploy it locally following the instructions below. Update: now support install from pip, just run: More Docker Compose Commands (click to expand) Deploy to Railway, setting up a Custom Start Command in Deploy section:
README
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.
Try it on
Here is a demo of the tool:
The tool currently supports various popular image matching algorithms, namely:
| Algorithm | Supported | Conference/Journal | Year | GitHub Link |
|---|---|---|---|---|
| LoMa | โ | ECCV | 2026 | Link |
| RaCo | โ | 3DV | 2026 | 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 |
| SphereGlue | โ | CVPRW | 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
Just try it on
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
# Start the WebUI service
docker-compose up webui
# Or run in the background
docker-compose up -d webui
Deploy to Railway
Deploy to Railway, setting up a Custom Start Command in Deploy section:
python -m imcui.api.server
Run demo
# Using the package CLI (recommended)
imcui
# Or using the direct script
python app.py
then open http://localhost:7860 in your browser.
Command Line Interface
The imcui package provides a powerful command-line interface with various options:
Basic Usage
Command Line Options
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 your configuration file.
For a detailed step-by-step guide, see CLAUDE.md and the integrate-matcher skill at .claude/skills/integrate-matcher/SKILL.md.
Configuration file locations (in priority order):
- Custom config file specified with
--configparameter config.yamlin current directoryconfig/config.yamlin current directory- Package default config (
imcui/config/app.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:
- [x] support pip install command
- [x] add CPU CI
- [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)
- [x] add config file to set default parameters
- [x] 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 remove a submodule, follow these steps:
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.
์ถ์ฒ ๋๊ตฌ
๋ค๋ฅธ ํค์๋๋ฅผ ์ ๋ ฅํ๊ฑฐ๋ ํํฐ๋ฅผ ์ ๊ฑฐํด ๋ณด์ธ์.
์ค์น
npx skillfish add vincentqyw/image-matching-webui