深度解析 DUSt3R:无需相机标定的稠密无约束立体 3D 重建

3267 字
16 分钟
深度解析 DUSt3R:无需相机标定的稠密无约束立体 3D 重建

1. 引言:打破传统 MVS 的枷锁#

1.1 传统 MVS 管线的困境#

**多视角立体视觉(MVS)**是计算机视觉的核心里程碑之一,其目标是从多张图像中恢复场景的 3D 结构。然而,传统 MVS 管线面临一个根本性障碍:

“MVS 算法的好坏完全取决于输入图像和相机参数的质量。”

传统 MVS 管线需要一系列前置条件:

步骤要求脆弱性
1. 特征匹配关键点检测与描述子纹理稀疏区域失败
2. SfM 重建相机位姿和内参视角变化大时失败
3. 稠密匹配极线几何约束需要精确相机参数
4. 三角化多视角一致性噪声累积
5. Bundle Adjustment全局优化容易陷入局部最优

每个步骤的误差都会累积到下一步,整个系统极其脆弱。

1.2 DUSt3R 的革命性思路#

DUSt3R(CVPR 2024)的核心洞察:

与其一步步估计相机参数,不如直接让神经网络”学会”3D 重建,然后从输出中”反推”所有需要的几何量。

关键创新:将成对重建问题重新定义为点图(Pointmap)回归,彻底摆脱了对相机模型的硬约束。

1.3 DUSt3R 能做什么?#

任务输入输出
单目深度估计单张图像深度图、点云
双目重建两张图像两视角的稠密点云
多目重建多张图像全局一致的 3D 模型
像素匹配两张图像密集对应关系
相对位姿估计两张图像相对旋转和平移
绝对位姿估计查询图 + 参考图相机在世界中位置
相机内参估计单张图像焦距等内参

一个模型,统一了几乎所有 3D 视觉几何任务。

2. 核心表示:Pointmap 详解#

2.1 什么是 Pointmap?#

Pointmap 是 DUSt3R 提出的核心 3D 表示:

XRW×H×3X \in \mathbb{R}^{W \times H \times 3}

一个 Pointmap XX 是与输入图像 II 分辨率相同的稠密 3D 点场,其中每个像素 (i,j)(i, j) 对应一个 3D 点 Xi,jX_{i,j}

一对一的像素-3D 映射

Ii,jXi,j,(i,j){1W}×{1H}I_{i,j} \leftrightarrow X_{i,j}, \quad \forall (i,j) \in \{1\ldots W\} \times \{1\ldots H\}

2.2 Pointmap 与传统深度图的区别#

维度深度图 DDPointmap XX
维度W×H×1W \times H \times 1W×H×3W \times H \times 3
坐标系统需要相机内参才能转为 3D像素坐标系下的 3D 坐标
歧义性仅包含深度信息包含 x,y,zx, y, z 完整信息
应用范围深度估计专用多任务统一表示
几何信息仅沿射线方向完整 3D 位置

2.3 Pointmap 的物理意义#

传统相机模型中,点图可以从深度图推导:

Xi,j=K1[iDi,j, jDi,j, Di,j]X_{i,j} = K^{-1} [i D_{i,j}, \ j D_{i,j}, \ D_{i,j}]^\top

其中 KK 是相机内参矩阵。

DUSt3R 的关键洞察:不需要知道 KK,网络直接学习这个映射,将 2D 像素坐标隐式地与 3D 几何关联起来。

2.4 双目 Pointmap 的坐标框架#

对于两视角输入 (I1,I2)(I^1, I^2),DUSt3R 输出:

X1,1,X2,1RW×H×3X^{1,1}, X^{2,1} \in \mathbb{R}^{W \times H \times 3}

重要约定

  • X1,1X^{1,1}:图像 I1I^1 的点图,表达在 I1I^1 的相机坐标系
  • X2,1X^{2,1}:图像 I2I^2 的点图,也表达在 I1I^1 的相机坐标系

这意味着两个点图天然对齐,可以直接比较!

2.5 Pointmap 的坐标变换#

给定世界到相机的变换矩阵 Pn,PmR3×4P_n, P_m \in \mathbb{R}^{3 \times 4},点图的坐标变换为:

Xn,m=PmPn1h(Xn)X^{n,m} = P_m P_n^{-1} h(X^n)

其中 h:(x,y,z)(x,y,z,1)h: (x,y,z) \rightarrow (x,y,z,1) 是齐次坐标映射。

3. 网络架构:Asymmetric CroCo3D Stereo#

3.1 架构概览#

DUSt3R 基于 CroCo(Cross-View Completion)预训练框架,采用了非对称的 Stereo Transformer 架构:

输入图像对 (I^1, I^2)
┌─────────────────────────────────────────┐
│ Siamesian ViT-L 编码器(权重共享) │
│ F^1 = Encoder(I^1), F^2 = Encoder(I^2) │
└────────────┬────────────────────────────┘
┌─────────────────────────────────────────┐
│ Cross-Attention Transformer 解码器 │
│ B 个解码器块,交叉注意力 │
│ G^1_i = DecBlock^1_i(G^1_{i-1}, G^2_{i-1}) │
│ G^2_i = DecBlock^2_i(G^2_{i-1}, G^1_{i-1}) │
└────────────┬────────────────────────────┘
┌────────────┴────────────────────────────┐
│ 两个回归头(Linear / DPT) │
│ X^{1,1}, C^{1,1} = Head^1(G^1_0...G^1_B) │
│ X^{2,1}, C^{2,1} = Head^2(G^2_0...G^2_B) │
└─────────────────────────────────────────┘
输出点图 + 置信度图

3.2 编码器:ViT-Large#

采用 Vision Transformer(ViT-Large)作为编码器:

配置
图像块大小16×16
编码器隐层维度1024
编码器深度24
编码器注意力头数16

两个分支使用共享权重,确保对称性。

3.3 解码器:Cross-Attention Transformer#

解码器由 BB 个 transformer 块组成,每个块包含:

  1. Self-Attention:同分支内 token 相互注意力
  2. Cross-Attention:当前分支 token 关注另一分支 token
  3. MLP:前馈网络
Gi1=DecoderBlocki1(Gi11,Gi12)G_i^1 = \text{DecoderBlock}_i^1(G_{i-1}^1, G_{i-1}^2)Gi2=DecoderBlocki2(Gi12,Gi11)G_i^2 = \text{DecoderBlock}_i^2(G_{i-1}^2, G_{i-1}^1)

关键:解码过程中信息在两分支间持续流动,确保输出点图正确对齐。

3.4 回归头:Linear vs DPT#

头类型描述适用场景
Linear简单线性层快速推理、低分辨率
DPTDPT(Dense Prediction Transformer)头高分辨率、高精度

DPT 头结构:

MLP 特征 → 上采样 → 跳跃连接 → 最终预测

3.5 模型变体#

模型名称输入分辨率头类型编码器解码器
DUSt3R_ViTLarge_BaseDecoder_224_linear224×224LinearViT-LViT-B
DUSt3R_ViTLarge_BaseDecoder_512_linear512×384~160LinearViT-LViT-B
DUSt3R_ViTLarge_BaseDecoder_512_dpt512×384~160DPTViT-LViT-B

4. 训练目标:置信度感知回归损失#

4.1 3D 回归损失#

DUSt3R 的唯一训练目标是 3D 空间中的回归损失。

归一化策略:为处理预测与真实值之间的尺度不确定性:

z=norm(X1,X2)=1D1+D2v{1,2}iDvXivz = \text{norm}(X^1, X^2) = \frac{1}{|\mathcal{D}^1| + |\mathcal{D}^2|} \sum_{v \in \{1,2\}} \sum_{i \in \mathcal{D}^v} \|X^v_i\|

回归损失(对有效像素 iDvi \in \mathcal{D}^v):

regr(v,i)=1zXiv,11zˉXˉiv,1\ell_{\text{regr}}(v, i) = \left\| \frac{1}{z} X^{v,1}_i - \frac{1}{\bar{z}} \bar{X}^{v,1}_i \right\|

4.2 置信度感知损失#

核心创新:网络同时学习每个像素的置信度

置信度加权回归损失

Lconf=v{1,2}iDvCiv,1regr(v,i)αlogCiv,1\mathcal{L}_{\text{conf}} = \sum_{v \in \{1,2\}} \sum_{i \in \mathcal{D}^v} C^{v,1}_i \ell_{\text{regr}}(v,i) - \alpha \log C^{v,1}_i

其中:

  • Civ,1C^{v,1}_i:像素 ii 的置信度分数
  • α\alpha:控制正则化强度的超参数

置信度保证

Civ,1=1+expCiv,1~>1C^{v,1}_i = 1 + \exp \widetilde{C^{v,1}_i} > 1

4.3 置信度图的作用#

置信度图 CC 具有以下作用:

场景置信度表现
天空/背景低置信度(无有效 3D 点)
透明物体低置信度(单视角观察)
纹理丰富区域高置信度(多视角可三角化)
遮挡区域中等置信度(部分可见)

置信度让 DUSt3R 能够自适应地处理歧义区域,无需人工标注。

5. 下游应用:从 Pointmap 导出几何量#

5.1 像素匹配#

建立两图像间的像素对应关系,通过 3D 点图空间的最近邻搜索:

M1,2={(i,j)i=NN11,2(j) and j=NN12,1(i)}\mathcal{M}_{1,2} = \{ (i,j) \mid i = \text{NN}_1^{1,2}(j) \text{ and } j = \text{NN}_1^{2,1}(i) \}

互最近邻约束:确保匹配的双向一致性。

5.2 相机内参恢复#

从点图 X1,1X^{1,1} 估计相机内参(假设主点在图像中心,像素为正方形):

f1=arg minf1i,jCi,j1,1(i,j)f1(Xi,j,01,1,Xi,j,11,1)Xi,j,21,1f_1^* = \operatorname*{arg\,min}_{f_1} \sum_{i,j} C^{1,1}_{i,j} \left\| (i', j') - f_1 \frac{(X^{1,1}_{i,j,0}, X^{1,1}_{i,j,1})}{X^{1,1}_{i,j,2}} \right\|

其中 i=iW/2, j=jH/2i' = i - W/2, \ j' = j - H/2

求解:使用 Weiszfeld 算法快速迭代求解。

5.3 相对位姿估计#

方法一:Procrustes 对齐

通过最小二乘求解相对位姿 P=[Rt]P^* = [R^*|t^*]

R,t=arg minR,tiCi1,1Ci1,2RXi1,1+tXi1,22R^*, t^* = \operatorname*{arg\,min}_{R,t} \sum_i C^{1,1}_i C^{1,2}_i \left\| R X^{1,1}_i + t - X^{1,2}_i \right\|^2

方法二:PnP + RANSAC

更鲁棒的做法,使用 2D-3D 对应关系。

5.4 绝对位姿估计(视觉定位)#

给定查询图像 IQI^Q 和参考图像 IBI^B

  1. 估计 IQI^Q 的内参(从 XQ,QX^{Q,Q}
  2. 建立 IQI^QIBI^B 的 2D-2D 匹配
  3. 获取 2D-3D 对应关系
  4. 运行 PnP-RANSAC 得到绝对位姿

6. 全局对齐:多视角稠密重建#

6.1 为什么需要全局对齐?#

单次推理只能处理两幅图像,多视角场景需要将所有成对预测对齐到统一的坐标系。

6.2 成对图构建#

构建连接图 G(V,E)\mathcal{G}(\mathcal{V}, \mathcal{E})

  • 顶点:图像
  • :存在视觉重叠的图像对

边筛选策略:

  • 使用图像检索方法
  • 或将所有图像对输入网络
  • 基于平均置信度过滤低质量对

6.3 全局优化问题#

目标是恢复全局一致的点图 {χn}\{\chi^n\}

χ=arg minχ,P,σeEveiCiv,eχivσePeXiv,e\chi^* = \operatorname*{arg\,min}_{\chi, P, \sigma} \sum_{e \in \mathcal{E}} \sum_{v \in e} \sum_i C^{v,e}_i \left\| \chi_i^v - \sigma_e P_e X^{v,e}_i \right\|

约束eσe=1\prod_e \sigma_e = 1(防止平凡解 σ=0\sigma = 0

6.4 与 Bundle Adjustment 的区别#

方面Bundle AdjustmentDUSt3R 全局对齐
优化变量相机参数 + 3D 点成对变换 + 全景点图
误差项2D 重投影误差3D 投影误差
收敛速度慢(高维非线性)快(几百步梯度下降)
对噪声鲁棒性中等
实现复杂度高(需要相机模型)低(无需显式几何约束)

6.5 相机参数恢复#

若需恢复相机参数,扩展优化框架:

χi,jn:=Pn1h(Kn1[iDi,jn; jDi,jn; Di,jn])\chi^n_{i,j} := P_n^{-1} h(K_n^{-1} [i D^n_{i,j}; \ j D^n_{i,j}; \ D^n_{i,j}])

即可同时估计所有相机位姿 {Pn}\{P_n\}、内参 {Kn}\{K_n\} 和深度图 {Dn}\{D^n\}

7. 实验结果与分析#

7.1 视觉定位(绝对位姿估计)#

数据集:7Scenes(室内)、Cambridge Landmarks(室外)

方法7Scenes 平均 (cm/°)Cambridge 平均 (cm/°)
HLoc4.3/1.3817.3/0.26
PixLoc3.0/1.0518.0/0.24
NeuMaps3.5/1.1213.8/0.27
DUSt3R 5123.7/1.1313.2/0.24

DUSt3R 虽未针对定位任务训练,但达到了与专用方法相当的水平。

7.2 多视角位姿估计#

数据集:CO3Dv2、RealEstate10K

方法CO3Dv2 RRA@15CO3Dv2 RTA@15CO3Dv2 mAA(30)RE10K mAA(30)
PoseDiffusion80.579.866.548.0
PixSfM33.732.930.149.4
DUSt3R 512 (PnP)94.388.477.261.2
DUSt3R 512 (GA)96.286.876.767.7

DUSt3R 大幅超越所有基线方法!

7.3 单目深度估计(零样本)#

数据集:DDAD、KITTI、NYUv2

方法训练方式DDAD Rel↓DDAD δ₁.₂₅↑KITTI Rel↓KITTI δ₁.₂₅↑
DPT-BEiT监督10.7084.639.4589.27
NeWCRFs监督9.5982.925.4391.54
SlowTv零样本12.6379.34
DUSt3R 224零样本16.3277.5816.9777.89
DUSt3R 512零样本13.8881.1710.7486.60

7.4 多目深度估计#

数据集:DTU、ETH3D、Tanks & Temples、ScanNet

方法需要 GT 参数平均 rel↓平均 τ↑
COLMAP9.367.8
MVSNet18.649.4
DeMoN部分16.018.3
DUSt3R 2246.8554.59
DUSt3R 5124.7364.52

DUSt3R 无需任何相机参数,但性能超过使用 GT 参数的传统方法!

7.5 3D 重建质量#

数据集:DTU

方法需要 GT 相机精度 (mm)↓完整度 (mm)↓总体 (mm)↓
Gipuma0.2830.8730.578
CasMVSNet0.3250.3850.355
GeoMVSNet0.3310.2590.295
DUSt3R 5122.6770.8051.741

虽然精度略低于专用方法,但 DUSt3R 完全无需相机标定,开箱即用。

8. 训练细节#

8.1 训练数据#

数据集类型规模
CO3Dv2物体多视角~6M 图像
ARKitScenes室内 RGB-D大规模
ScanNet++室内多视角大规模
MegaDepth室外旅行照片大规模
BlendedMVSMVS 合成数据大规模
Waymo Open自动驾驶大规模
Habitat仿真室内大规模
StaticThings3D静态场景中等

总计:约 850 万图像对

8.2 两阶段训练策略#

阶段 1:低分辨率(224×224)

- 批量大小:16
- 学习率:0.0001
- 训练轮数:100
- 优化器:AdamW

阶段 2:高分辨率(512 像素)

- 批量大小:4(梯度累积 2)
- 学习率:0.0001
- 训练轮数:100
- 多分辨率:[(512,384), (512,336), (512,288), (512,256), (512,160)]

8.3 CroCo 预训练的重要性#

模型CO3Dv2 RRA@15多目深度 rel↓
DUSt3R 224-NoCroCo9.37
DUSt3R 2246.85
DUSt3R 51296.24.73

CroCo 预训练对 DUSt3R 至关重要。

9. 关键数学公式汇总#

  1. 点图定义
XRW×H×3,Ii,jXi,jX \in \mathbb{R}^{W \times H \times 3}, \quad I_{i,j} \leftrightarrow X_{i,j}
  1. 坐标变换
Xn,m=PmPn1h(Xn)X^{n,m} = P_m P_n^{-1} h(X^n)
  1. 编码器
F1=Encoder(I1),F2=Encoder(I2)F^1 = \text{Encoder}(I^1), \quad F^2 = \text{Encoder}(I^2)
  1. 解码器(交叉注意力)
Gi1=DecoderBlocki1(Gi11,Gi12)G_i^1 = \text{DecoderBlock}_i^1(G_{i-1}^1, G_{i-1}^2)
  1. 3D 回归损失
regr(v,i)=1zXiv,11zˉXˉiv,1\ell_{\text{regr}}(v,i) = \left\| \frac{1}{z} X^{v,1}_i - \frac{1}{\bar{z}} \bar{X}^{v,1}_i \right\|
  1. 置信度感知损失
Lconf=v,iCiv,1regr(v,i)αlogCiv,1\mathcal{L}_{\text{conf}} = \sum_{v,i} C^{v,1}_i \ell_{\text{regr}}(v,i) - \alpha \log C^{v,1}_i
  1. 全局对齐优化
χ=arg minχ,P,σe,v,iCiv,eχivσePeXiv,e\chi^* = \operatorname*{arg\,min}_{\chi,P,\sigma} \sum_{e,v,i} C^{v,e}_i \left\| \chi_i^v - \sigma_e P_e X^{v,e}_i \right\|
  1. Procrustes 相对位姿
R,t=arg minR,tiCi1,1Ci1,2RXi1,1+tXi1,22R^*, t^* = \operatorname*{arg\,min}_{R,t} \sum_i C^{1,1}_i C^{1,2}_i \left\| R X^{1,1}_i + t - X^{1,2}_i \right\|^2

10. 总结与展望#

DUSt3R 的核心贡献#

  1. Pointmap 表示:革命性的 3D 表示,隐式包含像素-3D 对应关系
  2. 无需相机标定:首次实现完全无约束的稠密 3D 重建
  3. 统一多任务:一个模型搞定几乎所有 3D 几何视觉任务
  4. CroCo 预训练:充分利用跨视图补全的自监督预训练
  5. 全局对齐优化:基于 3D 投影误差的快速多视角对齐

当前局限#

局限描述潜在改进
精度回归方法精度低于三角化混合方法(回归 + 优化)
尺度歧义单目/双目结果存在尺度不确定性绝对尺度恢复
动态场景主要针对静态场景时序建模
实时性H100 上 ~40ms/对,多图仍需数秒模型蒸馏

后续工作与衍生#

工作描述关系
MASt3RDUSt3R + 局部特征头 + Metric Pointmap升级版
Po3RDUSt3R + 已知深度/焦距/位姿扩展版
MUSt3R多视角版本(无全局对齐)多视角版
MV-DUSt3R+Meta 的极速多视角重建(2 秒)极速版
Easi3RDUSt3R 适配动态场景动态版

在 3D 视觉版图中的位置#

DUSt3R 代表了数据驱动几何视觉的巅峰:

传统几何视觉:
COLMAP + MVS → 需要精确标定 → 脆弱
DUSt3R 路线:
海量数据预训练 → 学习强几何先验 → 无需标定 → 鲁棒

DUSt3R 证明了”让神经网络学会几何”比”让神经网络遵守几何约束”更有效。 它不仅是一个优秀的 3D 重建模型,更是一个可以充当各种 3D 视觉任务基础的多功能模型。后续的 MASt3R、Po3R 等工作进一步拓展了其能力边界,推动了”3D 基础模型”(3D Foundation Model)的发展。

参考资料#

  1. Wang, S., Leroy, V., Cabon, Y., Chidlovskii, B., & Revaud, J. (2024). “DUSt3R: Geometric 3D Vision Made Easy.” CVPR 2024, pp. 20654-20664.
  2. “naver/dust3r.” GitHub: naver/dust3r. https://github.com/naver/dust3r
  3. Wang, S., & Leroy, V., et al. (2023). “CroCo: Cross-View Completion.” arXiv<2312>.14132.
  4. “naver/mast3r.” GitHub: naver/mast3r.
  5. “naver/pow3r.” GitHub: naver/pow3r.
  6. “naver/must3r.” GitHub: naver/must3r.
  7. “facebookresearch/mvdust3r.” GitHub: facebookresearch/mvdust3r.
  8. Schönberger, J. L., & Frahm, J.-M. (2016). “Structure-from-Motion Revisited.” CVPR 2016.
  9. Schonberger, J. L., & Frahm, J.-M. (2016). “Structure-from-Motion Revisited.” CVPR 2016 (COLMAP).
  10. Reizenstein, J., et al. (2021). “Common Objects in 3D.” NeurIPS 2021 (CO3D).
  11. Barath, D., et al. (2020). “MAGSAC++, a Parameter-Free Histogram-Based Optimizer.” TPAMI 2020.
  12. Ranftl, R., et al. (2021). “Vision Transformers for Dense Prediction.” ICCV 2021 (DPT).
  13. Zhang, J., et al. (2023). “Point-M2AE: Multi-Scale Masked Autoencoders for Point Cloud Self-Supervised Learning.” NeurIPS 2023.

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

深度解析 DUSt3R:无需相机标定的稠密无约束立体 3D 重建
https://aiattnstudio.link/posts/dust3r/
作者
Federico
发布于
2026-07-16
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author

Federico

AI Research Lab

Hello, I'm Federico.

关于实验室 / About
公告

欢迎来到Federico的个人博客

分类
标签
站点统计
57文章
7分类
404标签