0%

📝笔记: 图像匹配挑战赛回顾(CVPR 2022)

笔者跟踪这项比赛较长时间,去年和前年已经写过两篇 2021, 2020, 主页, 比赛地址

今年最大的不同是什么呢?对了,就是Kaggle

其实,本来去年的比赛就要放在Kaggle上进行的,但是由于疫情以及数据准备较为耗时,于是这个决定就被推迟到了今年。

今年比赛共有3846人参与,共计642个队伍,其中128个用户是他们首次参与比赛(Top20中占有18个新用户),这些参与者来自60个国家,另外共有14170次提交记录。

通过下图可以看出:超过25倍的参与者以及150倍的提交记录:

Fun fact: 冠军方案在deadline前48小时才完成。

不同之处

相比往年的比赛,今年的不同之处具体表现在如下几个方面:

  • 参赛者需要提交 notebooks 离线处理比赛用的数据
  • 参赛者无法查看测试集:很难作弊
  • 允许算法快速迭代

除此之外,还有几点差异:

  1. 砍掉了multiview track(多视图匹配赛道),仅专注在stereo track。这么做的原因有很多,最主要的是“技术问题”,即很难在有限合理的时间内运行以及评价匹配性能。
  2. 新的数据集以及评价标准。往年的真值位姿的平移量没有尺度,仅能够评价旋转的精度;而今年的平移量拥有了尺度信息,这使得可以同时评价位姿旋转量与平移量。此外,今年使用了来自Google的非公开数据集(网上是搜不到滴)。
  3. 时间限制。总计算时长被限制在9小时(计算平台:Kaggle GPU virtual instance)以内,不能超时!这让参赛者要思考,什么算法能用什么算法不能用。一个简单的例子:使用语义分割mask对提升指标可能是有帮助的,但是需要的算力太大,那就不能使用!

Top solutions

与以往不同,今年几乎所有排名靠前的队伍都使用了相似的流程,虽然实现细节不同,但是核心思想是相似的…

最终排名第二的方案(hkchkc)采用了不同的方案,该方案并没有使用任何前/后处理,并且在比赛过程中该算法曾经“霸占”Top1很长一段时间。

如下所示为一个通用的特征匹配流程(被诸多参赛者使用):

  1. 第一步使用 off-the-shelf 模型获得初始匹配。这些模型包括 LoFTR5, SuperGlue7, QuadTree Attention LoFTR6。一些队伍还使用了尺度增强算法(多尺度特征匹配)。
  2. 下一步就是估计两张图的共视区域,一个常用的方法是用 K-means 或者 DBSCAN (top1方案) 对匹配进行聚类,然后找到图像上共视区域的 bbox (bounding box),这个 bbox 里包含数量最多的匹配对,这样做可能得到多个潜在的共视区域。紧接着,使用每个共视区域的匹配计算基础矩阵。另外一种不需要聚类的思路是利用 MAGSAC++ 在低阈值条件下迭代几轮排除一些错误匹配,然后也可以得到 bbox。
  3. 裁剪出每个 bbox 区域,随后将其resize到一个预设的图像尺寸。紧接着,使用匹配算法对这些 “zoomed-in” 过的图像进行再次匹配。得到新的匹配之后,将这些匹配对投影到原始的图像上,这些投影后的匹配和最原始的图像匹配进行串联组织起来。注意,”zoomed-in” 后的匹配是为了增加匹配,而不是替换原来的匹配。
  4. (可选) 这一步使用非极大值抑制过滤过于集中的匹配对。非极大值抑制 包括 ANMS9 或者基于半径的NMS算法。
  5. 使用OpenCV MAGSAC++ 求解基础矩阵。

更为具体的,此处列举Top1/Top2方案。

Top1 思路

完全基于开源匹配器 (LoFTR5, SuperGlue7, DKM8) 组合达到该名次,不可思议!取得该名次另外一个关键原因在于,该方案使用了多尺度图像裁剪后进行匹配的 “2-stage” 策略。

具体的步骤如下:

  1. 图像初始匹配: LoFTR5 提取图像特征,分辨率840;Superpoint+SuperGlue7 提取多尺度图像特征,分辨率 840, 1024, 1280;紧接着将这两种匹配器得到的匹配进行串联;这是本方案的第1阶段匹配;
  2. 使用 DBSCAN 对匹配进行聚类,可以获得最佳的80-90%的匹配对;紧接着得到一个对应区域的 bbox,将这个区域裁剪出来,作者将这种方式称为 mkpt_crop。mkpt_crop 可以有效地过滤外点以及提取共视区域;
  3. 使用 LoFTR5, SuperGlue7, DKM8 重新对共视区域进行再次匹配,这是本方案的第二阶段匹配;
  4. 将上述两个阶段的匹配对串联起来,使用 MAGSAC 解算基础矩阵。

Top2 思路

几个关键点:

  1. 仅仅使用单一模型(Baseline)就可以获得0.838(public)/0.833(private)精度;这个模型与 LoFTR5 结构类似,同样是基于transformer直接进行图像匹配,没有特征点。不过作者提到,现阶段论文还在盲审,目前不能公开太多信息;
  2. 使用其他匹配器(Baseline + QuadTree6 + LoFTR5 + SuperGlue7)进一步增强精度;
  3. 使用归一化位置编码;
  4. 没有使用前/后处理;

有用的tricks

  1. 交换图像匹配顺序可提升 LoFTR-like 匹配器的精度
  2. 对 LoFTR-like 匹配器的位置编码归一化有效 (top2方案)
  3. 使用不同的 resize 图像的方法差异不大
  4. 使用 ECO-TR 对坐标进行优化有效 (未开源)
  5. 使用局部描述子+非学习的匹配器增加匹配数量并不奏效,如 DISK11 , ALIKE12 等;
  6. 语义分割掩码(天空/人)也不奏效;
    Refinement by ECO-TR

总结

  1. “2-stage” 的方式对于图像匹配任务相当有效:首先找到共视区域,接着缩放进行匹配;
  2. 最好首先解决 “recall” 问题,即尽可能多的找到匹配,这个过程可以使用不同的匹配器;要相信现代的 RANSACs 可以使用较少的内点恢复位姿;
  3. LoFTR5 对输入图像大小非常敏感,这一点值得后续继续研究。

参考

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