556. Image Matching Challenge 2023 | image-matching-challenge-2023
非常感谢组织者和Kaggle团队举办这场精彩的比赛。
我们的解决方案与组织者提供的基线在架构上有相似之处。
首先,我们通过实现一个旋转模型来解决旋转不变性问题,以标准化输入图像的朝向。接下来,我们采用神经网络进行检索任务,使我们能够提取匹配对用于特征提取和匹配过程。此过程生成一个数据库,作为Colmap增量映射的输入。
我们要感谢@iglovikov开发了这个出色的模型,该模型在大型数据集上训练,并在(LB)和(CV)评估中均表现出色。我们对这个模型做了轻微修改,称之为自集成。
在我们提出的调整中,我们在查询图像及其不同旋转版本上迭代使用该模型。随后,我们通过在不同旋转角度的1500多张图像上进行验证测试来调整阈值。通过实验,我们发现使用0.8到0.87之间的阈值可能导致错误的方向预测。为了解决这个问题,我们通过进一步旋转图像并检查预测的类别概率是否落在这个阈值范围内来应用自集成。我们将最后一步重复两次以确保准确性。
为了解决穷举匹配的成本低效问题和3D重建中顺序匹配的局限性,我们寻求了图像检索的替代方法。
经过仔细评估,我们选择使用NetVlad作为我们的方法,因为与openibl和cosplace相比,它的性能更优。为了进一步增强结果,我们采用了多种技术,包括:
1) 我们将原始图像及其水平翻转版本通过模型。通过将两次传递获得的描述子相加,我们实现了性能提升,特别是对于高度相似的图像。这项技术在场景呈现对称性的情况下特别有效。通过在n维描述空间中重新定义一个新点,有效地增加了场景中两个不同部分之间的相似性距离。
2) 重新排序:在计算相似性分数后,我们通过选择前1名匹配进行重新排序。然后我们使用这两张图像而不是仅一张重新查询检索过程。所得匹配的相似性分数在提升到特定幂次"m"后被加总。这种概率操作确保如果找到了一个查询图像的最佳匹配,它将优先于一个与两个查询图像都相似且相似性总和相等的图像。
我们使用NetVlad并在图像尺寸上进行测试时增强(TTA),将这一过程重复两次。结果近乎完美,该方法甚至能够正确排序The Wall场景对,这些场景对通过顺序匹配可以得到最佳匹配。
确定要选择的图像对数量是一个关键因素,直接影响验证和排行榜性能。这对于大型场景尤其重要,因为在场景的子集之间可能没有或只有很少的共同图像。
为了解决这一挑战,我们设计了一种基于完全图表示的策略。在这个图中,每条边代表两张图像之间的相似性。目标是在每个图像具有相同数量连接节点的条件下选择边的子集。
我们采用二分搜索方法来确定每张图像的匹配数量,并使用检查函数来验证生成的图是否连通。二分搜索的下限设置为图像数量的一半,确保我们考虑共同匹配并防止3D模型重建不完整。此外,我们确保该方法对于包含少于40张图像的小型场景仍然保持穷举性。
通过采用这种方法,我们旨在在捕捉足够匹配对以实现准确3D重建与避免冗余或断开的图像子集之间取得平衡。
在我们选定的提交中,我们使用了SuperPoint和SuperGlue算法,随后进行了MagSac过滤。遗憾的是,SuperGlue未获得商业使用许可。然而,使用GlueStick我们也取得了非常有希望的结果。我们对GlueStick架构进行了修改,以将其与SuperPoint集成,在不使用我们最佳调优参数的情况下,我们在公共排行榜上获得了约0.450的分数,在私人排行榜上获得了0.513的分数。值得注意的是,这种修改后的架构允许商业使用,并且提供了更快的处理速度。我们预计通过进一步调优,GlueStick可以产生更好的结果,但我们没有将其作为最终的提交选择。
虽然未包含在我们选定的提交中,但我们想提及一种在各种场景下显著改善验证结果的方法。我们采用了Pixel-Perfect-SFM与sd2net进行密集匹配,但这并未改善公共排行榜上的结果。
虽然不属于我们选定的提交,但我们尝试使用各种技术注册未注册的图像。然而,这些尝试在排行榜上并未产生显著改善。我们探索了以下策略:
1) 大多数参与者使用colmap重建,这是非确定性的。我们能够修改代码使其变为确定性,但仅使用一个CPU线程,这有助于我们观察改进并避免随机性。
2) 我们发现OpenCV和PIL库在读取图像时使用EXIF信息,除非提供标志来阻止它。这意味着如果EXIF中的朝向信息会在处理前自动旋转图像。这让我们感到困惑,因为缺少关于如何为旋转部分收集GT(是否考虑它们)的信息,这就是为什么我们选择的一个解决方案包含了这种修正来克服此类问题,此外我们损失了很多提交机会来检查这个问题对排行榜的影响。如果能有关于GT如何计算的更好解释会更有帮助。
3) 我们的验证得分在公共排行榜为0.485,在私人排行榜为0.514,本地得分为0.87。
4) 验证和排行榜不相关使得事情更加困难和随机,因为很明显会有一些变动,由于对于某些特定场景,某些解决方案可能会失败,这将严重影响mAA分数。