VGG组联合Meta改进了dust3r,输入图片,输出对应的一系列3D属性,被CVPR2025收录!
1.abstract
我们提出了VGGT,一种前馈神经网络,能够直接从场景的一个、几个或数百个视角推断出所有关键的3D属性,包括相机参数、点云图、深度图和3D点轨迹。VGGT不仅简单高效,能在不到一秒的时间内重建图像,而且在无需视觉几何优化技术后处理的情况下,仍然优于其他替代方案。该网络在多个3D任务中实现了最先进的成果,包括相机参数估计、多视角深度估计、密集点云重建和3D点跟踪。我们还展示了使用预训练的VGGT作为特征骨干网络,能显著提升下游任务的性能,如非刚性点跟踪和前馈式新视角合成。
2.introduction
DUSt3R [129]及其改进版MASt3R通过神经网络直接解决3D重建任务,几乎完全避免了几何后处理。但这些网络一次只能处理两张图像,并依赖后处理来重建更多图像,融合成对重建。
本文进一步推进了减少后处理中对3D几何优化的需求。我们提出了视觉几何基础Transformer(VGGT),这是一种前馈神经网络,能够从一个、几个甚至数百个场景输入视图中进行3D重建。VGGT预测包括相机参数、深度图、点云图和3D点轨迹在内的完整3D属性集,并在几秒钟内完成一次前向传递。
我们还表明,无需为3D重建设计特殊网络。VGGT基于一个相当标准的大型Transformer [119],没有特定的3D或其他归纳偏差(除了在帧间和全局注意力之间交替),但在大量带有3D注释的公开数据集上训练。因此,VGGT与自然语言处理和计算机视觉中的大型模型(如GPTs [1, 29, 148]、CLIP [86]、DINO [10, 78]和Stable Diffusion [34])构建方式相同。这些模型已成为多功能骨干,可以微调以解决新的特定任务。同样,我们展示了VGGT计算的特征可以显著增强下游任务,如动态视频中的点跟踪和新视角合成。
最近有几个大型3D神经网络的例子,包括DepthAnything [142]、MoGe [128]和LRM [49]。然而,这些模型只专注于单一的3D任务,如单目深度估计或新视角合成。而VGGT使用共享骨干网络预测所有感兴趣的3D量。我们证明了学习预测这些相互关联的3D属性可以提高整体准确性,尽管可能存在冗余。同时,我们展示了在推理过程中,可以从单独预测的深度和相机参数中导出点图。
3. Method
3.1问题设定
输入是N个RGB图片序列,
,VGGT的transformer是一个从图片序列到对应的一组3D属性的函数,对于每一张输入图片,输出相机内参和外参
,深度图
,点图
,C点追踪维特征网格
:
1)相机参数
和SfM的框架一致,相机参数表示为,其中q为四元数,t为平移向量,f为视场角。
2)深度图
图像 的域定义为:
深度图定义为,是每一个像素对应的深度值,其中
是像素位置。
3)点图
与dust3r一样,每一个像素对应一个3D点:, 3D 点 定义在第一个相机 g1 的坐标系中,将其作为世界参考系。
4)关键点跟踪
对于关键点跟踪,采用类似 Track-Any-Point [25, 57] 的方法。给定查询图像 中的一个固定查询点
,网络输出一个轨迹:
。
Transformer 并不直接输出轨迹,而是输出特征 。跟踪任务由一个单独的模块完成,该模块实现函数:
两个网络 f 和 T 是端到端联合训练的。
输入图像序列的顺序是任意的,但第一张图像被选为参考帧,
3.2. Feature Backbone
最近的研究表明,3D 深度学习可以通过减少对模型的先验假设(归纳偏置),让模型从大量 3D 标注数据中学习到更好的表示。因此,我们的模型 f 是一个基于 Transformer 的大型网络。
输入图像首先通过 DINO被变成一组 token
,所有帧的 token 被组合起来
,输入主网络结构进行处理,交替使用帧内自注意力层和全局自注意力层。
标准 Transformer 使用全局自注意力,本文引入了交替注意力机制(Alternating-Attention),
帧内自注意力(frame-wise self-attention)分别关注每帧内的 token ,而全局自注意力(global self-attention)则联合关注所有帧的 token
,这种设计在整合不同图像信息和归一化每帧内 token 激活之间取得了平衡。这样,我们的架构没有使用任何交叉注意力层,仅使用自注意力层。
3.3. Prediction heads
在这里,我们描述模型 f 如何预测相机参数、深度图、点云图和点轨迹。首先需要小补一个知识点:
ICLR2024收录了一篇来自Meta和Inria的文章VISION TRANSFORMERS NEED REGISTERS,这篇文章主要针对ViT在处理图像时的局限性提出了一种新的改进方法——“registers”(寄存器):
ViT的一个局限:ViT在处理图像时,某些区域(如背景或边缘)可能缺乏足够的信息,导致模型在这些区域的注意力分配不够合理。这种信息稀疏性可能影响模型的整体性能,尤其是在处理复杂场景时。Registers是一种额外的可学习参数,类似于Transformer中的特殊token(如[CLS] token)。它们被添加到输入序列中,用于捕捉图像中未被充分利用的信息(如背景或边缘)。提供额外的“存储空间”,帮助模型更好地处理信息稀疏的区域。增强模型对全局和局部信息的整合能力,提升特征提取效果。
具体的做法是:在ViT的输入序列中引入一组可学习的registers。这些registers与图像patches一起输入到Transformer中,参与自注意力机制的计算。Registers在训练过程中通过反向传播优化,逐渐学会捕捉图像中的有用信息。它们不依赖于特定图像内容,而是通用的辅助特征。
现在我们回到主题,关注于网络的head,先来介绍一些架构内的设置:
加入寄存器:首先,对于每张输入图像,为其对应的图像 token
添加一个额外的相机 token
和四个寄存器 token
,然后拼接起来
送入AA中,得到输出token
,前面也提到过,我们要把第一帧图片的相机坐标系作为模型的世界坐标系,所以为了区别第一帧,第一帧的相机 token 和寄存器 token设置为
,其他帧为
,经过优化以后,每一帧的相机token和寄存器都是特定的,然后根据上述论文,结束训练以后丢弃寄存器
,使用
进行预测。
对于坐标系,我们使用了第一帧图片的相机坐标系作为模型的世界坐标系,因此第一帧的旋转四元数与平移为,
,相机和寄存器token为
。
接下来,我们还是和3.1一样,按照输出来一个一个解释:
1)相机pose
相机参数 通过输出的相机 token
预测得到,这个camera head是四个额外的自注意力层和一个线性层。
2)深度图与pointmap
首先通过 DPT 层 [87] 转换为密集特征图
,然后,每个
通过一个 3×3 卷积层映射到对应的深度图和点图
,我们还为每个深度图和点云图分别预测了随机不确定性
,不确定性图用于损失函数中,并且在训练后与模型对预测的置信度成正比。
3)点跟踪
同3.1中提到的,点跟踪是另外一个网络,但是我们先要得到特征,在2)中,DPT 头还输出密集特征,作为跟踪头的输入,给定查询图像
中的一个查询点
,
跟踪头 预测所有图像
中与
对应的 2D 点集
,这个过程是,使用 CoTracker2 架构通过相关性计算和自注意力层预测查询点在其他图像中的对应点。
我们的跟踪器不假设输入帧的任何时间顺序,因此可以应用于任何输入图像集,而不仅仅是视频。
3.4. Training
我们使用多任务损失端到端训练 VGGT:
我们发现相机损失、深度损失和点图损失的范围相似,因此不需要额外加权。跟踪损失的 λ=0.05。
1)pose损失
使用Huber 损失:
2)深度与点图loss
遵循 DUSt3R [129],通过预测的不确定性图加权计算了
各自loss,实现了基于随机不确定性的损失:
3)点跟踪loss
训练配置
数据集包括:Co3Dv2 [88]、BlendMVS [146]、DL3DV [69]、MegaDepth [64]、Kubric [41]、WildRGB [135]、ScanNet [18]、HyperSim [89]、Mapillary [71]、Habitat [107]、Replica [104]、MVS-Synth [50]、PointOdyssey [159]、Virtual KITTI [7]、Aria Synthetic Environments [82]、Aria Digital Twin [82] 以及一个类似于 Objaverse [20] 的艺术家创建的合成数据集。这些数据集涵盖了各种领域,包括室内和室外环境,并包含合成和真实场景。这些数据集的 3D 注释来自多种来源,例如直接传感器捕获、合成引擎或 SfM 技术 [95]。
使用 L=24 层全局和帧内注意力。模型总共包含约 12 亿个参数。输入帧、深度图和点云图的最大尺寸调整为 518 像素。训练在 64 个 A100 GPU 上运行,耗时 9 天。我们使用梯度范数裁剪,阈值为 1.0,以确保训练稳定性。利用 bfloat16 精度和梯度检查点来提高 GPU 内存和计算效率。
4.实验
4.1pose估计
使用标准指标 AUC@30,结合 RRA(相对旋转精度) 和 RTA(相对平移精度)。VGGT 的预测结果(相机姿态、点云图和深度图)可以作为 捆绑调整(BA) 的良好初始化,从而进一步提升精度。结合 BA 后,VGGT 的优化时间仅需 2 秒,远快于传统方法(如 [125] 中的三角测量和迭代优化)。尽管 VGGT 的前馈模式已经优于所有现有方法,但后优化仍能带来进一步的性能提升。
4.2. Multi-view Depth Estimation
使用 DTU 标准指标,包括:Accuracy、Completeness、Overall,VGGT 的 多图像训练方案 使其能够自然地推理多视角三角测量,而不是像 DUSt3R 那样依赖临时的对齐操作(如平均多个成对相机三角测量结果)。这种设计使 VGGT 在多视角深度估计任务中表现出色。
4.3. Point Map Estimation
在ETH3D 数据集 上进一步评估了 VGGT 在点云预测任务中的性能,并与 DUSt3R 和 MASt3R 进行了对比,如表 3 和图 4
4.4. Image Matching
ScanNet 数据集 上评估了 VGGT 在 两视图图像匹配任务的性能,
两视图图像匹配是计算机视觉中的一个经典问题,属于刚性点跟踪的特例(仅限于两个视图)。尽管 VGGT 并非专门针对此任务设计,但它仍可作为评估跟踪精度的基准。对每对图像提取匹配点,并使用这些匹配点估计本质矩阵(Essential Matrix),进而完成相机标定,即SVD得到相对相机姿态。
最终指标是相对pose精度,通过 AUC 衡量。尽管 VGGT 未针对两视图匹配任务进行专门训练,但其在 ScanNet 数据集 上的表现优于所有基线方法,取得了最高的精度。
5. Discussions
当前模型仅适用于常规视角图像,无法处理鱼眼或全景图像。并且当输入图像存在极端旋转时,重建性能会显著下降。然模型能够处理轻微的非刚性运动,但在显著非刚性变形(如大幅度的物体形变)场景中表现不佳。
改进方法
模型架构设计灵活,能够通过微调和最小限度的修改适应新的场景或任务。通过在目标数据集上微调模型,可以解决上述局限性,而无需对架构进行大规模修改。