VGGT-Prime: Compute-Adaptive Mixture-of-Heads for Efficient Visual Geometry Transformers
Abteen Arab, Guile Wu, Chengjie Huang, Dongfeng Bai
cs.CV
2026-09-21
华为Noah分析VGGT的384个全局注意力头后,按显著度把每个头分到均值池化、代理注意力或完整softmax。1000帧相对加速8倍,叠token merging可达14倍。
前馈视觉几何模型 VGGT 能从多视角图像一次前向就吐出相机位姿、深度和点云。它靠全局注意力把所有视角的 token 捏在一起,代价是计算量随视角数二次增长。序列一长,延迟就不好看。
现有加速几乎都在砍 token:FastVGGT 做 token merging,SparseVGGT 稀疏化 KV,HTTM 按头做时序合并。它们处理的是「token 冗余」,没问过另一件事:24 层、每层 16 头、一共 384 个全局注意力头,是不是都在干活。
华为 Noah 用最大积分梯度(MIG)和最大 softmax 注意力(MaxAttn)给每个头打显著度。两套排名的 Spearman 相关 ρ=0.741。按显著度从低到高剪头,前期几乎不掉点,剪到高显著度头才崩。显著度大致分成三段:高(约 rank 1–100)、中(101–250)、低(251–384)。
注意力图把这三段说清楚了。低显著度头熵高、查询多样性低,图样接近均值池化。中等头有点选择性,但不同 query 的图差不多。高显著度头熵低、query 差异大,对应跨视角匹配,必须留完整 softmax。
VGGT-Prime 给每个头接一个轻量路由器。先用注意力池化把该头的 query 压成一个向量,再对所有 key 做单 query 注意力,取最大值当显著度 sh。阈值 τlow=0.01、τhigh=0.20 在 CO3Dv2 验证集上定死,之后所有数据集共用。
训练是两阶段蒸馏:先让路由器和代理头对齐冻结 VGGT teacher 的隐变量,再软路由微调,均值池化分支最后直接接上、不再训练。
主表报点云 Chamfer、位姿、深度和墙钟时间。ScanNet-500 上 VGGT 用 90.1 秒、CD 0.442,Prime 19.2 秒、CD 0.441,大约 4.7 倍。稠密 7-Scenes(stride 3)两边 CD 都是 0.115,时间从 38.1 秒降到 9.8 秒,3.9 倍。ETH3D 上 Prime 的 CD 是 0.99,VGGT 是 1.07。
| 设置 | VGGT | Prime |
| ScanNet-500 CD / 秒 | 0.442 / 90.1 | 0.441 / 19.2 |
| 7-Scenes 稠密 CD / 秒 | 0.115 / 38.1 | 0.115 / 9.8 |
| 7-Scenes AUC@30° | 79.8 | 78.6 |
| CO3Dv2 RTA | 97.3 | 99.2 |
| Sintel AbsRel | 0.592 | 0.524 |
1000 帧长序列上,相对 MapAnything 那条加速过的 VGGT 变体,摘要给出 8 倍。再叠 FastVGGT 的 token merging,75% 合并约 11 倍,90% 接近 14 倍。Prime 还能接到 VGGT-Ω、π³、Depth Anything 3 的全局注意力块上,稀疏 7-Scenes 大约 2 倍加速。
消融很难看:去掉残差修正,CO3Dv2 上 AUC@30 从 87.2 掉到 42.6;二值 keep-or-drop 把 7-Scenes CD 从 0.115 打到 0.581。线性注意力替代理头也更慢更差。
这是一条跟 token 压缩正交的加速轴。已经在用 FastVGGT 的人可以直接叠。做前馈重建、又要吃上百到上千帧的,优先看这篇,而不是再堆一层稀疏注意力。路由器本身很轻,真正省下来的是绝大多数头上的二次 softmax。
它是工程向的渐进改进,不是新的几何表示。质量大体贴着 VGGT,个别指标(ETH3D CD、Sintel 深度、CO3Dv2 RTA)还略好,位姿 AUC 有一点点退。
8 倍这个数字对比的是 Keetha 等人加速过的 VGGT,不是原版朴素实现,读表格时要看清。HTTM 和 HeSS 是论文自己的 PyTorch 复现,不一定代表官方实现。阈值钉在 CO3Dv2 上,跨数据集附录说分布稳定,但没把阈值搜索做成自适应。蒸馏要冻结 teacher、分阶段训练,不是训练免费。低显著度头直接均值池化,极端纹理或重复结构场景有没有被悄悄伤害,主表看不太出来。