返回列表

14th place solution

652. Image Matching Challenge 2025 | image-matching-challenge-2025

开始: 2025-04-01 结束: 2025-06-02 计算机视觉 数据算法赛
第 14 名解决方案 - Image Matching Challenge 2025

第 14 名解决方案

作者: Saif daoud, Khlifi Mohamed
发布日期: 2025-06-10
竞赛排名: 第 14 名

首先,我要感谢组织者和 Kaggle 团队举办这场激动人心的比赛。
我和我的队友 @khlifimohamed 很自豪能获得第 14 名。虽然这是我们的官方排名,但我们还有其他未选提交的方案本可以让我们进入金牌层级。无论结果如何,这段经历都非常有益。

1. 概述

Image matching pipeline

2. 全局特征提取 + 聚类

我们使用 DINOv2 提取全局图像嵌入,然后通过 t-SNE 进行降维投影。这些低维特征使用 HDBSCAN 进行聚类,这是一种基于密度的算法,可以根据视觉相似性对图像进行分组,并检测异常值。为了确保聚类的鲁棒性,我们定义了一个置信度分数 𝑠,作为 HDBSCAN 聚类置信度和轮廓系数(silhouette score)之间的调和平均数。仅当 𝑠 > 0.6 时才接受聚类分配。

3. 关键点检测 + 全配对匹配

这部分的解决方案主要基于 2024 年的第一名方案,我们发现该方案非常有效且优化良好。对于局部特征提取和匹配,我们使用 ALIKED 检测关键点,并使用 LightGlue 进行鲁棒匹配。关于参数,我们利用了两种分辨率:12801088 用于全图,1280 用于裁剪区域。裁剪由 DBSCAN 指导,它识别匹配关键点的密集区域以便专注于相关区域。为了保持运行时间实用(约 6 小时),我们将每张图像的关键点数量限制为 8192 个。对于几何验证,我们也采用了去年解决方案中的自定义 RANSAC 实现。

4. 重建

我们使用 PyCOLMAP v3.11.1 进行增量式 3D 重建。
为了提高重建稳定性并减少随机性,我们固定了用于初始化的第一对图像。第一张图像是匹配最多的那张,第二张图像是与第一张匹配关键点最多的那张。这种初始化 consistently 提高了我们的重建质量和分数。然而,固定初始对引入了重建过程发散的风险。为了克服这个问题,我们实施了一种回退策略:如果 PyCOLMAP 无法收敛,我们迭代测试替代的第二张图像(例如第二佳、第三佳),并选择第一个收敛的重建结果。

4.1. 通过聚类

当置信度分数 𝑠 > 0.6 时(如第 2 节所述),
我们利用聚类方法来指导重建。然而,聚类在某些场景中可能会出错。因此,我们采用了以下方法:

  • 如果 s > 0.85:我们在每个预测的集群上运行重建。
  • 如果 0.6 < s ≤ 0.85:我们仅将聚类用于配对初始化,并对所有图像运行重建,随后进行后处理以去除获得的重建之间的重叠。

4.2. 迭代方法

当置信度分数 𝑠 < 0.6 或通过聚类重建出现问题时使用此方法。我们对所有图像运行多轮重建,仅移除那些所有配对图像已成功注册的图像。迭代持续进行,直到没有剩余图像。然后,我们应用后处理步骤来合并重建并消除重叠。

同比赛其他方案