返回列表

12nd Place Solution: SP+SG

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

开始: 2023-04-11 结束: 2023-06-12 计算机视觉 数据算法赛
第12名解决方案:SP+SG

第12名解决方案:SP+SG

作者:niubiren

团队:niubiren, junfang1, iluoluo, bwgina

发布日期:2023-07-01

感谢竞赛组织者和 Kaggle 团队举办了这场精彩的比赛并提供了坚实的支持。感谢我的每一位团队成员,是他们的创造性视角和努力让我们在比赛中获得了这个名次。

1. 概述

我们的最终模型相当简单。该解决方案基于一个名为 Hierarchical-Localization 的模块化工具箱(典型的 SP+SG 结构实现),关键的改进是将输入分辨率设置为 2000。

当分辨率从 1024 增加到 2000 时,公共排行榜分数从 0.24 提升到了 0.46。当分辨率进一步增加到 3000 时,在训练集上仍有提升(特别是 "wall" 场景)。

2. 详细配置

confs = {
    'superpoint_aachen': {
        'output': 'feats-superpoint-n4096-r1024',
        'model': {
            'name': 'superpoint',
            'nms_radius': 3,
            'max_keypoints': 4096,
        },
        'preprocessing': {
            'grayscale': True,
            'resize_max': 2000, # 将长边缩放到 2000
        },
    }
}
'superglue': {
    'name': 'superglue',
    'weights': 'outdoor',
    'sinkhorn_iterations': 50,
}

3. 无效的技巧

我们的代码存在随机性问题;相同代码的公共排行榜分数差异可达 0.04!遗憾的是,在整个比赛过程中,我们未能找到消除随机性的方法。如果一个改进在多次提交中没有观察到明显提升,我们就认为它是无效的,但仍然可能存在错误。

  • 图像检索
    在增量建图后,尝试将映射失败的图像添加到成功重建的模型中。
  • TTA(测试时增强)
    对 [原始图像、左右翻转、旋转10度] 提取的特征进行反转、拼接并应用 NMS,但计算时间大幅增加,且未观察到明显改进。
  • 集成 SIFT 到 SP
    我们了解到 SP 在图像发生极端平面旋转时会失效。因此尝试使用 pycolmap 进行 SIFT 提取和匹配,从数据库中提取匹配结果并与 SP+SG 拼接。该技巧可以提升 "cyprus" 的分数,但在今年的测试集中无效。值得注意的是,它也不会损害排行榜分数。
  • 多模型和多分辨率
    我们尝试将 SP+SG 与 DKM、Loftr、Quadtree、silk 等模型集成,但这些模型即使在与 SP+SG 相同分辨率下表现也很差。其中一些是单阶段模型,导致它们对任务效率低下。我们尝试拼接 [800, 1500, 2000] 三种分辨率下 SP+SG 的结果,但结果与单独使用 2000 分辨率几乎相同。
  • 通过更多迭代抑制随机性
    Hloc 使用几何验证 (pycolmap.verify_matches),设置 max_num_trials=40000 没有效果。

4. 比赛经验

使用 cv2 读取图像会丢失 EXIF 信息,这不利于重建。但也有反例,"theater" 在信息被移除后得分甚至更高。

5. 参考

同比赛其他方案