556. Image Matching Challenge 2023 | image-matching-challenge-2023
我们根据启发式策略在不同场景中使用SuperGlue或SIFT算法,得分如下表所示。
| 场景 | 平均精度(mAA) | 旋转mAA | 平移mAA |
|---|---|---|---|
| bike | 0.9228 | 0.9904 | 0.9228 |
| chairs | 0.9775 | 0.9916 | 0.9775 |
| fountain | 1.0 | 1.0 | 1.0 |
| dioscuri | 0.5062 | 0.5220 | 0.5236 |
| cyprus | 0.6523 | 0.7887 | 0.6586 |
| wall | 0.8150 | 0.9359 | 0.8317 |
| kyiv-puppet-theater | 0.7704 | 0.8756 | 0.7895 |
| 数据集 | 平均精度(mAA) | 旋转mAA | 平移mAA |
|---|---|---|---|
| haiper | 0.9667 | 0.9994 | 0.9667 |
| heritage | 0.6578 | 0.7489 | 0.6713 |
| urban | 0.7704 | 0.8756 | 0.7895 |
| 平均精度(mAA) | 旋转mAA | 平移mAA |
|---|---|---|
| 0.7983 | 0.8746 | 0.8092 |
公开排行榜得分: 0.415
私密排行榜得分: 0.465
SuperPoint和SuperGlue模型使用几乎默认的参数,仅将`keypoint_threshold`设置为0.01。我们发现SuperGlue在原始尺寸图像上表现更好,但某些场景的图像过大无法放入GPU内存。我们采用以下策略:如果图像任一边超过2560像素(Kaggle上安全使用的最大长度),则将最长边调整为2560;否则使用原始尺寸。
我们最初使用COLMAP的SIFT实现作为基线效果良好。在处理具有大尺寸和强旋转的场景时,SIFT比深度学习模型表现更好。我们尝试启用`estimate_affine_shape`和`upright`参数,但发现对cyprus和wall场景存在得分权衡,最终禁用了这两个参数。
sift_extraction_options.max_image_size = 1400
sift_extraction_options.max_num_features = 8192
sift_extraction_options.estimate_affine_shape = False
sift_extraction_options.upright = False
sift_extraction_options.normalization = 'L2'
我们注意到带有EXIF元数据的大图像内存消耗极高,这些图像通常来自DSLR相机方向导致的90度旋转。我们添加了简单的判断逻辑:检查每个场景的平均内存消耗,如果超过16MB则使用SIFT,否则使用SuperGlue。
我们使用COLMAP的增量映射器进行重建,除将`min_model_size`设为3外其他参数保持默认。根据已注册图像数量选择最佳重建结果,未注册图像则使用场景的平均旋转矩阵和平移向量填充。