OVGGT: O(1) Constant-Cost Streaming Visual Geometry Transformer¶
会议: ECCV 2026
论文: ECCV 原文
代码: https://github.com/VAISR/OVGGT
领域: 3D 视觉
关键词: 流式 3D 重建、KV Cache 压缩、几何基础模型、视觉几何 Transformer、常数复杂度推理
一句话总结¶
OVGGT 提出了一种无需训练的流式视觉几何 Transformer 框架,通过基于 FFN 残差幅值的自选择性缓存(与 FlashAttention 完全兼容并引入空间平滑)和动态锚点保护(首帧全局锚点与长程历史锚点),将流式 3D 重建的显存与单步计算锁定在 \(O(1)\) 常数预算内,彻底消除了显存溢出风险并提升了几何精度。
研究背景与动机¶
从连续图像流中恢复稠密、度量一致的三维几何结构是自动驾驶、具身机器人与数字孪生等任务的基础支撑。以 DUSt3R、VGGT 为代表的几何基础模型革新了传统多阶段 SfM/MVS 管线,通过大容量 Transformer 结构直接从图像序列回归 3D 点云与相机位姿。然而,VGGT 采用的双向全局注意力(all-to-all attention)具备二次方计算复杂度,在几百帧内便耗尽显存且无法实现单向流式推理;而引入因果时序注意力与 KV 缓存机制的流式变体(如 StreamVGGT)虽然支持逐帧解码,但未受约束线性膨胀的 KV Cache 导致每步注意力开销剧增并在数百帧内遭遇显存溢出(OOM),使长程部署完全受限。
解决该瓶颈的核心矛盾在于:如何在保持固定显存与常数单步计算(\(O(1)\) 复杂度)的前提下,实现长期推流的几何连续性与坐标系保真度。现有大语言模型(LLM)的缓存剪枝策略无法直接照搬——LLM 关注文本离散语义,而 3D 视觉 patch token 具有连续的 2D/3D 空间结构;此外,主流加速算子 FlashAttention 不物化注意力矩阵,使得基于注意力权重的传统剪枝方法面临高昂的重算开销或内核失效;更致命的是,长序列推流过程中频繁的 token 淘汰会导致全局参考坐标系漂移。
针对这一困境,本文的切入角度是充分挖掘几何 Transformer 前向传播自带的层级特征与空间拓扑特性,将“重要性评分”与“几何基准保全”解耦。核心 idea:利用前向传播中天然存在的 FFN 残差幅值作为零开销且完全兼容 FlashAttention 的几何显著性评分,配合 2D 空间高斯平滑保留局部连续性,并设计首帧与视场覆盖驱动的动态锚点保护机制永久屏蔽关键坐标 token 的淘汰,实现严格常数显存下无漂移的无限流式 3D 重建。
方法详解¶
整体框架¶
OVGGT 构建于因果时序注意力框架之上,以流式逐帧输入的方式执行在线 3D 重建。对于 \(t\) 时刻的输入帧 \(I_t\),首先通过冻结的 DINOv2 提取 \(N_p\) 个图像 patch token,并拼接入 1 个可学习相机 token 与 4 个 register token(共计 \(M\) 个 token)。这些 token 依次送入 24 层交替注意力块(包含帧内空间自注意力 SA 与访问外部 KV 缓存 \(\mathcal{C}_t\) 的跨帧因果注意力 CA),最终经由相机、深度和点云预测头直接解码出当前帧相机参数、深度图和 3D 点云。为了打破缓存线性增长的限制,OVGGT 将每层 KV 缓存严格限制在固定预算 \(B^{(l)}\) 内,每步注意力与存储开销恒定为 \(O(M \cdot B)\)。整个缓存压缩机制包含两大核心支柱:自选择性缓存(SSC)与动态锚点保护(DAP)。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}, 'subGraphTitleMargin': {'top': 8, 'bottom': 16}}}%%
flowchart TD
A["输入帧序列 I_t<br/>DINOv2 + 辅助 Token"] --> B["帧内空间自注意力 SA<br/>提取单帧空间几何"]
B --> C["跨帧因果注意力 CA<br/>检索常数预算 KV Cache"]
C --> D["自选择性缓存 SSC<br/>FFN残差评分 + 空间平滑"]
D --> E["混合评分压缩<br/>当前激活度 + 历史特征多样性"]
E --> F["动态锚点保护 DAP<br/>首帧坐标锚点 + 历史视场锚点"]
F --> G["固定预算 KV Cache C_t<br/>O(1) 显存与计算更新"]
G --> H["3D 解码头<br/>相机位姿 + 深度图 + 3D点云"]
关键设计¶
1. 激活值评分与空间平滑:零开销且兼容 FlashAttention 的几何显著性度量 在流式推理中,必须评估哪些 token 具有更高的几何重要性。然而,现代加速库 FlashAttention 避免物化完整的注意力权重矩阵,强行计算注意力分布会导致显存与运行时间翻倍。作者发现,在 Pre-LN Transformer 结构中,前馈网络(FFN)对 token 表征施加的非线性变换量(即 FFN 残差幅值)天然反映了该 token 在当前层的激活程度与几何显著性。浅层 FFN 残差响应高频纹理,中层响应几何棋盘/结构区域,深层响应语义目标边界。第 \(l\) 层第 \(i\) 个 token 的激活分数为: $\(s_i^{(l)} = \big\|\lambda_2^{(l)} \cdot \text{FFN}(\text{LN}(\mathbf{h}_i^{(l)}))\big\|_2\)$ 其中 \(\lambda_2^{(l)}\) 为 LayerScale 系数。由于 FFN 残差原本就在前向计算中生成,该评分带来零额外计算与显存开销。然而,直接依据原始残差挑选 token 会导致保留的 patch 在空间上离散破碎,破坏三维预测头所依赖的局部几何连续性。为此,OVGGT 对二维 patch 激活图 \(\mathbf{S} \in \mathbb{R}^{H_p \times W_p}\) 引入高斯核卷积平滑: $\(\tilde{\mathbf{S}} = \alpha \cdot (\mathbf{G} * \mathbf{S}) + (1 - \alpha) \cdot \mathbf{S}\)$ 其中 \(\alpha\) 控制平滑强度(辅助 token 不做平滑)。平滑操作强制邻域内空间相干的 token 簇协同保留,有效消除了断续伪影。
2. 混合双指标缓存压缩:平衡瞬时重要性与历史特征覆盖 在维持总缓存预算 \(B\) 的淘汰过程中,只有当前帧 token 经过 FFN 能够得到最新的激活评分,历史被缓存的 token 缺乏实时的残差动态。如果仅以历史进入时刻的静态激活值作为基准,会导致缓存逐渐倾向于某些特定历史帧。OVGGT 采用双重指标混合评分方案:对可淘汰历史集合 \(\mathcal{U}_{\text{hist}}\) 中的 token,计算其键向量与质心向量的余弦发散度作为多样性指标 \(d_i = 1 - \cos(\mathbf{k}_i, \bar{\mathbf{k}})\),倾向保留最具代表性和多样性的历史基底;对当前帧候选集合 \(\mathcal{U}_{\text{new}}\),则采用上述平滑后的激活评分 \(s_i\)。在经过各自的 Min-Max 归一化为 \(\hat{d}_i, \hat{s}_i \in [0, 1]\) 后,引入平衡权重 \(\beta\) 统一排队打分: $\(r_i = \begin{cases} (1 - \beta) \cdot \hat{d}_i, & i \in \mathcal{U}_{\text{hist}} \\ \beta \cdot \hat{s}_i, & i \in \mathcal{U}_{\text{new}} \end{cases}\)$ 系统对未受保护的 token 集合保留排名前 \(B^{(l)} - |\mathcal{P}|\) 的高分项并淘汰其余部分。同时,各层的独立预算 \(B^{(l)}\) 依据各层 token 多样性方差按比例自适应分配,使多样性高的层分配到更多缓存槽位。
3. 动态锚点保护:锁定全局坐标原点与长程几何基准 在纯粹的淘汰机制下,经历多轮更替后所有早期 token 都会被逐出。由于单目流式 3D 重建没有绝对传感器先验,首帧通常定义了后续所有预测的世界坐标系原点;首帧一旦被淘汰,累积漂移会迅速导致场景崩溃。为此,动态锚点保护机制构建了一个豁免淘汰集合 \(\mathcal{P} = \mathcal{P}_{\text{init}} \cup \mathcal{P}_{\text{hist}}\)。首先,首帧的全部 \(M\) 个 token 被永久登记为全局初始锚点 \(\mathcal{P}_{\text{init}}\),确保世界坐标基准永不漂移。其次,当相机运动导致当前视场与首帧完全无重叠时,需要引入历史关键帧作为长程几何基准。系统将最近注册锚点帧的 3D 预测点投影到当前视口计算覆盖率 \(\rho_t\);一旦 \(\rho_t < \tau\)(默认 \(\tau=0.2\))且距离上次注册已过去至少 100 帧,便触发新历史锚点注册。对新锚点帧,仅依据点云置信度筛选出 top-\(\eta\)(默认 \(\eta=0.05\))最高置信度的 patch 纳入 \(\mathcal{P}_{\text{hist}}\),并通过容量上限为 \(K_{\max}=3\) 的 FIFO 队列自动退役过旧锚点,将受保护 token 总规模严格限定在 \(|\mathcal{P}| \le M + K_{\max} \cdot \lceil \eta N_p \rceil\),留出绝大部分预算给通用淘汰池流动。
损失函数 / 训练策略¶
OVGGT 是一个完全无需训练(Training-free)的即插即用推理框架。它直接沿用预训练好的 StreamVGGT 模型权重,无需在任何新数据上微调或梯度更新。在推理超参数设定上,默认全局缓存上限设置为 \(B = 200\text{K}\) tokens(在 32 GB 单卡上仅需约 10 GB 显存占用),空间平滑系数 \(\alpha = 0.5\),历史-当前平衡系数 \(\beta = 0.5\);动态锚点注册阈值 \(\tau = 0.2\)、最小间隔 100 帧、置信度保留比例 \(\eta = 0.05\)、最大历史锚点数 \(K_{\max} = 3\)。
实验关键数据¶
主实验¶
论文在室内数据集 7-Scenes 和 NRGBD、室外数据集 ETH3D 以及包含多达 10,000 帧的长序列基准 Long3D 上全面评测了 OVGGT。主要指标涵盖几何精度(Accuracy, 越低越好)、完整度(Completeness, 越低越好)以及法向量一致性(Normal Consistency, 越高越好)。在室内长序列评测中,StreamVGGT 在 500 帧时因线性增长的 KV Cache 发生显存溢出(OOM),而 OVGGT 在常数预算下实现了全面领先的重构精度。
表 1:7-Scenes 与 NRGBD 室内数据集不同序列长度下的 3D 重构定量对比(摘自原论文 Table 1 部分核心数据)
| 数据集 | 序列长度 | 指标 | OVGGT (本文) | StreamVGGT (全缓存基线) | Evict3R† (对齐预算) | InfiniteVGGT |
|---|---|---|---|---|---|---|
| 7-Scenes | 200 帧 | Acc ↓ (Mean / Med) | 0.024 / 0.008 | 0.038 / 0.014 | 0.037 / 0.013 | 0.046 / 0.016 |
| 7-Scenes | 200 帧 | Comp ↓ (Mean / Med) | 0.021 / 0.005 | 0.029 / 0.007 | 0.027 / 0.007 | 0.031 / 0.008 |
| 7-Scenes | 200 帧 | NC ↑ (Mean / Med) | 0.587 / 0.635 | 0.583 / 0.628 | 0.584 / 0.631 | 0.582 / 0.627 |
| 7-Scenes | 500 帧 | Acc ↓ (Mean / Med) | 0.031 / 0.011 | OOM | 0.042 / 0.016 | 0.040 / 0.015 |
| 7-Scenes | 500 帧 | Comp ↓ (Mean / Med) | 0.020 / 0.003 | OOM | 0.026 / 0.005 | 0.024 / 0.005 |
| 7-Scenes | 500 帧 | NC ↑ (Mean / Med) | 0.561 / 0.593 | OOM | 0.0559 / 0.589 | 0.561 / 0.593 |
| NRGBD | 100 帧 | Acc ↓ (Mean / Med) | 0.022 / 0.014 | 0.024 / 0.014 | 0.031 / 0.020 | 0.035 / 0.022 |
| NRGBD | 300 帧 | Acc ↓ (Mean / Med) | 0.037 / 0.022 | OOM | 0.042 / 0.026 | 0.053 / 0.031 |
| NRGBD | 500 帧 | Acc ↓ (Mean / Med) | 0.054 / 0.032 | OOM | 0.072 / 0.040 | 0.070 / 0.046 |
表 2:ETH3D 室外全序列与 Long3D 超长序列定量对比(摘自原论文 Table 2)
| 数据集 | 配置 / 方法 | Acc ↓ (Mean / Med) | Comp ↓ (Mean / Med) | NC ↑ (Mean / Med) | 显存与运行状态 |
|---|---|---|---|---|---|
| ETH3D (室外全序列) | StreamVGGT | 0.601 / 0.369 | 0.442 / 0.169 | 0.791 / 0.933 | 全缓存基准 |
| ETH3D (室外全序列) | InfiniteVGGT | 0.603 / 0.371 | 0.444 / 0.169 | 0.792 / 0.933 | 稳定 |
| ETH3D (室外全序列) | OVGGT (Ours 200K) | 0.628 / 0.396 | 0.380 / 0.121 | 0.790 / 0.934 | 常数 200K 预算 |
| ETH3D (室外全序列) | OVGGT (Ours 400K) | 0.535 / 0.317 | 0.394 / 0.107 | 0.793 / 0.934 | 常数 400K 预算 (+1GB) |
| Long3D (超长 10,000 帧) | StreamVGGT | OOM | OOM | OOM | 内存耗尽中断 |
| Long3D (超长 10,000 帧) | Evict3R† | 4.928 / 2.710 | 0.715 / 0.204 | 0.507 / 0.504 | 误差较大 |
| Long3D (超长 10,000 帧) | InfiniteVGGT | 4.344 / 3.668 | 0.974 / 0.205 | 0.517 / 0.525 | 严重漂移 |
| Long3D (超长 10,000 帧) | OVGGT (Ours 200K) | 2.453 / 1.794 | 0.390 / 0.060 | 0.507 / 0.509 | 显著抑制漂移 |
| Long3D (超长 10,000 帧) | OVGGT (Ours 400K) | 2.449 / 1.675 | 0.542 / 0.151 | 0.507 / 0.509 | 最优中位数表现 |
消融实验¶
在相同预算(\(B=200\text{K}\))下关闭动态锚点保护,对比当前帧四种不同挑选策略(原论文 Table 4):
表 3:不同 Token 淘汰评分策略对比(原论文 Table 4,7-Scenes 与 NRGBD)
| 评分策略 | FlashAttention 兼容 | 序列长度 | 7-Scenes Acc ↓ | 7-Scenes CD ↓ | NRGBD Acc ↓ | NRGBD CD ↓ |
|---|---|---|---|---|---|---|
| Attention 权重矩阵 | 否 (需完整物化) | 100 帧 | 0.024 | 0.035 | 0.020 | 0.025 |
| Random 随机淘汰 | 是 | 100 帧 | 0.026 | 0.035 | 0.025 | 0.030 |
| \(Q \cdot K\) 点积近似 | 是 | 100 帧 | 0.026 | 0.035 | 0.026 | 0.031 |
| FFN 残差 (本文 Ours) | 是 (完全兼容) | 100 帧 | 0.023 | 0.033 | 0.022 | 0.027 |
| Attention 权重矩阵 | 否 (需完整物化) | 300 帧 | 0.023 | 0.032 | 0.035 | 0.041 |
| Random 随机淘汰 | 是 | 300 帧 | 0.027 | 0.034 | 0.044 | 0.049 |
| \(Q \cdot K\) 点积近似 | 是 | 300 帧 | 0.032 | 0.037 | 0.044 | 0.049 |
| FFN 残差 (本文 Ours) | 是 (完全兼容) | 300 帧 | 0.026 | 0.032 | 0.037 | 0.043 |
表 4:动态锚点保护 DAP 各组件对深度估计增益消融(KITTI 500 帧,原论文 Table 5)
| 初始锚点 \(P_{\text{init}}\) | 历史锚点 \(P_{\text{hist}}\) | 远景 (>35单位) F1% ↑ | 远景 F5% ↑ | 远景 \(\delta_{1.05}\) ↑ | 近景 (15-35单位) F1% ↑ | 近景 F5% ↑ |
|---|---|---|---|---|---|---|
| ✕ | ✕ | - (基线) | - (基线) | - (基线) | - (基线) | - (基线) |
| ✓ | ✕ | +5.43% | +4.19% | +4.22% | +3.51% | +2.81% |
| ✓ | ✓ (完整 DAP) | +10.15% | +7.23% | +7.23% | +5.35% | +4.69% |
关键发现¶
- 全量缓存并非精度上限:在 7-Scenes 200 帧实验中,StreamVGGT 完整保留所有 KV 时精度为 Acc 0.038 / Comp 0.029,而 OVGGT 在 200K 预算下达到 Acc 0.024 / Comp 0.021。这证明盲目堆叠冗余与瞬态 token 会分散注意力权重、引入多视角几何噪声,精选后的稀疏 KV Cache 反而重构质量更优。
- FFN 残差评分是 FlashAttention 环境下的唯一最优解:相比必须物化完整注意力矩阵而破坏内核加速的传统 Attention 评分,FFN 残差在保持 FA 兼容性的同时,以零额外计算代价获得了接近甚至超越全注意力评分的重构质量,显著优于 Q-K 点积与随机淘汰。
- 锚点保护在远距离几何中起决定性作用:DAP 实验显示,初始锚点加历史锚点使远景区域深度准度跃升超过 10%(F1% 提升 10.15%),证实了锚点对抵抗多轮缓存置换下的坐标漂移至关重要。
- 吞吐与显存优势:在单张 32GB GPU 上,StreamVGGT 在 200 帧后因超过 32GB 显存崩溃,Evict3R 因放弃 FlashAttention 导致显存占用高且吞吐受限;OVGGT 稳定维持在约 14 FPS 与常数 10 GB 显存。
亮点与洞察¶
- 将 FFN 残差巧妙复用为几何显著度量:避开了 FlashAttention 无法导出注意力矩阵的工程死锁,利用 Transformer 本身在前向传播中计算的中间量无痛完成评分,既优雅又完全零开销。
- 考虑几何连续性的 2D 空间高斯平滑:深刻抓住了视觉 token 与 NLP 离散 token 的本质差异,利用二维拓扑邻域平滑抑制了孤立 token 淘汰带来的高频空洞,保证了法向量与表面重构的完整性。
- 解耦通用缓存与几何坐标锚点:引入“全局原点首帧锁定 + 视场重叠率触发历史锚点”的动态机制,在不占用过多预算(仅占极小比例)的前提下,从原理上解决了流式因果模型长程坐标系累积漂移的致命问题。
局限与展望¶
- 单向因果流式的单调误差积累:作为单向单遍(single-pass)因果系统,OVGGT 缺乏后端全局回环检测(Loop Closure)与全局光束法平差(Bundle Adjustment)机制。当遭遇长时间纯旋转或严重退化纹理时,虽然漂移得到抑制但无法回溯修正历史预测。
- 极端动态目标干扰:尽管在含有动态物体的 Bonn 与 KITTI 数据集上取得优异表现,但若动态物体长时间遮挡视野,会导致注册的历史锚点包含非刚体干扰,可能影响局部背景几何。
- 未来方向:可将 OVGGT 充当流式前端,与轻量级关键帧后端位姿图优化或分段全局优化(Staged Streaming Inference)结合,在维持常数每步吞吐的同时获得全局回环闭合能力。
相关工作与启发¶
- vs StreamVGGT: StreamVGGT 将双向注意力改造为因果注意力奠定了流式基础,但因无限制缓存导致显存线性膨胀、200 帧即 OOM。OVGGT 是其训练无关的直接升级版,不仅将其收敛至 \(O(1)\) 常数显存,还通过过滤噪声获得了更高的几何精度。
- vs Evict3R: Evict3R 依靠注意力权重进行 token 淘汰,破坏了 FlashAttention 加速内核,导致显存开销与运行耗时大幅上升。OVGGT 借助 FFN 残差评分保持原生 FA 兼容性,FPS 与显存效率明显更高。
- vs InfiniteVGGT: InfiniteVGGT 基于全局键多样性做粗粒度压缩,缺少针对首帧和关键重叠帧的空间拓扑锚点保护,在超长序列(如 Long3D 10,000 帧)中因坐标系失真而发生严重漂移。OVGGT 借助 DAP 在 Long3D 上将平均误差从 4.344 骤降至 2.453。
评分¶
- 新颖性: ⭐⭐⭐⭐☆ 巧妙利用 FFN 残差规避 FlashAttention 限制,并针对 3D 流式特性提出空间平滑与坐标锚点保护,设计高度契合几何物理特性。
- 实验充分度: ⭐⭐⭐⭐⭐ 涵盖室内、室外、动静态及 10,000 帧超长序列,全方位对比了重构精度、深度估计、显存与 FPS,消融细致扎实。
- 写作质量: ⭐⭐⭐⭐⭐ 问题定义明确,动机层层递进,对现代 Transformer 算子与 3D 几何特征的分析深入透彻。
- 价值: ⭐⭐⭐⭐⭐ 完全无需训练、即插即用,为几何大模型在算力受限边缘设备与无人系统长程在线部署提供了切实可行的范式。