返回列表

2nd Place Solution: MST-Aided SfM & Transparent Scene Solution [Prize Eligible]

611. Image Matching Challenge 2024 - Hexathlon | image-matching-challenge-2024

开始: 2024-03-25 结束: 2024-06-03 计算机视觉 数据算法赛
2nd Place Solution: MST-Aided SfM & Transparent Scene Solution

第二名解决方案:MST辅助SfM与透明场景解决方案

作者:Neo

排名:第2名

我们要向Kaggle社区和布拉格捷克技术大学的组织者表示感谢,感谢他们为本次比赛所做的贡献。我们也感谢所有参与者的热烈讨论。恭喜所有参赛团队!

这里描述的工作实际上是由 @sunnyykk@gdchenhao@mayunchaoamap@wangshengyi96 共同完成的。我们特别感谢我们的导师张涛的强力支持和指导。

非常高兴能成为这样一支优秀团队的一员,参加IMC-2024比赛。在整个比赛过程中,我们收获了很多,也学到了很多。

现在很荣幸能与大家分享我们的解决方案。

1. 概述

毫无疑问,今年比赛与往年比赛最大的不同在于出现了透明和反光场景。经过多次尝试,我们发现很难开发出一种能够同时处理透明和常规场景的通用解决方案。因此,我们设计了不同的方法来处理这两类场景。

常规场景:我们设计了一种基于最小生成树(MST)的迭代优化SfM方案。我们使用从最简洁的数据关联重建的粗略模型作为骨架,然后迭代添加冗余关联来优化粗略模型的精度。

透明和反光场景:我们假设相机以环形方式捕获透明物体,并专注于计算图像的拍摄顺序。然后将图像放置在相应的位置和方向上。值得注意的是,我们设计了一种新的全局描述符,可以有效捕获这些场景中的详细信息,从而实现精确的相机姿态估计。

此外,我们的代码基于2023年IMC第7名团队 RMD-3DV 的开源解决方案。这个强大的基线结合了特征集成、pixsfm和colmap中的reloc技术,让我们能够在已有框架上进行构建,而不必从头开始。我们感谢他们的慷慨贡献。

2. 方法

这是我们解决方案的流程图:

流程图

2.1 预处理

我们首先对图像进行旋转检测,并判断场景是否为透明场景。

  • 旋转检测:我们使用旋转检测模型来预测并校正图像旋转。然而,考虑到模型的预测并不总是准确,如果预测为旋转的图像少于10%,我们会保留原始旋转。
  • 共享相机内参:如果所有图像尺寸相同,我们将所有相机设置为共享相同的内部参数,偶尔会带来0.01的改进。
  • 透明检测:我们计算不同图像之间的平均差异,以确定场景是否为透明场景并进行分别处理。

2.2 全局特征

全局特征

我们设计了一个更强大的全局特征描述符,在图像检索阶段能产生更可靠图像对。

具体来说,我们开发了一种结合点和 patch 特征的全局描述符。基本方法是从图像中提取点特征(ALIKED)和 patch 特征(DINO),然后根据它们的空间关系建立一对一对应关系。使用聚类和VLAD算法生成全局描述符。这种方法使聚类算法能够实现场景特征的无监督学习,而结合DINO进一步提升了学习潜力。

我们的方法在VPR相关数据集上优于NetVLAD、AnyLoc、DINO(GAP或GMP)和SALAD。虽然SfM流程中的图像检索通常会产生许多候选匹配(30+),这为高召回率提供了鲁棒性,但区分检索能力变得不那么明显。与其他配置相比,排除透明场景,NetVLAD和我们的全局特征的得分如下:

全局描述符 私有 公开
NetVLAD 0.241 0.230
我们的方案 0.245 0.247

2.3 局部特征

我们使用了三种类型的局部特征,并使用它们的匹配结果进行集成:

  • Dedode v2 + Dual Softmax
  • DISK + LightGlue
  • SIFT + Nearest Neighbor

Dedode检测器的v2版本能产生更丰富且分布更均匀的特征点。我们选择了预训练的G-upright作为描述符,使用dual softmax作为匹配器。

局部特征配置 私有 公开
ALIKED + DISK + SIFT 0.184 0.169
SuperPoint + DISK + SIFT 0.178 0.172
Dedode v1 + DISK + SIFT 0.179 0.177
Dedode v2 + DISK + SIFT 0.184 0.185

2.4 MST辅助的粗到精SfM解决方案

SfM的数据关联阶段通常会进行广泛的特征匹配,以增强SfM的鲁棒性和准确性。然而,在具有重复纹理的场景中,增加数据关联会导致更多错误的匹配。

问题说明

这个问题在训练集中教堂场景的重建结果中很明显。

重建结果

为了解决这个问题,我们提出了基于最小生成树(MST)的粗到精SfM解决方案:

  • 第一阶段:我们构建一个相似性图,其中顶点代表图像,边代表相似性。通过计算MST,我们获得了一个链接所有图像节点的全局最优数据关联,用于第一次SfM。实验表明,这种方法消除了大量错误的关联,显著提高了粗粒度精度,但略微损失了细粒度精度。
    MST
  • 第二阶段:我们使用完整的数据关联,并利用第一阶段产生的粗略模型提供相机姿态先验进行几何验证。这过滤掉了完整数据关联中的错误特征匹配,从而得到最终模型。数据冗余保持了第一阶段的粗粒度优势,同时补偿了其细粒度精度的损失。
SfM解决方案 私有 公开
直接SfM 0.240 0.253
MST辅助SfM(仅第一阶段) 0.216 0.218
MST辅助SfM(第一阶段 + 第二阶段) 0.258 0.268

2.5 后处理

根据以往比赛的经验,我们使用pixsfm来优化SfM模型。此外,我们部署了基于HLoc的重定位模块来处理未注册的图像,这通常会带来0~0.01的分数提升。

2.6 透明场景

对于透明场景,我们尝试了各种局部特征,包括ALIKED、DISK、LoFTR和DKMV3,但遗憾的是都没有取得令人满意的结果。通过观察训练集,我们假设相机以环形方式捕获透明目标。我们使用全局特征的相似性图计算最小成本路径,以确定图像拍摄序列,并将所有相机排列成闭环来计算它们的位置和方向。

有趣的是,圆柱体的全局特征可视化也显示了高度有序的2D平面布局,这对恢复图像捕获序列有很大帮助。

透明场景

透明场景的解决方案最终将分数提高了约0.06

解决方案 私有 公开
无透明场景解决方案 0.184 0.185
有透明场景解决方案 0.242 0.249

3. 其他想法

3.1 未成功的方法

  • 增强MST辅助SfM的第一阶段:通过向MST添加更多冗余边(例如,top-k、替代关键路径),旨在平衡第一次重建阶段的召回率和精确度。虽然私有分数达到了高0.263,但公开分数仅为0.249,因此未被选中。
  • 为Dedode使用Lightglue匹配器:我们测试了Kornia的lightglue匹配器用于dedode(b/g),但表现不如dual softmax。
  • 昼夜挑战:为了应对pond和lizard数据集中的昼夜挑战,我们尝试了基于亮度的昼夜分类、特征分布归一化,但遇到了未知的"抛出异常"障碍。
  • 密集匹配器:我们测试了LoFTR、EfficientLoFTR和DKMV3等密集匹配器在常规场景中,但没有看到分数提升,可能是由于我们未优化的参数(匹配阈值、网格大小等)。
  • 基于神经网络的SfM:我们探索了基于神经网络的SfM方法,如Dust3R用于透明场景,但效果不太好。
  • 密集光流:使用密集光流恢复透明场景中的图像捕获序列也可行,但不如我们提出的全局特征有效。

3.2 我们未尝试的方法

  • TTA:由于运行时间的考虑,我们没有尝试TTA方法。
  • 多尺度匹配:我们没有检测共可见区域或进行多尺度局部特征匹配。
同比赛其他方案