摘要
Flow4DGS-SLAM(CVPR 2026,NUS)针对动态场景 3DGS-SLAM 的两大痛点------变形场训练慢和语义分割依赖------提出了全新的光流引导框架。核心思路是用 depth + 先验光流拟合相机自运动模型,不依赖任何语义类别,直接从残差中生成动态掩膜,同时提供更稳定的位姿初始化。动态区域用混合 4D Gaussian 表示(显式时序位置 + GMM 透明度/旋转 + KNN 刚性约束),相比基线 4DGS-SLAM 将建图速度提升 17.6 倍 ,PSNR 提升 4 dB,TUM RGB-D ATE RMSE 降至 1.9 cm(新 SOTA)。
一、问题背景
1.1 动态环境下的 3DGS-SLAM 三大挑战
现有 3DGS-SLAM 在静态场景下已相当成熟,但动态环境直接击穿了三个假设:
挑战 1:变形场训练成本爆炸
基于 SC-GS 的 4DGS-SLAM 每帧需要优化神经变形场,建图耗时高达 110,562 ms/帧(FPS ≈ 0.04),完全无法实时。
挑战 2:语义分割模型泛化差
依赖 Mask2Former / SAM 等类别特定分割的方案,在"气球飘动""任意物体移动"等通用动态场景下频繁失效。
挑战 3:动态物体反复出入视野
人物离开后再次进入视野时,基于历史帧的变形场无法恢复其 Gaussian 状态,导致重影和位姿漂移。
1.2 本文策略
不预测动态类别,只分解运动本身。
用光流的 刚性分量(rigid flow) 代表相机自运动,用 残差(non-rigid flow) 代表真实动态区域,完全绕开语义分割。
二、核心方法
2.1 整体框架
RGB-D 视频帧 t
先验语义 mask
- 光流 F(u,v)
① Camera-Induced
Motion Decomposition
相机位姿初始化 T_cw
- 动态掩膜 M_dy
② Static Gaussians
精炼位姿 Tracking
③ Dynamic Gaussians
混合表示
Scene Flow
Gaussian Propagation
Adaptive Gaussian
Insertion
GMM 时序
Opacity / Rotation
关键帧选取
地图更新
2.2 Camera-Induced Motion Decomposition(相机自运动分解)
核心思想 :静态场景中任何点的光流都完全由相机运动决定。用 depth 将像素反投影到 3D,建立光流与相机速度旋量(twist) ξ = ρ ⊤ , θ ⊤ ⊤ ∈ R 6 \boldsymbol{\xi} = \\boldsymbol{\\rho}\^\\top, \\boldsymbol{\\theta}\^\\top^\top \in \mathbb{R}^6 ξ=ρ⊤,θ⊤⊤∈R6 的线性关系。
线性化光流模型:
F ( u , v ) = J ( x ) ξ \mathbf{F}(u, v) = \mathbf{J}(\mathbf{x}) \boldsymbol{\xi} F(u,v)=J(x)ξ
其中 J ( x ) \mathbf{J}(\mathbf{x}) J(x) 为 2 × 6 2 \times 6 2×6 图像雅可比矩阵(由像素坐标和深度值确定)。
加权最小二乘求解 ego-motion(IRLS + Cauchy 权重,抑制动态点污染):
ξ ^ = arg min ξ ∑ i w i ∥ F i − J i ξ ∥ 2 \hat{\boldsymbol{\xi}} = \arg\min_{\boldsymbol{\xi}} \sum_i w_i \left\| \mathbf{F}_i - \mathbf{J}_i \boldsymbol{\xi} \right\|^2 ξ^=argξmini∑wi∥Fi−Jiξ∥2
Cauchy 权重在每次迭代中根据残差重新计算,自动降低动态像素对求解的影响。
动态掩膜生成(类别无关,基于残差统计):
M c a ( u , v ) = 1 r ( u , v ) \> median ( r ) + k ⋅ MAD ( r ) \mathcal{M}_{ca}(u,v) = \mathbf{1}\!\leftr(u,v) \> \\text{median}(r) + k \\cdot \\text{MAD}(r)\\right Mca(u,v)=1r(u,v)\>median(r)+k⋅MAD(r)
最终动态掩膜 M d y = M s ∪ M c a \mathcal{M}_{dy} = \mathcal{M}s \cup \mathcal{M}{ca} Mdy=Ms∪Mca,其中 M s \mathcal{M}s Ms 为先验语义 mask(兜底), M c a \mathcal{M}{ca} Mca 为光流残差掩膜(主力)。
位姿初始化(SE(3) 指数映射):
T c w t = T c w t − 1 ⋅ exp s e ( 3 ) ( ξ ^ ∗ ) \mathbf{T}^t_{cw} = \mathbf{T}^{t-1}{cw} \cdot \exp{se(3)}(\hat{\boldsymbol{\xi}}^*) Tcwt=Tcwt−1⋅expse(3)(ξ^∗)
这一步为后续 Static Gaussians 的精炼优化提供比恒速模型更准确的初值,在快速运动场景下优势尤为明显。
2.3 Scene Flow Gaussian Propagation
第 k-1 帧
动态 Gaussian 位置 x_i^{k-1}
投影到图像
得到像素坐标 u_i^{k-1}
加光流偏移
u_i^k = u_i^{k-1} + F(u_i^{k-1})
反投影 + 深度
估计 3D 位移 Δx_i^k
KNN 邻域平滑
保持局部刚性
更新 3D 位置
x_i^k = x_i^{k-1} + Δx̂_i^k
光流引导 2D 传播:
u i k = u i k − 1 + F t k − 1 → t k ( u i k − 1 ) \mathbf{u}^k_i = \mathbf{u}^{k-1}i + \mathbf{F}^{t{k-1} \to t_k}\!\left(\mathbf{u}^{k-1}_i\right) uik=uik−1+Ftk−1→tk(uik−1)
3D 位移反投影:
Δ x i k = R k ⊤ ( D i k K − 1 u ˉ i k − t k ) − x i k − 1 \Delta \mathbf{x}^k_i = \mathbf{R}^\top_k \!\left( D^k_i \mathbf{K}^{-1} \bar{\mathbf{u}}^k_i - \mathbf{t}_k \right) - \mathbf{x}^{k-1}_i Δxik=Rk⊤(DikK−1uˉik−tk)−xik−1
其中 D i k D^k_i Dik 为深度值, K \mathbf{K} K 为相机内参, u ˉ i k \bar{\mathbf{u}}^k_i uˉik 为齐次坐标。
KNN 平滑(局部刚性约束):
Δ x ^ i k = ∑ j ∈ N ( i ) w i j knn Δ x j k , x i k = x i k − 1 + Δ x ^ i k \Delta \hat{\mathbf{x}}^k_i = \sum_{j \in \mathcal{N}(i)} w^{\text{knn}}_{ij} \Delta \mathbf{x}^k_j, \quad x^k_i = x^{k-1}_i + \Delta \hat{\mathbf{x}}^k_i Δx^ik=j∈N(i)∑wijknnΔxjk,xik=xik−1+Δx^ik
权重 w i j knn w^{\text{knn}}_{ij} wijknn 基于高斯核,距离越近权重越大。该步骤有效消除光流噪声导致的 Gaussian 碎裂。
2.4 Adaptive Gaussian Insertion
当动态物体重新进入视野 或新动态区域出现 时,仅靠传播无法恢复缺失的 Gaussian。自适应插入模块通过反向光流回溯检测:
M insert t k = { u p k ∈ M d y t k ∣ u p k − 1 ∉ M d y t k − 1 } \mathcal{M}^{t_k}{\text{insert}} = \left\{ \mathbf{u}^k_p \in \mathcal{M}^{t_k}{dy} \;\Big|\; \mathbf{u}^{k-1}p \notin \mathcal{M}^{t{k-1}}_{dy} \right\} Minserttk={upk∈Mdytk upk−1∈/Mdytk−1}
即:当前帧动态掩膜内、但前一帧动态掩膜内不存在对应像素的区域,在此处从深度图初始化新的动态 Gaussian。这是处理"人物离开再进入"场景的关键。
2.5 GMM-based 时序 Opacity & Rotation
传统 4D Gaussian 用固定 opacity,无法表达动态物体的出现/消失过程。本文用 K = 3 K=3 K=3 分量的高斯混合模型(GMM)对时序透明度建模:
时序 opacity (时间 t t t 处的透明度):
m i ( t ) = 1 − exp ( − A i ∑ k = 1 K w i , k N ( t ^ ; μ i , k , τ i , k 2 ) ) m_i(t) = 1 - \exp\!\left(-A_i \sum^K_{k=1} w_{i,k} \mathcal{N}(\hat{t};\, \mu_{i,k},\, \tau^2_{i,k})\right) mi(t)=1−exp(−Aik=1∑Kwi,kN(t^;μi,k,τi,k2))
σ i ( t ) = σ i ⋅ m i ( t ) \sigma_i(t) = \sigma_i \cdot m_i(t) σi(t)=σi⋅mi(t)
其中 A i A_i Ai 为振幅, w i , k w_{i,k} wi,k、 μ i , k \mu_{i,k} μi,k、 τ i , k \tau_{i,k} τi,k 为第 k k k 个 GMM 分量的权重、均值、标准差,均为可学习参数。
时序 rotation 混合(四元数加权归一化):
q i ( t ) = ∑ k = 1 K w i , k N ( t ^ ; μ i , k , τ i , k 2 ) q i , k ∥ ∑ k = 1 K w i , k N ( t ^ ; μ i , k , τ i , k 2 ) q i , k ∥ \mathbf{q}i(t) = \frac{\displaystyle\sum^K{k=1} w_{i,k} \mathcal{N}(\hat{t};\, \mu_{i,k},\, \tau^2_{i,k}) \mathbf{q}{i,k}}{\displaystyle\left\|\sum^K{k=1} w_{i,k} \mathcal{N}(\hat{t};\, \mu_{i,k},\, \tau^2_{i,k}) \mathbf{q}_{i,k}\right\|} qi(t)= k=1∑Kwi,kN(t^;μi,k,τi,k2)qi,k k=1∑Kwi,kN(t^;μi,k,τi,k2)qi,k
三、实验分析
3.1 TUM RGB-D 追踪精度(ATE RMSE,cm,越低越好)
| 方法 | 类型 | 平均 ATE |
|---|---|---|
| RoDyn-SLAM | NeRF-based | 5.1 |
| 4DGS-SLAM | 4DGS baseline | 2.1 |
| Flow4DGS-SLAM(本文) | 光流 4DGS | 1.9 |
3.2 BONN 数据集追踪精度(更难,含通用动态目标)
| 方法 | 平均 ATE (cm) |
|---|---|
| 4DGS-SLAM | 3.9 |
| Flow4DGS-SLAM | 3.5 |
3.3 渲染质量(TUM RGB-D 平均)
| 指标 | 4DGS-SLAM | Flow4DGS-SLAM | 提升 |
|---|---|---|---|
| PSNR (dB) ↑ | 22.55 | 26.55 | +4.0 dB |
| SSIM ↑ | 0.788 | 0.831 | +0.043 |
| LPIPS ↓ | 0.229 | 0.177 | -22.7% |
3.4 训练效率对比(每帧建图耗时)
| 方法 | 建图时间 (ms) | FPS |
|---|---|---|
| 4DGS-SLAM | 110,562 | 0.04 |
| Flow4DGS-SLAM | 6,285 | 0.50 |
速度提升 17.6×,得益于用显式场景流传播替代神经变形场优化。
3.5 消融结论
| 去掉的模块 | 影响最大的场景 | 主要指标下降 |
|---|---|---|
| Camera-Induced Decomposition | BONN(通用动态目标) | ATE 显著上升 |
| Flow propagation + Adaptive insertion | balloon2(快速运动)、fr3/walk_xyz(物体出入) |
ATE + PSNR 双降 |
| GMM 时序建模 | 物体出现/消失边界帧 | PSNR / SSIM 下降 |
| KNN 平滑 | 快速运动 Gaussian 碎裂 | 渲染质量劣化 |
四、小结
三个真正的创新点:
-
光流自运动分解替代语义分割------MAD 阈值的 category-agnostic 掩膜,比 Mask2Former 轻量且更通用,在非常规动态目标上不失效。
-
场景流 Gaussian 传播替代变形场------把"优化神经网络参数"变成"解析式反投影 + KNN 平滑",速度从 0.04 FPS 到 0.50 FPS,17.6× 提速,代价是对深度精度的依赖更强。
-
GMM 时序 opacity/rotation ------解决了固定 opacity 无法表达动态物体出现/消失的问题, K = 3 K=3 K=3 分量已足够拟合常见动态模式。
局限性:
- 仍是 RGB-D 输入,单目/双目场景不适用(深度缺失时反投影失效)
- 0.50 FPS 距离实时(30 FPS)仍有 60× 差距,嵌入式部署暂不现实
- 光流先验本身在极端运动模糊下会失效,传导到掩膜质量
对 VIO 工程的借鉴(面向 Stereo VIO,非直接移植):
Camera-Induced Motion Decomposition 的 rigid flow 分解思路 可以下沉到 VIO 前端的 StaticDetector:现有的二值静态判定升级为"光流残差 MAD 统计",不需要引入 4D Gaussian 建图模块,仅前端改动即可获得更鲁棒的动态特征剔除。自运动分解提供的位姿初始化质量也对 degraded tracking 下的恢复有参考价值。
代码尚未公开(论文于 2026/04 提交 CVPR),关注作者 GitHub:wangys16
arXiv: 2604.22339 | 项目主页: wangys16.github.io/Flow4DGS-SLAM