复现苹果SOTA图像匹配:用image-matching-toolbox在MegaDepth和ScanNet上跑ASpanFormer相对位姿估计
2026/8/22 14:12:52 网站建设 项目流程

复现苹果SOTA图像匹配:用image-matching-toolbox在MegaDepth和ScanNet上跑ASpanFormer相对位姿估计

【免费下载链接】image-matching-toolboxThis is a toolbox repository to help evaluate various methods that perform image matching from a pair of images.项目地址: https://gitcode.com/gh_mirrors/im/image-matching-toolbox

image-matching-toolbox(包名immatch)是一个面向图像特征匹配的统一评测工具箱,为 ASpanFormer、LoFTR、SuperGlue 等主流图像匹配算法提供了标准化接口与基准评测脚本。本文带你用两行命令,在MegaDepthScanNet两大经典数据集上复现苹果提出的 SOTA 匹配方法ASpanFormer的相对位姿估计结果。

一、这个图像匹配工具箱能做什么?

工具箱把各种图像匹配方法封装成统一接口,覆盖三类主流技术路线:

类型支持的方法
稀疏关键点匹配SuperPoint、D2Net、CAPS、R2D2、Dog-AffNet-HardNet + SuperGlue 匹配器
半稠密匹配(Transformer 类)ASpanFormer、LoFTR、COTR
局部细化Patch2Pix

评测能力覆盖 HPatches 匹配/单应估计、InLoc / Aachen / RobotCar 视觉定位,以及本文主角——MegaDepth 与 ScanNet 的相对位姿估计

下面这张图展示了工具箱输出的一组图像匹配结果(关键点连线),你可以直观理解"匹配"任务长什么样:

二、最快安装方法:3步搭好运行环境 🛠️

完整说明见 docs/install.md,核心步骤如下(环境基于 Python 3.7 + PyTorch 1.7.0 + CUDA 10.2):

1️⃣克隆仓库并初始化子模块(各算法原始实现以子模块形式放在third_party/下):

git clone https://gitcode.com/gh_mirrors/im/image-matching-toolbox cd image-matching-toolbox git submodule update --init

2️⃣下载预训练权重。ASpanFormer 的 outdoor/indoor 权重通过软链接指向third_party/aspanformer/weights,统一由下载脚本处理:

cd pretrained bash download.sh

3️⃣创建 conda 环境并以开发模式安装

conda env create -f environment.yml conda activate immatch python setup.py develop

环境定义见 environment.yml,权重下载脚本见 pretrained/download.sh。

三、数据准备:MegaDepth 与 ScanNet 如何放置 📦

评测脚本对数据目录有固定约定(详见 docs/evaluation.md):

  • MegaDepth:去畸变后的图像放在data/datasets/MegaDepth_undistort/,测试对信息(1500 张测试图)由 ASpanFormer 官方提供,位于third_party/aspanformer/assets/megadepth_test_1500_scene_info/
  • ScanNet:测试场景放在data/datasets/scannet/test/(含color/图像与pose/位姿文件),测试对与内参信息在third_party/aspanformer/assets/scannet_test_1500/

数据集组织方式沿用了 LoFTR 的官方测试协议,保证结果可直接对比。

四、核心操作:两行命令跑通相对位姿估计 🚀

在仓库根目录执行(完整评测逻辑在 immatch/eval_relapose.py):

# MegaDepth 户外场景(加载 outdoor.ckpt) python -m immatch.eval_relapose --config 'aspanformer' --benchmark 'megadepth' # ScanNet 室内场景(加载 indoor.ckpt) python -m immatch.eval_relapose --config 'aspanformer' --benchmark 'scannet'

就这么简单。命令背后发生了三件事:

  1. 按基准加载配置:脚本读取 configs/aspanformer.yml 中对应的megadepth/scannet段,自动切换权重与输入分辨率(如 MegaDepth 测试分辨率 1152×1152,ScanNet 用 480×640 的室内权重)
  2. 逐对匹配:调用封装好的 ASpanFormer 模块(immatch/modules/aspanformer.py)预测关键点对
  3. 估计相对位姿:用 OpenCV 的本质矩阵 + RANSAC(cv2.findEssentialMat+cv2.recoverPose)从匹配点恢复 R、t,再与真值比对

调试技巧:加--debug只跑前 10 对,加--print_out打印每对的匹配数与误差。

五、读懂结果:AUC 指标意味着什么 📊

评测最终输出形如RelaPose AUC@1/3/5/10/20deg的曲线指标(计算逻辑见 immatch/utils/metrics.py):

  • 旋转误差 R_err:预测旋转与真值的角度差(度)
  • 平移误差 t_err:平移方向的角度误差(度)
  • AUC@θ:误差小于 θ 度的样本累计面积,θ 越小分数越高,说明匹配方法在精细位姿上的能力越强

拿到不同方法的 AUC 曲线后,还可以用仓库自带的 Jupyter 笔记 notebooks/HPatches_MMA_Curves.ipynb 绘制方法对比曲线。

六、新手上手小贴士 💡

  • 先用 Notebook 感受接口:notebooks/visualize_matches_on_example_pairs.ipynb 里有 10 行左右的示例,几秒即可看到任意方法的匹配连线
  • 换方法只需换配置--config参数换成 configs/ 下的任意 yaml 文件名(如loftrcotr),同一套评测流程即可横向对比
  • 显存不够?:ASpanFormer 在 832×832 分辨率下推理,建议 8GB 以上显存的显卡;MegaDepth 段可通过test_res调低分辨率快速验证流程

小结

image-matching-toolbox 把"装环境 → 放数据 → 跑评测"压缩成了标准化三步,让你无需逐个折腾各家官方仓库,就能快速复现ASpanFormer 图像匹配在 MegaDepth 与 ScanNet 上的 SOTA 相对位姿估计结果,并方便地与 LoFTR、COTR 等方法横向对比。上手试试吧!

【免费下载链接】image-matching-toolboxThis is a toolbox repository to help evaluate various methods that perform image matching from a pair of images.项目地址: https://gitcode.com/gh_mirrors/im/image-matching-toolbox

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询