当前位置: 首页 > news >正文

【VGGT】统一3D重建:单网络同时预测相机位姿、深度图、点云与3D轨迹的前馈Transformer架构深度解析

摘要

VGGT(Visual Geometry Grounded Transformer)是Meta Research提出的1.2B参数前馈Transformer,能在1秒内从1~100+张图像中同时推断相机参数、点云图、深度图和3D点轨迹。通过Alternating Attention机制(帧内与全局自注意力交替)替代传统Cross-Attention,在相机估计、多视图深度、稠密重建和3D跟踪四项任务上均达到SOTA,且无需迭代优化。论文发表于CVPR 2025。


论文:VGGT: Visual Geometry Grounded Transformer
代码:facebookresearch/vggt


一、问题背景

传统3D重建管线(SfM/MVS)依赖多阶段流水线:特征匹配→ \rightarrow相机标定→ \rightarrow稠密重建→ \rightarrow后处理。每个阶段独立优化,误差层层累积。近期DUSt3R/MASt3R等方法虽用神经网络替代部分模块,但仍需后端全局对齐(BA),且无法同时输出跟踪信息。

VGGT的核心动机:能否用一个前馈网络,一次性输出所有3D几何属性?

关键挑战:

  • 相机位姿需要全局一致性(跨帧信息)
  • 深度/点云需要局部精细度(帧内信息)
  • 3D跟踪需要时序对应关系
  • 这三类输出的supervision信号来源不同,联合训练可能冲突

二、核心方法

2.1 整体框架

图 1:VGGT系统架构。重点看中间的Alternating Attention模块(红色高亮)——帧内与全局自注意力交替24层,不使用Cross-Attention。来源:重绘自 design skill

输入N张RGB图像,经DINOv2 Patchification编码为token序列后,送入24层Alternating Attention Block提取特征,最终由三个并行预测头分别输出相机参数、稠密几何和3D轨迹。

N RGB Images

DINOv2 Patchify

24x AA Blocks

Camera Head

DPT Dense Head

Tracking Module

9D Pose

Depth + Points

3D Tracks

2.2 Alternating Attention(AA)机制

AA是VGGT区别于DUSt3R系列的核心设计。每一层交替执行:

  1. Frame-wise Self-Attention:每帧token独立做自注意力,建立帧内空间关系
  2. Global Self-Attention:所有帧的token拼在一起做自注意力,建立跨帧对应关系

Layer 2 k : X = SA frame ( X ) (帧内) \text{Layer}_{2k}: \quad \mathbf{X} = \text{SA}_{\text{frame}}(\mathbf{X}) \quad \text{(帧内)}Layer2k:X=SAframe(X)(帧内)

Layer 2 k + 1 : X = SA global ( X ) (全局) \text{Layer}_{2k+1}: \quad \mathbf{X} = \text{SA}_{\text{global}}(\mathbf{X}) \quad \text{(全局)}Layer2k+1:X=SAglobal(X)(全局)

网络配置:1024维特征、16个注意力头、24层。

为什么不用Cross-Attention?消融实验(ETH3D Overall Error):

  • Alternating Attention:0.709
  • Global SA only: 0.827
  • Cross-Attention: 1.061

AA的优势在于:帧内层维护局部精度(深度细节),全局层建立对应关系(相机一致性),两者交替互补。Cross-Attention则在帧对过多时计算量爆炸,且缺乏帧内自身结构建模。

2.3 预测头设计

Camera Head:在AA输出上追加4层自注意力 + 线性层,输出9D参数:

g i = [ q i ∈ R 4 , t i ∈ R 3 , f i ∈ R 2 ] \mathbf{g}_i = \left[\mathbf{q}_i \in \mathbb{R}^4,\; \mathbf{t}_i \in \mathbb{R}^3,\; \mathbf{f}_i \in \mathbb{R}^2\right]gi=[qiR4,tiR3,fiR2]

其中q \mathbf{q}q为四元数旋转、t \mathbf{t}t为平移、f \mathbf{f}f为2D焦距。第一帧强制为单位变换(世界坐标系参考)。

DPT Dense Head:DPT上采样将patch-level token恢复到像素级分辨率,3x3卷积输出深度图D i D_iDi、点云图P i ∈ R 3 × H × W P_i \in \mathbb{R}^{3 \times H \times W}PiR3×H×W(世界坐标系)、跟踪特征T i T_iTi

Tracking Module:基于CoTracker2架构,以跟踪特征T i T_iTi为输入,预测稠密3D点轨迹。

2.4 多任务联合训练

图 2:多任务训练策略。重点看消融结果——camera loss对点云估计贡献最大(去掉后error从0.709升到0.834)。来源:重绘自 design skill

总Loss:

L = L camera + L depth + L pmap + 0.05 ⋅ L track \mathcal{L} = \mathcal{L}_{\text{camera}} + \mathcal{L}_{\text{depth}} + \mathcal{L}_{\text{pmap}} + 0.05 \cdot \mathcal{L}_{\text{track}}L=Lcamera+Ldepth+Lpmap+0.05Ltrack

各分项:

  • L camera \mathcal{L}_{\text{camera}}Lcamera:Huber范数,预测与GT相机参数距离
  • L depth \mathcal{L}_{\text{depth}}Ldepth:不确定性加权差异 + 梯度平滑项
  • L pmap \mathcal{L}_{\text{pmap}}Lpmap:类似depth的不确定性损失,作用于3D点坐标
  • L track \mathcal{L}_{\text{track}}Ltrack:L2对应距离 + 可见性BCE

Over-complete Supervision的哲学:深度+相机位姿数学上已能推导点云,但同时监督三者反而提升所有输出质量。这打破了"去掉冗余supervision"的直觉。

训练配置:160K迭代、64张A100、9天、bfloat16精度、梯度裁剪阈值1.0。

三、实验分析

3.1 相机位姿估计

方法Re10K AUC@30CO3Dv2 AUC@30时间
DUSt3R67.776.7~9s
MASt3R76.481.8~7s
VGGSfM78.983.4~10s
VGGT (FF)85.388.2~0.2s
VGGT + BA93.591.8~1.8s

前馈VGGT无需BA已超越所有需要后端优化的方法,加BA后进一步拉开差距。

3.2 多视图深度估计(DTU)

方法Chamfer距离相机来源
GeoMVSNet0.295GT cameras
DUSt3R1.741自估计
VGGT0.382自估计

VGGT用自估计相机即接近使用GT相机的传统MVS方法。

3.3 点云重建(ETH3D)

方法Overall Error时间
DUSt3R1.005~9s
MASt3R0.826~7s
VGGT0.677~0.2s

3.4 3D点跟踪(TAP-Vid)

作为特征骨干,VGGT提取的tracking features显著提升CoTracker基线:

骨干Kinetics AJDAVIS OA
CoTracker baseline49.688.3
CoTracker + VGGT57.291.4

3.5 运行时性能

帧数推理时间显存
100.14s3.63GB
501.08s10.90GB
1003.12s21.15GB
2008.75s40.63GB

四、关键设计决策分析

4.1 为什么选择Alternating Attention而非Cross-Attention?

Cross-Attention的问题:

  • 计算复杂度O ( N 2 ⋅ L 2 ) O(N^2 \cdot L^2)O(N2L2)(N帧、L token/帧),帧数多时爆炸
  • 需要显式定义query来源,隐含假设帧间关系方向
  • 无法同时建模帧内空间结构

AA的设计哲学:让网络自己学习何时关注局部、何时关注全局。帧内层O ( N ⋅ L 2 ) O(N \cdot L^2)O(NL2),全局层O ( ( N L ) 2 ) O((NL)^2)O((NL)2)但可通过flash attention优化。

4.2 数据归一化策略

GT点云按平均欧氏距离归一化后再监督。模型学习预测归一化后的坐标,推理时需要尺度恢复。这避免了不同场景尺度差异导致的梯度不平衡。

4.3 Permutation Equivariance

除第一帧(参考帧)外,架构对其余帧排列等变。这意味着打乱输入帧顺序不影响输出(除了点云坐标系定义)。

小结

VGGT的核心贡献是证明了单个前馈网络可以同时高质量解决多个3D视觉任务,且速度比优化方法快1~2个数量级。

创新点

  1. Alternating Attention替代Cross-Attention,兼顾帧内精度和跨帧一致性
  2. Over-complete supervision——冗余监督反而提升所有输出
  3. 统一架构处理1~100+帧,无需区分双视图和多视图场景

局限性

  • 不支持鱼眼/全景相机
  • 极端旋转(>90度)性能下降
  • 大幅非刚性形变场景失效
  • 显存随帧数线性增长,200帧需40GB

个人判断:VGGT代表了3D视觉从"流水线组合"向"端到端统一"的范式转变。AA机制的成功暗示Cross-Attention在多视图几何中可能被高估——简单的"看自己→看全部"交替就足够。但40GB@200帧的显存需求限制了实际部署,工程化落地仍需蒸馏或分块推理。对VIO系统的启示:VGGT的tracking feature可直接作为前端特征提取器,其跨帧attention可能替代传统光流匹配。

http://www.zskr.cn/news/1490312.html

相关文章:

  • Windows 10下PyInstaller打包闪退?别慌,可能是Tcl/Tk环境变量在捣鬼(附详细排查步骤)
  • 2026年退火铁板实测评测:山东小草彩钢卷/山东小草彩钢扳/山东小草板/山东小草钢卷/山东彩涂卷/山东彩涂板/山东彩涂钢卷/选择指南 - 优质品牌商家
  • 告别串口打印:用SEGGER RTT高效调试GSensor浮点数据的实战记录
  • 实战:用GD32F303片内FLASH实现产品参数存储与OTA升级备份区
  • AMD GPU本地大模型部署:Ollama-for-amd技术突破与实战指南
  • 2026年乐平管道疏通实力对比 5家靠谱服务四维度横评 - 本地品牌推荐
  • 深入SM4算法核心:用C语言手动实现S盒与轮函数(附性能对比与优化思路)
  • Proteus仿真避坑指南:手把手教你搞定DS18B20单总线通信时序(附完整代码)
  • CUDA 11.1 安装避坑实录:手把手解决Nsight Compute失败与VS版本报错
  • 基于OpenPose的实时跌倒与异常动作检测系统(含可直接运行的Python工程+训练模型+测试视频)
  • 终极指南:3分钟将Figma设计转换为结构化JSON数据,让设计与代码无缝衔接
  • 不只是烧录:深入聊聊英飞凌UAD2pro调试器与UDE Memtool的通信协议(JTAG/DAP实战对比)
  • Python驱动AutoCAD的终极革命:如何用pyautocad实现工程设计的智能跃迁
  • 江苏高定木作口碑实测分享
  • 从零到实盘:手把手教你用Python和掘金量化SDK跑通第一个策略(附Anaconda环境配置避坑指南)
  • 别再死记硬背模板了!深入理解Dijkstra算法:从朴素版到堆优化版的性能对比与选择指南
  • 别再只依赖自动注释了!一份给单细胞新手的Marker基因筛选与验证避坑指南
  • 高考报名那张照片,是怎么被系统”认出来”的
  • 别再被PyCharm的Non-zero exit code (2)搞懵了!Python 3.6 + pip 21.3.1的专属避坑指南
  • 别再死磕源码编译了!用conda在Ubuntu 20.04上5分钟搞定PyTorch3D(附版本兼容表)
  • 别再死记硬背语法了!用OpenModelica 1.8.1手把手教你从物理方程到仿真模型
  • 异步电机矢量控制仿真:从理论公式到Simulink模块的“翻译”指南
  • 雷达目标检测避坑指南:恒虚警(CFAR)的窗长和保护间隔怎么调?实测数据说话
  • 2026免费抠图换背景详细教程:手机网页全覆盖,3种方法一看就会
  • 从MIT Cheetah 3的楼梯测试,聊聊足式机器人‘盲爬’背后的鲁棒性设计
  • 2026上半年车间标识牌设计公司排名与场景适配指南
  • 告别安装报错!Win7/Win10双系统下Qt 5.14.2完整安装与组件选择避坑指南
  • 不止于冗余:用锐捷VAC+BFD打造高可用无线网络,一份给运维工程师的配置清单
  • FIO参数太多看不懂?一张图帮你搞定磁盘性能测试,附送常用场景命令模板
  • 告别FreeRTOS?在STM32F103上体验微软ThreadX的极简内核与移植心得