论文阅读笔记——VGGT: Visual Geometry Grounded Transformer

VGGT 论文

输入是 N 个 RGB 图像 I i ∈ R 3 × H × W I_i\in\mathbb{R}^{3×H×W} Ii∈R3×H×W 的序列 ( I i ) i = 1 N (I_i)^N_{i=1} (Ii)i=1N,观察相同 3D 场景。

VGGT 的 Transformer 是一个映射函数,将此序列映射为一组对应的 3D 标注, f ( ( I i ) i = 1 N ) = ( g i , D i , P i , T i ) i = 1 N f\left((I_i)^N_{i=1}\right)=(g_i,D_i,P_i,T_i)^N_{i=1} f((Ii)i=1N)=(gi,Di,Pi,Ti)i=1N 。将每个图像 I i I_i Ii 映射到其相机参数 g ∈ R 9 g\in\mathbb{R}^9 g∈R9 (内参和外参)、深度图、点图和用于跟踪的 C 维特征网格。

  • 相机参数 g = [ q , t , f ] g=[q,t,f] g=[q,t,f] 采用旋转四元数( q ∈ R 4 q\in\mathbb{R}^4 q∈R4)、平移量( t ∈ R 3 t\in\mathbb{R}^3 t∈R3)和视场( f ∈ R 2 f\in\mathbb{R}^2 f∈R2)的串联。
  • 深度图将每个像素位置 y ∈ I ( I i ) y\in\mathcal{I}(I_i) y∈I(Ii) 与其对应深度值 D i ( y ) ∈ R + D_i(y)\in\mathbb{R}^+ Di(y)∈R+ 相关联;
  • 点图将每个像素与其对应的 3D 场景点相关联;
  • 关键点跟踪遵循 track-any-point,给定查询图像 I q I_q Iq 中一个固定的查询像素点 y q y_q yq,网格输出一个由所有图像 I i I_i Ii 中对应的二维点形成的轨迹 T ( y q ) = ( y i ) i = 1 N \mathcal{T}(y_q)=(y_i)^N_{i=1} T(yq)=(yi)i=1N。(此处指轨迹特征)
    预测顺序 :图像在输入序列中的顺序是任意的,除了选择第一个图像作为参考帧。网络架构设计为除第一帧之外的所有帧都是置换不变(permutation equivariant) 的。

    交替注意力:逐帧自注意力分别关注每帧中的 token t k I t_k^I tkI ,全局自注意力共同关注所有帧中的 token t I t^I tI 。这在集成不同图像中的信息与规范化每个图像中token的激活之间取得了平衡。默认情况下,采用 L = 24 层全局和框架级注意力。
    对每张输入图像进行token增强,添加相机 token t i g ∈ R 1 × C ′ t_i^g\in\mathbb{R}^{1×C'} tig∈R1×C′和4个 register tokens t i R ∈ R 4 × C ′ t_i^R\in\mathbb{R}^{4×C'} tiR∈R4×C′ 来增强对应的图像标记 t i I t_i^I tiI。第一帧的相机 token 和寄存器 token 被设置与所有其他帧的不同的可学习的 token。(即第一帧独立学习,其他帧共享可学习参数------让模型知道第一帧作为基准,其他为相对于第一帧的变换)然后通过两个预测头分别输出相机参数和密集预测结果(包括深度图、点云图和跟踪特征)。相机预测头通过4层自注意力网络估计相机内参和外参,而密集预测头则采用DPT层和3×3卷积生成深度图、点云图及其不确定性。跟踪模块基于CoTracker2架构,通过特征相关和自注意力机制实现跨视图的点对应追踪,且不依赖于时序信息,可处理任意图像集合。 L = L c a m e r a + L d e p t h + L p m a p + λ L t r a c k ( λ = 0.05 ) L=L_{camera}+L_{depth}+L_{pmap}+λL_{track}(λ=0.05) L=Lcamera+Ldepth+Lpmap+λLtrack(λ=0.05) 其中 L c a m e r a , L d e p t h , L p m a p L_{camera},L_{depth},L_{pmap} Lcamera,Ldepth,Lpmap 的系数根据实验量级相近,认为无需加权。
  • L c a m e r a L_{camera} Lcamera 采用 Huber 损失: L c a m e r a = ∑ i = 1 N ∣ ∣ g i ^ − g i ∣ ∣ L_{camera}=\sum_{i=1}^N||\hat{g_i}-g_i|| Lcamera=∑i=1N∣∣gi^−gi∣∣;
  • L d e p t h L_{depth} Ldepth 是基于 DUSt3R 的不确定加权深度回归,并额外引入梯度约束: L d e p t h = ∑ i = 1 N ( ∣ ∣ ∑ D i ⊙ ( D i ^ − D i ) ∣ ∣ + ∣ ∣ ∑ D i ⊙ ( ∇ D i ^ − ∇ D i ) ∣ ∣ − α log ⁡ ∑ D i ) L_{depth}=\sum_{i=1}^N(||\sum_D^i\odot(\hat{D_i}-D_i)||+||\sum_D^i\odot(\nabla\hat{D_i}-\nabla D_i)||-\alpha\log\sum_D^i) Ldepth=∑i=1N(∣∣∑Di⊙(Di^−Di)∣∣+∣∣∑Di⊙(∇Di^−∇Di)∣∣−αlog∑Di);
  • L t r a c k = ∑ j = 1 M ∑ i = 1 N ∣ ∣ y j , i − y j , i ^ ∣ ∣ L_{track}=\sum_{j=1}^M\sum_{i=1}^N||y_{j,i}-\hat{y_{j,i}}|| Ltrack=∑j=1M∑i=1N∣∣yj,i−yj,i^∣∣
    真值坐标归一化 :如果我们缩放场景或更改其全局参考系,场景的图像完全不会受到影响,这意味着任何此类变体都是 3D 重建的合法结果。我们通过对数据进行归一化来消除这种歧义,从而做出规范的选择并让 transformer 输出这个特定的变体。首先在第一台相机 g1 的坐标系中表示所有量。然后,我们计算点图 P 中所有 3D 点到原点的平均欧几里得距离,并使用此比例对相机平移 t 、点图 P 和深度图 D 进行归一化。重要的是,不会 将这种归一化应用于 transformer 输出的预测;相反,我们强制它学习我们从训练数据中选择的归一化。
    实现细节 :默认情况下,我们分别采用 L = 24 层全局和框架注意力。该模型总共包含大约 12 亿个参数 。我们通过使用 AdamW 优化器优化 160K 迭代的训练损失 (2) 来训练模型。我们使用一个余弦学习率调度器,峰值学习率为 0.0002,预热为 8K 次迭代。对于每个批次,从随机训练场景中随机采样 2-24 帧。输入帧、深度图和点图的大小将调整为最大尺寸为 518 像素。纵横比在 0.33 和 1.0 之间随机化。我们还对帧随机应用颜色抖动、高斯模糊和灰度增强。训练在 64 个 A100 GPU 上运行,为期 9 天。我们采用阈值为 1.0 的梯度范数裁剪来确保训练稳定性。利用 bfloat16 精度和梯度检查点来提高 GPU 内存和计算效率。

实验结果



相关推荐
霜绛44 分钟前
机器学习笔记(三)——决策树、随机森林
人工智能·笔记·学习·决策树·随机森林·机器学习
charlie1145141914 小时前
快速入门Socket编程——封装一套便捷的Socket编程——导论
linux·网络·笔记·面试·网络编程·socket
xiaoli23275 小时前
课题学习笔记2——中华心法问答系统
笔记·学习
就改了5 小时前
FastDFS如何提供HTTP访问电子影像文件
笔记
CarmenHu6 小时前
Word2Vec和Doc2Vec学习笔记
笔记·学习·word2vec
门前云梦6 小时前
ollama+open-webui本地部署自己的模型到d盘+两种open-webui部署方式(详细步骤+大量贴图)
前端·经验分享·笔记·语言模型·node.js·github·pip
骁的小小站6 小时前
The Missing Semester of Your CS Education 学习笔记以及一些拓展知识(六)
linux·经验分享·笔记·学习·bash
Fine姐6 小时前
口语01-don‘t judge a book by its cover
笔记
莫彩7 小时前
【大模型论文阅读】2503.01821_On the Power of Context-Enhanced Learning in LLMs
论文阅读·人工智能·语言模型
王上上8 小时前
【论文阅读51】-CNN-LSTM-安全系数和失效概率预测
论文阅读·cnn·lstm