从照片到三维模型: 一条更简单的路径
从一组普通照片创建精细的三维模型,一直被认为是计算机视觉领域的终极目标之一。几十年来,标准方法是一个复杂的多阶段流水线: 首先通过 运动恢复结构 (Structure-from-Motion, SfM) 估计相机参数和稀疏几何,然后通过 多视图立体匹配 (Multi-View Stereo, MVS) 生成稠密的表面模型。
这个传统流水线是一项非凡的成就,支撑着从谷歌地图的三维视图到文化遗产保护、机器人导航和自动驾驶等众多应用。但它也非常脆弱——每一步都依赖前一步的成功,任何环节出错都可能在整个流水线中级联放大,导致最终重建失败。相机标定必须精确,视图数量必须充足,运动变化必须足够,表面纹理必须丰富——否则重建就可能崩塌。
如果我们能完全绕过所有这些阶段呢?想象一下,将几张照片——没有任何相机信息——输入到一个统一的模型中,就能直接获得一个精确的三维模型。
这就是 DUSt3R 所带来的突破性承诺——一种从根本上简化三维重建的创新方法。这个单一模型可以接收一组无约束的图像,并直接一次性输出稠密的三维重建——以及相机位姿、深度图和像素对应关系。它消除了传统方法中脆弱的顺序依赖,并在多项基础三维视觉任务上树立了新的业界标杆。
图 1: DUSt3R 流程。输入一组未知相机参数的图像,DUSt3R 输出一致的三维重建,并能推导出所有传统上难以估计的几何量。
传统方法: 脆弱的链条
为了理解为什么 DUSt3R 是如此巨大的飞跃,让我们简要回顾一下传统的流水线:
- 特征匹配: 在每张图像中检测独特的关键点,并在不同视图间进行匹配,以建立场景中相同物理点的对应关系。
- 运动恢复结构 (SfM): 利用这些匹配同时求解相机内参 (焦距、主点) 和外参 (位置、方向) ,并估计关键点的稀疏三维坐标。
- 束调整 (Bundle Adjustment, BA): 通过最小化所有视图的重投影误差,共同优化所有相机和三维点。
- 多视图立体匹配 (MVS): 使用优化后的相机位姿,为每个像素建立稠密对应关系,以重建连续表面。
尽管经过几十年的改进,这个流水线的顺序性仍然是其致命弱点: 糟糕的匹配会导致糟糕的位姿,进而产生错误的稠密重建。此外,后续步骤很少能反馈信息来改进早期步骤,使相机和场景几何成为相互独立的问题域。
大多数现代系统尝试进行局部改进——例如增强特征匹配或将 MVS 的部分过程神经网络化——但依赖的核心链条依然存在。DUSt3R 则完全打破了这条链条。
DUSt3R 的范式转变: 预测 点图 (Pointmaps)
DUSt3R 的核心是其 点图 (pointmap) 表示——一种从图像中每个像素映射到公共场景坐标系中一个三维点的稠密表示。
什么是点图?
深度图为每个像素提供一个距离 \( z \)。而 点图 更进一步: 对于每个像素坐标 \((i, j)\),它存储该像素所观察到的场景中点的完整三维位置 \( X_{i,j} = (x, y, z) \)。
至关重要的是,DUSt3R 为一对输入图像 \((I^1, I^2)\) 预测 两个 点图:
- \( X^{1,1} \): 图像 \(I^1\) 在自身坐标系中的点图
- \( X^{2,1} \): 图像 \(I^2\) 的点图,同样以 \(I^1\) 的坐标系表示
这种共享坐标系的设计迫使网络在表示中直接学习相机之间的相对旋转和平移。不存在单独的“位姿估计”步骤——几何对齐是其输出的内在属性。
架构: 双视图的对话
DUSt3R 的架构建立在为稠密视觉理解而设计的 Vision Transformer (ViT) 之上。
图 2: DUSt3R 的架构。解码器中的交叉注意力机制使视图间持续交换信息,从而将输出对齐到共享的三维空间中。
关键组件:
- 孪生 ViT 编码器: 两张图像经过同一个 ViT 编码器 (共享权重) 。这确保了特征提取在统一嵌入空间中完成。
- 交叉注意力解码器: 一个视图的 token 与另一个视图的 token 相互关注 (反之亦然) ,使网络能够推断几何关系。
- 回归头: 每个视图有独立的回归头,用于预测点图 \(X^{1,1}\)、\(X^{2,1}\) 以及置信度图 \(C\)。置信度图指示网络最有把握的像素——这对于过滤反光、遮挡、天空等不可靠点非常有价值。
训练: 简单直接的三维回归损失
网络使用一个简单的欧几里得距离损失来比较预测的三维点与真实值:
\[ \ell_{\text{regr}}(v,i) = \left\| \frac{1}{z} X_i^{v,1} - \frac{1}{\bar{z}} \bar{X}_i^{v,1} \right\| \]其中 \( z \) 和 \( \bar{z} \) 用于尺度归一化,以解决从两个视图中恢复绝对场景尺寸的固有不确定性。
置信度加权的损失进一步提升了训练效果:
\[ \mathcal{L}_{\text{conf}} = \sum_{v \in \{1,2\}} \sum_{i} C_i^{v,1} \,\ell_{\text{regr}}(v,i) - \alpha \log C_i^{v,1} \]这种方法奖励准确的高置信度预测,并惩罚在错误区域中过度自信的预测。
通过在 850 万对多样化的图像 (来自 Habitat、MegaDepth、ScanNet++ 等数据集) 上训练,DUSt3R 学会了适用于室内、室外、合成和真实世界场景的广泛几何先验。
从点图到完整几何
一旦 DUSt3R 预测出点图:
- 特征匹配: 在点图之间进行三维最近邻搜索,直接得到像素对应关系。
- 相机内参: 优化点图中点投影到图像平面的方式,可估算焦距和主点。
- 相对位姿: 使用普氏分析 (Procrustes Analysis) 或 PnP-RANSAC 对齐点图,可恢复相对外参。
这意味着 DUSt3R 可以轻松获取传统流水线要分多步单独计算的一切几何量。
超越双视图: 全局多视图对齐
虽然 DUSt3R 基于成对处理,但作者通过快速三维对齐将其扩展到整组图像:
- 构建图: 图像作为节点;具有显著重叠的图像对作为边。
- 成对 DUSt3R 预测: 对所有边运行 DUSt3R。
- 全局优化: 求解旋转 (\(R\))、平移 (\(t\)) 和尺度因子 (\(\sigma\)),将所有点图对齐成一个一致的全局模型。
该过程直接在三维空间中优化——速度更快,并且通常比束调整的二维重投影优化更稳定。
图 3: 成对重建结果 (左) 与多视图全局对齐结果 (右) 对比。
基准测试: DUSt3R 的全面优势
多视图位姿估计:
在 CO3Dv2 和 RealEstate10K 数据集上,结合全局对齐的 DUSt3R 超越了之前的业界顶尖方法,包括基于学习和基于几何的基线。
表 1: DUSt3R 在两个基准测试中均取得了最高分。
单目和多视图深度估计:
对于单目深度估计,DUSt3R 只需处理 \((I, I)\)。即使在零样本 (zero-shot) 模式下,它在多个不同数据集上的表现也能媲美或超越监督方法。对于多视图立体深度估计,DUSt3R 在 ETH3D 上实现了业界领先,并在 DTU、Tanks and Temples 和 ScanNet 上表现出色——且无需已知相机位姿。
表 2: 多视图深度性能。DUSt3R 是唯一在无需真实相机位姿的情况下取得领先性能的方法。
定性重建效果:
DUSt3R 的可视化结果同样令人印象深刻:
- 轻松应对极端视点变化和焦距差异。
- 能够从展示物体几乎相对两侧的图像对中成功重建——即使重叠极少。
图 4: 仅用两张无约束图像就能精细重建勃兰登堡门。
图 5: DUSt3R 从重叠极少的视图重建物体,展现了其学到的几何先验。
在 DTU 基准中,虽然它未能超越那些需要相机参数作为输入的专用方法,但其即插即用的特性使其在真实世界的不受控场景中十分实用。
结论: 三维视觉的新基石
DUSt3R 代表着一次范式转变:
- 无需相机信息: 可在无任何内参或位姿的情况下处理无约束图像集。
- 统一模型: 一个网络即可完成稠密重建、深度估计、位姿估计和特征匹配,并达到业界领先水准。
- 点图的力量: 在共享坐标系中编码多视图几何,隐式学习场景结构。
- 真实场景的稳健表现: 能处理大基线、少量照片以及具有挑战性的拍摄条件。
DUSt3R 没有沿用脆弱的顺序子问题求解方式,而是展示了通过训练单一大规模模型,直接从视觉数据中学习我们三维世界结构的强大能力。它不仅让几何三维视觉变得简单——更改变了我们从图像构建三维的思路。