Skip to content

Vincentqyw/image-matching-webui

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7a5cc96 Β· Jan 5, 2025
Dec 29, 2024
Apr 16, 2024
Jan 5, 2025
Apr 6, 2024
Jan 5, 2025
Dec 31, 2024
Dec 23, 2024
Jun 22, 2023
Jan 1, 2025
Dec 29, 2024
Dec 29, 2024
Jan 5, 2024
Oct 5, 2024
Nov 11, 2023
Jan 1, 2025
Jan 5, 2025
Jan 1, 2025
Dec 23, 2024
Dec 23, 2024
Jan 5, 2025
Dec 29, 2024
Jan 1, 2025
Dec 23, 2024

Repository files navigation

Contributors Forks Stargazers Issues


Image Matching WebUI
Matching Keypoints between two images

PyPI Release PyPI - Version Docker Image Version

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.

Try it on Open In Studio

Here is a demo of the tool:

imw.mp4

The tool currently supports various popular image matching algorithms, namely:

How to use

HuggingFace / Lightning AI

Just try it on Open In Studio

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.