vggt Claude commited on
Commit
e90a038
·
0 Parent(s):

feat: lightweight HF Space deployment branch

Browse files

- pip install imcui based deployment (no source code needed)
- app.py: minimal launcher from imcui package
- config/app.yaml: matcher zoo with 30+ algorithms
- packages.txt: system deps (build-essential, ffmpeg, etc.)
- requirements.txt: single imcui dependency

Co-Authored-By: Claude <noreply@anthropic.com>

Files changed (6) hide show
  1. .gitignore +6 -0
  2. README.md +39 -0
  3. app.py +30 -0
  4. config/app.yaml +518 -0
  5. packages.txt +7 -0
  6. requirements.txt +1 -0
.gitignore ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ __pycache__/
2
+ *.py[cod]
3
+ *.egg-info/
4
+ .venv/
5
+ .idea/
6
+ .vscode/
README.md ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: Image Matching WebUI
3
+ emoji: 👀
4
+ colorFrom: blue
5
+ colorTo: green
6
+ sdk: gradio
7
+ sdk_version: "4.44.0"
8
+ app_file: app.py
9
+ pinned: false
10
+ license: apache-2.0
11
+ ---
12
+
13
+ # Image Matching WebUI
14
+
15
+ A Gradio WebUI for image matching using state-of-the-art algorithms.
16
+
17
+ ## Quick Start
18
+
19
+ ```bash
20
+ pip install imcui
21
+ imcui
22
+ ```
23
+
24
+ This Space runs image matching with 30+ algorithms including: LightGlue, LoFTR, RoMa, DKM, OmniGlue, GlueStick, Mast3R, DUSt3R, GIM, and many more.
25
+
26
+ ## Supported Matchers
27
+
28
+ | Category | Algorithms |
29
+ |----------|------------|
30
+ | Sparse | SuperPoint+LightGlue, DISK+LightGlue, ALIKED+LightGlue, SuperGlue, SIFT, XFeat |
31
+ | Dense | LoFTR, SE2-LoFTR, Efficient LoFTR, RoMa, RoMaV2, DKM, LoMa |
32
+ | End-to-End | OmniGlue, GlueStick, Mast3R, DUSt3R, GIM |
33
+ | Efficient | MINIMA variants, XFeat, ALIKED |
34
+
35
+ ## Links
36
+
37
+ - 📦 [PyPI](https://pypi.org/project/imcui/)
38
+ - 💻 [GitHub](https://github.com/Vincentqyw/image-matching-webui)
39
+ - 📄 [Paper (RoMa)](https://arxiv.org/abs/2305.15404)
app.py ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import argparse
2
+ from pathlib import Path
3
+ from imcui.ui.app_class import ImageMatchingApp
4
+
5
+ if __name__ == "__main__":
6
+ parser = argparse.ArgumentParser()
7
+ parser.add_argument(
8
+ "--server_name",
9
+ type=str,
10
+ default="0.0.0.0",
11
+ help="server name",
12
+ )
13
+ parser.add_argument(
14
+ "--server_port",
15
+ type=int,
16
+ default=7860,
17
+ help="server port",
18
+ )
19
+ parser.add_argument(
20
+ "--config",
21
+ type=str,
22
+ default=str(Path(__file__).parent / "config/app.yaml"),
23
+ help="config file",
24
+ )
25
+ args = parser.parse_args()
26
+ ImageMatchingApp(
27
+ args.server_name,
28
+ args.server_port,
29
+ config=args.config,
30
+ ).run()
config/app.yaml ADDED
@@ -0,0 +1,518 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ server:
2
+ name: "0.0.0.0"
3
+ port: 7860
4
+
5
+ defaults:
6
+ setting_threshold: 0.1
7
+ max_keypoints: 2000
8
+ keypoint_threshold: 0.05
9
+ enable_ransac: true
10
+ ransac_method: CV2_USAC_MAGSAC
11
+ ransac_reproj_threshold: 8
12
+ ransac_confidence: 0.9999
13
+ ransac_max_iter: 10000
14
+ ransac_num_samples: 4
15
+ match_threshold: 0.2
16
+ setting_geometry: Homography
17
+
18
+ matcher_zoo:
19
+ superpoint+lightglue:
20
+ matcher: superpoint-lightglue
21
+ feature: superpoint_max
22
+ standalone: false
23
+ info:
24
+ name: LightGlue
25
+ source: "ICCV 2023"
26
+ github: https://github.com/cvg/LightGlue
27
+ paper: https://arxiv.org/pdf/2306.13643
28
+ display: true
29
+
30
+ disk+lightglue:
31
+ matcher: disk-lightglue
32
+ feature: disk
33
+ standalone: false
34
+ info:
35
+ name: LightGlue
36
+ source: "ICCV 2023"
37
+ github: https://github.com/cvg/LightGlue
38
+ paper: https://arxiv.org/pdf/2306.13643
39
+ display: true
40
+
41
+ aliked+lightglue:
42
+ matcher: aliked-lightglue
43
+ feature: aliked-n16
44
+ standalone: false
45
+ info:
46
+ name: ALIKED
47
+ source: "ICCV 2023"
48
+ github: https://github.com/Shiaoming/ALIKED
49
+ paper: https://arxiv.org/pdf/2304.03608.pdf
50
+ display: true
51
+
52
+ superpoint+superglue:
53
+ matcher: superglue
54
+ feature: superpoint_max
55
+ standalone: false
56
+ info:
57
+ name: SuperGlue
58
+ source: "CVPR 2020"
59
+ github: https://github.com/magicleap/SuperGluePretrainedNetwork
60
+ paper: https://arxiv.org/abs/1911.11763
61
+ display: true
62
+
63
+ loftr:
64
+ matcher: loftr
65
+ standalone: true
66
+ info:
67
+ name: LoFTR
68
+ source: "CVPR 2021"
69
+ github: https://github.com/zju3dv/LoFTR
70
+ paper: https://arxiv.org/pdf/2104.00680
71
+ project: https://zju3dv.github.io/loftr
72
+ display: true
73
+
74
+ eloftr:
75
+ matcher: eloftr
76
+ standalone: true
77
+ info:
78
+ name: Efficient LoFTR
79
+ source: "CVPR 2024"
80
+ github: https://github.com/zju3dv/efficientloftr
81
+ paper: https://zju3dv.github.io/efficientloftr/files/EfficientLoFTR.pdf
82
+ project: https://zju3dv.github.io/efficientloftr
83
+ display: true
84
+
85
+ se2loftr:
86
+ matcher: se2loftr
87
+ standalone: true
88
+ skip_ci: true
89
+ info:
90
+ name: SE2-LoFTR
91
+ source: "3DV 2025"
92
+ github: https://github.com/abharadwaj-1234/SE2-LoFTR
93
+ paper: https://arxiv.org/abs/2503.10814
94
+ display: true
95
+ efficiency: medium
96
+
97
+ RoMa:
98
+ matcher: roma
99
+ standalone: true
100
+ skip_ci: true
101
+ info:
102
+ name: RoMa
103
+ source: "CVPR 2024"
104
+ github: https://github.com/Parskatt/RoMa
105
+ paper: https://arxiv.org/abs/2305.15404
106
+ project: https://parskatt.github.io/RoMa
107
+ display: true
108
+ efficiency: low
109
+
110
+ RoMaV2:
111
+ matcher: romav2
112
+ standalone: true
113
+ skip_ci: true
114
+ info:
115
+ name: RoMaV2
116
+ source: "ARXIV 2025"
117
+ github: https://github.com/Parskatt/RoMaV2
118
+ paper: https://arxiv.org/abs/2412.12906
119
+ display: true
120
+ efficiency: low
121
+
122
+ dkm:
123
+ matcher: dkm
124
+ standalone: true
125
+ skip_ci: true
126
+ enable: true
127
+ info:
128
+ name: DKM
129
+ source: "CVPR 2023"
130
+ github: https://github.com/Parskatt/DKM
131
+ paper: https://arxiv.org/abs/2202.00667
132
+ project: https://parskatt.github.io/DKM
133
+ display: true
134
+ efficiency: low
135
+
136
+ omniglue:
137
+ enable: true
138
+ matcher: omniglue
139
+ standalone: true
140
+ info:
141
+ name: OmniGlue
142
+ source: "CVPR 2024"
143
+ github: https://github.com/Vincentqyw/omniglue-onnx
144
+ paper: https://arxiv.org/abs/2405.12979
145
+ project: https://hwjiang1510.github.io/OmniGlue
146
+ display: true
147
+
148
+ xfeat+lightglue:
149
+ enable: true
150
+ matcher: xfeat_lightglue
151
+ standalone: true
152
+ info:
153
+ name: xfeat+lightglue
154
+ source: "CVPR 2024"
155
+ github: https://github.com/Vincentqyw/omniglue-onnx
156
+ paper: https://arxiv.org/abs/2405.12979
157
+ project: https://hwjiang1510.github.io/OmniGlue
158
+ display: true
159
+
160
+ gluestick:
161
+ enable: true
162
+ matcher: gluestick
163
+ standalone: true
164
+ info:
165
+ name: GlueStick
166
+ source: "ICCV 2023"
167
+ github: https://github.com/cvg/GlueStick
168
+ paper: https://arxiv.org/abs/2304.02008
169
+ project: https://iago-suarez.com/gluestick
170
+ display: true
171
+
172
+ topicfm:
173
+ matcher: topicfm
174
+ standalone: true
175
+ info:
176
+ name: TopicFM
177
+ source: "AAAI 2023"
178
+ github: https://github.com/TruongKhang/TopicFM
179
+ paper: https://arxiv.org/abs/2307.00485
180
+ display: true
181
+
182
+ aspanformer:
183
+ matcher: aspanformer
184
+ standalone: true
185
+ info:
186
+ name: ASpanformer
187
+ source: "ECCV 2022"
188
+ github: https://github.com/Vincentqyw/ml-aspanformer
189
+ paper: https://arxiv.org/abs/2208.14201
190
+ display: true
191
+
192
+ Mast3R:
193
+ enable: true
194
+ matcher: mast3r
195
+ standalone: true
196
+ skip_ci: true
197
+ info:
198
+ name: Mast3R
199
+ source: "CVPR 2024"
200
+ github: https://github.com/naver/mast3r
201
+ paper: https://arxiv.org/abs/2406.09756
202
+ project: https://dust3r.europe.naverlabs.com
203
+ display: true
204
+ efficiency: low
205
+
206
+ DUSt3R:
207
+ enable: true
208
+ matcher: duster
209
+ standalone: true
210
+ info:
211
+ name: DUSt3R
212
+ source: "CVPR 2024"
213
+ github: https://github.com/naver/dust3r
214
+ paper: https://arxiv.org/abs/2312.14132
215
+ project: https://dust3r.europe.naverlabs.com
216
+ display: true
217
+
218
+ GIM(RoMa):
219
+ matcher: gim_roma
220
+ standalone: true
221
+ enable: true
222
+ skip_ci: true
223
+ info:
224
+ name: GIM(RoMa)
225
+ source: "ICLR 2024"
226
+ github: https://github.com/xuelunshen/gim
227
+ paper: https://arxiv.org/abs/2402.11095
228
+ project: https://xuelunshen.com/gim
229
+ display: true
230
+ efficiency: low
231
+
232
+ GIM(dkm):
233
+ enable: true
234
+ skip_ci: true
235
+ matcher: gim(dkm)
236
+ standalone: true
237
+ info:
238
+ name: GIM(DKM)
239
+ source: "ICLR 2024"
240
+ github: https://github.com/xuelunshen/gim
241
+ paper: https://arxiv.org/abs/2402.11095
242
+ project: https://xuelunshen.com/gim
243
+ display: true
244
+ efficiency: low
245
+
246
+ sift+lightglue:
247
+ matcher: sift-lightglue
248
+ feature: sift
249
+ standalone: false
250
+ info:
251
+ name: LightGlue
252
+ source: "ICCV 2023"
253
+ github: https://github.com/cvg/LightGlue
254
+ paper: https://arxiv.org/pdf/2306.13643
255
+ display: true
256
+
257
+ superpoint+mnn:
258
+ matcher: NN-mutual
259
+ feature: superpoint_max
260
+ standalone: false
261
+ info:
262
+ name: SuperPoint
263
+ source: "CVPRW 2018"
264
+ github: https://github.com/magicleap/SuperPointPretrainedNetwork
265
+ paper: https://arxiv.org/abs/1712.07629
266
+ display: true
267
+
268
+ disk:
269
+ matcher: NN-mutual
270
+ feature: disk
271
+ standalone: false
272
+ info:
273
+ name: DISK
274
+ source: "NeurIPS 2020"
275
+ github: https://github.com/cvlab-epfl/disk
276
+ paper: https://arxiv.org/abs/2006.13566
277
+ display: true
278
+
279
+ dedode:
280
+ matcher: Dual-Softmax
281
+ feature: dedode
282
+ standalone: false
283
+ info:
284
+ name: DeDoDe
285
+ source: "3DV 2024"
286
+ github: https://github.com/Parskatt/DeDoDe
287
+ paper: https://arxiv.org/abs/2308.08479
288
+ display: true
289
+
290
+ alike:
291
+ matcher: NN-mutual
292
+ feature: alike
293
+ standalone: false
294
+ info:
295
+ name: ALIKE
296
+ source: "TMM 2022"
297
+ github: https://github.com/Shiaoming/ALIKE
298
+ paper: https://arxiv.org/abs/2112.02906
299
+ display: true
300
+
301
+ sift:
302
+ matcher: NN-mutual
303
+ feature: sift
304
+ standalone: false
305
+ info:
306
+ name: SIFT
307
+ source: "IJCV 2004"
308
+ github: null
309
+ paper: https://www.cs.ubc.ca/~lowe/papers/ijcv04.pdf
310
+ display: true
311
+
312
+ r2d2:
313
+ matcher: NN-mutual
314
+ feature: r2d2
315
+ standalone: false
316
+ info:
317
+ name: R2D2
318
+ source: "NeurIPS 2019"
319
+ github: https://github.com/naver/r2d2
320
+ paper: https://arxiv.org/abs/1906.06195
321
+ display: true
322
+
323
+ d2net:
324
+ matcher: NN-mutual
325
+ feature: d2net-ss
326
+ standalone: false
327
+ info:
328
+ name: D2Net
329
+ source: "CVPR 2019"
330
+ github: https://github.com/Vincentqyw/d2-net
331
+ paper: https://arxiv.org/abs/1905.03561
332
+ project: https://dusmanu.com/publications/d2-net.html
333
+ display: true
334
+
335
+ xfeat(sparse):
336
+ matcher: NN-mutual
337
+ feature: xfeat
338
+ standalone: false
339
+ info:
340
+ name: XFeat
341
+ source: "CVPR 2024"
342
+ github: https://github.com/verlab/accelerated_features
343
+ paper: https://arxiv.org/abs/2404.19174
344
+ display: true
345
+
346
+ xfeat(dense):
347
+ matcher: xfeat_dense
348
+ standalone: true
349
+ info:
350
+ name: XFeat
351
+ source: "CVPR 2024"
352
+ github: https://github.com/verlab/accelerated_features
353
+ paper: https://arxiv.org/abs/2404.19174
354
+ display: false
355
+
356
+ LoMa-B:
357
+ matcher: loma-b
358
+ standalone: true
359
+ info:
360
+ name: LoMa-B
361
+ source: "ECCV 2026"
362
+ paper: https://arxiv.org/abs/2504.03028
363
+ github: https://github.com/davnords/LoMa
364
+ display: true
365
+ efficiency: medium
366
+
367
+ LoMa-L:
368
+ matcher: loma-l
369
+ standalone: true
370
+ skip_ci: true
371
+ info:
372
+ name: LoMa-L
373
+ source: "ECCV 2026"
374
+ paper: https://arxiv.org/abs/2504.03028
375
+ github: https://github.com/davnords/LoMa
376
+ display: true
377
+ efficiency: low
378
+
379
+ minima(loftr):
380
+ matcher: minima_loftr
381
+ standalone: true
382
+ info:
383
+ name: MINIMA(LoFTR)
384
+ source: "ARXIV 2024"
385
+ paper: https://arxiv.org/abs/2412.19412
386
+ github: https://github.com/LSXI7/MINIMA
387
+ display: true
388
+
389
+ minima(RoMa):
390
+ matcher: minima_roma
391
+ standalone: true
392
+ skip_ci: true
393
+ info:
394
+ name: MINIMA(RoMa)
395
+ source: "ARXIV 2024"
396
+ paper: https://arxiv.org/abs/2412.19412
397
+ github: https://github.com/LSXI7/MINIMA
398
+ display: true
399
+ efficiency: low
400
+
401
+ minima(lightglue):
402
+ matcher: minima_lightglue
403
+ feature: superpoint_max
404
+ standalone: false
405
+ info:
406
+ name: MINIMA(LightGlue)
407
+ source: "ARXIV 2024"
408
+ paper: https://arxiv.org/abs/2412.19412
409
+ github: https://github.com/LSXI7/MINIMA
410
+ display: true
411
+ efficiency: high
412
+
413
+ raco+lightglue:
414
+ matcher: raco-lightglue
415
+ feature: raco
416
+ standalone: false
417
+ info:
418
+ name: RaCo
419
+ source: "3DV 2026"
420
+ github: https://github.com/cvg/RaCo
421
+ paper: https://arxiv.org/pdf/2602.15755
422
+ display: true
423
+
424
+ dad(RoMa):
425
+ matcher: dad_roma
426
+ standalone: true
427
+ skip_ci: true
428
+ info:
429
+ name: Dad(RoMa)
430
+ source: "ARXIV 2025"
431
+ paper: https://arxiv.org/abs/2503.07347
432
+ github: https://github.com/Parskatt/dad
433
+ display: true
434
+ efficiency: medium
435
+
436
+ rdd(sparse):
437
+ matcher: NN-mutual
438
+ feature: rdd
439
+ standalone: false
440
+ info:
441
+ name: RDD(sparse)
442
+ source: "CVPR 2025"
443
+ github: https://github.com/xtcpete/rdd
444
+ paper: https://arxiv.org/abs/2505.08013
445
+ project: https://xtcpete.github.io/rdd
446
+ display: true
447
+
448
+ rdd(dense):
449
+ matcher: rdd_dense
450
+ standalone: true
451
+ info:
452
+ name: RDD(dense)
453
+ source: "CVPR 2025"
454
+ github: https://github.com/xtcpete/rdd
455
+ paper: https://arxiv.org/abs/2505.08013
456
+ project: https://xtcpete.github.io/rdd
457
+ display: true
458
+
459
+ liftfeat(sparse):
460
+ matcher: NN-mutual
461
+ feature: liftfeat
462
+ standalone: false
463
+ info:
464
+ name: LiftFeat
465
+ source: "ICRA 2025"
466
+ github: https://github.com/lyp-deeplearning/LiftFeat
467
+ paper: https://arxiv.org/abs/2505.0342
468
+ display: true
469
+
470
+ ripe(+mnn):
471
+ matcher: NN-mutual
472
+ feature: ripe
473
+ standalone: false
474
+ info:
475
+ name: RIPE
476
+ source: "ICCV 2025"
477
+ github: https://github.com/fraunhoferhhi/RIPE
478
+ paper: https://arxiv.org/abs/2507.04839
479
+ project: https://fraunhoferhhi.github.io/RIPE
480
+ display: true
481
+
482
+ sfd2+imp:
483
+ enable: true
484
+ matcher: imp
485
+ feature: sfd2
486
+ standalone: false
487
+ info:
488
+ name: SFD2+IMP
489
+ source: "CVPR 2023"
490
+ github: https://github.com/feixue94/imp-release
491
+ paper: https://arxiv.org/pdf/2304.14837
492
+ project: https://feixue94.github.io/
493
+ display: true
494
+
495
+ sfd2+mnn:
496
+ enable: true
497
+ matcher: NN-mutual
498
+ feature: sfd2
499
+ standalone: false
500
+ info:
501
+ name: SFD2+MNN
502
+ source: "CVPR 2023"
503
+ github: https://github.com/feixue94/sfd2
504
+ paper: https://arxiv.org/abs/2304.14845
505
+ project: https://feixue94.github.io/
506
+ display: true
507
+
508
+ minima(eloftr):
509
+ matcher: minima_eloftr
510
+ standalone: true
511
+ skip_ci: true
512
+ info:
513
+ name: MINIMA(ELoFTR)
514
+ source: "ARXIV 2024"
515
+ paper: https://arxiv.org/abs/2412.19412
516
+ github: https://github.com/LSXI7/MINIMA
517
+ display: true
518
+ efficiency: medium
packages.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ build-essential
2
+ gcc
3
+ g++
4
+ git-lfs
5
+ ffmpeg
6
+ libsm6
7
+ libxext6
requirements.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ imcui