495. Image Matching Challenge 2022 | image-matching-challenge-2022
感谢所有参赛者在比赛中的辛勤付出。
我们很荣幸能在本次比赛中获得第一名的优异成绩。
我们还要向组织者表示最深切的感谢,感谢他们组织了如此精彩的比赛。
非常感谢。
最后,感谢我出色的队友 @gmhost、@xiuqi0 和 @forcewithme。
我相信他们深刻的洞察力和实验带来了令人瞩目的结果。非常感谢大家!
我们的解决方案基于三种不同模型匹配结果的集成:LoFTR、SuperGlue 和 DKM。
它们都使用了公开可用的预训练权重,并未进行训练或微调。
通过在多种分辨率下进行匹配以及在匹配前仅裁剪共视区域,分数得到了显著提高。
我们的解决方案是一个两阶段方法,框架如下:
我们首先将 840 分辨率的 LoFTR 生成的关键点与 840、1024、1280 分辨率的 Superpoint_SuperGlue 生成的关键点进行拼接。这是我们框架的第一阶段。
我们使用 DBSCAN 获取包含前 80~90% 匹配关键点的聚类。用这些关键点为每张图像生成一个边界框,并进行裁剪。我们将此方法称为 mkpt_crop。Mkpt_crop 可以有效地过滤异常值并提取关键区域。
在关键区域使用 LoFTR、dkm、SuperPoint_SuperGlue 重新进行匹配。这是我们框架的第二阶段。
拼接第一阶段和第二阶段产生的关键点。然后进行 RANSAC 并得到基础矩阵。

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

由于良好的预训练模型能找到相当多正确的匹配点,我们能够通过在一定程度上剔除异常值来高精度地找到共视区域。
步骤 1 中使用的模型是 LoFTR 和 SuperGlue。起初,仅使用 LoFTR 的结果来计算裁剪区域,但通过加入 SuperGlue 的结果,可以覆盖 LoFTR 无法找到的共视区域,从而显著提高了分数。
此外,mkpt crop 是一种非常精简高效的方法,因为步骤 1 中计算的匹配点也可以用于最终的集成。
我们也尝试过使用 Mask2Former 进行分割裁剪,但由于分割裁剪无法判断一个区域是否为两张图像共有,不可避免地会有很多浪费的区域,而 mkpt crop 给出了更好的结果。
然而,mkpt_crop 存在移除小共视区域的风险,因为它会移除匹配点较少的聚类。因此,我们团队将原始图像的匹配点加入到集成中,以实现更稳定的匹配。
我们使用 LoFTR、SuperGlue 和 DKM 在各种分辨率下进行匹配,并对结果进行集成。
最终使用的模型如下:
| # | 模型 | 输入图像 | 分辨率 |
|---|---|---|---|
| 1 | LoFTR | 原始 | 840 |
| 2 | SuperGlue | 原始 | 1280 |
| 3 | SuperGlue | 原始 | 1024 |
| 4 | SuperGlue | 原始 | 840 |
| 5 | LoFTR | mkpt crop | 1280 |