📝笔记:图像匹配挑战赛回顾(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 模型获得初始匹配。这些模型包括
LoFTR
5,SuperGlue
7,QuadTree Attention LoFTR
6。一些队伍还使用了尺度增强算法(多尺度特征匹配)。 - 下一步就是估计两张图的共视区域,一个常用的方法是用
K-means
或者DBSCAN
(top1方案) 对匹配进行聚类,然后找到图像上共视区域的 bbox (bounding box),这个 bbox 里包含数量最多的匹配对,这样做可能得到多个潜在的共视区域。紧接着,使用每个共视区域的匹配计算基础矩阵。另外一种不需要聚类的思路是利用MAGSAC++
在低阈值条件下迭代几轮排除一些错误匹配,然后也可以得到 bbox。 - 裁剪出每个 bbox 区域,随后将其resize到一个预设的图像尺寸。紧接着,使用匹配算法对这些 "zoomed-in" 过的图像进行再次匹配。得到新的匹配之后,将这些匹配对投影到原始的图像上,这些投影后的匹配和最原始的图像匹配进行串联组织起来。注意,"zoomed-in" 后的匹配是为了增加匹配,而不是替换原来的匹配。
- (可选)
这一步使用非极大值抑制过滤过于集中的匹配对。非极大值抑制
包括
ANMS
9 或者基于半径的NMS算法。 - 使用OpenCV
MAGSAC++
求解基础矩阵。
更为具体的,此处列举Top1/Top2方案。
Top1 思路
完全基于开源匹配器
(LoFTR
5,
SuperGlue
7,
DKM
8)
组合达到该名次,不可思议!取得该名次另外一个关键原因在于,该方案使用了多尺度图像裁剪后进行匹配的
"2-stage" 策略。
具体的步骤如下: 1. 图像初始匹配:
LoFTR
5
提取图像特征,分辨率840;Superpoint+SuperGlue
7 提取多尺度图像特征,分辨率 840, 1024,
1280;紧接着将这两种匹配器得到的匹配进行串联;这是本方案的第1阶段匹配;
2. 使用 DBSCAN
对匹配进行聚类,可以获得最佳的80-90%的匹配对;紧接着得到一个对应区域的
bbox,将这个区域裁剪出来,作者将这种方式称为 mkpt_crop。mkpt_crop
可以有效地过滤外点以及提取共视区域; 3. 使用
LoFTR
5,
SuperGlue
7,
DKM
8
重新对共视区域进行再次匹配,这是本方案的第二阶段匹配; 4.
将上述两个阶段的匹配对串联起来,使用 MAGSAC
解算基础矩阵。
Top2 思路
几个关键点:
- 仅仅使用单一模型(Baseline)就可以获得0.838(public)/0.833(private)精度;这个模型与
LoFTR
5 结构类似,同样是基于transformer直接进行图像匹配,没有特征点。不过作者提到,现阶段论文还在盲审,目前不能公开太多信息; - 使用其他匹配器(Baseline +
QuadTree
6 +LoFTR
5 +SuperGlue
7)进一步增强精度; - 使用归一化位置编码;
- 没有使用前/后处理;
有用的tricks
- 交换图像匹配顺序可提升 LoFTR-like 匹配器的精度
- 对 LoFTR-like 匹配器的位置编码归一化有效 (top2方案)
- 使用不同的 resize 图像的方法差异不大
- 使用
ECO-TR
对坐标进行优化有效 (未开源) - 使用局部描述子+非学习的匹配器增加匹配数量并不奏效,如
DISK
11 ,ALIKE
12 等; - 语义分割掩码(天空/人)也不奏效;
总结
- "2-stage" 的方式对于图像匹配任务相当有效:首先找到共视区域,接着缩放进行匹配;
- 最好首先解决 "recall"
问题,即尽可能多的找到匹配,这个过程可以使用不同的匹配器;要相信现代的
RANSACs
可以使用较少的内点恢复位姿; LoFTR
5 对输入图像大小非常敏感,这一点值得后续继续研究。
参考
- 1.Image Matching: Local Features & Beyond, homepage: https://image-matching-workshop.github.io↩︎
- 2.Image Matching Challenge 2022, homepage: https://www.kaggle.com/competitions/image-matching-challenge-2022↩︎
- 3.Image Matching Challenge 2022 Recap, Dmytro Mishkin, https://ducha-aiki.github.io/wide-baseline-stereo-blog/2022/07/05/IMC2022-Recap.html, homepage: http://dmytro.ai↩︎
- 4.Competition is Finalized : Congrats to our Winners, Recap, https://www.kaggle.com/competitions/image-matching-challenge-2022/discussion/329650↩︎
- 5.LoFTR: Detector-Free Local Feature Matching with Transformers, CVPR 2021, code: https://github.com/zju3dv/LoFTR, pdf: https://arxiv.org/abs/2104.00680↩︎
- 6.QuadTree Attention for Vision Transformers, ICLR 2022, code: https://github.com/Tangshitao/QuadTreeAttention, pdf: https://arxiv.org/abs/2201.02767↩︎
- 7.SuperGlue: Learning Feature Matching with Graph Neural Networks, CVPR 2020, code: https://github.com/magicleap/SuperGluePretrainedNetwork, pdf: https://arxiv.org/abs/1911.11763↩︎
- 8.DKM, Deep Kernelized Dense Geometric Matching, arxiv 2022, code: https://github.com/Parskatt/DKM, pdf: https://arxiv.org/abs/2202.00667↩︎
- 9.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↩︎
- 10.OANet, Learning Two-View Correspondences and Geometry Using Order-Aware Network, code: https://github.com/zjhthu/OANet, pdf: https://arxiv.org/abs/1908.04964↩︎
- 11.DISK: Learning local features with policy gradient, NeurIPS 2020, code: https://github.com/cvlab-epfl/disk, pdf: https://arxiv.org/abs/2006.13566↩︎
- 12.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↩︎
- 13.ASLFeat: Learning Local Features of Accurate Shape and Localization, CVPR 2020, code: https://github.com/lzx551402/ASLFeat, pdf: https://arxiv.org/abs/2003.10071↩︎