4DGS
4DGS
Paper: https://arxiv.org/abs/2310.08528
Code: https://github.com/hustvl/4DGaussians
核心:
-
将动态场景表示为一组固定的 3D 高斯 + 高效的高斯形变场网络,而不是为每一帧单独存储高斯。形变场负责在任意时间戳预测高斯的位置、旋转、缩放变化,实现运动和形变的统一建模。
-
空间-时间结构编码器(Spatial-Temporal Structure Encoder):基于多分辨率 HexPlane(6 个二维平面:空间 3 个 + 时间 3 个)编码高斯的时空特征。相比直接 4D 体素,显著降低内存消耗。
-
多头高斯形变解码器(Multi-head Gaussian Deformation Decoder):分别预测位置、旋转、缩放的变化量(ΔX, Δr, Δs)。支持细粒度的形变控制,提升动态细节拟合能力。
流程
高斯初始化
-
收集相机参数和初始稀疏点云:利用 Structure-from-Motion (SfM) 复现初始帧的稀疏三维点集,每个点视作高斯分布(Gaussian),以其坐标作为均值$X$,固定初始协方差矩阵$\Sigma$
-
预热训练(约 3000 iter), 仅使用经典的3DGS渲染流程, 快速收敛到合理的几何表示, 稳定几何结构
空时结构编码 Spatial-Temporal Structure Encoder
4D K-Planes 分解 -> MLP 融合计算时空嵌入向量
4D K-Planes 分解
4D K‑Planes把一个四维体素场(空间与时间,坐标为 $ \left ( x, y, z, t \right ) $ )显式分解为六组二维“切片”平面 $ \left ( x, y \right ), \left ( x, z \right ), \left ( y, z \right ), \left ( x, t \right ), \left ( y, t \right ), \left ( z, t \right ) $
构建 6 个全局共享的多分辨率特征平面,这些平面共同组成了分解后的 4D 神经体素(HexPlane 模块),每个分辨率下都有一组这样的 2D 平面。对于任意一个高斯点,先取其中心 $ \left ( x, y, z, t \right ) $ 在每对维度上的投影,归一化到 $ \left [ -1, 1 \right ] $ 再 reshape 成形状 $ \left ( N,1,1,2 \right ) $ 的网格
分解的优点:
- 降维与省内存: 直接用 4D 体素的内存随 $ N_{x, y, z}^{3} \times N_t $ 指数增长; K‑Planes 以六个二维网格替代一个四维网格,使参数规模按平面大小线性增长,在同等容量下更高效
- 结构先验更友好: 三个“空间平面”聚焦静态几何与纹理结构,三个“时空平面”专注沿各坐标轴的运动与变形模式,把“形状”和“运动”解耦成易学的子问题,学习更稳定
- 多分辨率更容易: 每个平面都可以做多层次(多分辨率)表示与上采样,既抓大结构也补细节,再由一个轻量 MLP 融合,兼顾质量与速度
上采样插值
对于任意查询点 $ \left ( x, y, z, t \right ) $ 分别在这六个平面上做双线性插值取特征。在每个平面 $ R_l\left ( i,j \right ) $ 上, 根据对应的二维坐标做双线性插值,得到平面特征:
\[f_h = \bigcup_{l}\prod \mathrm{interp} \left [ R_l\left ( i,j \right ) \right ]\] \[\left ( i,j \right ) \in \left \{ \left ( x, y \right ), \left ( x, z \right ), \left ( y, z \right ), \left ( x, t \right ), \left ( y, t \right ), \left ( z, t \right ) \right \}\]在每个2D平面上, 存的是一个 $H\times W \times C$ 的特征表(C 是通道数)
每个平面会有多组不同分辨率的特征表(例如 64×64、128×128、256×256). 对同一个查询点,会在每个分辨率的平面上分别做双线性插值,得到多组 C 维向量
给定查询点的二维坐标(归一化到平面网格范围),会在该平面上找到它落入的四个网格点,按双线性权重插值出一个 C 维向量
同一平面可有多层尺度(如基础分辨率与若干上采样层),插值后级联或求和以增强细节
平面特征融合
把六路(或多尺度)特征拼接,输入小型MLP $\phi_d$ 将这 6 份特征融合,输出每个高斯的空时嵌入 $f_d = \phi_d \left( f_h \right)$
融合方式:
- 级联
concat
: 直接把不同分辨率的向量拼接成一个更长的向量(常见做法,信息保留完整) - 求和
sum
: 逐通道相加,得到一个 C 维向量(更省内存,但可能损失细节)
K‑Planes 已提供强先验,融合网络保持小型有利于实时性与稳定训练
多头高斯变形解码 Multi-head Gaussian Deformation Decoder
- 变形参数预测
- 位置变形头 $ \phi_x $: 预测中心位移 $ \Delta X = \phi_x \left ( f_d \right ) $
- 旋转变形头 $ \phi_r $: 预测四元数微调 $ \Delta r = \phi_r \left ( f_d \right ) $,应用于协方差旋转分解
- 缩放变形头 $ \phi_s $: 预测协方差缩放 $ \Delta s = \phi_s \left ( f_d \right ) $, 对应协方差矩阵的尺度变化
- 构建时刻 $t$ 的 3D 高斯集合: 对每个高斯执行:
由此得到新的高斯集 $ G^{‘} = \left { X^{‘}, \Sigma^{‘}, C, \alpha \right } $ ,然后进行标准3DGS渲染
优化
损失函数: $ L = \left | \hat{I} - I \right | 1 + L{tv} $ |
其中 $ L_{tv} $ 为 grid-based total-variational loss 平滑正则化, 对多分辨率平面参数施加总变分损失, 抑制过度振荡
训练: Warm-up:仅优化 3,000 次静态高斯;联合优化:同时微调高斯 $G$ 与变形场网络 $ F $,共约 20,000 次迭代收敛
问题
保证 $ \left( x,y,z,y \right) $ 在各平面坐标内均匀分布;越界可裁剪或镜像,避免插值异常
大运动与遮挡: 单目、剧烈形变或大位移时,时空平面的表达可能容量不足或落入局部最优;可引入更多监督(深度/光流)或提高时空平面分辨率缓解
多分辨率与通道数: 每个平面采用多尺度表征(例如基础分辨率配合 2×、4×上采样),通道维度适中,过大易过拟合、过小欠拟合
K‑Planes 更省内存、速度更友好;极端复杂运动或强拓扑变化时,可能需要更大容量(更多通道/分辨率/正则)来弥补表达力