A Compact Dynamic 3D Gaussian Representation for Real-Time Dynamic View Synthesis¶
会议: ECCV 2024
arXiv: 2311.12897
代码: https://github.com/seoha-kim/Compact3D (有)
领域: 3D视觉 / 动态新视角合成
关键词: 3D Gaussian Splatting, 动态场景, Fourier逼近, 实时渲染, 紧凑表示
一句话总结¶
将3DGS中的位置和旋转参数建模为时间的函数(位置用Fourier逼近、旋转用线性逼近),使动态场景的存储复杂度从O(TN)降低到O(LN),在D-NeRF/DyNeRF/HyperNeRF三个数据集上实现了与NeRF方法匹敌的渲染质量,同时保持118+ FPS的实时渲染速度。
背景与动机¶
3DGS在静态场景新视角合成上表现出色,但直接扩展到动态场景(如Dynamic 3D Gaussians)需要在每个时间步存储所有高斯参数,导致两个严重问题:(1) 内存消耗与视频长度成正比——对于长序列场景需要数GB级存储;(2) 每个时间步需要大量多视角观测来约束优化,无法处理单目或少视角场景。另一方面,基于NeRF的动态方法(如K-Planes、V4D、TiNeuVox)虽然渲染质量高,但由于依赖MLP的大量查询,渲染速度仅为0.1-1.2 FPS,远不能满足实时需求。如何在保持3DGS实时渲染优势的同时实现动态场景的紧凑表示和单目友好的重建?
核心问题¶
动态3DGS的核心矛盾在于:直接在每个时间步存储独立的高斯参数既浪费内存又对观测数量有严格要求。需要找到一种方式,用少量参数将3D高斯的运动随时间变化的规律"压缩"表达出来,同时让所有时间步的观测都能约束同一组参数,从而实现紧凑存储和少视角友好。
方法详解¶
核心思路非常直观:动态场景中物体的运动可以看作位置和朝向随时间变化的过程,因此将高斯的位置和旋转定义为时间的连续函数,其他属性(缩放、颜色、不透明度)保持不变。这样整个动态场景就用一组共享的函数参数来描述,而不是每帧存一套参数。
整体框架¶
输入多视角/单目视频及相机参数 → 初始化3D高斯点(真实场景用SfM、合成场景随机初始化) → 静态阶段优化(3K iters,固定位置/旋转的时序系数,只学截距和时间无关参数) → 动态阶段优化(27K iters,释放所有参数学习运动) → 得到紧凑动态高斯表示 → 给定任意时间t和相机,计算高斯位置/旋转后用标准3DGS splatting实时渲染。
关键设计¶
-
位置的Fourier逼近: 每个高斯的3D中心坐标 \(x(t), y(t), z(t)\) 用Fourier级数表示:\(x(t) = w_0 + \sum_{i=1}^{L} w_{2i-1}\sin(2i\pi t) + w_{2i}\cos(2i\pi t)\)。Fourier基函数天然适合描述周期性/平滑运动,且不像多项式那样在高阶时过拟合。每个高斯的位置只需3(2L+1)个参数,与时间长度T无关。D-NeRF上L=2(15个位置参数),DyNeRF/HyperNeRF上L=5(33个位置参数)。
-
旋转的线性逼近: 3D旋转用四元数表示,由于四元数的单位球约束使复杂逼近难以应用,因此采用最简单的线性逼近:\(q_x(t) = w_0 + w_1 t\)。每个高斯的旋转只需8个参数(4个四元数分量×2个系数)。
-
时间无关属性: 缩放因子、SH颜色系数和不透明度保持时间不变。理由是真实场景中物体很少会"膨胀或收缩",这种设计避免了参数爆炸。消融实验也验证了时变缩放只带来微小提升但增加存储。
-
光流监督损失: 为解决单目/少视角场景中的时序歧义,利用RAFT预计算相邻帧间的前向/后向光流作为真值,然后从高斯表示推导出伪光流(通过计算\(\mu(t+\Delta t) - \mu(t)\)得到3D场景流,再投影到2D并做alpha-blending),用L1损失约束两者一致。这个损失零额外渲染开销就能增强时空一致性,有效消除重影伪影。
-
两阶段优化策略: 先用所有训练帧作为静态场景优化3K步(只学时间无关参数+截距),形成合理的空间先验;然后释放所有参数再做27K步动态优化。这比直接端到端训练更稳定。
损失函数 / 训练策略¶
- 重建损失: \(\mathcal{L}_{recon} = (1-\lambda)||\hat{I}-I|| + \lambda\mathcal{L}_{D-SSIM}\),\(\lambda=0.2\)
- 光流损失: \(\mathcal{L} = \mathcal{L}_{recon} + \lambda_{flow}\mathcal{L}_{flow}\),\(\lambda_{flow}=1000\)
- D-NeRF数据集因相邻帧间相机传送(非连续运动)而不使用光流损失
- 高斯自适应密度控制(分裂/克隆/剪枝)沿用3DGS的策略
实验关键数据¶
| 数据集 | 指标 | 本文 | K-Planes | V4D | TiNeuVox | 3DGS | D-3DGS |
|---|---|---|---|---|---|---|---|
| D-NeRF | PSNR↑ | 32.19 | 31.61 | 33.72 | 30.75 | 20.51 | 17.22 |
| D-NeRF | FPS↑ | 150 | 0.54 | 1.23 | 0.32 | 170 | 173 |
| D-NeRF | Mem↓ | 159MB | 497MB | 1.2GB | 8MB | 50MB | 913MB |
| DyNeRF | PSNR↑ | 31.65 | 31.63 | 28.96 | - | 20.94 | 24.36 |
| DyNeRF | FPS↑ | 118 | 0.31 | 0.11 | - | 109 | 119 |
| DyNeRF | Mem↓ | ~110MB | ~309MB | 1.2GB | - | ~198MB | ~2.3GB |
| HyperNeRF | PSNR↑ | 25.6 | - | 24.3 | 24.3 | - | - |
| HyperNeRF | FPS↑ | 188 | - | 0.15 | 0.14 | - | - |
消融实验要点¶
- Fourier阶数L: L=2在D-NeRF上最优(Mean PSNR 32.19);更高的L在某些复杂运动场景(Jumping Jacks, T-Rex)上更好,但整体平均下降。最优L因场景而异
- 逼近函数对比: Fourier(L=2) > Spline(5/6) ≈ Fourier但Spline只有91 FPS > Cubic > Quadratic > Linear。多项式逼近在低阶欠拟合、高阶过拟合
- 时变缩放: 加入线性时变缩放后Mean PSNR从32.19微升至31.94,但增加了存储,不值得
- 光流损失: 在DyNeRF上可视化对比表明,加光流损失显著消除了重影伪影(ghostly artifacts),颜色重建更准确
亮点¶
- 极其简洁的核心idea: 只用Fourier逼近位置+线性逼近旋转就搞定了动态场景,不需要额外神经网络、不需要变形场,保持了纯3DGS的渲染速度优势
- 存储与时间长度解耦: O(LN)的复杂度使表示大小完全不受视频长度影响,对长视频非常友好
- 单目/少视角友好: 因为所有时间步共享参数,每个帧的观测都在约束全局模型,本质上是一种时间维度的正则化
- 光流损失的妙用: 利用高斯的显式位置函数可以直接解析推导伪光流,无需额外渲染,零开销获得时序约束
- 支持直接编辑: 保持了纯3DGS表示,可以直接做场景组合(论文展示了两个动态场景的合成)
- 300×到100×加速: 比K-Planes快300倍,比V4D快100倍,在1352×1014分辨率下仍达118 FPS
局限性 / 可改进方向¶
- 无法建模拓扑变化: 所有高斯在全部时间步上都存在,无法表示物体的出现/消失/分裂(如流体)。作者建议加入起止时间参数来建模高斯的"生命周期"
- 长序列质量退化: 参数数量固定,Fourier基函数的表达力有上限——对于非常长的视频或高度复杂的运动,渲染质量会下降。需要自适应决定每个高斯的复杂度
- 旋转建模过于简单: 仅用线性逼近旋转四元数,对复杂旋转运动(如翻转、旋转物体)表达力不足。可考虑用球面线性插值(SLERP)或更高阶的四元数逼近
- 继承3DGS的固有缺陷: 对不准确的相机位姿敏感、泛化性不如NeRF的连续神经场。作者提到可以像PlenOctree一样从NeRF蒸馏到本表示来提升
- 缩放固定假设: 假设物体不会膨胀/收缩在大多数场景下成立,但对于气球充气、纸张展开等场景会失效
- → 可链接到 ideas/3d_vision/20260317_full_attribute_temporal_rectification_4dgs.md(全属性时序校正)
与相关工作的对比¶
- vs Dynamic 3D Gaussians (Luiten et al.): D-3DGS在每个时间步独立存储位置和旋转,空间复杂度O(TN)。本文用函数逼近将其压缩到O(LN),在D-NeRF上PSNR从17.22提升到32.19(D-3DGS在单目场景完全失败),内存从913MB降到159MB
- vs K-Planes / V4D: 这两个NeRF系方法渲染质量略高(V4D在D-NeRF上33.72 vs 本文32.19),但渲染速度差100-300倍(V4D: 1.23 FPS vs 本文: 150 FPS),不可实时。本文在速度和质量之间找到了极佳的平衡点
- vs 4D Rotor GS / Spacetime GS: 同期工作用不同方式扩展3DGS到动态场景。4D-Rotor通过时间切片在局部时间区间建模,SpacetimeGS结合MLP。本文保持纯3DGS表示+解析函数,更简洁且支持直接编辑
启发与关联¶
- 与TTT-4D idea的关联: 本文的Fourier逼近在训练范围外的外推能力有限(周期函数会简单重复),这正是TTT-4D动力学外推要解决的问题——D-NeRF/HyperNeRF数据集可直接复用
- 与全属性时序校正的关联: 本文只让位置和旋转随时间变化,FATR idea进一步提出让SH颜色、缩放等也做时序校正,可看作本文的自然扩展
- 函数逼近的通用性: Fourier逼近位置的思路可以迁移到其他需要紧凑时序建模的任务(如动态点云压缩、4D占据预测),核心洞察是"用基函数编码时间维度比存储每帧参数更高效"
- 光流监督作为通用trick: 从显式点表示推导伪光流用于时序正则化,这个设计可以用于任何基于显式点的动态表示方法
评分¶
- 新颖性: ⭐⭐⭐⭐ 用Fourier逼近取代per-timestep存储的想法简洁有效,但核心技术并不复杂——属于"为什么之前没人想到"的类型
- 实验充分度: ⭐⭐⭐⭐ 三个数据集覆盖合成/真实/单目/多目,消融详尽(函数类型、阶数、时变属性、光流损失),但缺少与更多同期4DGS工作的对比
- 写作质量: ⭐⭐⭐⭐ 条理清晰,公式推导严谨,图表信息量大
- 价值: ⭐⭐⭐⭐⭐ 首次实现了动态场景的实时高质量渲染(118 FPS@1352×1014),对后续4DGS研究有重要启发作用