返回列表

1st Place Solution

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

开始: 2022-04-04 结束: 2022-06-02 计算机视觉 数据算法赛
第一名解决方案

第一名解决方案

作者:YumeNeko (团队: XIUQI, ForcewithMe, kwang)
比赛:Image Matching Challenge 2022

感谢所有参赛者在比赛中的辛勤付出。
我们很荣幸能在本次比赛中获得第一名的优异成绩。

我们还要向组织者表示最深切的感谢,感谢他们组织了如此精彩的比赛。
非常感谢。

最后,感谢我出色的队友 @gmhost@xiuqi0@forcewithme
我相信他们深刻的洞察力和实验带来了令人瞩目的结果。非常感谢大家!

概览

我们的解决方案基于三种不同模型匹配结果的集成:LoFTR、SuperGlue 和 DKM。
它们都使用了公开可用的预训练权重,并未进行训练或微调。

通过在多种分辨率下进行匹配以及在匹配前仅裁剪共视区域,分数得到了显著提高。

我们的解决方案是一个两阶段方法,框架如下:

  1. 我们首先将 840 分辨率的 LoFTR 生成的关键点与 840、1024、1280 分辨率的 Superpoint_SuperGlue 生成的关键点进行拼接。这是我们框架的第一阶段。

  2. 我们使用 DBSCAN 获取包含前 80~90% 匹配关键点的聚类。用这些关键点为每张图像生成一个边界框,并进行裁剪。我们将此方法称为 mkpt_crop。Mkpt_crop 可以有效地过滤异常值并提取关键区域。

  3. 在关键区域使用 LoFTR、dkm、SuperPoint_SuperGlue 重新进行匹配。这是我们框架的第二阶段。

  4. 拼接第一阶段和第二阶段产生的关键点。然后进行 RANSAC 并得到基础矩阵。

解决方案框架图

关键点

  • mkpt crop (关键点裁剪)
  • 集成多分辨率匹配

mkpt crop (匹配关键点裁剪)

基于两张图像中未共享的区域对于匹配来说是不必要的这一假设,我们开发了 mkpt crop(匹配关键点裁剪)的想法,这是一种高效且准确的图像裁剪方法。

mkpt crop 通过以下方式裁剪共视区域:

  1. 我们使用预裁剪图像(原始图像)进行相互匹配
  2. 用 DBSCAN 对每张图像的匹配点进行聚类
  3. 提取包含前 80%~90% 匹配点的聚类,以去除异常值区域
  4. 裁剪聚类的外边界

mkpt-crop示意图

由于良好的预训练模型能找到相当多正确的匹配点,我们能够通过在一定程度上剔除异常值来高精度地找到共视区域。

步骤 1 中使用的模型是 LoFTR 和 SuperGlue。起初,仅使用 LoFTR 的结果来计算裁剪区域,但通过加入 SuperGlue 的结果,可以覆盖 LoFTR 无法找到的共视区域,从而显著提高了分数。

此外,mkpt crop 是一种非常精简高效的方法,因为步骤 1 中计算的匹配点也可以用于最终的集成。

我们也尝试过使用 Mask2Former 进行分割裁剪,但由于分割裁剪无法判断一个区域是否为两张图像共有,不可避免地会有很多浪费的区域,而 mkpt crop 给出了更好的结果。

然而,mkpt_crop 存在移除小共视区域的风险,因为它会移除匹配点较少的聚类。因此,我们团队将原始图像的匹配点加入到集成中,以实现更稳定的匹配。

集成多分辨率匹配

我们使用 LoFTR、SuperGlue 和 DKM 在各种分辨率下进行匹配,并对结果进行集成。
最终使用的模型如下:

# 模型 输入图像 分辨率
1LoFTR原始840
2SuperGlue原始1280
3SuperGlue原始1024
4SuperGlue原始840
5LoFTRmkpt crop1280
同比赛其他方案