Spaces:
Running
Running
xuelunshen
commited on
Commit
•
5b63c6a
1
Parent(s):
afc6951
Update README.md
Browse files
README.md
CHANGED
@@ -9,117 +9,4 @@ app_file: app.py
|
|
9 |
pinned: true
|
10 |
---
|
11 |
|
12 |
-
|
13 |
-
[![Forks][forks-shield]][forks-url]
|
14 |
-
[![Stargazers][stars-shield]][stars-url]
|
15 |
-
[![Issues][issues-shield]][issues-url]
|
16 |
-
|
17 |
-
<p align="center">
|
18 |
-
<h1 align="center"><br><ins>Image Matching WebUI</ins><br>find matches between 2 images</h1>
|
19 |
-
</p>
|
20 |
-
|
21 |
-
## Description
|
22 |
-
|
23 |
-
This simple tool efficiently matches image pairs using multiple famous image matching algorithms. The tool features a Graphical User Interface (GUI) designed using [gradio](https://gradio.app/). You can effortlessly select two images and a matching algorithm and obtain a precise matching result.
|
24 |
-
**Note**: the images source can be either local images or webcam images.
|
25 |
-
|
26 |
-
Here is a demo of the tool:
|
27 |
-
|
28 |
-
![demo](assets/demo.gif)
|
29 |
-
|
30 |
-
The tool currently supports various popular image matching algorithms, namely:
|
31 |
-
- [x] [LightGlue](https://github.com/cvg/LightGlue), ICCV 2023
|
32 |
-
- [x] [DeDoDe](https://github.com/Parskatt/DeDoDe), ArXiv 2023
|
33 |
-
- [x] [DarkFeat](https://github.com/THU-LYJ-Lab/DarkFeat), AAAI 2023
|
34 |
-
- [ ] [ASTR](https://github.com/ASTR2023/ASTR), CVPR 2023
|
35 |
-
- [ ] [SEM](https://github.com/SEM2023/SEM), CVPR 2023
|
36 |
-
- [ ] [DeepLSD](https://github.com/cvg/DeepLSD), CVPR 2023
|
37 |
-
- [x] [GlueStick](https://github.com/cvg/GlueStick), ArXiv 2023
|
38 |
-
- [ ] [ConvMatch](https://github.com/SuhZhang/ConvMatch), AAAI 2023
|
39 |
-
- [x] [SOLD2](https://github.com/cvg/SOLD2), CVPR 2021
|
40 |
-
- [ ] [LineTR](https://github.com/yosungho/LineTR), RA-L 2021
|
41 |
-
- [x] [DKM](https://github.com/Parskatt/DKM), CVPR 2023
|
42 |
-
- [x] [RoMa](https://github.com/Vincentqyw/RoMa), Arxiv 2023
|
43 |
-
- [ ] [NCMNet](https://github.com/xinliu29/NCMNet), CVPR 2023
|
44 |
-
- [x] [TopicFM](https://github.com/Vincentqyw/TopicFM), AAAI 2023
|
45 |
-
- [x] [AspanFormer](https://github.com/Vincentqyw/ml-aspanformer), ECCV 2022
|
46 |
-
- [x] [LANet](https://github.com/wangch-g/lanet), ACCV 2022
|
47 |
-
- [ ] [LISRD](https://github.com/rpautrat/LISRD), ECCV 2022
|
48 |
-
- [ ] [REKD](https://github.com/bluedream1121/REKD), CVPR 2022
|
49 |
-
- [x] [ALIKE](https://github.com/Shiaoming/ALIKE), ArXiv 2022
|
50 |
-
- [x] [SGMNet](https://github.com/vdvchen/SGMNet), ICCV 2021
|
51 |
-
- [x] [SuperPoint](https://github.com/magicleap/SuperPointPretrainedNetwork), CVPRW 2018
|
52 |
-
- [x] [SuperGlue](https://github.com/magicleap/SuperGluePretrainedNetwork), CVPR 2020
|
53 |
-
- [x] [D2Net](https://github.com/Vincentqyw/d2-net), CVPR 2019
|
54 |
-
- [x] [R2D2](https://github.com/naver/r2d2), NeurIPS 2019
|
55 |
-
- [x] [DISK](https://github.com/cvlab-epfl/disk), NeurIPS 2020
|
56 |
-
- [ ] [Key.Net](https://github.com/axelBarroso/Key.Net), ICCV 2019
|
57 |
-
- [ ] [OANet](https://github.com/zjhthu/OANet), ICCV 2019
|
58 |
-
- [ ] [SOSNet](https://github.com/scape-research/SOSNet), CVPR 2019
|
59 |
-
- [x] [SIFT](https://docs.opencv.org/4.x/da/df5/tutorial_py_sift_intro.html), IJCV 2004
|
60 |
-
|
61 |
-
## How to use
|
62 |
-
|
63 |
-
### HuggingFace
|
64 |
-
|
65 |
-
Just try it on HF <a href='https://huggingface.co/spaces/Realcat/image-matching-webui'><img src='https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Spaces-blue'> [![Open in OpenXLab](https://cdn-static.openxlab.org.cn/app-center/openxlab_app.svg)](https://openxlab.org.cn/apps/detail/Realcat/image-matching-webui)
|
66 |
-
|
67 |
-
or deploy it locally following the instructions below.
|
68 |
-
|
69 |
-
### Requirements
|
70 |
-
``` bash
|
71 |
-
git clone --recursive https://github.com/Vincentqyw/image-matching-webui.git
|
72 |
-
cd image-matching-webui
|
73 |
-
conda env create -f environment.yaml
|
74 |
-
conda activate imw
|
75 |
-
```
|
76 |
-
|
77 |
-
### run demo
|
78 |
-
``` bash
|
79 |
-
python3 ./app.py
|
80 |
-
```
|
81 |
-
then open http://localhost:7860 in your browser.
|
82 |
-
|
83 |
-
![](assets/gui.jpg)
|
84 |
-
|
85 |
-
### Add your own feature / matcher
|
86 |
-
|
87 |
-
I provide an example to add local feature in [hloc/extractors/example.py](hloc/extractors/example.py). Then add feature settings in `confs` in file [hloc/extract_features.py](hloc/extract_features.py). Last step is adding some settings to `model_zoo` in file [extra_utils/utils.py](extra_utils/utils.py).
|
88 |
-
|
89 |
-
## Contributions welcome!
|
90 |
-
|
91 |
-
External contributions are very much welcome. Please follow the [PEP8 style guidelines](https://www.python.org/dev/peps/pep-0008/) using a linter like flake8 (reformat using command `python -m black .`). This is a non-exhaustive list of features that might be valuable additions:
|
92 |
-
|
93 |
-
- [x] add webcam support
|
94 |
-
- [x] add [line feature matching](https://github.com/Vincentqyw/LineSegmentsDetection) algorithms
|
95 |
-
- [x] example to add a new feature extractor / matcher
|
96 |
-
- [x] ransac to filter outliers
|
97 |
-
- [ ] add [rotation images](https://github.com/pidahbus/deep-image-orientation-angle-detection) options before matching
|
98 |
-
- [ ] support export matches to colmap ([#issue 6](https://github.com/Vincentqyw/image-matching-webui/issues/6))
|
99 |
-
- [ ] add config file to set default parameters
|
100 |
-
- [ ] dynamically load models and reduce GPU overload
|
101 |
-
|
102 |
-
Adding local features / matchers as submodules is very easy. For example, to add the [GlueStick](https://github.com/cvg/GlueStick):
|
103 |
-
|
104 |
-
``` bash
|
105 |
-
git submodule add https://github.com/cvg/GlueStick.git third_party/GlueStick
|
106 |
-
```
|
107 |
-
|
108 |
-
If remote submodule repositories are updated, don't forget to pull submodules with `git submodule update --remote`, if you only want to update one submodule, use `git submodule update --remote third_party/GlueStick`.
|
109 |
-
|
110 |
-
## Resources
|
111 |
-
- [Image Matching: Local Features & Beyond](https://image-matching-workshop.github.io)
|
112 |
-
- [Long-term Visual Localization](https://www.visuallocalization.net)
|
113 |
-
|
114 |
-
## Acknowledgement
|
115 |
-
|
116 |
-
This code is built based on [Hierarchical-Localization](https://github.com/cvg/Hierarchical-Localization). We express our gratitude to the authors for their valuable source code.
|
117 |
-
|
118 |
-
[contributors-shield]: https://img.shields.io/github/contributors/Vincentqyw/image-matching-webui.svg?style=for-the-badge
|
119 |
-
[contributors-url]: https://github.com/Vincentqyw/image-matching-webui/graphs/contributors
|
120 |
-
[forks-shield]: https://img.shields.io/github/forks/Vincentqyw/image-matching-webui.svg?style=for-the-badge
|
121 |
-
[forks-url]: https://github.com/Vincentqyw/image-matching-webui/network/members
|
122 |
-
[stars-shield]: https://img.shields.io/github/stars/Vincentqyw/image-matching-webui.svg?style=for-the-badge
|
123 |
-
[stars-url]: https://github.com/Vincentqyw/image-matching-webui/stargazers
|
124 |
-
[issues-shield]: https://img.shields.io/github/issues/Vincentqyw/image-matching-webui.svg?style=for-the-badge
|
125 |
-
[issues-url]: https://github.com/Vincentqyw/image-matching-webui/issues
|
|
|
9 |
pinned: true
|
10 |
---
|
11 |
|
12 |
+
model="xuelunshen/gim"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|