跳转至

4D Gaussian Splatting SLAM

会议: ICCV 2025
arXiv: 2503.16710
代码: https://github.com/yanyan-li/4DGS-SLAM
领域: 3D视觉
关键词: 4D高斯, 动态场景SLAM, 光流渲染, 稀疏控制点, RGB-D

一句话总结

提出首个完整的4D Gaussian Splatting SLAM系统,在动态场景中同时进行相机位姿跟踪和4D高斯辐射场重建——将高斯原语分为静态/动态集合,通过稀疏控制点+MLP建模动态物体运动,并创新性地设计2D光流图渲染算法来监督动态高斯的运动学习。

研究背景与动机

现有GS-SLAM方法(SplaTAM、MonoGS、Gaussian-SLAM)主要假设静态场景。面对动态环境,主流策略是检测并移除动态物体(如用语义分割),仅重建静态环境。这一策略导致两大问题:(1) 动态物体所在区域留下"空洞",无法完整重建场景;(2) 动态信息被完全丢弃,无法支持下游交互需求(如机器人抓取运动中的物体)。虽然D3DGS、SC-GS等动态高斯方法可以建模运动,但它们需要预先给定相机位姿,不适用于在线增量式的SLAM场景。因此,如何在未知动态环境中从RGB-D序列同时实现准确的位姿估计和高质量的4D高斯辐射场重建,仍是未解决的核心挑战。

方法详解

整体框架

系统包含三个核心模块:(1) 初始化:用YOLOv9生成运动蒙版,将高斯分为静态集 \(\mathcal{G}_{st}\) 和动态集 \(\mathcal{G}_{dy}\),并在动态区域初始化稀疏控制点;(2) 跟踪:仅用静态高斯渲染做位姿估计,排除动态物体干扰;(3) 4D映射:联合优化高斯属性、相机位姿和动态变形网络,通过光流约束学习动态运动。每个高斯增加属性 \(dy\) 标记是否为动态高斯,最终表示为 \(\mathcal{G}=[\Sigma\;\mu\;\alpha\;\mathbf{c}\;dy]\)

关键设计

  1. 静态/动态高斯分离与关键帧策略: 跟踪时仅渲染静态高斯,不受动态物体干扰。映射时分别优化静态重建和动态运动。关键帧选择额外考虑运动蒙版的变化——即使相机几乎不动,只要动态物体运动显著也会触发新关键帧插入(或至少每5帧插入一次)。新增关键帧只初始化新的静态高斯,不增加动态高斯。

  2. 稀疏控制点+MLP变形网络: 受SC-GS启发,在动态区域初始化稀疏控制点,但区别于SC-GS需要长期预训练,本文直接从初始帧的运动区域初始化。用MLP \(\Psi(P_k, t) \to [R_t, T_t]\) 预测每个控制点的时变6-DoF变换。通过KNN搜索找到每个动态高斯的K个最近控制点,用高斯RBF插值得到稠密变换(Linear Blend Skinning),同时更新位置 \(\mu\)、旋转 \(R\) 和缩放 \(S\)。这避免了逐高斯学习运动的高昂参数开销。

  3. 2D光流图渲染监督(核心创新): 将动态高斯在相邻时刻 \(t\)\(t-1\) 的位置投影到当前相机平面,得到两组2D坐标,差值 \(d_x\) 通过alpha-blending渲染为光流图 \(F(p)=\sum_i d_x \alpha_i \prod_j^{i-1}(1-\alpha_j)\)。同时计算前向和后向光流,与RAFT预估的光流在运动蒙版区域做L1监督。这提供了跨帧一致的运动几何约束,是显著提升动态重建质量的关键。

损失函数 / 训练策略

  • 跟踪损失\(L_t = \sum_p \mathcal{M}(\lambda O(p) L_1(C(p)) + (1-\lambda) L_1(D(p)))\),运动蒙版 \(\mathcal{M}\) 过滤动态区域,仅在静态区域计算损失。颜色损失仅在梯度超过阈值 \(\sigma\) 的像素上计算,深度损失需 \(O(p)>0.95\)\(d(p)>0\)
  • 映射损失\(L_{mapping} = \lambda L_1(C) + (1-\lambda) L_1(D) + \lambda_{flow}\mathcal{L}_{flow} + W_1 E_{ARAP} + W_2 E_{iso}\),其中 \(E_{iso}\) 惩罚高斯椭球的不均匀拉伸。
  • 两阶段映射策略:Stage 1冻结高斯参数,仅优化位姿+动态网络(动态区域权重加倍);Stage 2全部联合优化(3窗口帧+5重叠帧+2全局随机帧)。
  • 全局颜色精化:最后1500步迭代,每次随机选10帧,用 \(0.2\text{D-SSIM}+0.8L_1(C)+0.1L_1(D)+W_1 E_{ARAP}+W_2 E_{iso}\) 优化。
  • 实现: PyTorch+CUDA, 单卡RTX 3090 Ti, 参数 \(\lambda=0.9, \lambda_{flow}=3, W_1=1e\text{-}4, W_2=10\)

实验关键数据

主实验

位姿估计 ATE(cm)↓ — BONN数据集(9序列平均):

方法 balloon ps_track sync p_no_box Avg(9seq)
MonoGS 29.6 54.5 68.5 71.5 33.1
SplaTAM 32.9 77.8 59.5 91.9 56.8
Gaussian-SLAM 66.9 107.2 111.8 69.9 84.3
RoDyn-SLAM 7.9 14.5 1.3 4.9 7.9
Ours 2.4 8.9 2.8 1.8 3.6

渲染质量 — BONN数据集(9序列平均):

方法 PSNR↑ SSIM↑ LPIPS↓
MonoGS 21.06 0.780 0.342
SplaTAM 19.34 0.757 0.233
SC-GS 21.63 0.724 0.461
Ours 23.66 0.852 0.241

TUM RGB-D数据集(6序列平均):ATE 1.8cm (Ours) vs 5.1cm (RoDyn-SLAM) vs 15.8cm (MonoGS);PSNR 22.46 (Ours) vs 20.78 (SC-GS) vs 17.74 (MonoGS)。

消融实验

光流损失 + 分离高斯的影响(BONN synchronous序列 PSNR↑):

光流损失 分离高斯 syn PSNR syn2 PSNR
18.37 22.11
22.87 24.84
17.40 21.03
23.25 25.42

映射帧选择策略: 3窗口帧+5重叠帧+2全局随机帧的组合在静态和动态区域均获得最佳重建质量,其他组合要么导致动态区域模糊(全局帧过多),要么静态区域遗忘(窗口帧过多)。

关键发现

  • 两个模块缺一不可:单独使用光流损失但不分离高斯(17.40)反而比不用光流(18.37)更差,因为静态高斯被动态光流错误监督
  • 静态GS-SLAM方法在高动态场景ATE退化10-50×——BONN sit_half序列MonoGS 54.5cm vs Ours 8.9cm
  • 本方法在TUM的sit序列(小运动)上位姿精度略逊MonoGS,但在walk序列(大运动)上优势巨大(2.1cm vs 30.7cm)

亮点与洞察

  • 首个完整的4D GS-SLAM系统:不丢弃动态物体,同时跟踪+重建4D场景,填补了重要空白
  • 光流渲染监督是核心创新——从3D高斯运动自然导出2D光流,与RAFT估计做交叉验证,形成几何+外观+运动的三重约束
  • ATE在BONN和TUM上分别达3.6cm和1.8cm,远超所有静态GS-SLAM和NeRF动态SLAM
  • 消融证明光流损失+分离高斯两个设计必须协同,单独使用光流反而有害——这一反直觉发现很有教育意义

局限与展望

  • 依赖YOLOv9做运动蒙版——对未知类别动态物体可能检测失败,需结合光流等无监督线索
  • 某些序列需要预指定动态初始化帧(如placing_nonobstructing_box),完全自动检测有待改进
  • 仅在室内RGB-D场景验证——室外/单目场景扩展需解决深度缺失问题,可结合单目深度估计
  • 动态高斯数量在初始化后固定,无法处理新出现或消失的动态物体
  • 全局颜色精化1500步可能不够高效,可探索自适应的优化调度

相关工作与启发

  • vs MonoGS/SplaTAM/Gaussian-SLAM: 这些静态GS-SLAM在动态场景中位姿严重漂移,本文通过分离+屏蔽解决
  • vs RoDyn-SLAM: NeRF-based动态SLAM,位姿精度接近但渲染质量和效率不如GS方案
  • vs DGS-SLAM/DG-SLAM: 这些GS-SLAM仅移除动态物体重建静态场景;本文显式建模动态+渲染完整4D场景
  • vs SC-GS/D3DGS: 动态GS方法需要预先给定位姿;本文在线增量估计位姿,适用于真实SLAM场景
  • 从高斯运动推导光流的思路可以扩展到视频生成/编辑中的运动约束
  • 静态/动态分离框架可用于动态场景的语义SLAM或具身导航中的运动物体感知

评分

  • 新颖性: ⭐⭐⭐⭐ 4D GS-SLAM是自然且必要的扩展,光流渲染监督是真正的亮点
  • 实验充分度: ⭐⭐⭐⭐ TUM+BONN双数据集、多baseline、消融完整,但缺少大规模/室外场景
  • 写作质量: ⭐⭐⭐ 方法描述清晰但组织有改进空间
  • 价值: ⭐⭐⭐⭐ 填补4D GS-SLAM空白,对动态场景理解和机器人应用有重要意义