SLAM3D重建MASt3RDUSt3R深度学习视觉定位## 摘要
传统三维重建和SLAM系统严重依赖相机标定和显式特征匹配,在极端视角变化、弱纹理场景下频繁失败。NAVER Labs Europe和Imperial College London团队提出了DUSt3R/MASt3R/MASt3R-SLAM三阶段演进方案:DUSt3R首次实现端到端Transformer直接从图像对回归稠密3D点图(Pointmap);MASt3R在此基础上引入稠密局部特征头,将图像匹配重新定义为3D问题;MASt3R-SLAM则将这一强先验集成为完整的实时稠密SLAM系统,在无需相机标定的条件下实现15 FPS全局一致性重建,刷新多个Benchmark的SOTA。
论文:
一、问题背景:传统3D视觉流水线的脆弱性
传统多视图三维重建遵循一条经典流水线:
#mermaid-svg-3ZJXXacZg3XVW2qF{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-3ZJXXacZg3XVW2qF .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-3ZJXXacZg3XVW2qF .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-3ZJXXacZg3XVW2qF .error-icon{fill:#552222;}#mermaid-svg-3ZJXXacZg3XVW2qF .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-3ZJXXacZg3XVW2qF .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-3ZJXXacZg3XVW2qF .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-3ZJXXacZg3XVW2qF .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-3ZJXXacZg3XVW2qF .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-3ZJXXacZg3XVW2qF .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-3ZJXXacZg3XVW2qF .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-3ZJXXacZg3XVW2qF .marker{fill:#333333;stroke:#333333;}#mermaid-svg-3ZJXXacZg3XVW2qF .marker.cross{stroke:#333333;}#mermaid-svg-3ZJXXacZg3XVW2qF svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-3ZJXXacZg3XVW2qF p{margin:0;}#mermaid-svg-3ZJXXacZg3XVW2qF .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-3ZJXXacZg3XVW2qF .cluster-label text{fill:#333;}#mermaid-svg-3ZJXXacZg3XVW2qF .cluster-label span{color:#333;}#mermaid-svg-3ZJXXacZg3XVW2qF .cluster-label span p{background-color:transparent;}#mermaid-svg-3ZJXXacZg3XVW2qF .label text,#mermaid-svg-3ZJXXacZg3XVW2qF span{fill:#333;color:#333;}#mermaid-svg-3ZJXXacZg3XVW2qF .node rect,#mermaid-svg-3ZJXXacZg3XVW2qF .node circle,#mermaid-svg-3ZJXXacZg3XVW2qF .node ellipse,#mermaid-svg-3ZJXXacZg3XVW2qF .node polygon,#mermaid-svg-3ZJXXacZg3XVW2qF .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-3ZJXXacZg3XVW2qF .rough-node .label text,#mermaid-svg-3ZJXXacZg3XVW2qF .node .label text,#mermaid-svg-3ZJXXacZg3XVW2qF .image-shape .label,#mermaid-svg-3ZJXXacZg3XVW2qF .icon-shape .label{text-anchor:middle;}#mermaid-svg-3ZJXXacZg3XVW2qF .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-3ZJXXacZg3XVW2qF .rough-node .label,#mermaid-svg-3ZJXXacZg3XVW2qF .node .label,#mermaid-svg-3ZJXXacZg3XVW2qF .image-shape .label,#mermaid-svg-3ZJXXacZg3XVW2qF .icon-shape .label{text-align:center;}#mermaid-svg-3ZJXXacZg3XVW2qF .node.clickable{cursor:pointer;}#mermaid-svg-3ZJXXacZg3XVW2qF .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-3ZJXXacZg3XVW2qF .arrowheadPath{fill:#333333;}#mermaid-svg-3ZJXXacZg3XVW2qF .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-3ZJXXacZg3XVW2qF .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-3ZJXXacZg3XVW2qF .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-3ZJXXacZg3XVW2qF .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-3ZJXXacZg3XVW2qF .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-3ZJXXacZg3XVW2qF .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-3ZJXXacZg3XVW2qF .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-3ZJXXacZg3XVW2qF .cluster text{fill:#333;}#mermaid-svg-3ZJXXacZg3XVW2qF .cluster span{color:#333;}#mermaid-svg-3ZJXXacZg3XVW2qF div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-3ZJXXacZg3XVW2qF .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-3ZJXXacZg3XVW2qF rect.text{fill:none;stroke-width:0;}#mermaid-svg-3ZJXXacZg3XVW2qF .icon-shape,#mermaid-svg-3ZJXXacZg3XVW2qF .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-3ZJXXacZg3XVW2qF .icon-shape p,#mermaid-svg-3ZJXXacZg3XVW2qF .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-3ZJXXacZg3XVW2qF .icon-shape .label rect,#mermaid-svg-3ZJXXacZg3XVW2qF .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-3ZJXXacZg3XVW2qF .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-3ZJXXacZg3XVW2qF .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-3ZJXXacZg3XVW2qF :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 特征提取
特征匹配
位姿估计
Essential Matrix
三角化
Bundle Adjustment
稠密重建
MVS
这条流水线存在致命问题:
| 环节 | 失败场景 |
|---|---|
| 特征匹配 | 重复纹理、大视角变化、弱纹理 |
| 位姿估计 | 少视图、退化运动(纯旋转) |
| 相机标定 | 非参数化相机、变焦镜头 |
| 稠密重建 | 非朗伯面、遮挡、光照突变 |
核心矛盾:每个环节都假设上一步"成功"了,但实际场景中任何一步失败都导致级联崩溃。
DUSt3R的核心洞察是:为什么不直接从RGB图像回归3D几何?
二、核心方法
2.1 DUSt3R:端到端点图回归
DUSt3R将双目重建问题转化为点图(Pointmap)回归 :给定图像对 ( I 1 , I 2 ) (I_1, I_2) (I1,I2),直接预测每个像素对应的3D坐标。

图 1:DUSt3R整体框架。输入任意图像对,经ViT编码器和交叉注意力解码器,直接输出3D点图和置信度图。来源:DUSt3R Fig 1
架构设计:
- 编码器:共享权重的ViT(Vision Transformer),分别编码两张图像
- 解码器:交叉注意力解码器,让两个视图相互感知
- 输出头 :
- Pointmap Head:预测 X i ∈ R H × W × 3 \mathbf{X}_i \in \mathbb{R}^{H \times W \times 3} Xi∈RH×W×3,每像素一个3D坐标
- Confidence Head:预测 C i ∈ R H × W \mathbf{C}_i \in \mathbb{R}^{H \times W} Ci∈RH×W,表示重建可靠性
点图的物理意义:
X i v ( x , y ) = K v − 1 ⋅ d v ( x , y ) ⋅ x , y , 1 ⊤ \mathbf{X}^{v}_{i}(x, y) = \mathbf{K}_v^{-1} \cdot d_v(x,y) \cdot x, y, 1^\top Xiv(x,y)=Kv−1⋅dv(x,y)⋅x,y,1⊤
其中 d v d_v dv 为预测深度,但DUSt3R直接回归3D坐标,绕开了显式深度估计。
训练损失:采用回归损失(regression loss),基于8个大规模公开数据集训练,标签来源包括合成数据、SfM生成、传感器采集。
全局对齐:多图时,每对图像产生局部坐标系下的点图,通过类BA的全局对齐将所有点图统一到全局坐标系。

图 2:传统SfM、MVS与DUSt3R方法对比。DUSt3R将特征匹配+位姿估计+三角化统一为单一前馈网络。来源:DUSt3R 博客
2.2 MASt3R:将图像匹配重新定义为3D问题
MASt3R的核心创新:匹配本质上是识别观测同一3D点的像素,因此3D几何上下文是必需的而非可选的。

图 3:MASt3R在DUSt3R基础上增加稠密局部特征头,同时预测3D点图和匹配描述子。来源:MASt3R Fig 1
相比DUSt3R的改进:
- 稠密局部特征头(Dense Local Feature Head):在Pointmap Head旁并行输出逐像素描述子,使用InfoNCE损失训练
- 快速互惠匹配(Fast Reciprocal Matching):利用点图的3D一致性约束,实现量级提升的匹配速度
为什么传统匹配方法不够?

图 4:传统方法对比。关键点方法(SIFT/SuperPoint)丢失全局几何上下文;稠密方法(LoFTR)仍在2D平面上做匹配。MASt3R利用3D重建先验实现更鲁棒的匹配。来源:MASt3R 博客
| 方法类型 | 代表 | 缺陷 |
|---|---|---|
| 稀疏关键点 | SIFT, SuperPoint, COLMAP | 重复纹理失败,全局几何上下文丢失 |
| 稠密2D匹配 | LoFTR, DKM | 仍是2D问题,缺乏3D约束 |
| MASt3R | -- | 基于3D重建先验做匹配,对极端视角鲁棒 |
Benchmark结果:

图 5:Map-free Localization Benchmark结果。MASt3R在虚拟对应点重投影误差(VCRE)和相机位姿精度两个指标上均取得最佳。来源:MASt3R Table
2.3 MASt3R-SLAM:实时稠密SLAM系统
MASt3R-SLAM将MASt3R的两视图3D重建和匹配先验集成为完整的增量式实时SLAM系统。

图 6:DUSt3R/MASt3R/MASt3R-SLAM演进关系。红色高亮为各阶段的核心创新点。重绘自 design skill

图 7:MASt3R-SLAM系统管线:Pointmap Matching + Camera Tracking + Graph Construction + Global Optimization。来源:MASt3R-SLAM Fig 1
四大核心模块:
#mermaid-svg-Oh56mUNTtoBVzMlm{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-Oh56mUNTtoBVzMlm .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-Oh56mUNTtoBVzMlm .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-Oh56mUNTtoBVzMlm .error-icon{fill:#552222;}#mermaid-svg-Oh56mUNTtoBVzMlm .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Oh56mUNTtoBVzMlm .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-Oh56mUNTtoBVzMlm .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Oh56mUNTtoBVzMlm .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Oh56mUNTtoBVzMlm .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-Oh56mUNTtoBVzMlm .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Oh56mUNTtoBVzMlm .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Oh56mUNTtoBVzMlm .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Oh56mUNTtoBVzMlm .marker.cross{stroke:#333333;}#mermaid-svg-Oh56mUNTtoBVzMlm svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Oh56mUNTtoBVzMlm p{margin:0;}#mermaid-svg-Oh56mUNTtoBVzMlm .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-Oh56mUNTtoBVzMlm .cluster-label text{fill:#333;}#mermaid-svg-Oh56mUNTtoBVzMlm .cluster-label span{color:#333;}#mermaid-svg-Oh56mUNTtoBVzMlm .cluster-label span p{background-color:transparent;}#mermaid-svg-Oh56mUNTtoBVzMlm .label text,#mermaid-svg-Oh56mUNTtoBVzMlm span{fill:#333;color:#333;}#mermaid-svg-Oh56mUNTtoBVzMlm .node rect,#mermaid-svg-Oh56mUNTtoBVzMlm .node circle,#mermaid-svg-Oh56mUNTtoBVzMlm .node ellipse,#mermaid-svg-Oh56mUNTtoBVzMlm .node polygon,#mermaid-svg-Oh56mUNTtoBVzMlm .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Oh56mUNTtoBVzMlm .rough-node .label text,#mermaid-svg-Oh56mUNTtoBVzMlm .node .label text,#mermaid-svg-Oh56mUNTtoBVzMlm .image-shape .label,#mermaid-svg-Oh56mUNTtoBVzMlm .icon-shape .label{text-anchor:middle;}#mermaid-svg-Oh56mUNTtoBVzMlm .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-Oh56mUNTtoBVzMlm .rough-node .label,#mermaid-svg-Oh56mUNTtoBVzMlm .node .label,#mermaid-svg-Oh56mUNTtoBVzMlm .image-shape .label,#mermaid-svg-Oh56mUNTtoBVzMlm .icon-shape .label{text-align:center;}#mermaid-svg-Oh56mUNTtoBVzMlm .node.clickable{cursor:pointer;}#mermaid-svg-Oh56mUNTtoBVzMlm .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-Oh56mUNTtoBVzMlm .arrowheadPath{fill:#333333;}#mermaid-svg-Oh56mUNTtoBVzMlm .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-Oh56mUNTtoBVzMlm .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-Oh56mUNTtoBVzMlm .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Oh56mUNTtoBVzMlm .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-Oh56mUNTtoBVzMlm .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Oh56mUNTtoBVzMlm .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-Oh56mUNTtoBVzMlm .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-Oh56mUNTtoBVzMlm .cluster text{fill:#333;}#mermaid-svg-Oh56mUNTtoBVzMlm .cluster span{color:#333;}#mermaid-svg-Oh56mUNTtoBVzMlm div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Oh56mUNTtoBVzMlm .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-Oh56mUNTtoBVzMlm rect.text{fill:none;stroke-width:0;}#mermaid-svg-Oh56mUNTtoBVzMlm .icon-shape,#mermaid-svg-Oh56mUNTtoBVzMlm .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Oh56mUNTtoBVzMlm .icon-shape p,#mermaid-svg-Oh56mUNTtoBVzMlm .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-Oh56mUNTtoBVzMlm .icon-shape .label rect,#mermaid-svg-Oh56mUNTtoBVzMlm .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Oh56mUNTtoBVzMlm .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-Oh56mUNTtoBVzMlm .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-Oh56mUNTtoBVzMlm :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 是
New Frame
Pointmap Matching
LM优化, ~10次迭代
Camera Tracking
3D-3D位姿对齐
Pointmap Fusion
置信度加权融合
关键帧判断
Graph Construction
- Loop Closure
Global Optimization
Gauss-Newton 二阶
Dense 3D Map
全局一致
模块一:Pointmap Matching
DUSt3R/MASt3R使用k-d tree做稠密匹配(慢),MASt3R-SLAM改为基于优化的匹配:
θ ^ = arg min θ ∑ i ∥ X 1 ( i ) − s ⋅ R ( θ ) ⋅ X 2 ( i ) ∥ 2 \hat{\theta} = \arg\min_\theta \sum_i \left\| \mathbf{X}_1^{(i)} - s \cdot \mathbf{R}(\theta) \cdot \mathbf{X}_2^{(i)} \right\|^2 θ^=argθmini∑ X1(i)−s⋅R(θ)⋅X2(i) 2
用角度 θ \theta θ 参数化旋转,通过Levenberg-Marquardt求解,约10次迭代收敛。这实现了实时匹配(vs DUSt3R的秒级逐像素匹配)。
模块二:Camera Tracking + Pointmap Fusion
3D-3D位姿对齐,持续优化位姿估计:
T t = arg min T ∑ i ∥ p i − T ⋅ q i ∥ 2 \mathbf{T}t = \arg\min\mathbf{T} \sum_i \left\| \mathbf{p}_i - \mathbf{T} \cdot \mathbf{q}_i \right\|^2 Tt=argTmini∑∥pi−T⋅qi∥2
置信度加权的地图融合确保高质量3D点保留。
模块三:Graph Construction + Loop Closure
- 利用MASt3R的特征数据库做基于检索的回环检测
- 检测到足够匹配时建立图的边
- 确保全局一致性
模块四:Global Optimization
二阶Gauss-Newton优化,联合优化所有位姿和几何:
Δ x ∗ = − ( J ⊤ J ) − 1 J ⊤ r \Delta \mathbf{x}^* = -(\mathbf{J}^\top \mathbf{J})^{-1} \mathbf{J}^\top \mathbf{r} Δx∗=−(J⊤J)−1J⊤r
相比梯度下降收敛快得多,适合大规模场景。

图 8:MASt3R-SLAM前后端详细架构图,展示从输入帧到全局稠密地图的完整数据流。重绘自 design skill
三、工程实现
| 组件 | 技术细节 |
|---|---|
| 网络骨干 | ViT-Large, CroCo预训练 |
| 训练数据 | 8个大规模数据集(ScanNet, MegaDepth, etc.) |
| 匹配效率 | LM优化 ~10次迭代,实时 |
| 帧率 | ~15 FPS(定位+稠密重建) |
| 相机模型 | 支持通用时变相机(变焦场景可用) |
| 标定要求 | 无需标定(已知标定可进一步提升精度) |
| 代码仓库 | edexheim/mast3r-slam |
四、实验分析

图 9:与DROID-SLAM、DPV-SLAM等方法的Benchmark对比。MASt3R-SLAM在多数序列上优于现有方法。来源:MASt3R-SLAM Table
关键实验结论:
| 对比维度 | MASt3R-SLAM | DROID-SLAM | ORB-SLAM3 |
|---|---|---|---|
| 标定需求 | 可选 | 必须 | 必须 |
| 重建密度 | 稠密 | 稠密 | 稀疏 |
| 实时性 | 15 FPS | ~3 FPS | ~30 FPS |
| 鲁棒性 | 极端视角OK | 中等 | 弱纹理失败 |
| 通用性 | 任意单目相机 | 需已知内参 | 需已知内参 |

图 10:DUSt3R从两张任意图像恢复3D结构和相机位姿的效果展示。来源:DUSt3R Demo

图 11:MASt3R在极端视角变化下仍能实现稠密匹配,传统方法在此场景下完全失败。来源:MASt3R Demo
小结
三篇论文的核心贡献:
- DUSt3R (CVPR 2024):打破传统流水线,证明Transformer可以端到端完成无标定3D重建
- MASt3R (ECCV 2024):将匹配问题升维到3D空间,InfoNCE训练的特征头在极端场景下远超传统方法
- MASt3R-SLAM (CVPR 2025):将学习先验工程化为实时系统,LM优化实现百倍加速,Gauss-Newton后端确保全局一致性
局限性:
- 网络推理依赖GPU,边缘设备部署受限
- 15 FPS对高速运动场景仍不够(ORB-SLAM3可达30+ FPS)
- 基于学习的匹配在完全未见过的场景类型上可能退化
个人判断:这条技术路线(端到端3D先验 + 传统优化后端)代表了SLAM的未来方向。相比纯几何方法,学习先验提供了前所未有的鲁棒性;相比纯学习方法,保留了BA/Gauss-Newton优化确保了精度。MASt3R-SLAM的"无需标定"特性对消费级应用(手机AR、机器人)意义重大,但工业级部署还需解决实时性和泛化性的平衡。