跳转至

QVGGT: Post-Training Quantized Visual Geometry Grounded Transformer

会议: CVPR 2026
arXiv: 2605.31124
代码: https://ddsacu.github.io/QVGGT/ (项目主页)
领域: 模型压缩 / 3D视觉
关键词: 后训练量化, VGGT, 混合精度, 相机 token, 几何一致性

一句话总结

针对 1.26B 参数的前馈 3D 重建模型 VGGT,本文提出一套几何感知的后训练量化框架 QVGGT,用"逐块敏感度混合精度 + 相机 token 过滤补偿 + 任务感知尺度搜索"三步,在 W4A16 下做到几乎无损(CO3Dv2 相机位姿 AUC@30 89.4 vs FP16 89.5),同时内存降 3∼4.9×、最高 2.8× 硬件加速。

研究背景与动机

领域现状:从图像直接回归 3D 属性的前馈方法(DUSt3R、MASt3R)正在取代传统 SfM/MVS 的迭代优化流程。VGGT 是这条路线的集大成者:一次前向就能同时预测相机参数、深度图和点云图,把多视图 3D 感知统一进单个 transformer。

现有痛点:VGGT 有 12.6 亿参数,显存占用和算力需求很高,无法部署到无人机、移动 AR 这类边缘设备上。模型压缩里剪枝和蒸馏对现代硬件的实际加速有限,而量化能同时压缩体积和提速——但把量化用到大规模 3D 重建 transformer 上几乎是空白

核心矛盾:直接把 LLM/ViT 上成熟的 PTQ 方法(GPTQ、AWQ、SmoothQuant)搬到 VGGT 会严重掉点(AWQ 在 W4A16 下 CO3Dv2 AUC@30 从 89.5 崩到 54.6)。根因是 3D 几何 transformer 有它独特的结构:① 各 transformer block 对量化的敏感度高度不均;② 相机 token 和 register token 的激活幅值异常大,会主导量化尺度估计;③ 标准的逐层重建误差并不等价于下游 3D 几何质量。

本文目标 / 核心 idea:不把 VGGT 当成普通 transformer 一刀切量化,而是从几何感知的角度逐个拆解这三个结构特性——哪块脆弱就给哪块留高精度、把作怪的相机 token 从标定里剔除再补回它的几何信息、用多头任务损失+跨头几何一致性来选量化尺度,让量化目标对齐 3D 重建质量。

方法详解

整体框架

QVGGT 是一个三阶段的 weight-only 后训练量化流水线(本文聚焦权重量化、激活保持浮点,默认 W4A16、per-group)。输入是预训练好的 VGGT-1B 和一小批标定图像,输出是一个量化后、3D 预测头精度几乎无损的轻量模型。三个阶段层层递进:先做逐块敏感度分析决定哪些 block 用 FP16、哪些压到 INT4;再处理 calibration 阶段的相机/register token 异常激活,把它们过滤掉做尺度搜索、同时合成一个补偿 token 在推理时注回相机头;最后用任务感知的尺度搜索替换原本的逐层重建目标,把多头损失和跨头几何一致性纳入尺度选择。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    A["输入:预训练 VGGT-1B<br/>+ 标定图像"] --> B["选择性混合精度量化<br/>逐块敏感度→脆弱块留 FP16,其余 INT4"]
    B --> C["相机 token 过滤 + 信息补偿<br/>剔除高方差 token,PCA 合成 CICT 注回相机头"]
    C --> D["任务感知尺度搜索<br/>多头损失 + 几何一致性选尺度"]
    D --> E["输出:W4A16 量化模型<br/>3D 预测几乎无损"]

关键设计

1. 选择性混合精度量化:脆弱的块单独留高精度

作者先做了一个细粒度的逐块敏感度分析:单独量化某一个 Alternating-Attention(AA)block,观察它对下游各预测头的精度冲击。结论很反直觉——相机头对块精度的依赖最强也最不稳定,某些块一旦量化会让相机位姿误差暴涨,而深度头和点云头相对稳健。进一步分析线性层粒度发现,attention projection 层敏感度最低、FFN 第一层最高。基于这套敏感度排序,作者把第 14、17、23 个 frame block 和第 23 个 global block 判定为脆弱块,对它们只量化 attention projection 层、其余层保持 FP16;其余健壮的块整体做 INT4 量化。这样既最大化压缩率,又把量化误差挡在最敏感的那几块之外,而不是对全部 AA block 一刀切(一刀切会让 CO3Dv2 AUC@30 直接崩到 54.57)。

2. 相机 token 过滤 + 信息补偿(CIC):把作怪的异常 token 请出标定、再把它的几何信息请回来

敏感度分析暴露了相机头特别脆弱,作者顺藤摸瓜可视化激活,发现罪魁是相机 token(相机头的唯一输入)和 register token:它们在多个敏感层里的激活幅值远超 image token,后者紧凑地聚在均值附近。问题在于激活感知量化的尺度 \(s\) 是按激活分布优化的,目标是最小化 \(\mathcal{L}(s)=\lVert Q(W\operatorname{diag}(s))\operatorname{diag}(s)^{-1}X-WX\rVert\),其中 \(X=[t_C;t_R;t_I]\) 拼接了相机、register、image 三类 token。当相机/register token 幅值畸大,优化就被这一小撮极端激活"绑架",尺度向它们倾斜、其余通道量化分辨率被拉粗,整体量化误差被放大。

解法分两步。过滤:标定阶段只用 image token 统计激活、做尺度搜索,让最优 \(s^*\) 反映多数 token 的真实动态范围,不被少数极端值拖偏。补偿(CICT):直接剔除相机 token 会丢掉相机头依赖的全局几何线索,所以作者从标定集的相机 token 分布里合成一个补偿 token。具体是对中心化后的相机 token 矩阵 \(X_c\) 取 top-\(K\) 主成分 \(U_K\),把每个样本投影 \(z^{(i)}=U_K^\top(x_c^{(i)}-\mu)\),取均值投影 \(\bar z\) 重建 \(\tilde x_{\text{CICT}}=\mu+U_K\bar z\),再把它的范数归一化到 patch token 的平均 L2 范数 \(x_{\text{CICT}}=\tilde x_{\text{CICT}}\cdot\overline{\lVert x_p\rVert_2}/\lVert\tilde x_{\text{CICT}}\rVert_2\),保证注入后注意力幅值兼容。推理时把这个低方差、数据集级的全局几何先验 token 追加到序列末尾、送进相机头。本质是"尺度估计时把异常 token 当噪声去掉,推理时再以稳定形式把它的有用信息补回来"。

3. 任务感知尺度搜索:用 3D 任务质量而非逐层重建误差来选尺度

标准激活感知量化是按"量化后逐层输出重建误差最小"来选每通道/每组尺度 \(s\),但逐层数值保真不等于下游 3D 属性准确——VGGT 里相机位姿、深度、点云通过严格几何关系互相耦合。作者因此把尺度选择的监督换成任务级目标,由两部分组成。多头损失:用 VGGT 三个头的预测与 GT 算 \(L_{\text{camera}}\)(Huber 损失 \(\lVert\cdot\rVert_\varepsilon\))、\(L_{\text{depth}}\)\(L_{\text{point}}\)(后两者按预测不确定图 \(\hat\Sigma\) 逐元素加权)。几何一致性损失:利用 VGGT 头间的天然冗余——用预测深度 \(\mathbf D\)、内参 \(\mathbf K\)、外参 \(\mathbf E=(\mathbf R,\mathbf t)\) 把深度反投影成点云 \(\mathbf W^{\text{proj}}\),要求它和点云头直出的 \(\mathbf W^{\text{direct}}\) 一致:\(\mathcal{L}_{\text{geom}}=\frac{1}{|\Omega|}\sum_{(u,v)\in\Omega}\lVert\mathbf W^{\text{direct}}-\mathbf W^{\text{proj}}\rVert_2\)。最终目标 \(L_{\text{task}}(s)=L_{\text{recon}}+L_{\text{camera}}+\alpha L_{\text{depth}}+\beta L_{\text{point}}+L_{\text{geo}}\),因三个头损失数值量级相近故取 \(\alpha=\beta=1\)。沿用 AWQ 的轻量网格搜索范式遍历候选尺度,只是把重建目标替换成这个任务感知目标,从而把尺度选择推向"保住跨头 3D 结构一致性"的解。

损失函数 / 训练策略

全程无训练成本(纯 PTQ)。标定与尺度搜索在 RTX 4090(24GB)上完成,标定数据采样自 CO3Dv2 和 ScanNet(RealEstate10K 不参与标定,用于验证跨数据集泛化)。量化采用对称均匀量化 \(Q(w)=\Delta\cdot\text{Round}(w/\Delta)\)\(\Delta=\max(|w|)/2^{N-1}\),配置为 W4A16 + per-group 权重量化。任务感知目标 \(L_{\text{task}}\) 仅用于网格搜索选尺度,不更新权重。

实验关键数据

主实验

相机位姿估计(每场景随机 10 帧,AUC@30 越高越好):

方法 W/A CO3Dv2 AUC@30 Re10K AUC@30 CO3Dv2 延迟
Baseline FP16 89.5 85.3 0.38s
SmoothQuant W8A8 87.9 81.3 0.62s
QuantVGGT W4A16 89.2 84.4 -
GPTQ W4A16 76.9 75.6 0.28s
AWQ W4A16 54.6 59.2 0.28s
QVGGT W4A16 89.4 85.0 0.23s

通用 PTQ 方法在 W4A16 下崩盘(AWQ 仅 54.6),凸显直接迁移标准量化的困难;QVGGT 几乎无损,且延迟最低(0.23s)。

3D 重建(点云图,7-Scenes / NRGBD,Acc/Comp 越低越好、NC 越高越好):

方法 W/A 7-Scenes Acc↓ 7-Scenes NC↑ NRGBD Acc↓ NRGBD NC↑
Baseline FP16 0.030 0.847 0.024 0.922
SmoothQuant W8A8 0.067 0.702 0.062 0.769
GPTQ W4A16 0.051 0.802 0.053 0.872
AWQ W4A16 0.043 0.819 0.047 0.891
QVGGT W4A16 0.031 0.849 0.029 0.925

QVGGT 在两个数据集上都与 FP16 基线几乎持平(NRGBD NC 甚至 0.925 vs 0.922),远超通用量化方法。

消融实验

逐组件消融(Q=朴素全量化, S=选择性混合精度, D=token 过滤+补偿, T=任务感知尺度搜索):

Q S D T CO3Dv2 AUC@30↑ NRGBD Acc Mean↓
54.57 0.122
80.76 0.057
85.91 0.054
89.39 0.029

标定图像数量鲁棒性:

标定图像数 CO3Dv2 AUC@30↑ NRGBD Acc Mean↓
16 87.86 0.035
32 89.17 0.032
128 89.39 0.029

关键发现

  • 混合精度贡献最大:朴素全量化 AUC@30 仅 54.57,加上选择性混合精度直接跳到 80.76(+26 点),证明"块敏感度异质性 + 保护关键层"是量化 VGGT 的头号障碍。
  • 三个组件层层叠加均有效:token 过滤补偿再 +5 点(85.91),任务感知尺度搜索再 +3.5 点到 89.39,NRGBD Acc 同步从 0.054 降到 0.029。
  • 对标定集规模不敏感:16→128 张图性能仅微动(87.86→89.39),说明 QVGGT 不依赖大标定集就能拿到可靠激活统计,部署很实用。
  • 跨数据集泛化:RealEstate10K 不参与标定仍达 85.0(FP16 为 85.3),说明增益来自几何感知设计而非量化机制差异。

效率

  • 显存:单帧输入下峰值显存降 4.9×;30 帧(FP16 几乎打满 24GB)时仍降 3.7×,说明量化不仅压参数还缓解了随帧数增长的激活显存。
  • 延迟(2 帧,归一化):相对 FP16 内存降 2.11×、延迟提速 1.93×;摘要给出相对 FP32 整体 3∼4.9× 显存降、最高 2.8× 实际硬件加速。

亮点与洞察

  • "敏感度先于策略"的诊断式量化:先做逐块/逐层敏感度分析,把"哪块脆弱"量化成可操作的混合精度配方,而不是预设一个统一 bit 宽。这种"先体检再下药"的思路可迁移到任何多头/多任务大模型的压缩。
  • 相机 token 的双面处理很巧:把同一个 token 在"标定"和"推理"两个阶段区别对待——标定时它是污染尺度估计的离群噪声要剔除,推理时它携带的全局几何线索又必须补回。用 PCA 提炼出一个低方差的数据集级补偿 token(CICT),是"去噪不丢信息"的优雅折中。
  • 用模型自身的几何冗余当量化监督:VGGT 训练时点云头与"深度+位姿反投影"本是冗余设计,本文把这份冗余反过来当成跨头一致性约束来选量化尺度,几乎零额外成本地让量化目标对齐 3D 质量。这个"复用任务内在约束当压缩信号"的范式很有启发。

局限性 / 可改进方向

  • weight-only / W4A16 局限:本文只量化权重、激活保持 FP16,未覆盖更激进的低比特激活量化(W4A4)或更极端 bit 宽;与 QuantVGGT 的 W8A8 在不同配置下比较,部分结论不完全可直接对齐。
  • 混合精度依赖人工阈值:脆弱块(14/17/23 frame、23 global)是基于敏感度分析手工选定的,换骨干或换数据集时是否需要重新分析、能否自动化,文中未深入。
  • 几何一致性损失需要 GT:任务感知尺度搜索的多头损失依赖标定集的相机/深度/点云 GT,对缺少几何标注的场景适配性待验证;几何一致性损失本身可无标注,但多头损失不行。
  • 加速主要来自带宽:W4A16 的提速源于权重内存带宽压力下降,对计算密集环节增益有限,2.8× 加速是相对 FP32 的上界。

相关工作与启发

  • vs QuantVGGT(并行工作):两者都研究 VGGT 的 PTQ。QuantVGGT 偏通用数值稳定(离群值分散、激活平滑);QVGGT 是几何感知设计——不把相机 token 单纯当离群值剔除,而是用 CIC 显式补回其对相机预测的贡献,并用多头几何一致性引导尺度搜索。匹配 bit 宽下 QVGGT 相机位姿(CO3Dv2 89.4 vs 89.2、Re10K 85.0 vs 84.4)略优。
  • vs AWQ / GPTQ / SmoothQuant:这些是为 LLM/ViT 设计的通用 PTQ,迁移到 VGGT 严重掉点(AWQ W4A16 仅 54.6)。QVGGT 沿用了 AWQ 的轻量网格搜索范式,但把重建目标替换成任务感知目标,并叠加混合精度与 token 补偿,针对 3D transformer 的结构特性专门设计。
  • vs DUSt3R / MASt3R / VGGT:这些是被压缩的上游 3D 重建模型,本文不改其架构、只做无训练成本的量化部署,让前馈 3D 重建在边缘设备上可行。

评分

  • 新颖性: ⭐⭐⭐⭐ 首批针对 3D 几何 transformer 的 PTQ 之一,三个组件都紧扣 VGGT 的结构特性,但混合精度/任务感知尺度搜索沿用了已有范式。
  • 实验充分度: ⭐⭐⭐⭐ 覆盖 4 个 benchmark、两类任务、逐组件消融与标定规模鲁棒性齐全,但激活量化与更极端 bit 宽未探。
  • 写作质量: ⭐⭐⭐⭐ 动机—诊断—方法逻辑清晰,三步设计各有图佐证。
  • 价值: ⭐⭐⭐⭐ 让 1.2B 的 VGGT 在 24GB 消费级 GPU 上近乎无损跑通,对边缘端 3D 感知部署有直接实用价值。