
MASt3R 3D重建与图像匹配完整指南从安装到实战【免费下载链接】mast3rGrounding Image Matching in 3D with MASt3R项目地址: https://gitcode.com/GitHub_Trending/ma/mast3rMASt3RMatching and Stereo 3D Reconstruction是 Naver Labs 开源的视觉模型它把图像匹配和立体 3D 重建统一进同一个 Transformer输入一对照片既输出两图之间的特征匹配点也输出各自的 3D 点云。你手里有几张同一场景的照片、想验证两张图的匹配质量、或者要做视觉定位实验都能用它。项目代码基于 CC BY-NC-SA 4.0 许可仅限非商用场景。下面按装环境 → 跑 demo → 看原理 → 分场景实战的顺序带你走完一遍。MASt3R 在不同场景下的 3D 重建与匹配线结果快速上手四步装好 MASt3R环境要求一行看懂Python 3.11、PyTorch 2.xCUDA 12.1 版本、NVIDIA GPU 且显存 ≥ 8GBCPU 可以跑但会明显变慢。# 1. 克隆仓库--recursive 会同时拉取 DUSt3R 子模块 git clone --recursive https://gitcode.com/GitHub_Trending/ma/mast3r cd mast3r # 2. 建环境 conda create -n mast3r python3.11 cmake3.14.0 conda activate mast3r # 3. 装 PyTorch 与项目依赖完整依赖清单见仓库 requirements.txt 与 dust3r/requirements.txt conda install pytorch torchvision pytorch-cuda12.1 -c pytorch -c nvidia pip install -r requirements.txt pip install -r dust3r/requirements.txt # 4. 编译 asmk快速最近邻匹配用的加速库 pip install cythonasmk 需要在本地编译步骤详见 README 的 Installation 一节这是新手最容易卡住的一步。模型权重约几个 GB两种准备方式程序首次运行会通过 HuggingFace Hub 自动下载网络慢的话手动从 Naver 官方服务器wget到checkpoints/目录再用--weights指向本地文件。python3 demo.py --model_name MASt3R_ViTLarge_BaseDecoder_512_catmlpdpt_metric预期结果终端打印 Gradio 服务启动信息浏览器打开http://localhost:7860进入交互界面上传同一场景的多张照片设置迭代次数和配对方式后点Run页面下方会出现可旋转的 3D 模型网格、点云和相机位置标记。浏览器中的 MASt3R Demo上传照片组即可得到带相机标记的 3D 重建原理速览匹配和重建为什么能共用一个模型MASt3R 架构共享编码器 双路解码器输出点云、置信度与局部特征MASt3R 沿用 DUSt3R 的编码器 解码器结构编码器权重在两张图之间共享。每张图各自经过解码器后同时输出三样东西3D 点、置信度和 24 维局部特征。两张图的局部特征互做快速最近邻Fast NN得到候选的 2D-2D 匹配再结合各自预测的 3D 点做几何一致性过滤就是最终的匹配结果。训练时点回归损失和匹配损失同时优化匹配因此落在 3D 上比纯特征方法更稳。官方发布的两个权重定位不同权重结构用途MASt3R_ViTLarge_BaseDecoder_512_catmlpdpt_metricViT-L 编码 / ViT-B 解码demo、匹配、SfM、视觉定位dunemast3r_cvpr25_vitbaseDUNE 编码器 MASt3R 解码器无地图场景的视觉定位评测metric 版额外回归了真实尺度输出的点云可以直接用于三角化和位姿估计这也是大多数场景默认选它的原因。场景化实战按你要做的事选入口场景一从多张照片重建一个 3D 场景直接用上面跑过的 demo 即可上传照片组 → 点Run→ 在页面下方的 3D 视口里拖动旋转也可以导出 glb 文件。不想配环境的话仓库提供了 Docker 一键方案cd docker bash run.sh --with-cuda --model_nameMASt3R_ViTLarge_BaseDecoder_512_catmlpdpt_metric预期结果容器内自动拉取镜像并启动 demoCPU 版本去掉--with-cuda即可访问http://localhost:7860得到与本地运行一致的界面。场景二计算两张图像的匹配点在仓库根目录写一个小脚本核心就四步from mast3r.model import AsymmetricMASt3R from mast3r.fast_nn import fast_reciprocal_NNs import mast3r.utils.path_to_dust3r # noqa from dust3r.inference import inference from dust3r.utils.image import load_images device cuda model AsymmetricMASt3R.from_pretrained( naver/MASt3R_ViTLarge_BaseDecoder_512_catmlpdpt_metric).to(device) images load_images([image1.jpg, image2.jpg], size512) output inference([tuple(images)], model, device, batch_size1) desc1, desc2 output[pred1][desc], output[pred2][desc] m0, m1 fast_reciprocal_NNs(desc1, desc2, devicedevice)预期结果m0、m1是两组像素坐标张量逐行对应图 1 ↔ 图 2的匹配点对可视化效果见下图。完整示例含去边缘、绘图在 README 的 Usage 一节。彩色线段连接两张图像中匹配的特征点场景三接入自己的项目或跑视觉定位在仓库根目录下写脚本就能直接import mast3r和import dust3r把匹配点、3D 点云接进你自己的流程核心源码见 mast3r/ 目录。如果目标是视觉定位用一张查询图在已知场景里求相机位姿visloc.py覆盖了 Aachen-Day-Night、InLoc、Cambridge Landmarks、7-Scenes 四个基准python3 visloc.py --model_name MASt3R_ViTLarge_BaseDecoder_512_catmlpdpt_metric \ --dataset VislocAachenDayNight(/path/to/Aachen-Day-Night-v1.1/, subsceneday) \ --output_dir ./visloc_results预期结果在--output_dir下生成定位结果文件每帧位姿与重投影指标运行前需按 README 的 Visual Localization 一节准备数据。常见问题Q显存不够 8GB怎么办demo 用--device指定别的 GPU或干脆切 CPU能跑但慢很多脚本推理时把load_images的size调小如 384可以显著降显存。Q权重下载慢或失败手动从 Naver 官方服务器wget到checkpoints/demo 加--weights checkpoints/xxx.pth代码里则把model_name直接换成本地路径。Q依赖冲突或 asmk 编译失败按先 PyTorch、再两份 requirements、最后编译 asmk的顺序来asmk 依赖 Cython编译时的版本要和当前 PyTorch 匹配。DUNEMASt3R 权重只在demo_dust3r_ga.py和匹配提取代码里用与主代码库兼容性有限。小结与资源MASt3R 把找匹配和做重建合并成一次前向传播你不需要在匹配算法和 3D 算法之间来回切换。从 demo 里上传几张照片开始是最快的验证方式。注意权重和代码均为非商用许可商用前请先确认许可条款。项目 README安装与全部命令README.md许可说明LICENSECC BY-NC-SA 4.0模型权重与数据许可说明CHECKPOINTS_NOTICE论文Leroy et al.,Grounding Image Matching in 3D with MASt3RECCV 2024相关论文Wang et al.,DUSt3R: Geometric 3D Vision Made EasyCVPR 2024【免费下载链接】mast3rGrounding Image Matching in 3D with MASt3R项目地址: https://gitcode.com/GitHub_Trending/ma/mast3r创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考