652. Image Matching Challenge 2025 | image-matching-challenge-2025
我想感谢主办者和 Kaggle 工作人员组织了如此激动人心且实用的比赛!
我也要感谢指出指标 bug 的竞争对手,以及工作人员及时解决这些问题。
为了增加具有一致方向的匹配对数量,检测了所有图像的方向并通过旋转图像相应地对齐它们。
与去年许多顶尖竞争对手一样,我主要使用 ALIKED 进行关键点检测,使用 LightGlue 进行匹配。
我没有使用全局特征,而是匹配所有图像对,并过滤掉前 k * log(n)/(n-1)% 的图像对,以准确地提取每个场景(簇)内的匹配。这里,k 是调整选择比例的参数,n 是数据集中的图像数量。
为了使用少量准确的对来提高 mAA 分数,我采用了两种互补策略:本地,我应用高密度裁剪匹配,裁剪具有密集匹配关键点的区域;全局,我应用图像四分割,将每个图像分成四部分,这显著增加了整个图像的匹配关键点数量。
为了减轻因图像尺度导致的 mAA 分数波动,对过滤和高密度裁剪匹配在多个尺度(resize_to = 1024, 1280, 1536, 2048)上执行,并集成到 colmap 中。
我提交了两个 Notebook。
| Notebook | CV* | 公开榜 | 私有榜 |
|---|---|---|---|
| ① 最佳 CV | 58.64 | 46.67 | 46.61 |
| ② 最佳 LB | 54.86 | 46.98 | 45.33 |
*CV 使用了 train 文件夹中的所有数据集。

检测每张图像的方向并旋转它们以一致地对齐方向。( https://github.com/ternaus/check_orientation )
使用 ALIKED (resize_to=1024) + LightGlue 匹配所有图像对。
根据匹配数量选择前 k * log(n)/(n-1)% 的对。k 是调整选择比例的参数,n 是数据集中的图像数量。
k 是通过实验确定的,旨在同时在 CV 和 LB 上取得高分。同样的理由适用于后续步骤。
使用步骤 3 中过滤后的图像对 (k=7),使用 ALIKED (resize_to=1280, 1536, 2048) + LightGlue 进行匹配,并再次选择前 k * log(n)/(n-1)% 的对。
从所有尺度 (resize_to=1024,1280,1536,2048) 的合并结果中,选择前 k=1.5 的对。
6-1. 将每张图像分成四部分,并使用 ALIKED (resize_to=1024) + LightGlue 进行匹配。
6-2. 从每张图像中裁剪具有高匹配密度的区域,并使用 ALIKED (resize_to=1024,1280,1536,2048) + LightGlue 进行匹配。
检测每张图像的方向并旋转它们以一致地对齐方向。
使用 ALIKED (resize_to=1024, 1280, 1536, 2048) + LightGlue 匹配所有图像对。
构建一个无向图,其中节点是图像,边权重是平均匹配数量。
使用 Louvain 方法对图进行聚类。对于每个簇,选择前 k * log(n)/(n-1)% 的图像对(k 是调整选择比例的参数,n 是簇中的图像数量)。
Louvain 分辨率参数设置为较小的值 (resolution=0.1) 以避免过分割。
从所有尺度 (resize_to=1024,1280,1536,2048) 的合并结果中,选择前 k=1.5 的对。
6-1. 将每张图像分成四部分,并使用 ALIKED (resize_to=1024) + LightGlue 进行匹配。
6-2. 从每张图像中裁剪具有高匹配密度的区域,并使用 ALIKED (resize_to=1024,1280,1536,2048) + LightGlue 进行匹配。
fbk_vineyard 和 stairs 之类的场景即使使用 DBSCAN 或图划分也难以分类。去年,由于大量奖牌买卖者被封禁以及由此导致的团队人口变化,我的奖牌从金牌降级为银牌。
但今年,我很高兴赢得了金牌!
谢谢