Conference

GaVS: 3D-Grounded Video Stabilization via Temporally-Consistent Local Reconstruction and Rendering

Zinuo You, Stamatios Georgoulis, Anpei Chen, Siyu Tang, Dengxin Dai

ETH Zürich

一句话总结

GaVS 把视频防抖重新表述为”逐帧局部重建 + 渲染”的 3D 问题:给定 3D 相机位姿,用前馈重建模型为每帧预测逐像素高斯泼溅基元,并通过测试时优化(多视角动态感知的光度监督 + 跨帧正则)得到时序一致的局部重建,再在平滑后的位姿处渲染出无裁剪的稳定帧。

研究背景

视频防抖是几乎所有视频处理流水线的基础环节,其典型三步为:从抖动视频中追踪相机运动、平滑相机运动以滤除抖动同时保留用户意图、合成稳定视频。文献中相机运动(乃至场景本身)大多在 2D 域建模,用帧变换(仿射、单应)或光流(像素级或网格级)表示,缺乏显式 3D 建模,容易在稳定视频中产生令人不适的几何畸变。

后续工作引入了基于学习的表示、深度线索甚至额外传感器来缓解畸变,但仍存在两类问题:

  • 泛化差:预训练模型面对开放域视频(多样的相机运动与场景动态)时存在域间隙,效果下降。
  • 逐帧变换导致裁剪:几乎所有方法都逐帧变换对应的抖动帧来合成稳定帧,不可避免地要裁剪画面,造成内容丢失。虽然 2D/2.5D 的多帧融合被用于实现全画幅(无裁剪)防抖,但由于仍缺乏显式 3D 场景建模,容易出现不一致与畸变伪影。

作者据此提出 GaVS,一个基于高斯泼溅(GS)的 3D-grounded 防抖流水线,在不使用额外传感器的前提下,同时实现全画幅稳定、最小化不一致与畸变。

方法

整体框架

核心思想来自两点观察:其一,防抖中对应的抖动帧与稳定帧只有微小差异,因此没必要为渲染稳定帧而全局重建整个场景(动态场景的全局重建尤其困难),可用一个前馈网络预测局部重建;其二,3D-grounded 防抖要最小化伪影,本质上要求相邻局部重建之间保持一致。

流水线分两阶段。测试时微调阶段:预训练重建模型先从输入帧预测深度,再把深度与图像送入解码器得到高斯泼溅形式的局部重建;微调只更新解码器。先用视频补全对帧做外插以提供初始重建,再用多视角光度损失(含动态物体补偿)监督每个局部重建,并在膨胀时间窗内对匹配的 GS 基元施加一致性正则。推理阶段:把每个外插后的重建渲染到其对应的稳定位姿,得到全画幅稳定视频。

flowchart TD
    A[输入抖动视频 + 3D 位姿] --> B[场景外插\nProPainter 视频补全]
    B --> C[前馈重建模型 R\nUniDepth 深度 + 解码器]
    C --> D[逐像素高斯泼溅基元 G]
    D --> E[多视角动态感知光度监督\n渲染到邻帧 + 动态补偿]
    D --> F[膨胀重建正则\n光流匹配的跨帧 GS 一致性]
    E --> G[测试时微调\n仅更新解码器 3 轮]
    F --> G
    G --> H[高斯滤波平滑位姿]
    H --> I[在稳定位姿渲染]
    I --> J[全画幅稳定视频]

记源帧(抖动)为 \(I_k^s\)、目标帧(稳定)为 \(I_k^t\),相机为针孔模型 \(K\),抖动与稳定位姿分别为 \(P_k^s\)、\(P_k^t\)。合成目标帧的基本操作为:从源帧用前馈模型 \(R(\cdot)\) 预测逐像素 GS 基元,再在目标位姿渲染:

\[I_k^t = \mathrm{GSplat}(G_k^s,\, P_k^t \otimes \mathrm{inv}(P_k^s)) \quad \text{其中} \quad G_k^s = R(I_k^s)\]

该设计统一了静态与动态场景部分的重建,但局部性无法保证相邻重建的时序一致,且预训练模型在测试时易泛化不足,故引入以下三项测试时措施。

关键设计一:多视角动态感知光度监督

用源帧的局部重建 \(G_k^s\) 渲染到时序相邻的源帧位姿 \(P_i^s\) 上得到 \(\hat{I}_i^s\),施加 L1 与 SSIM 组合的光度损失:

\[L_{RGB} = \frac{1}{\vert N_k\vert } \sum_{i \in N_k} \left( \lVert \hat{I}_i^s - I_i^s \rVert_1 + \lambda_{ssim}\, \mathrm{SSIM}(\hat{I}_i^s, I_i^s) \right)\]

其中 \(N_k\) 是由源帧及其在时间窗 \([k-W, k+W]\) 内随机采样的 \(S-1\) 个邻帧组成的集合。但动态物体会破坏光度损失所依赖的对极几何,为此作者提出补偿机制:把总 2D 像素运动解耦为相机运动与物体运动。设总光流 \(F_{i \to k}\)(由 RAFT 估计),相机运动流 \(F_{i \to k}^{cam}\),物体动态流 \(F_{i \to k}^{obj}\),则

\[F_{i \to k}^{obj} = F_{i \to k} - F_{i \to k}^{cam}\]

由于深度只在源帧 \(D_k^s\) 已知,先反投影像素到 3D 点、施加相对位姿变化、再投影回 2D 得到”逆向”相机运动流:

\[F_{k \to i}^{cam} = \mathrm{Project}_{K,P_i^s}(\mathrm{Un\text{-}project}_{K,P_k^s}(D_k^s)) - \mathrm{Coordinates}_k\]

再经前向泼溅得到所需的 \(F_{i \to k}^{cam}\)。借助双向一致性与前向泼溅权重仅在有效区域监督,可把邻帧动态物体”扭”回源帧时刻的”标准”姿态,从而剔除物体运动带来的错误监督。

关键设计二:膨胀重建正则

光度监督只是隐式地促进一致性,为显式约束,作者对相邻帧匹配到的 GS 基元施加 L2 正则。给定两邻帧重建 \(G_i^s = R(I_i^s)\)、\(G_j^s = R(I_j^s)\),以双向光流 \(F_{i \to j}\)、\(F_{j \to i}\) 建立稠密对应:

\[L_{pair}(i,j) = M_{i,j} \cdot \lVert G_i^s - \mathrm{warp}(G_j^s, F_{j \to i}) \rVert_2\]

其中 \(M_{i,j}\) 为双向一致性检查后的有效区域。在大小为 \(s\) 的时间窗内引入膨胀 \(d\),测试时逐步增大 \(d\) 以覆盖更宽的时间范围:

\[L_{consistent} = \frac{1}{s} \sum_{j=-\lfloor s/2 \rfloor}^{\lfloor s/2 \rfloor} L_{pair}(i,\, i + j\cdot(d+1))\]

关键设计三:场景外插与运动平滑

由于相机运动,局部重建可能缺少渲染全画幅所需的内容。作者用视频补全方法(ProPainter)对源帧做外插:在源帧上加边界掩码指示待填充区域,再利用光流传播跨帧内容,从而实现无裁剪的全画幅稳定。

总损失为光度、一致性、尺度、偏移四项加权:

\[L = L_{RGB} + \lambda_{consistent} L_{consistent} + \lambda_{scale} L_{scale} + \lambda_{offset} L_{offset}\]

其中 \(L_{scale}\) 惩罚过大尺度的 GS 基元,\(L_{offset}\) 阻止基元偏离深度图反投影的 3D 点太远。稳定位姿通过对平移与旋转做高斯滤波获得:

\[P_k^t = \sum_{i=t-w/2}^{t+w/2} g^*(i,k)\, P_i^s\]

\[g(i,k) = e^{-\frac{1}{2}\left(\frac{\vert i-k\vert }{\sigma_s}\right)^2}\]

调节 \(\sigma_s\) 即可合成不同稳定程度的视频。实现上重建模块基于 Flash3D 与 UniDepth,预处理用到 GLOMAP(3D 位姿)、Grounded SAM(前景掩码)、ProPainter(外插)、RAFT(光流),微调仅更新解码器 3 轮,实验在单张 RTX 5000 GPU 上进行。

实验结果

数据集为重构的 DeepFused 防抖数据集,分为 Mild、Intense、Dynamics 三组(各 5 个样本),分别对应不同抖动程度的静态场景与含动态物体的场景。评测指标包括裁剪比(CR)、畸变(D)、稳定性(S),以及作者新引入的稀疏几何一致性(GC-S/GC-C,用 GLOMAP 的重投影误差)与稠密几何一致性(GC-D,用 3DGS 稠密重建的 PSNR)。

与全画幅基线的对比(S↑ 稳定性、GC-S↓ 稀疏几何一致性、GC-D↑ 稠密几何一致性、D↑ 畸变,加粗为最优):

方法 类型 Mild S↑ Mild GC-S↓ Mild GC-D↑ Intense S↑ Intense GC-S↓ Intense GC-D↑ Dynamics S↑ Dynamics GC-S↓ Dynamics GC-D↑ Mean D↑ Mean S↑ Mean GC-S↓ Mean GC-D↑
DIFRINT 2D 0.87 1.83 21.71 0.79 1.71 21.30 0.75 1.73 21.50 0.52 0.8 1.78 21.53
FuSta 2D 0.93 0.75 29.38 0.87 1.07 26.30 0.93 0.88 26.81 0.97 0.91 0.90 27.21
MetaStab 2D 0.92 0.53 30.72 0.79 0.61 29.50 0.91 0.50 29.13 0.99 0.87 0.55 29.79
GaVS(\(\sigma_s=4\)) 3D 0.93 0.52 32.31 0.85 0.60 31.22 0.93 0.49 30.28 0.98 0.90 0.53 31.27
GaVS(\(\sigma_s=8\)) 3D 0.93 0.53 32.26 0.89 0.61 30.55 0.94 0.50 30.16 0.97 0.92 0.54 30.99

与裁剪类基线的对比(CR↑ 裁剪比、D↑ 畸变、S↑ 稳定性、GC-C↓ 稀疏几何一致性、GC-D↑ 稠密几何一致性):

方法 类型 CR↑ D↑ S↑ GC-C↓ GC-D↑
L1 2D 0.65 0.83 0.91 1.18 27.09
Yu 2D 0.88 0.95 0.91 0.93 29.67
Deep3D 2.5D 0.91 0.89 0.90 0.72 22.78
GaVS(\(\sigma_s=4\)) 3D 1.0 0.98 0.90 0.54 31.27
GaVS(\(\sigma_s=8\)) 3D 1.0 0.96 0.92 0.55 30.99
  • 对全画幅基线:GaVS 在几何一致性(GC-S、GC-D)与稳定性上全面领先,畸变指标保持可比;DIFRINT 泛化失败产生严重伪影,MetaStab 在剧烈运动与动态场景下难以建模复杂运动,FuSta 用几何一致性换稳定性。
  • 对裁剪类基线:GaVS 在所有指标上更优,裁剪比达 1.0(全画幅无损)。
  • 用户研究:28 名参与者在 15 组并排视频对比中评价,GaVS 被选中的比例超过 60%,且不受相机运动或场景动态分组影响。
  • 与全局 4D 重建对比:在 455 帧的动态舞蹈场景上,相比 Shape-of-Motion,GaVS 在预处理与优化阶段分别取得约 12× 与 20× 提速,且全局 4D 方法在复杂动态下常因像素追踪不准而渲染次优。

亮点与局限

亮点:

  • 把视频防抖从 2D/2.5D 视角提升为”局部重建 + 渲染”的 3D 视角,天然统一静态与动态场景,对多样相机运动与场景动态鲁棒,并同时实现时序一致与全画幅。
  • 用前馈局部重建替代昂贵的全局 4D 优化,配合仅更新解码器的轻量测试时优化,几分钟即可完成一段视频,效率比全局方法高一个量级。
  • 动态物体补偿把总光流解耦为相机流与物体流,解决了动态物体破坏对极几何的问题;膨胀正则显式约束跨帧 GS 一致性。

局限:

  • 依赖视觉里程计:需要局部时间窗内准确的 3D 位姿,GLOMAP 在欠曝/低质视频或缺少静态线索的自拍视频中会失败,且以旋转为主的场景因缺乏平移视差而更敏感。
  • 无约束的轨迹平滑:当前为开环方式(固定尺度外插 + 独立高斯滤波),强运动下重建可能覆盖不满整帧。
  • 重建模型的失败:测试时优化能纠正轻微深度误差,但无法从 UniDepth 的失败中恢复。
  • 高分辨率下逐像素 GS 基元扩展性差,GPU 需求高。

延伸思考

  • 动态补偿依赖 RAFT 光流与深度反投影的相机流做差,若在低纹理或大遮挡区域光流不可靠,补偿质量会受限;结合更鲁棒的场景流或显式动态分割或许能进一步提升。
  • 开环的”外插 + 独立平滑”可改为带视场约束的相机路径联合优化,把稳定强度与画面覆盖率耦合起来,避免强运动下的覆盖不足。
  • 逐像素 GS 的高分辨率瓶颈提示可探索层次化重建或基元剪枝,把这套局部重建范式推广到更高分辨率与更长视频。
  • 该”局部重建 + 渲染”范式对小基线场景高效,是否可迁移到需要小视角变化的其他任务(如轻量新视角合成、视频重定向)值得思考。