Realcat commited on
Commit
2d36d99
1 Parent(s): aa46ae9

update: Supported Algorithms

Browse files
Files changed (3) hide show
  1. README.md +5 -4
  2. common/app_class.py +58 -7
  3. common/config.yaml +182 -0
README.md CHANGED
@@ -44,8 +44,9 @@ The tool currently supports various popular image matching algorithms, namely:
44
  - [ ] [ASTR](https://github.com/ASTR2023/ASTR), CVPR 2023
45
  - [ ] [SEM](https://github.com/SEM2023/SEM), CVPR 2023
46
  - [ ] [DeepLSD](https://github.com/cvg/DeepLSD), CVPR 2023
47
- - [x] [GlueStick](https://github.com/cvg/GlueStick), ArXiv 2023
48
  - [ ] [ConvMatch](https://github.com/SuhZhang/ConvMatch), AAAI 2023
 
49
  - [x] [SOLD2](https://github.com/cvg/SOLD2), CVPR 2021
50
  - [ ] [LineTR](https://github.com/yosungho/LineTR), RA-L 2021
51
  - [x] [DKM](https://github.com/Parskatt/DKM), CVPR 2023
@@ -55,7 +56,7 @@ The tool currently supports various popular image matching algorithms, namely:
55
  - [x] [LANet](https://github.com/wangch-g/lanet), ACCV 2022
56
  - [ ] [LISRD](https://github.com/rpautrat/LISRD), ECCV 2022
57
  - [ ] [REKD](https://github.com/bluedream1121/REKD), CVPR 2022
58
- - [x] [ALIKE](https://github.com/Shiaoming/ALIKE), ArXiv 2022
59
  - [x] [RoRD](https://github.com/UditSinghParihar/RoRD), IROS 2021
60
  - [x] [SGMNet](https://github.com/vdvchen/SGMNet), ICCV 2021
61
  - [x] [SuperPoint](https://github.com/magicleap/SuperPointPretrainedNetwork), CVPRW 2018
@@ -65,10 +66,10 @@ The tool currently supports various popular image matching algorithms, namely:
65
  - [x] [DISK](https://github.com/cvlab-epfl/disk), NeurIPS 2020
66
  - [ ] [Key.Net](https://github.com/axelBarroso/Key.Net), ICCV 2019
67
  - [ ] [OANet](https://github.com/zjhthu/OANet), ICCV 2019
68
- - [ ] [SOSNet](https://github.com/scape-research/SOSNet), CVPR 2019
 
69
  - [x] [SIFT](https://docs.opencv.org/4.x/da/df5/tutorial_py_sift_intro.html), IJCV 2004
70
 
71
-
72
  ## How to use
73
 
74
  ### HuggingFace / Lightning AI
 
44
  - [ ] [ASTR](https://github.com/ASTR2023/ASTR), CVPR 2023
45
  - [ ] [SEM](https://github.com/SEM2023/SEM), CVPR 2023
46
  - [ ] [DeepLSD](https://github.com/cvg/DeepLSD), CVPR 2023
47
+ - [x] [GlueStick](https://github.com/cvg/GlueStick), ICCV 2023
48
  - [ ] [ConvMatch](https://github.com/SuhZhang/ConvMatch), AAAI 2023
49
+ - [x] [LoFTR](https://github.com/zju3dv/LoFTR), CVPR 2021
50
  - [x] [SOLD2](https://github.com/cvg/SOLD2), CVPR 2021
51
  - [ ] [LineTR](https://github.com/yosungho/LineTR), RA-L 2021
52
  - [x] [DKM](https://github.com/Parskatt/DKM), CVPR 2023
 
56
  - [x] [LANet](https://github.com/wangch-g/lanet), ACCV 2022
57
  - [ ] [LISRD](https://github.com/rpautrat/LISRD), ECCV 2022
58
  - [ ] [REKD](https://github.com/bluedream1121/REKD), CVPR 2022
59
+ - [x] [ALIKE](https://github.com/Shiaoming/ALIKE), TMM 2022
60
  - [x] [RoRD](https://github.com/UditSinghParihar/RoRD), IROS 2021
61
  - [x] [SGMNet](https://github.com/vdvchen/SGMNet), ICCV 2021
62
  - [x] [SuperPoint](https://github.com/magicleap/SuperPointPretrainedNetwork), CVPRW 2018
 
66
  - [x] [DISK](https://github.com/cvlab-epfl/disk), NeurIPS 2020
67
  - [ ] [Key.Net](https://github.com/axelBarroso/Key.Net), ICCV 2019
68
  - [ ] [OANet](https://github.com/zjhthu/OANet), ICCV 2019
69
+ - [x] [SOSNet](https://github.com/scape-research/SOSNet), CVPR 2019
70
+ - [x] [HardNet](https://github.com/DagnyT/hardnet), NeurIPS 2017
71
  - [x] [SIFT](https://docs.opencv.org/4.x/da/df5/tutorial_py_sift_intro.html), IJCV 2004
72
 
 
73
  ## How to use
74
 
75
  ### HuggingFace / Lightning AI
common/app_class.py CHANGED
@@ -200,13 +200,9 @@ class ImageMatchingApp:
200
  " Match)"
201
  ),
202
  )
203
- with gr.Accordion("Open for More!", open=False):
204
- gr.Markdown(
205
- f"""
206
- <h3>Supported Algorithms</h3>
207
- {", ".join(self.matcher_zoo.keys())}
208
- """
209
- )
210
 
211
  with gr.Column():
212
  output_keypoints = gr.Image(label="Keypoints", type="numpy")
@@ -401,3 +397,58 @@ class ImageMatchingApp:
401
  self.cfg["defaults"]["ransac_max_iter"], # ransac_max_iter: int
402
  self.cfg["defaults"]["setting_geometry"], # geometry: str
403
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
200
  " Match)"
201
  ),
202
  )
203
+ with gr.Accordion("Supported Algorithms", open=False):
204
+ # add a table of supported algorithms
205
+ self.display_supported_algorithms()
 
 
 
 
206
 
207
  with gr.Column():
208
  output_keypoints = gr.Image(label="Keypoints", type="numpy")
 
397
  self.cfg["defaults"]["ransac_max_iter"], # ransac_max_iter: int
398
  self.cfg["defaults"]["setting_geometry"], # geometry: str
399
  )
400
+
401
+ def display_supported_algorithms(self, style="tab"):
402
+ def get_link(link, tag="Link"):
403
+ return "[{}]({})".format(tag, link) if link is not None else "None"
404
+
405
+ data = []
406
+ cfg = self.cfg["matcher_zoo"]
407
+ if style == "md":
408
+ markdown_table = "| Algo. | Conference | Code | Project | Paper |\n"
409
+ markdown_table += (
410
+ "| ----- | ---------- | ---- | ------- | ----- |\n"
411
+ )
412
+
413
+ for k, v in cfg.items():
414
+ if not v["info"]["display"]:
415
+ continue
416
+ github_link = get_link(v["info"]["github"])
417
+ project_link = get_link(v["info"]["project"])
418
+ paper_link = get_link(
419
+ v["info"]["paper"],
420
+ (
421
+ Path(v["info"]["paper"]).name[-10:]
422
+ if v["info"]["paper"] is not None
423
+ else "Link"
424
+ ),
425
+ )
426
+
427
+ markdown_table += "{}|{}|{}|{}|{}\n".format(
428
+ v["info"]["name"], #display name
429
+ v["info"]["source"],
430
+ github_link,
431
+ project_link,
432
+ paper_link,
433
+ )
434
+ return gr.Markdown(markdown_table)
435
+ elif style == "tab":
436
+ for k, v in cfg.items():
437
+ if not v["info"]["display"]:
438
+ continue
439
+ data.append(
440
+ [
441
+ v["info"]["name"],
442
+ v["info"]["source"],
443
+ v["info"]["github"],
444
+ v["info"]["project"],
445
+ v["info"]["paper"],
446
+ ]
447
+ )
448
+ tab = gr.Dataframe(
449
+ headers=["Algo.", "Conference", "Code", "Project", "Paper"],
450
+ datatype=["str", "str", "str", "str", "str"],
451
+ col_count=(5, "fixed"),
452
+ )
453
+ tab.value = data
454
+ return tab
common/config.yaml CHANGED
@@ -19,97 +19,279 @@ matcher_zoo:
19
  roma:
20
  matcher: roma
21
  dense: true
 
 
 
 
 
 
 
22
  loftr:
23
  matcher: loftr
24
  dense: true
 
 
 
 
 
 
 
25
  topicfm:
26
  matcher: topicfm
27
  dense: true
 
 
 
 
 
 
 
28
  aspanformer:
29
  matcher: aspanformer
30
  dense: true
 
 
 
 
 
 
 
31
  xfeat(sparse):
32
  matcher: NN-mutual
33
  feature: xfeat
34
  dense: false
 
 
 
 
 
 
 
35
  xfeat(dense):
36
  matcher: xfeat_dense
37
  dense: true
 
 
 
 
 
 
 
38
  dedode:
39
  matcher: Dual-Softmax
40
  feature: dedode
41
  dense: false
 
 
 
 
 
 
 
42
  superpoint+superglue:
43
  matcher: superglue
44
  feature: superpoint_max
45
  dense: false
 
 
 
 
 
 
 
46
  superpoint+lightglue:
47
  matcher: superpoint-lightglue
48
  feature: superpoint_max
49
  dense: false
 
 
 
 
 
 
 
50
  disk:
51
  matcher: NN-mutual
52
  feature: disk
53
  dense: false
 
 
 
 
 
 
 
54
  disk+dualsoftmax:
55
  matcher: Dual-Softmax
56
  feature: disk
57
  dense: false
 
 
 
 
 
 
 
58
  superpoint+dualsoftmax:
59
  matcher: Dual-Softmax
60
  feature: superpoint_max
61
  dense: false
 
 
 
 
 
 
 
62
  disk+lightglue:
63
  matcher: disk-lightglue
64
  feature: disk
65
  dense: false
 
 
 
 
 
 
 
66
  superpoint+mnn:
67
  matcher: NN-mutual
68
  feature: superpoint_max
69
  dense: false
 
 
 
 
 
 
 
70
  sift+sgmnet:
71
  matcher: sgmnet
72
  feature: sift
73
  dense: false
 
 
 
 
 
 
 
74
  sosnet:
75
  matcher: NN-mutual
76
  feature: sosnet
77
  dense: false
 
 
 
 
 
 
 
78
  hardnet:
79
  matcher: NN-mutual
80
  feature: hardnet
81
  dense: false
 
 
 
 
 
 
 
82
  d2net:
83
  matcher: NN-mutual
84
  feature: d2net-ss
85
  dense: false
 
 
 
 
 
 
 
86
  rord:
87
  matcher: NN-mutual
88
  feature: rord
89
  dense: false
 
 
 
 
 
 
 
90
  alike:
91
  matcher: NN-mutual
92
  feature: alike
93
  dense: false
 
 
 
 
 
 
 
94
  lanet:
95
  matcher: NN-mutual
96
  feature: lanet
97
  dense: false
 
 
 
 
 
 
 
98
  r2d2:
99
  matcher: NN-mutual
100
  feature: r2d2
101
  dense: false
 
 
 
 
 
 
 
102
  darkfeat:
103
  matcher: NN-mutual
104
  feature: darkfeat
105
  dense: false
 
 
 
 
 
 
 
106
  sift:
107
  matcher: NN-mutual
108
  feature: sift
109
  dense: false
 
 
 
 
 
 
 
110
  gluestick:
111
  matcher: gluestick
112
  dense: true
 
 
 
 
 
 
 
113
  sold2:
114
  matcher: sold2
115
  dense: true
 
 
 
 
 
 
 
 
19
  roma:
20
  matcher: roma
21
  dense: true
22
+ info:
23
+ name: RoMa #dispaly name
24
+ source: "CVPR 2024"
25
+ github: https://github.com/Parskatt/RoMa
26
+ paper: https://arxiv.org/abs/2305.15404
27
+ project: https://parskatt.github.io/RoMa
28
+ display: true
29
  loftr:
30
  matcher: loftr
31
  dense: true
32
+ info:
33
+ name: LoFTR #dispaly name
34
+ source: "CVPR 2021"
35
+ github: https://github.com/zju3dv/LoFTR
36
+ paper: https://arxiv.org/pdf/2104.00680
37
+ project: https://zju3dv.github.io/loftr
38
+ display: true
39
  topicfm:
40
  matcher: topicfm
41
  dense: true
42
+ info:
43
+ name: TopicFM #dispaly name
44
+ source: "AAAI 2023"
45
+ github: https://github.com/TruongKhang/TopicFM
46
+ paper: https://arxiv.org/abs/2307.00485
47
+ project: null
48
+ display: true
49
  aspanformer:
50
  matcher: aspanformer
51
  dense: true
52
+ info:
53
+ name: ASpanformer #dispaly name
54
+ source: "ECCV 2022"
55
+ github: https://github.com/Vincentqyw/ml-aspanformer
56
+ paper: https://arxiv.org/abs/2208.14201
57
+ project: null
58
+ display: true
59
  xfeat(sparse):
60
  matcher: NN-mutual
61
  feature: xfeat
62
  dense: false
63
+ info:
64
+ name: XFeat #dispaly name
65
+ source: "CVPR 2024"
66
+ github: https://github.com/verlab/accelerated_features
67
+ paper: https://arxiv.org/abs/2404.19174
68
+ project: null
69
+ display: true
70
  xfeat(dense):
71
  matcher: xfeat_dense
72
  dense: true
73
+ info:
74
+ name: XFeat #dispaly name
75
+ source: "CVPR 2024"
76
+ github: https://github.com/verlab/accelerated_features
77
+ paper: https://arxiv.org/abs/2404.19174
78
+ project: null
79
+ display: false
80
  dedode:
81
  matcher: Dual-Softmax
82
  feature: dedode
83
  dense: false
84
+ info:
85
+ name: DeDoDe #dispaly name
86
+ source: "3DV 2024"
87
+ github: https://github.com/Parskatt/DeDoDe
88
+ paper: https://arxiv.org/abs/2308.08479
89
+ project: null
90
+ display: true
91
  superpoint+superglue:
92
  matcher: superglue
93
  feature: superpoint_max
94
  dense: false
95
+ info:
96
+ name: SuperGlue #dispaly name
97
+ source: "CVPR 2020"
98
+ github: https://github.com/magicleap/SuperGluePretrainedNetwork
99
+ paper: https://arxiv.org/abs/1911.11763
100
+ project: null
101
+ display: true
102
  superpoint+lightglue:
103
  matcher: superpoint-lightglue
104
  feature: superpoint_max
105
  dense: false
106
+ info:
107
+ name: LightGlue #dispaly name
108
+ source: "ICCV 2023"
109
+ github: https://github.com/cvg/LightGlue
110
+ paper: https://arxiv.org/pdf/2306.13643
111
+ project: null
112
+ display: true
113
  disk:
114
  matcher: NN-mutual
115
  feature: disk
116
  dense: false
117
+ info:
118
+ name: DISK
119
+ source: "NeurIPS 2020"
120
+ github: https://github.com/cvlab-epfl/disk
121
+ paper: https://arxiv.org/abs/2006.13566
122
+ project: null
123
+ display: true
124
  disk+dualsoftmax:
125
  matcher: Dual-Softmax
126
  feature: disk
127
  dense: false
128
+ info:
129
+ name: DISK
130
+ source: "NeurIPS 2020"
131
+ github: https://github.com/cvlab-epfl/disk
132
+ paper: https://arxiv.org/abs/2006.13566
133
+ project: null
134
+ display: false
135
  superpoint+dualsoftmax:
136
  matcher: Dual-Softmax
137
  feature: superpoint_max
138
  dense: false
139
+ info:
140
+ name: SuperPoint
141
+ source: "CVPRW 2018"
142
+ github: https://github.com/magicleap/SuperPointPretrainedNetwork
143
+ paper: https://arxiv.org/abs/1712.07629
144
+ project: null
145
+ display: false
146
  disk+lightglue:
147
  matcher: disk-lightglue
148
  feature: disk
149
  dense: false
150
+ info:
151
+ name: LightGlue
152
+ source: "ICCV 2023"
153
+ github: https://github.com/cvg/LightGlue
154
+ paper: https://arxiv.org/pdf/2306.13643
155
+ project: null
156
+ display: true
157
  superpoint+mnn:
158
  matcher: NN-mutual
159
  feature: superpoint_max
160
  dense: false
161
+ info:
162
+ name: SuperPoint #dispaly name
163
+ source: "CVPRW 2018"
164
+ github: https://github.com/magicleap/SuperPointPretrainedNetwork
165
+ paper: https://arxiv.org/abs/1712.07629
166
+ project: null
167
+ display: true
168
  sift+sgmnet:
169
  matcher: sgmnet
170
  feature: sift
171
  dense: false
172
+ info:
173
+ name: SGMNet #dispaly name
174
+ source: "ICCV 2021"
175
+ github: https://github.com/vdvchen/SGMNet
176
+ paper: https://arxiv.org/abs/2108.08771
177
+ project: null
178
+ display: true
179
  sosnet:
180
  matcher: NN-mutual
181
  feature: sosnet
182
  dense: false
183
+ info:
184
+ name: SOSNet #dispaly name
185
+ source: "CVPR 2019"
186
+ github: https://github.com/scape-research/SOSNet
187
+ paper: https://arxiv.org/abs/1904.05019
188
+ project: https://research.scape.io/sosnet
189
+ display: true
190
  hardnet:
191
  matcher: NN-mutual
192
  feature: hardnet
193
  dense: false
194
+ info:
195
+ name: HardNet #dispaly name
196
+ source: "NeurIPS 2017"
197
+ github: https://github.com/DagnyT/hardnet
198
+ paper: https://arxiv.org/abs/1705.10872
199
+ project: null
200
+ display: true
201
  d2net:
202
  matcher: NN-mutual
203
  feature: d2net-ss
204
  dense: false
205
+ info:
206
+ name: D2Net #dispaly name
207
+ source: "CVPR 2019"
208
+ github: https://github.com/Vincentqyw/d2-net
209
+ paper: https://arxiv.org/abs/1905.03561
210
+ project: https://dusmanu.com/publications/d2-net.html
211
+ display: true
212
  rord:
213
  matcher: NN-mutual
214
  feature: rord
215
  dense: false
216
+ info:
217
+ name: RoRD #dispaly name
218
+ source: "IROS 2021"
219
+ github: https://github.com/UditSinghParihar/RoRD
220
+ paper: https://arxiv.org/abs/2103.08573
221
+ project: https://uditsinghparihar.github.io/RoRD/
222
+ display: true
223
  alike:
224
  matcher: NN-mutual
225
  feature: alike
226
  dense: false
227
+ info:
228
+ name: ALIKE #dispaly name
229
+ source: "TMM 2022"
230
+ github: https://github.com/Shiaoming/ALIKE
231
+ paper: https://arxiv.org/abs/2112.02906
232
+ project: null
233
+ display: true
234
  lanet:
235
  matcher: NN-mutual
236
  feature: lanet
237
  dense: false
238
+ info:
239
+ name: LANet #dispaly name
240
+ source: "ACCV 2022"
241
+ github: https://github.com/wangch-g/lanet
242
+ paper: https://openaccess.thecvf.com/content/ACCV2022/papers/Wang_Rethinking_Low-level_Features_for_Interest_Point_Detection_and_Description_ACCV_2022_paper.pdf
243
+ project: null
244
+ display: true
245
  r2d2:
246
  matcher: NN-mutual
247
  feature: r2d2
248
  dense: false
249
+ info:
250
+ name: R2D2 #dispaly name
251
+ source: "NeurIPS 2019"
252
+ github: https://github.com/naver/r2d2
253
+ paper: https://arxiv.org/abs/1906.06195
254
+ project: null
255
+ display: true
256
  darkfeat:
257
  matcher: NN-mutual
258
  feature: darkfeat
259
  dense: false
260
+ info:
261
+ name: DarkFeat #dispaly name
262
+ source: "AAAI 2023"
263
+ github: https://github.com/THU-LYJ-Lab/DarkFeat
264
+ paper: null
265
+ project: null
266
+ display: true
267
  sift:
268
  matcher: NN-mutual
269
  feature: sift
270
  dense: false
271
+ info:
272
+ name: SIFT #dispaly name
273
+ source: "IJCV 2004"
274
+ github: null
275
+ paper: https://www.cs.ubc.ca/~lowe/papers/ijcv04.pdf
276
+ project: null
277
+ display: true
278
  gluestick:
279
  matcher: gluestick
280
  dense: true
281
+ info:
282
+ name: GlueStick #dispaly name
283
+ source: "ICCV 2023"
284
+ github: https://github.com/cvg/GlueStick
285
+ paper: https://arxiv.org/abs/2304.02008
286
+ project: https://iago-suarez.com/gluestick
287
+ display: true
288
  sold2:
289
  matcher: sold2
290
  dense: true
291
+ info:
292
+ name: SOLD2 #dispaly name
293
+ source: "CVPR 2021"
294
+ github: https://github.com/cvg/SOLD2
295
+ paper: https://arxiv.org/abs/2104.03362
296
+ project: null
297
+ display: true