FastVGGT: Fast Visual Geometry Transformer¶
会议: ICLR 2026
OpenReview: https://openreview.net/forum?id=asl8NJlIMe
代码: https://mystorm16.github.io/fastvggt/
领域: 3D 视觉 / 前馈式 3D 重建
关键词: VGGT, 前馈 3D 重建, Token Merging, Global Attention, 长序列加速, 训练无关
一句话总结¶
针对前馈 3D 重建大模型 VGGT 的全局注意力瓶颈,本文发现其 token 注意力图高度同质化("token collapse"),据此提出一套训练无关、面向 3D 多视图的三分区 token 合并策略,在 1000 张图输入下实现 4× 加速并同时抑制长序列误差累积。
研究背景与动机¶
领域现状:以 DUSt3R、VGGT 为代表的前馈式 3D 重建把传统迭代优化管线换成端到端 Transformer,直接从原始图像回归相机参数、深度图、点图和 2D 轨迹。VGGT(1.2B 参数)凭借交替的"帧内注意力(Frame Attention)+ 跨帧全局注意力(Global Attention)"两段式结构成为当前 SOTA。
现有痛点:VGGT 的可扩展性被两件事卡死。其一,全局注意力要在所有视图的 token 上做密集交互,即便 Flash-Attention 把显存复杂度从 \(O(n^2)\) 降到 \(O(nd)\),时间复杂度仍是 \(O(n^2d)\),随帧数平方膨胀;组件分析显示,帧数从 20 涨到 200 时,Global Attention 从与 Frame Attention 相当一路膨胀到吃掉绝大部分推理时间。其二,token 空间随帧数扩张,微小误差在全局注意力里被不断放大,导致长序列预测漂移(drift)。此外原版 VGGT 处理 300 帧以上就直接 OOM。
核心矛盾:全局注意力对捕捉跨帧关系不可或缺,但它既是速度瓶颈又是误差累积的源头——如何在不损害 VGGT 重建能力的前提下削掉这部分冗余计算?
核心 idea:作者可视化全局注意力图后发现,不同 token 的注意力模式高度相似(feature degradation / token collapse),意味着全局计算存在大量冗余。【训练无关的 token 合并】 把冗余 token 并掉就能加速;但 【面向 3D 的定制分区】 是关键——2D token merging 直接套到 VGGT 上会严重掉点(ToMeSD 合并比超 0.3 就崩),因为 3D 重建依赖跨视图对应关系。本文据此设计了保留参考帧、保护显著 token、区域均匀采样的三分区策略,使 VGGT 在 0.9 这种激进合并比下仍保持基线精度。
方法详解¶
整体框架¶
FastVGGT 是套在 VGGT 之上的训练无关推理框架,只改造全局注意力的输入 token 集合,VGGT 权重原封不动。流水线在每个全局注意力块前做"分区→合并→注意力→反合并":先把所有帧的 token 切成显著(salient)、目标(dst)、源(src)三类,把 src 合进最相似的 dst 以缩短注意力序列,算完全局注意力后再反合并恢复原始 token 数,交给后续帧内注意力和稠密预测头。
graph LR
A[多帧 Tokenization] --> B[Step1: 首帧 token 全设为 Dst<br/>作为全局参考系]
B --> C[Step2: 保留 Top 显著 token<br/>维护跨视图对应]
C --> D[Step3: 区域随机采样<br/>帧内均匀分 Dst/Src]
D --> E[Step4: Src 融入最近 Dst<br/>缩短全局注意力序列]
E --> F[G-Attn 全局注意力]
F --> G[Step5: Unmerge 反合并<br/>恢复稠密 token]
G --> H[F-Attn 帧内注意力 + 预测头]
关键设计¶
1. 参考帧 token 选择:用首帧锚定世界坐标系,免于被合并。 VGGT 把第一帧定义为世界坐标系,所有 token 都相对它注册,补充可视化也显示各 token 对首帧的激活始终强于其他帧,说明它在引导场景级表示上是核心锚点。因此作者把首帧的全部 token 一律设为高优先级 dst token、不参与被合并,从而保住整个序列的空间一致性——这是抑制长序列漂移的关键一步,也是消融里贡献最大的设计。
2. 显著 token 保护:把"跨视图关键点"摘出来直通注意力。 3D 重建靠跨帧 token 交互建立对应关系,少数关键 token 就像传统匹配算法里的特征点,一旦被平均掉就会破坏几何对应。作者在常规的 dst/src 二分之外引入第三类 salient token,让它们绕过合并、直接参与注意力。选取上先试了基于 token 范数(norm)的 top-k 度量显著性,但其开销随序列变长而增;最终改用固定步长采样、每帧保留 10% 作为 salient token,实验证明精度与 top-k 相当却便宜得多。有意思的是,top-k 在浅层能精准抓语义区域但深层会过度集中,固定步长虽不那么精准却始终保持均匀空间分布。
3. 区域均匀采样:按图像网格分区,避免局部过度压缩。 稠密预测最怕某块区域被整体合没了,所以作者借鉴扩散模型里的 ToMeSD,把每帧 token 排成 2D 图像 patch 网格,在每个网格单元内按合并比、以步长 \(K\) 采出 dst token,其余作 src。这种区域级随机采样保证了帧内空间均衡的合并,避免出现大片区域消失的伪影,让重建场景保持全局结构稳定。
4. 合并/反合并:余弦相似度匹配 + 复制还原。 分区后,对每个源 token \(x_s\) 与所有 dst token 计算余弦相似度 \(\text{sim}(x_s, x_d)=\frac{x_s\cdot x_d}{\lVert x_s\rVert\lVert x_d\rVert}\),把它并入最相似的 \(x_d\) 并按 \(x_d' = \frac{x_d + x_s}{2}\) 更新,\(x_s\) 暂时丢弃以缩短注意力序列。由于稠密 3D 重建需要逐 token 输出,全局注意力算完后做反合并:把合并表示 \(x^*_{1,2}=\frac{x_1+x_2}{2}\) 复制回原位 \(x_1'=x_2'=x^*_{1,2}\) 恢复原始序列长度,与 VGGT 架构完全兼容。配套的 VGGT* 显存优化只保留第 4/11/17/23 层的中间输出(VGGT 推理只需这四层),丢弃其余 24 块的缓存,把可处理帧数从约 300 撑到 1000+。
实验关键数据¶
主实验表格¶
ScanNet-50 点云重建(CD = Chamfer Distance,越低越好;合并比固定 0.9):
| 方法 | 1000 帧 CD / 时间 | 500 帧 CD / 时间 | 300 帧 CD / 时间 | 100 帧 CD / 时间 |
|---|---|---|---|---|
| π³ | OOM | OOM | OOM | OOM |
| StreamVGGT | OOM | OOM | OOM | OOM |
| Fast3R | 0.684 / 397.8s | 0.701 / 97.3s | 0.711 / 34.9s | 0.723 / 4.8s |
| CUT3R | 0.786 / 34.8s | 0.774 / 18.8s | 0.775 / 11.1s | 0.767 / 3.6s |
| VGGT*(基线) | 0.471 / 724.6s | 0.420 / 177.5s | 0.416 / 131.4s | 0.423 / 9.1s |
| FastVGGT | 0.425 / 180.7s | 0.411 / 55.2s | 0.416 / 23.8s | 0.426 / 5.4s |
1000 帧时相对 VGGT* 加速 4×(724.6s→180.7s),且 CD 反而从 0.471 降到 0.425——长序列下不仅没掉点,还抑制了误差累积。相机位姿估计同样:1000 帧 ATE 从 0.196 降到 0.164、ARE 从 4.636 降到 3.860,长序列漂移被显著压制;短序列(100/300 帧)与基线持平。
消融实验表格¶
Token 分区策略消融(500 帧 ScanNet-50,逐项累加):
| 配置 | 说明 | 效果 |
|---|---|---|
| (a) 随机采样选 dst/src | 直接套 2D 做法 | 最差 |
| (b) + 区域内均匀采样 | 帧内均衡 | 改善但次优 |
| (c) + 首帧设为 dst | 锚定参考系 | 大幅提升 |
| (d) + 保护 salient token | 完整 FastVGGT | 最佳 |
合并位置与强度(Table 8):合并比越大推理越快、CD 仅小幅波动,最终采用"从 block 0 起全层 90% 合并比"的激进策略。显著 token 选择(Table 6):固定步长 10% 采样在精度上与 TopK-15% 相当(500 帧 CD 0.423 vs 0.421)但更快。
关键发现¶
- Token collapse 量化:六个代表 token 在多数全局注意力块上的平均成对余弦相似度很高,仅 Block 1、14 附近明显下降——即便在相似度较低的层施加 0.9 合并比也几乎不掉点。
- 把 2D 的 ToMe-R / ToMe-S / PiToMe 直接搬到 VGGT,在 0.3 合并比下 CD 就从基线 0.416 恶化到 0.45~0.63,证明 3D 场景必须定制分区。
- 2D token merging 的省显存机制在 VGGT 帧内注意力上不成立(帧内无明显 token 相似性,且交替结构要求反合并),故 FastVGGT 省的是时间而非靠合并省显存,显存优化由 VGGT* 单独负责。
亮点与洞察¶
- "诊断 → 归因 → 对症"的研究范式干净利落:先做组件级耗时剖析定位 Global Attention,再用注意力图可视化挖出 token collapse,最后才提合并方案,论证链条完整有说服力。
- 把 DINO 系的"feature degradation"迁移解释到 VGGT 是漂亮的洞察:在 DINO 里 token 向 CLS 塌缩是坏事(损害稠密预测),但在 VGGT 的两段式结构里,全局注意力的塌缩可被解读为"全局语义的有意蒸馏",帧内注意力再补回局部差异——同一现象在不同架构里"既是缺陷又是冗余可利用点"。
- 训练无关、即插即用:不动 VGGT 任何权重,工程落地成本极低,且越长序列收益越大(短序列持平、长序列又快又准)。
局限与展望¶
- 方法本质是利用 VGGT 全局注意力的特定冗余结构,是否能推广到无明显 token collapse 的其他前馈 3D 模型(如 π³、CUT3R)未验证,通用性存疑。
- 合并比 0.9、salient 10%、步长等关键超参基本靠经验固定,缺乏自适应机制;不同数据集/场景密度下最优配置可能不同。
- 反合并采用简单复制还原,被合并 token 的细粒度信息其实已丢失,对极端细节敏感任务(如细小结构重建)潜在精度上限受限。
- 评测集中在室内 ScanNet/7Scenes/NRGBD,室外、动态场景、大基线场景下的鲁棒性未充分检验。
相关工作与启发¶
- 前馈 3D 重建:DUSt3R 开端到端直接回归点图之先河,VGGT 扩展到 1.2B 参数联合预测相机/深度/点图/轨迹;VGGT-Long 用子图对齐抑制漂移但牺牲速度,本文则通过减少全局注意力 token 数同时拿到速度与精度。
- Token Merging:ToMe 系列(含 ToMeSD 的区域随机采样)、PiToMe(能量分数判据)是 2D ViT/扩散模型的训练无关加速主线;本文把其"src/dst 划分 + 反合并"范式迁移到 3D 多视图,并指出 2D 方法直接迁移的失效点。
- 注意力近似:Nyströmformer、Performer 用 landmark/随机特征做线性注意力,是另一条正交的提速路线。
- 启发:对任何"长序列 + 全局注意力"的大模型,先做注意力冗余诊断、再按任务结构定制 token 缩减,比盲目套用通用稀疏化更稳;"同一退化现象在不同架构里要重新评估是好是坏"这一视角值得推广。
评分¶
- 新颖性: ⭐⭐⭐⭐ — token collapse 的诊断洞察 + 面向 3D 多视图的三分区合并策略组合新颖,把 2D token merging 成功适配到前馈 3D 重建并指出直接迁移的失效原因。
- 实验充分度: ⭐⭐⭐⭐ — 覆盖 ScanNet/7Scenes/NRGBD 三数据集、重建与位姿两任务、100~1000 帧多尺度,消融逐项拆解分区策略,并有 token collapse 量化分析;室外/动态场景缺位。
- 写作质量: ⭐⭐⭐⭐ — 诊断—归因—方法的叙事清晰,图表(组件耗时、注意力图、五步流水线)支撑有力,DINO 类比讲得透。
- 价值: ⭐⭐⭐⭐ — 训练无关、即插即用、长序列 4× 加速且抑制漂移,对 VGGT 类前馈 3D 重建的实际部署有直接落地价值。