返回列表

16th Place Solution

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

开始: 2023-04-11 结束: 2023-06-12 计算机视觉 数据算法赛

第16名解决方案

排名: 第16名

作者: Yuxiang Huang (团队负责人), KrisFeng78953, Yan Song Hu, Yizhe Liu

发布日期: 2023-06-13

最后更新: 2023-06-21

首先,我们要感谢组织者和Kaggle团队举办这次挑战赛,这是一次非常棒的体验。

我们的解决方案
在最终提交中,我们采用了SuperPoint、KeyNet/AffNet/HardNet和SOSNet的集成作为特征检测器/描述子,并使用SuperGlue和Adalam进行特征匹配。我们使用Colmap进行重建和相机定位。我们还使用了hloc来加速流程,并使其在验证和测试时更具可扩展性。

图像检索
我们使用了在hloc中实现的NetVLAD作为图像检索的全局特征描述子。

特征匹配
我们在数据集中首先注意到的是,某些场景包含大量旋转后的图像,我们尝试通过两种方法来解决这个问题:
1) 使用旋转不变的特征匹配器(例如KeyNet/AffNet/HardNet、SOSNet)。
2) 使用轻量级方向检测器检测旋转角度,并相应地旋转图像对,使两张图像具有相似的方向(为简化起见,我们仅将旋转角度设为90、180和270度)。

我们同时尝试了这两种方法,发现它们在Heritage数据集上均能带来相似的提升。然而,通过集成更多特征匹配器,我们在Urban和Haiper数据集上观察到了额外的改进,因此最终采用了这种方法。该集成方案在9小时的时间限制内取得了最佳效果:SuperGlue + KeyNet/AffNet/HardNet(配合Adalam)+ SOSNet(配合Adalam)。在集成模型上使用方向补偿并未带来进一步的提升。

未奏效的方法
1) 我们首先尝试了这种SOTA方向检测器,但它占用内存过多,无法集成到Kaggle上的流程中。
2) 我们发现基线中的KeyNet/AffNet/HardNet + Adalam是无需任何预处理的最佳单一特征匹配器——仅通过调整参数并将输入图像调整为1600大小,我们就能达到0.455/0.433的分数(相当于第47名),但当我们使用hloc将其集成到流程中时,性能显著下降至0.334/0.277(在本地同样如此,主要体现在Urban数据集上),我们尝试调查原因,但仍未找到答案。
3) 我们尝试了许多近期的特征匹配器及其集成方案,包括DKMv3、DISK、LoFTR、SiLK、DAC,但它们要么表现不佳,要么在集成到流程中时速度过慢。总体而言,我们发现端到端的密集匹配器并不太适合本次多视角挑战,尽管它们在去年的双视角挑战中表现出色,但其速度过慢,且取得的分数也不够理想。以下是一些本地验证结果:

  1. SiLK(在约800x600分辨率下):
    urban:0.125
    haiper:0.165
  2. DKMv3(在约800x600分辨率下,仍然非常慢):
    heritage:0.185
    haiper:0.510
  3. DISK(在约1600x1200分辨率下):
    urban:0.461
    heritage:0.292(使用方向补偿时为0.452)
    haiper:0.433
  4. 使用Adalam的SOSNet(在约1600x1200分辨率下):
    urban:0.031
    heritage:0.460(使用方向补偿时相同)
    haiper:0.653
  5. 使用Adalam的Sift / Rootsift(在约1600x1200分辨率下):
    urban:0.02
    heritage:0.396
    haiper:0.635
  6. DAC:结果非常差

重建
在合并集成模型中的所有匹配点后,我们在重建模型前于Colmap中应用了几何验证,从而加速了重建过程。
未奏效的方法
1) 我们尝试使用Pixel-Perfect SFM,在本地搭建后,其视觉效果与我们的流程相当,但由于无法在Kaggle上成功运行,因此未进一步采用。
2) 我们尝试使用MAGSAC++替代Colmap默认的RANSAC函数,以在重建模型前剔除错误的匹配点,但最终得分未出现显著差异。

特征匹配器 分辨率 urban heritage haiper 备注
SiLK ~800x600 0.125 - 0.165 -
DKMv3 ~800x600 - 0.185 0.510 仍然非常慢
DISK ~1600x1200 0.461 0.292 (0.452 使用方向补偿) 0.433 -
SOSNet with Adalam ~1600x1200 0.031 0.460 (使用方向补偿时相同) 0.653 -
Sift / Rootsift with Adalam ~1600x1200 0.02 0.396 0.635 -
DAC - - - - 结果非常差
同比赛其他方案