image-matching-webui
"--- title: Image Matching Webui emoji: 🤗 colorFrom: red colorTo: yellow sdk: gradio sdk_version: 5.38.0 app_file: app.py pinned: true license: apache-2.0 --- [![Contributors][contributors-shield]][contributors-url] [![Forks][forks-shield]][forks-url] [![Stargazers][stars-shield]][stars-url] [![Issu..."
Best Scenarios
Technical Constraints
🕸️ Neural Graph Explorer
v15.13📈 Interest Trend
* Real-time activity index across HuggingFace, GitHub and Research citations.
🕸️ Neural Graph Explorer
v15.13📈 Interest Trend
* Real-time activity index across HuggingFace, GitHub and Research citations.
Benchmark integration for interactive spaces is in preview.
🔬Deep Dive
Expand Details [+]▾
🛠️ Technical Profile
⚡ Hardware & Scale
🌐 Cloud & Rights
🎮 Demo Preview
💻 Usage
pip install gradio git clone https://huggingface.co/spaces/Realcat/image-matching-webui Space Overview
[![Contributors][contributors-shield]][contributors-url] [![Forks][forks-shield]][forks-url] [![Stargazers][stars-shield]][stars-url] [![Issues][issues-shield]][issues-url]
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
function r(){document.querySelectorAll(".markdown-copy-btn").forEach(t=>{t.getAttribute("data-init")||(t.setAttribute("data-init","true"),t.addEventListener("click",async()=>{const n=t,i=n.dataset.code||"",e=n.querySelector(".btn-text"),o=n.querySelector(".btn-icon");try{await navigator.clipboard.writeText(i),e&&(e.textContent="Done!"),o&&(o.textContent="✅"),setTimeout(()=>{e&&(e.textContent="Copy"),o&&(o.textContent="📋")},2e3)}catch(c){console.error("Copy failed",c)}}))})}r();document.addEventListener("astro:after-swap",r);
[![Contributors][contributors-shield]][contributors-url] [![Forks][forks-shield]][forks-url] [![Stargazers][stars-shield]][stars-url] [![Issues][issues-shield]][issues-url]
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:
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:
| 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
`` bash
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:
<h3 class="text-lg font-semibold mt-6 mb-3 text-gray-900 dark:text-white">Deploy to Railway</h3>Custom Start CommandDeploy to Railway, setting up a
inDeploysection:
<h3 class="text-lg font-semibold mt-6 mb-3 text-gray-900 dark:text-white">Run demo</h3>
then open http://localhost:7860 in your browser.confs
<h3 class="text-lg font-semibold mt-6 mb-3 text-gray-900 dark:text-white">Add your own feature / matcher</h3>
I provide an example to add local feature in imcui/hloc/extractors/example.py. Then add feature settings in
in file imcui/hloc/extract_features.py. Last step is adding some settings tomatcher_zooin file imcui/ui/config.yaml.<h3 class="text-lg font-semibold mt-6 mb-3 text-gray-900 dark:text-white">Upload models</h3>
IMCUI hosts all models on Huggingface. You can upload your model to Huggingface and add it to the Realcat/imcui_checkpoints repository.
<h2 class="text-xl font-bold mt-8 mb-4 text-gray-900 dark:text-white">Contributions welcome!</h2>
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:
Adding local features / matchers as submodules is very easy. For example, to add the GlueStick:
- [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
If remote submodule repositories are updated, don't forget to pull submodules with:
if you only want to update one submodule, usegit submodule update --remote imcui/third_party/GlueStick.To format code before committing, run:
Contributors
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
11,768 characters total
