7

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

 2 years ago
source link: https://vincentqin.tech/posts/imc2022/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

2022-07-102

笔者跟踪这项比赛较长时间,去年和前年已经写过两篇 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. 语义分割掩码(天空/人)也不奏效;
  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

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK