第 8 名解决方案 - Image Matching Challenge 2025
第 8 名解决方案
作者: yangyefd, fulish
发布时间: 2025 年 6 月 3 日
竞赛: Image Matching Challenge 2025
非常感谢组织这场精彩的比赛。我真诚地感谢组织者和参赛者。同时,我想说 Copilot 给了我很大帮助,我们的代码严重依赖 Copilot。
背景
业务背景:https://www.kaggle.com/competitions/image-matching-challenge-2025/overview
数据背景:https://www.kaggle.com/competitions/image-matching-challenge-2025/data
我们的主要优化点如下:
- 使用 GIMLightGlue:PB 分数从 32.17 提升至 33.75。我们发现 GIMLightGlue 能产生更准确的匹配对,但匹配对数量较少。
- 使用 CLIP 替换 DINO 进行筛选:33.75 => 36.98。CLIP 在训练集上表现 exceptionally well,我们使用 0.76 的余弦相似度。CLIP 在大多数场景中能产生完美的分割,但在楼梯等困难场景中存在场景混淆。
- 使用二次匹配:GIMLightGlue 匹配后,再次使用 ALIKE_LightGlue(baseline)对匹配区域进行匹配:PB 分数提升至 41.7。这涉及匹配对过滤。我们首先分别对匹配点进行 DBSCAN 聚类,然后合并两张图像的聚类结果,最后选择靠近两张图像聚类中心的点进行二次匹配。如果在此过程中聚类失败,则直接放弃该匹配对。
- 使用循环检查:过滤能形成循环的匹配对,过滤掉循环误差大于 30 的匹配对,并移除平均循环误差大于 30 的匹配对中数量最少的匹配对。
- 限制匹配对数量:(取前 1500 个)。我们发现这不仅提高了性能,还提高了匹配效率。
- 集成策略:初始匹配使用 GIMLightGlue 和 ALIKE_LightGlue 进行集成,二次匹配使用 ALIKE_LightGlue。
无效的尝试
- TTT:测试期间微调。为了进一步增强 LightGlue 的匹配能力,我们尝试在测试期间用测试数据集微调模型。我们使用图像及其自身的变换进行自监督学习(同一图像的旋转、投影变换等)。我们尝试了这个方案半个月。我们发现它可以显著增加楼梯场景中的匹配对数量,但过强的匹配导致场景间更多的匹配(所以我们也花了很多时间研究分类器的设计),使用后 PB 分数下降了。
- 分类器训练:我们认为分类是这场图像匹配比赛的关键。我们可以使用 CLIP 在大多数场景中产生完美的分割,但在楼梯场景中存在一些混淆。有些错误肉眼很容易区分,但 LightGlue 会将两者匹配。因此,我们分别尝试了 CNN 图像分类模型和逻辑回归模型进行分类。我们发现分类器在训练集上效果很好,可以提高约两点,但 PB 没有提升。这个方案也花了很多时间。
- Yolo 掩膜:我们发现训练集中的一些建筑场景包含大量人物。我们想到使用掩膜去除它们以减少无关场景的干扰,但实验发现掩膜会对某些建筑的 ETs 和人体雕塑产生错误的掩膜。最后,我们添加了颜色检查以尽可能避免此类错误掩膜,但 PB 完全没有提升。
- 多分辨率、图像旋转角度校正:我们尝试了以往解决方案中常用的多分辨率和旋转校正,但 PB 分数没有提升。可能是我们使用的方法有问题。
一些额外信息
1. CLIP 对比 DINOv2
很容易看出 CLIP 产生的分割比 DINO 更准确。
我们的代码位置
https://github.com/yangyefd/IMC2025