· updated Jan 27, 2025 · 9 min read
笔记:图像匹配挑战赛回顾(CVPR 2022)
笔者跟踪这项比赛较长时间,去年和前年已经写过两篇 2021、2020,主页、比赛地址。
其实,本来去年的比赛就要放在Kaggle上进行的,但是由于疫情以及数据准备较为耗时,于是这个决定就被推迟到了今年。
今年比赛共有 3846 人参与,共计 642 个队伍,其中 128 个用户是他们首次参与比赛(Top20 中占有 18 个新用户),这些参与者来自 60 个国家,另外共有 14170 次提交记录。
通过下图可以看出:超过 25 倍的参与者以及 150 倍的提交记录:
Fun fact:冠军方案在 deadline 前 48 小时才完成。
不同之处
相比往年的比赛,今年的不同之处具体表现在如下几个方面:
- 参赛者需要提交
notebooks离线处理比赛用的数据 - 参赛者无法查看测试集:很难作弊
- 允许算法快速迭代
除此之外,还有几点差异:
- 砍掉了
multiview track(多视图匹配赛道),仅专注在stereo track。这么做的原因有很多,最主要的是“技术问题”,即很难在有限合理的时间内运行以及评价匹配性能。 - 新的数据集以及评价标准。往年的真值位姿的平移量没有尺度,仅能够评价旋转的精度;而今年的平移量拥有了尺度信息,这使得可以同时评价位姿旋转量与平移量。此外,今年使用了来自 Google 的非公开数据集(网上是搜不到滴)。
- 时间限制。总计算时长被限制在 9 小时(计算平台:Kaggle GPU virtual instance)以内,不能超时!这让参赛者要思考,什么算法能用什么算法不能用。一个简单的例子:使用语义分割 mask 对提升指标可能是有帮助的,但是需要的算力太大,那就不能使用!
Top solutions
与以往不同,今年几乎所有排名靠前的队伍都使用了相似的流程,虽然实现细节不同,但是核心思想是相似的……
最终排名第二的方案(hkchkc)采用了不同的方案,该方案并没有使用任何前/后处理,并且在比赛过程中该算法曾经“霸占”Top1 很长一段时间。
如下所示为一个通用的特征匹配流程(被诸多参赛者使用):
- 第一步使用 off-the-shelf 模型获得初始匹配。这些模型包括
LoFTR1、SuperGlue2、QuadTree Attention LoFTR3。一些队伍还使用了尺度增强算法(多尺度特征匹配)。 - 下一步就是估计两张图的共视区域,一个常用的方法是用
K-means或者DBSCAN(top1 方案)对匹配进行聚类,然后找到图像上共视区域的 bbox (bounding box),这个 bbox 里包含数量最多的匹配对,这样做可能得到多个潜在的共视区域。紧接着,使用每个共视区域的匹配计算基础矩阵。另外一种不需要聚类的思路是利用MAGSAC++在低阈值条件下迭代几轮排除一些错误匹配,然后也可以得到 bbox。 - 裁剪出每个 bbox 区域,随后将其 resize 到一个预设的图像尺寸。紧接着,使用匹配算法对这些“zoomed-in”过的图像进行再次匹配。得到新的匹配之后,将这些匹配对投影到原始的图像上,这些投影后的匹配和最原始的图像匹配进行串联组织起来。注意,“zoomed-in”后的匹配是为了增加匹配,而不是替换原来的匹配。
- (可选)这一步使用非极大值抑制过滤过于集中的匹配对。非极大值抑制包括
ANMS4 或者基于半径的 NMS 算法。 - 使用 OpenCV
MAGSAC++求解基础矩阵。
更为具体的,此处列举 Top1/Top2 方案。
Top1 思路
完全基于开源匹配器(LoFTR1、SuperGlue2、DKM5)组合达到该名次,不可思议!取得该名次另外一个关键原因在于,该方案使用了多尺度图像裁剪后进行匹配的“2-stage”策略。
具体的步骤如下:
- 图像初始匹配:
LoFTR1 提取图像特征,分辨率 840;SuperPoint+SuperGlue2 提取多尺度图像特征,分辨率 840、1024、1280;紧接着将这两种匹配器得到的匹配进行串联;这是本方案的第 1 阶段匹配; - 使用
DBSCAN对匹配进行聚类,可以获得最佳的 80-90% 的匹配对;紧接着得到一个对应区域的 bbox,将这个区域裁剪出来,作者将这种方式称为 mkpt_crop。mkpt_crop 可以有效地过滤外点以及提取共视区域; - 使用
LoFTR1、SuperGlue2、DKM5 重新对共视区域进行再次匹配,这是本方案的第二阶段匹配; - 将上述两个阶段的匹配对串联起来,使用
MAGSAC解算基础矩阵。
Top2 思路
几个关键点:
- 仅仅使用单一模型(Baseline)就可以获得 0.838(public)/0.833(private)精度;这个模型与
LoFTR1 结构类似,同样是基于 transformer 直接进行图像匹配,没有特征点。不过作者提到,现阶段论文还在盲审,目前不能公开太多信息; - 使用其他匹配器(Baseline +
QuadTree3 +LoFTR1 +SuperGlue2)进一步增强精度; - 使用归一化位置编码;
- 没有使用前/后处理;
有用的 tricks
- 交换图像匹配顺序可提升 LoFTR-like 匹配器的精度
- 对 LoFTR-like 匹配器的位置编码归一化有效(top2 方案)
- 使用不同的 resize 图像的方法差异不大
- 使用
ECO-TR对坐标进行优化有效(未开源) - 使用局部描述子+非学习的匹配器增加匹配数量并不奏效,如
DISK6、ALIKE7 等; - 语义分割掩码(天空/人)也不奏效;
总结
- “2-stage”的方式对于图像匹配任务相当有效:首先找到共视区域,接着缩放进行匹配;
- 最好首先解决“recall”问题,即尽可能多的找到匹配,这个过程可以使用不同的匹配器;要相信现代的
RANSACs可以使用较少的内点恢复位姿; LoFTR1 对输入图像大小非常敏感,这一点值得后续继续研究。
Footnotes
-
LoFTR: Detector-Free Local Feature Matching with Transformers, CVPR 2021, code: https://github.com/zju3dv/LoFTR, pdf: https://arxiv.org/abs/2104.00680 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7
-
SuperGlue: Learning Feature Matching with Graph Neural Networks, CVPR 2020, code: https://github.com/magicleap/SuperGluePretrainedNetwork, pdf: https://arxiv.org/abs/1911.11763 ↩ ↩2 ↩3 ↩4 ↩5
-
QuadTree Attention for Vision Transformers, ICLR 2022, code: https://github.com/Tangshitao/QuadTreeAttention, pdf: https://arxiv.org/abs/2201.02767 ↩ ↩2
-
ANMS, Efficient adaptive non-maximal suppression algorithms for homogeneous spatial keypoint distribution, code: https://github.com/BAILOOL/ANMS-Codes, pdf: https://www.researchgate.net/publication/323388062\_Efficient\_adaptive\_non-maximal\_suppression\_algorithms\_for\_homogeneous\_spatial\_keypoint\_distribution ↩
-
DKM, Deep Kernelized Dense Geometric Matching, arXiv 2022, code: https://github.com/Parskatt/DKM, pdf: https://arxiv.org/abs/2202.00667 ↩ ↩2
-
DISK: Learning local features with policy gradient, NeurIPS 2020, code: https://github.com/cvlab-epfl/disk, pdf: https://arxiv.org/abs/2006.13566 ↩
-
ALIKE: Accurate and Lightweight Keypoint Detection and Descriptor Extraction, Transactions on Multimedia 2022, code: https://github.com/Shiaoming/ALIKE, pdf: https://arxiv.org/abs/2112.02906 ↩