简介

几十年来,计算机视觉领域一直在追寻一个特定的“圣杯”: 将散落在场景各处的几张扁平 2D 照片,瞬间转化为连贯的 3D 模型。

传统上,这个过程——被称为运动恢复结构 (Structure-from-Motion, SfM) ——是一个缓慢且繁琐的数学计算过程。它涉及检测特征、在图像间进行匹配、求解复杂的几何方程以找到相机位置,然后运行像光束法平差 (Bundle Adjustment) 这样的迭代优化算法来微调一切。虽然这种方法有效,但它的计算成本高昂,而且往往很脆弱。

近年来,深度学习试图简化这一过程。像 DUSt3R 这样的模型向我们展示了可以使用神经网络直接预测 3D 点。然而,即便是这些现代方法,通常也依赖于成对处理 (一次看两张图) ,并且仍然需要缓慢的后处理优化步骤,才能将所有内容拼接成一个一致的场景。

VGGT (Visual Geometry Grounded Transformer) 应运而生。

VGGT 由牛津大学视觉几何组 (Visual Geometry Group) 和 Meta AI 的研究人员提出,代表了 3D 几何领域的一次范式转变。它是 3D 几何的“基础模型”。VGGT 不再是一点一点地拼凑场景,而是摄取整个图像集合——无论是一张、两张还是一百张——并在一次前向传递中输出整个 3D 结构、相机位置和深度图。

图 1: VGGT 概览。该模型接受多张图像作为输入,并在不到一秒的时间内预测出相机参数、深度图和点轨迹。

如图 1 所示,该模型的速度快得令人难以置信,能在不到一秒的时间内完成重建,而传统方法通常需要更长的时间。在这篇文章中,我们将拆解 VGGT 的架构,解释它如何从 2D 像素中“构想”出精确的 3D 几何结构,并看看它取得的惊人成果。

背景: 从几何学到 Transformer

要理解 VGGT,我们需要了解它填补了什么空白。

传统流程

经典的 3D 重建依赖于视觉几何 。 你需要拍摄图像,找到“关键点” (独特的角或边缘) ,并在图像之间进行匹配。如果你知道点在图像之间是如何移动的,就可以通过数学上的三角测量法计算出这些点在 3D 空间中的位置,以及相机必须在什么位置才能看到它们。这很准确但很慢。如果图像纹理很少 (比如白墙) 或视角变化极大,传统的数学方法往往会失效。

神经网络时代

深度学习带来了可以从单张图像“猜测”深度或更稳健地匹配特征的模型。最近,像 DUSt3RMASt3R 这样的模型开始转向端到端的重建。它们将 3D 重建视为一个回归问题——直接预测每个像素的 3D 坐标。

然而,这些模型有一个局限性: 它们通常对图像对 (pairs) 进行操作。要使用 DUSt3R 重建包含 100 张图像的场景,你必须计算许多图像对的结果,然后使用全局优化步骤将它们全部对齐。这种“全局对齐”成为了瓶颈,将快速的神经推理变成了缓慢的整体过程。

VGGT 的方法

VGGT 的作者提出了一个问题: 为什么不一次性处理所有 N 张图像呢?

如果神经网络像大脑一样运作,它应该能够看着一叠照片,立即理解它们之间的空间关系,而不需要在单独的步骤中通过数学方法将它们缝合在一起。VGGT 正是为此设计的: 一个前馈网络,可以同时预测所有关键的 3D 属性。

方法: Transformer 内部解析

VGGT 的核心理念是去除归纳偏置 (inductive biases) 。研究人员没有将几何定律硬编码到网络中,而是使用了标准、强大的 Transformer 架构,让它从海量数据中学习几何。

问题定义

让我们用数学来定义这个任务。我们有一个包含 \(N\) 张图像的无序集合,表示为 \((I_i)\)。我们需要一个函数 \(f\),将这些图像映射到它们对应的 3D 属性:

公式 1: 将图像映射到 3D 属性的函数。

以下是模型为每一张图像 \(I_i\) 预测的内容:

  • \(\mathbf{g}_i\) (Cameras/相机): 内参 (焦距) 和外参 (旋转和位置) 参数。
  • \(D_i\) (Depth Maps/深度图): 每个像素到相机的距离。
  • \(P_i\) (Point Maps/点图): 世界空间中每个像素的 3D 坐标 \((x, y, z)\)。
  • \(T_i\) (Tracks/轨迹): 用于跨不同图像跟踪点的特征网格。

至关重要的是, 点图 (\(P_i\)) 是“视点不变”的。这意味着无论哪个相机在看桌子的特定角落,模型都会为该角落预测完全相同的 \((x, y, z)\) 坐标。坐标系锚定在第一张图像 (相机 1) 上。

架构: 交替注意力机制

该架构基于视觉 Transformer (ViT),特别是使用像 DINOv2 这样的预训练模型进行初始化。然而,标准的 Transformer 设计用于关注单张图像内的补丁 (patches) 。VGGT 需要理解图像之间的关系。

为了解决这个问题,作者引入了交替注意力 (Alternating Attention, AA)

图 2: 架构概览。模型使用交替的帧内注意力和全局注意力层处理 Token。

如图 2 所示,图像首先被分解为补丁 (Token) 。然后,Transformer 通过 \(L\) 层 (通常为 24 层) 处理这些 Token,这些层在两种模式之间交替:

  1. 帧内自注意力 (Frame-wise Self-Attention): 模型关注单张图像内部的 Token。这建立了对图片内容的强大局部理解 (例如,“这是一条椅子腿”) 。
  2. 全局自注意力 (Global Self-Attention): 模型允许来自所有图像的 Token 相互关注。这就是 3D 魔法发生的地方。图像 1 中代表椅子腿的 Token 可以与图像 5 中代表同一条椅子腿的 Token “对话”。这种交互允许网络推断出图像 5 必须位于图像 1 的左侧。

这种交替设计取得了平衡。它整合了跨视图的信息以解决几何问题,同时也优化了每张特定图像的表示。

预测头 (Prediction Heads)

一旦 Token 通过了 Transformer,它们就包含了丰富的 3D 信息。VGGT 使用特定的“头”将这些信息解码为最终输出:

  • 相机头 (Camera Head): 特殊的“相机 Token”被附加到输入中。处理后,这些 Token 被送入一个小型多层感知机 (MLP) 以预测 9 个相机参数 (旋转、平移、焦距) 。
  • 密集预测头 (DPT): 对于像深度图和点图这样的密集输出,图像 Token 被重塑回 2D 网格。一个深度先验 Transformer (DPT) 解码器将它们上采样到高分辨率,以预测像素级映射图。

训练: 多任务学习

如何训练这样一个庞然大物?你需要一个损失函数,强制模型在所有预测中都保持准确。作者使用多任务损失对 VGGT 进行端到端训练:

公式 2: 多任务损失函数。

损失包括:

  • \(\mathcal{L}_{camera}\): 衡量预测的相机位置与真实位置的接近程度。
  • \(\mathcal{L}_{depth}\) & \(\mathcal{L}_{pmap}\): 衡量深度图和 3D 点云的误差。它还包括一个不确定性项——模型被允许对无纹理区域 (如蓝天) 保持“不确定”,以避免受到不公平的惩罚。
  • \(\mathcal{L}_{track}\): 一种跟踪损失,确保模型知道图像 A 中的哪些像素对应于图像 B 中的哪些像素。

有趣的是,作者发现同时在所有这些任务上进行训练可以提高性能。虽然你可以从深度和相机参数在数学上推导出点图,但强制网络显式地预测两者,会使底层特征更加稳健。

该模型在海量数据集集合 (CO3Dv2, ScanNet, MegaDepth 等) 上使用 64 个 A100 GPU 训练了 9 天。这种数据规模使得“无几何约束”的 Transformer 能够隐式地学习几何规则。

实验与结果

这种方法的宣称很大胆: 快速、准确且通用。让我们看看 VGGT 与最先进技术的对比表现如何。

1. 视觉质量与鲁棒性

最引人注目的比较之一是与 DUSt3R 的对比,后者是神经 3D 重建领域的领先竞争对手。

图 3: 与 DUSt3R 的定性比较。VGGT 在处理艺术作品、宽基线和多视图场景时更加稳健。

在图 3 中,我们可以看到几种场景:

  • 顶行 (油画) : VGGT 有效地恢复了一幅画 (梵高) 的几何结构。
  • 中间行 (宽基线) : 从非常不同的角度拍摄建筑物的两张照片。VGGT 正确地融合了它们;DUSt3R 失败了,因为重叠部分很棘手。
  • 底行 (32 视图) : 这是杀手级应用。处理金字塔结构的 32 张图像,VGGT 仅需 0.6 秒 。 DUSt3R 则因为成对优化的瓶颈,要么耗尽内存,要么需要超过 200 秒。

2. 相机位姿估计

VGGT 能否取代标准的 SfM 来寻找相机位置?作者在 RealEstate10K 和 CO3Dv2 数据集上对此进行了测试。

表 1: 相机位姿估计结果。VGGT 优于前馈基线,并可与优化方法相媲美。

表 1 强调了一个关键发现: 速度

  • 传统方法 (Colmap) 和混合方法 (VGGSfM) 每个场景需要 10-15 秒。
  • VGGT (前馈模式) 仅需 0.2 秒 , 并且实现了更高的准确率 (在 RealEstate10K 上为 85.3 vs 78.9) 。

值得注意的是最后一行: “Ours (with BA)”。如果你采用 VGGT 的快速预测并将其作为光束法平差 (BA) 的初始化,准确率会跳得更高 (93.5)。这表明 VGGT 是需要良好起点的求解器的绝佳“初始猜测者”。

3. 点图准确性

该模型直接预测密集的点云。在 ETH3D 数据集上的评估表明,VGGT 不仅仅是在猜测,它非常精确。

表 3: ETH3D 上的点图估计。

在表 3 中,数值越低越好。VGGT 在准确性上击败了 DUSt3R 和 MASt3R (0.901 vs 1.167) ,同时速度快了几个数量级。

这里有一个有趣的消融实验是“Ours (Depth + Cam)”。作者发现,虽然模型预测特定的“点图”,但通过获取预测的深度图并使用预测的相机参数对其进行反投影,他们可以获得更好的结果。这表明深度和相机的特定头在推理过程中比联合点图头稍微精确一些。

4. 可扩展性

VGGT 的主要卖点之一是它不会在大量图像面前卡壳。

表 9: 运行时间和内存使用情况。

表 9 展示了其扩展能力。处理 20 张图像大约需要 0.3 秒。即使是 100 张图像也只需大约 3 秒。相比之下,基于图像对的方法随着图像数量的增加,运行时间呈二次方爆炸式增长。

5. 下游应用

VGGT 不仅仅是一个重建工具;它还是一个特征提取器。Transformer 学到的表示足够丰富,可以驱动其他任务。

点跟踪

在视频中跟踪点通常需要专门的时间模型。然而,通过使用 VGGT 的预训练骨干网络微调跟踪器 (CoTracker),研究人员在动态跟踪基准测试中取得了最先进的结果。

图 5: 刚性和动态点跟踪。

图 5 (上) 展示了 VGGT 在静态场景的无序图像中跟踪点。下图展示了微调后的动态跟踪器处理移动的骑车人,可视化了密集的光流。

新视角合成

VGGT 能生成场景的新视角吗?通过稍微修改头部以输出 RGB 颜色而不是几何形状,作者将 VGGT 变成了视角合成器。

图 6: 新视角合成。VGGT 可以构想出新的相机角度。 表 7: 视角合成定量结果。

如图 6 和表 7 所示,VGGT 可以与专门的视角合成模型 (如 LGM 或 LVSM) 竞争,即使它没有获得输入图像的相机参数——这是大多数其他模型无法处理的限制。

结论与启示

VGGT 代表了朝着使用纯神经网络“解决” 3D 重建迈出的重要一步。通过抛弃过去复杂的多阶段流程,拥抱大规模的前馈 Transformer,作者创建了一个具有以下特点的模型:

  1. 快速: 多视图场景的亚秒级推理。
  2. 简单: 推理过程中不需要 RANSAC、三角测量或成对匹配图。
  3. 整体性: 通过全局注意力同时考虑所有图像。
  4. 通用: 它适用于单张图像 (单目深度) 、立体图像对或大型集合。

图 7: 单视图重建。即使只给一张图像,VGGT 也能很好地泛化。

虽然它在极端场景 (如鱼眼镜头或严重的非刚性变形) 下如果不进行微调仍然会遇到困难,但 VGGT 证明了大规模 Transformer 可以内化视觉几何的规律。对于学生和研究人员来说,这预示着未来 3D 视觉看起来不那么像一个几何问题,而更像是一个数据驱动的 Token 处理任务——为机器人和 AR/VR 中的实时 3D 理解铺平了道路。