611. Image Matching Challenge 2024 - Hexathlon | image-matching-challenge-2024
我们要向Kaggle社区和布拉格捷克技术大学的组织者表示感谢,感谢他们为本次比赛所做的贡献。我们也感谢所有参与者的热烈讨论。恭喜所有参赛团队!
这里描述的工作实际上是由 @sunnyykk、@gdchenhao、@mayunchaoamap 和 @wangshengyi96 共同完成的。我们特别感谢我们的导师张涛的强力支持和指导。
非常高兴能成为这样一支优秀团队的一员,参加IMC-2024比赛。在整个比赛过程中,我们收获了很多,也学到了很多。
现在很荣幸能与大家分享我们的解决方案。
毫无疑问,今年比赛与往年比赛最大的不同在于出现了透明和反光场景。经过多次尝试,我们发现很难开发出一种能够同时处理透明和常规场景的通用解决方案。因此,我们设计了不同的方法来处理这两类场景。
常规场景:我们设计了一种基于最小生成树(MST)的迭代优化SfM方案。我们使用从最简洁的数据关联重建的粗略模型作为骨架,然后迭代添加冗余关联来优化粗略模型的精度。
透明和反光场景:我们假设相机以环形方式捕获透明物体,并专注于计算图像的拍摄顺序。然后将图像放置在相应的位置和方向上。值得注意的是,我们设计了一种新的全局描述符,可以有效捕获这些场景中的详细信息,从而实现精确的相机姿态估计。
此外,我们的代码基于2023年IMC第7名团队 RMD-3DV 的开源解决方案。这个强大的基线结合了特征集成、pixsfm和colmap中的reloc技术,让我们能够在已有框架上进行构建,而不必从头开始。我们感谢他们的慷慨贡献。
这是我们解决方案的流程图:

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

我们设计了一个更强大的全局特征描述符,在图像检索阶段能产生更可靠图像对。
具体来说,我们开发了一种结合点和 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 |
我们使用了三种类型的局部特征,并使用它们的匹配结果进行集成:
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 |
SfM的数据关联阶段通常会进行广泛的特征匹配,以增强SfM的鲁棒性和准确性。然而,在具有重复纹理的场景中,增加数据关联会导致更多错误的匹配。

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

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

| SfM解决方案 | 私有 | 公开 |
|---|---|---|
| 直接SfM | 0.240 | 0.253 |
| MST辅助SfM(仅第一阶段) | 0.216 | 0.218 |
| MST辅助SfM(第一阶段 + 第二阶段) | 0.258 | 0.268 |
根据以往比赛的经验,我们使用pixsfm来优化SfM模型。此外,我们部署了基于HLoc的重定位模块来处理未注册的图像,这通常会带来0~0.01的分数提升。
对于透明场景,我们尝试了各种局部特征,包括ALIKED、DISK、LoFTR和DKMV3,但遗憾的是都没有取得令人满意的结果。通过观察训练集,我们假设相机以环形方式捕获透明目标。我们使用全局特征的相似性图计算最小成本路径,以确定图像拍摄序列,并将所有相机排列成闭环来计算它们的位置和方向。
有趣的是,圆柱体的全局特征可视化也显示了高度有序的2D平面布局,这对恢复图像捕获序列有很大帮助。

透明场景的解决方案最终将分数提高了约0.06。
| 解决方案 | 私有 | 公开 |
|---|---|---|
| 无透明场景解决方案 | 0.184 | 0.185 |
| 有透明场景解决方案 | 0.242 | 0.249 |