返回列表

2nd Place Solution, ensemble of old and new methods

495. Image Matching Challenge 2022 | image-matching-challenge-2022

开始: 2022-04-04 结束: 2022-06-02 计算机视觉 数据算法赛
第二名方案:新旧方法的集成

第二名方案:新旧方法的集成

作者:hkchkc | 排名:第2名

感谢所有团队,特别是组织者的出色工作,举办了这次比赛,这有助于将图像匹配的性能推向极限。这是我的第一次 Kaggle 比赛,但不是第一次参加 IMC,我发现从其他参与者精彩的解决方案中学习总是令人兴奋 :)

我的方案要点

  1. 一个新的单模型基线,在私有/公开 LB 上达到 0.838/0.833
  2. 与其他强大的匹配器集成进一步极大地提升了基线
  3. 基于 Transformer 的匹配器的归一化位置编码
  4. 未应用 TTA/多分辨率或后/预处理。

从一个好的基线开始

我参加这次比赛的最初动机是测试我们最近开发的一个匹配模型。我们的模型与 LoFTR 共享类似的范式,使用 Transformer 风格的网络从原始图像对生成匹配,而无需关键点检测。由于我们的论文仍在双盲评审中,我们可能无法公开分享更多信息,但我相信代码在不久的将来应该可以发布 :)

该模型很早就提交给了 IMC,在没有任何 TTA 的情况下,在私有/公开 LB 上取得了 0.838/0.833 的惊人分数。

与其他方法的集成

从最初的基线开始,我将更多强大的匹配器集成到解决方案中,这似乎总是有帮助的。结果报告如下。

匹配器 (Matcher) 分数 (私有/公开) 输入分辨率
Baseline 0.838/0.833 (1472,832) 或 (832,1472)
LoFTR 0.783/0.772 (1400,792) 或 (792,1400)
SuperGlue+8k SuperPoint 0.724/0.728 最长边 1600
Baseline+QuadTree 0.854/0.848 --
Baseline+QuadTree+LoFTR 0.860/0.853 --
Baseline+QuadTree+LoFTR+SuperGlue 0.862/0.859 --

通常,LoFTR/Quadtree 对最终分数贡献很大,SG 提升了公开分数,但私有分数从中受益较少。对于所有基于 Transformer 的匹配器,我保留两种类型的固定分辨率(通过纵横比选择)以维持大致恒定的内存消耗。对于所有方法,我使用 cv2.findFundamentalMat(mkpts0, mkpts1, cv2.USAC_MAGSAC, 0.2, 0.99999, 100000) 来获得基础矩阵。

还需要澄清的是,我对基线、loftr 和 quadtree 使用了归一化位置编码,这似乎总是在没有额外成本的情况下将性能提升 0.003-0.005(有时甚至更多)。我将在下一节讨论它。

归一化位置编码

LoFTR 的原始位置编码类似于:

pe[0::4, :, :] = torch.sin(x_position * div_term),其中 x_position 是绝对像素坐标。

这种实现的一个潜在问题是,当测试分辨率偏离训练分辨率时,pe 将使用未见过的坐标进行编码,这会损害网络识别位置的能力。为了缓解这个问题,我们应用了一个简单的归一化:

pe[0::4, :, :] = torch.sin(x_position * (training_dim/test_dim) * div_term),其中 training_dim/test_dim 是一个归一化因子,用于确保所有坐标范围在训练分辨率内。例如,使用 840 分辨率训练并使用 1472 分辨率测试,那么因子将是 840/1472=0.5706。根据经验,我发现这种修改或多或少使所有基于 Transformer 的匹配器受益约 0.005。

尝试过但无效的方法

  1. 使用语义掩码过滤掉不可匹配的对象(天空、汽车、树木、行人)。这种预处理对我来说通常成本高昂,并且没有带来一致的改进。

  2. 单应性预过滤。使用单应性假设过滤掉一些匹配,然后估计 F,这是去年 IMC 获胜团队采用的方法。一般来说,这种预过滤在理论上让我感到困惑,而且在经验上没有给我带来收益。

  3. 用 SE2-LoFTR 替换 LoFTR。在某些时候,我猜测测试集中可能存在一些轻微的旋转(大约 30-40 度),所以我尝试用 SE2-LoFTR 替换 LoFTR,但结果证明是无效的。

  4. 对所有方法使用更大的分辨率,我曾尝试扩大输入分辨率(如 >1500),但增益有限,运行时间却大幅增加。

  5. 使用 AdaLAM 过滤匹配。AdaLAM 有一些超参数

同比赛其他方案