返回列表

4th place solution

556. Image Matching Challenge 2023 | image-matching-challenge-2023

开始: 2023-04-11 结束: 2023-06-12 计算机视觉 数据算法赛
Roni Heka的IMC 2023第四名解决方案

Roni Heka的IMC 2023第四名解决方案

比赛排名: 第4名

最终得分: mAA=0.865176

Public LB: 0.471 | Private LB: 0.534

(6月21日:添加了额外的解释。)

首先,我想向主办方和Kaggle工作人员表示感谢,感谢他们组织了IMC 2023竞赛。这个任务既令人兴奋又充满挑战,让我在过去两个月中享受其中。

概述

SuperPoint/SuperGlue被证明是异常准确和快速的。我的代码部分结合了主办方提供的基线代码和Chankhavu在IMC 2022的笔记。我对两者表示感谢。

主要流程

基于匹配数量的筛选过程

考虑到大量的图像组合,需要一个有效的筛选方法。我注意到当图像对不适合立体匹配时,SG产生的匹配数量显著较低(<10)。因此,我决定在SG(长边=1200)产生的匹配数低于某个阈值(本例中为30个匹配)时跳过处理。该策略显著减少了处理时间,使在有限时间内尝试更多图像对成为可能,带来了明显的改进(LB:+0.08)。

筛选过程中的旋转处理

从具有无序图像方向的图像对(如塞浦路斯的图像)中获取有意义的匹配具有挑战性。因此,我在筛选过程中加入了旋转处理,进一步提升了效果(LB:+0.04)。

图像分割

每张图像被分割为四个部分,每个部分生成自己的关键点集,然后对所有图像对组合(4x4=16对)执行匹配(SP/SG,长边=1400)。图像分割后,关键点数量几乎增加到原来的3倍,且这不依赖于图像的原始尺寸。仅仅增加图像输入尺寸无法实现这种效果。我在其他场景也获得了类似收益。该方法被证明比我之前使用的传统TTA更有效且省时(LB:+0.01~0.02)。

与DKM集成

在比较多个模型后,DKM v3成为与SG配合使用的相对轻量且有效的选择(LB:+0.01~0.04)。在下图所示的图像对中,SuperGlue无法在楼梯区域(黄色区域)产生正确的匹配,但在其他物体(如拱门和柱子)上表现良好。而DKM可以检测到楼梯的正确对应点,表明这两种匹配器具有互补性。

匹配与建图过程的并行执行

匹配和建图/重建都是计算密集型任务。但前者同时使用GPU和单个CPU,而后者仅需要CPU资源。因此,使用队列库实现并行处理使时间效率提高了约20-30%。这个概念受到IMC 2022金奖解决方案的启发。

记住设置< code>mapper_options.num_threads = 1,这有助于避免重建过程中的内存溢出(OOM)。

最终得分

场景 图像数量 图像对数量 mAA mAA_q mAA_t
urban / kyiv-puppet-theater 26 325 0.921538 0.987385 0.921538
urban - - 0.921538 - -
heritage / dioscuri 174 15051 0.594950 0.689662 0.602279
heritage / cyprus 30 435 0.706437 0.727126 0.724828
heritage / wall 43 903 0.805980 0.935105 0.824917
heritage - - 0.702456 - -
haiper / bike 15 105 0.933333 0.999048 0.933333
haiper / chairs 16 120 0.981667 0.999167 0.981667
haiper / fountain 23 253 0.999605 1.000000 0.999605
haiper - - 0.971535 - -

最终指标 → mAA=0.865176

Public LB: 0.471
Private LB: 0.534

值得注意的是,该提交在本地、公开榜单和私有榜单中都获得了我的提交中的最高分。虽然我曾与Colmap的随机性斗争,但现在认识到该数据集很有用,并作为 aiming for the correct goal 的宝贵参考。

效果不佳的思路

  • 测试了其他模型如LoFTR、SE2-LoFTR、disk、QuadTreeAttention、OpenGlue和SILK。结果显示SP/SG和DKM的组合在速度和性能上都持续优于它们。
  • 在重建前使用USAC_MAGSAC偶尔会缩短重建时间,但在匹配过程为速率决定步骤的并行执行中效果甚微。此外,它从未改善我的分数。
  • 实施CLAHE使我的流程不稳定且鲁棒性降低。虽然在某些场景有效,但经常降低其他场景的准确性,总体上经常导致分数下降。
  • 其他形式的TTA(分辨率、翻转、10度旋转、裁剪)仅提供极小的改进,同时消耗大量时间。尝试大量图像对比使用TTA更有益。
  • 我尝试使用IMC2022的相同方法确定Colmap无法注册的每个图像的R和T,但该方法未能提高分数。原因很简单:无论哪种方法,如果无法识别匹配,则无计可施。(另一方面,添加从best_idx以外的重建中获得的R和T值到提交中也略微提高了分数。)
同比赛其他方案