【动态重建】Flow4DGS-SLAM:基于光流引导的4DGS-SLAM算法

图 1:本方法可生成具有空间与时间上连贯的高斯运动效果的高质量渲染图像。

目录

标题:Flow4DGS-SLAM: Optical Flow-Guided 4D Gaussian Splatting SLAM

新加坡国立大学计算科学与信息学学院

链接:https://wangys16.github.io/Flow4DGS-SLAM.

摘要

  在视觉同步定位与地图构建(SLAM)领域,应对动态环境是一个重要的研究挑战。近期的研究将 3DGS 与SLAM相结合,旨在同时实现鲁棒的相机位姿估计与逼真图像渲染。然而,利用SLAM高效重建静态与动态区域仍面临诸多挑战。

  本工作提出一种基于光流引导的高效动态3DGS SLAM框架。通过利用输入深度图与先验光流信息,首先提出一种与物体类别无关的运动掩膜生成策略------该策略通过拟合相机自身运动模型来分解光流。此模块可分离动态与静态GS,并同步提供基于光流的相机位姿初始化方法。我们通过在关键帧处显式建模动态3DGS的时域中心点,显著提升了其训练速度;这些中心点利用三维场景流先验信息进行传播,并采用自适应插入策略进行动态初始化。此外,我们采用高斯混合模型(GMM)对时域不透明度与旋转运动进行建模,以自适应地学习复杂的动态行为。实验结果表明,我们的方法在跟踪精度、动态场景重建能力及训练效率方面均达到了当前领域的领先水平。

  

整体架构

  相机追踪 (Tracking): 提出一种"相机诱发运动分解 (Camera-Induced Motion Decomposition)"方法生成类别无关的运动掩码。该掩码与 YOLOv9 生成的语义掩码 (Semantic mask) 结合,在追踪过程中剔除动态干扰物。

  动态建图 (Mapping): 采用混合形式的动态高斯模型,具有显式的时间位置。这种方法利用光流先验来进行显式的高斯传播和自适应的高斯插入。同时,利用高斯混合模型 (GMM) 模拟动态高斯随时间变化的不透明度和旋转,以重建复杂的动态场景。

一、相机引导的运动分解 (Camera-Induced Motion Decomposition)

  这一核心模块利用光流和深度图 拟合相机的自运动模型 , 过滤出动态像素 ,并 为新相机的位姿提供粗略的初始化。从时间 t t t 到 t − 1 t-1 t−1 的微小相机运动下,静态 3D 点的运动场表示为:

其中 F ( u , v ) \mathbf{F}(u, v) F(u,v) 是通过 RAFT 获得的光流, ξ = ρ ⊤ , θ ⊤ ⊤ ∈ R 6 \boldsymbol{\xi} = \\boldsymbol{\\rho}\^\\top, \\boldsymbol{\\theta}\^\\top^\top \in \mathbb{R}^6 ξ=ρ⊤,θ⊤⊤∈R6 表示包含平移和旋转的相机扭转 (Camera twist)。 J ( x ) \mathbf{J}(\boldsymbol{x}) J(x) 是基于投影几何的 2 × 6 2 \times 6 2×6 图像雅可比矩阵: J ( x ) = − f x Z 0 u Z u v f y − f x − u 2 f x v 0 − f y Z v Z f y + v 2 f y − u v f x − u \mathbf{J}(\boldsymbol{x}) = \begin{bmatrix} -\frac{f_x}{Z} & 0 & \frac{u}{Z} & \frac{uv}{f_y} & -f_x - \frac{u^2}{f_x} & v \\ 0 & -\frac{f_y}{Z} & \frac{v}{Z} & f_y + \frac{v^2}{f_y} & -\frac{uv}{f_x} & -u \end{bmatrix} J(x)=−Zfx00−ZfyZuZvfyuvfy+fyv2−fx−fxu2−fxuvv−u

   相机扭转估计 :结合 YOLOv9 提取的语义掩码 M s \mathcal{M}_s Ms(其中 M s ( u , v ) = 1 \mathcal{M}_s(u,v)=1 Ms(u,v)=1 表示人物等动态物体),假设 M s ( u , v ) = 0 \mathcal{M}s(u,v)=0 Ms(u,v)=0 且深度 Z > 0 Z>0 Z>0 的像素为静态,通过带有 Cauchy 权重 w i w_i wi 的 IRLS(迭代重加权最小二乘法)求解最优扭转参数 ξ ^ \hat{\boldsymbol{\xi}} ξ^: ξ ^ = arg ⁡ min ⁡ ξ ∑ i w i ∥ F i − J i ξ ∥ 2 ( 3 ) \hat{\boldsymbol{\xi}} = \arg\min{\boldsymbol{\xi}} \sum_i w_i \Vert{}\mathbf{F}_i - \mathbf{J}_i\boldsymbol{\xi}\Vert{}^2(3) ξ^=argξmini∑wi∥Fi−Jiξ∥2(3) F i \mathbf{F}_i Fi:第 i i i 个像素实际观察到的移动(观测值)。
J i ξ \mathbf{J}_i\boldsymbol{\xi} Jiξ:假设相机按照 ξ \boldsymbol{\xi} ξ 运动时,第 i i i 个像素理论上应该产生的移动(预测值)。 ∥ F i − J i ξ ∥ 2 \Vert{}\mathbf{F}_i - \mathbf{J}_i\boldsymbol{\xi}\Vert{}^2 ∥Fi−Jiξ∥2:理论值和实际值的差距(平方误差)。
w i w_i wi (Cauchy weights):权重。移动物体(干扰项)的点分配极小的权重 w i w_i wi

   运动掩码优化 。计算预测刚性光流 F ^ ( u , v ) \hat{\mathbf{F}}(u,v) F^(u,v) 与实际光流的残差: r ( u , v ) = ∥ F ( u , v ) − F ^ ( u , v ) ∥ 2 ( 4 / 5 ) r(u, v) = \Vert{}\mathbf{F}(u, v) - \hat{\mathbf{F}}(u, v)\Vert{}2(4/5) r(u,v)=∥F(u,v)−F^(u,v)∥2(4/5)由于动态像素往往产生较大的残差,系统基于中位数和绝对中位差 (MAD) 设置阈值来生成类别无关掩码 M c a \mathcal{M}{ca} Mca,最终的动态掩码是两者的并集 M d y = M s ∪ M c a \mathcal{M}{dy} = \mathcal{M}s \cup \mathcal{M}{ca} Mdy=Ms∪Mca: M c a ( u , v ) = 1 ( r ( u , v ) > median ( r ) + k   MAD ( r ) ) \mathcal{M}{ca}(u, v) = \mathbb{1}(r(u, v) > \text{median}(r) + k\,\text{MAD}(r)) Mca(u,v)=1(r(u,v)>median(r)+kMAD(r))

   相机位姿初始化 在确定最终静态像素 ( M d y ( u , v ) = 0 \mathcal{M}{dy}(u,v)=0 Mdy(u,v)=0) 后,进行第二次加权最小二乘优化以获得更精确的扭转参数 ξ ^ ∗ \hat{\boldsymbol{\xi}}^* ξ^∗。通过指数映射将其映射至 SE(3) 空间: exp ⁡ s e ( 3 ) ( ξ ^ ∗ ) = exp ⁡ s o ( 3 ) ( θ ∗ ) V ( θ ∗ ) ρ ∗ 0 ⊤ 1 ( 6 ) \exp{\mathfrak{se}(3)}(\hat{\boldsymbol{\xi}}^*) = \begin{bmatrix} \exp_{\mathfrak{so}(3)}(\boldsymbol{\theta}^*) & \mathbf{V}(\boldsymbol{\theta}^*)\boldsymbol{\rho}^* \\ \mathbf{0}^\top & 1 \end{bmatrix}(6) expse(3)(ξ^∗)=expso(3)(θ∗)0⊤V(θ∗)ρ∗1(6)最终结合上一帧位姿 T c w t − 1 \mathbf{T}{cw}^{t-1} Tcwt−1 初始化当前帧位姿: T c w t = T c w t − 1 exp ⁡ s e ( 3 ) ( ξ ^ ∗ ) ( 7 ) \mathbf{T}{cw}^t = \mathbf{T}{cw}^{t-1} \exp{\mathfrak{se}(3)}(\hat{\boldsymbol{\xi}}^*)(7) Tcwt=Tcwt−1expse(3)(ξ^∗)(7)

  

二、混合 4D 高斯表示

  核心是将场景解耦为静态高斯和动态高斯,并采用混合形式来表达动态特性:位置使用显式的关键帧插值,而不透明度和旋转使用基于高斯混合模型(GMM)的连续时间函数。这种设计既保留了显式操作的高效性,又保证了时序上的平滑过渡。

基础 3DGS 渲染

C ^ s ( u ) = ∑ i = 1 ∣ G ∣ c i s α i s ( u ) ∏ j < i ( 1 − α j s ( u ) ) ( 8 ) \hat{C}^s(\mathbf{u}) = \sum_{i=1}^{\vert{}\mathcal{G}\vert{}} c_i^s \alpha_i^s(\mathbf{u}) \prod_{j<i} (1 - \alpha_j^s(\mathbf{u})) ( 8) C^s(u)=i=1∑∣G∣cisαis(u)j<i∏(1−αjs(u))(8)通过 Alpha 混合,将空间中的 3D 高斯按从前到后的顺序投影到 2D 图像平面以计算像素颜色 C ^ s \hat{C}^s C^s。深度图 D ^ s \hat{D}^s D^s 和不透明度图 O ^ s \hat{O}^s O^s 的渲染逻辑与此完全一致。

  动态高斯的显式与连续属性 。动态高斯包含静态基础属性(尺度、基础不透明度、颜色)和时变属性。为了加速训练并更好地利用光流先验, 动态GS在任意时刻 t t t 的中心位置 x i ( t ) \mathbf{x}_i(t) xi(t) ,采用"显式关键帧 + 线性插值"的方式获取

  基于 GMM 的时间变化"透明度开关" 。为了在不大幅增加存储开销的前提下平滑表示随时间变化的不透明度,系统在整个时间序列 t ^ ∈ 0 , 1 \hat{t} \in 0, 1 t^∈0,1 上学习 K K K=3 个 GMM 分量,即 微观层面上的每一个独立的 3D Splat,其在整个时间轴上的不透明度和旋转变化,由 3 个一维时间基函数来拟合 。 m i ( t ) = 1 − exp ⁡ ( − A i ∑ k = 1 K w i , k N ( t ^ ; μ i , k , τ i , k 2 ) ) ( 9 ) m_i(t) = 1 - \exp\left(-A_i \sum_{k=1}^K w_{i,k} \mathcal{N}(\hat{t}; \mu_{i,k}, \tau_{i,k}^2)\right)(9) mi(t)=1−exp(−Aik=1∑Kwi,kN(t^;μi,k,τi,k2))(9)这里 m i ( t ) m_i(t) mi(t) 是时间激活系数。它由 K K K 个具有可学习权重 w w w、均值 μ \mu μ 和方差 τ 2 \tau^2 τ2 的一维高斯分布叠加,并通过 A i A_i Ai 缩放。 最终时刻 t t t 的不透明度为基础不透明度乘以此系数: σ i ( t ) = σ i ⋅ m i ( t ) \sigma_i(t) = \sigma_i \cdot m_i(t) σi(t)=σi⋅mi(t) , 即钟形曲线的交叠使得亮度变化极其平滑,不会出现帧与帧之间的突变闪烁。

  基于 GMM 的平滑旋转 。 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 ∥ ( 10 ) \mathbf{q}i(t) = \frac{\sum{k=1}^K w_{i,k} \mathcal{N}(\hat{t}; \mu_{i,k}, \tau_{i,k}^2) \mathbf{q}{i,k}}{\left\Vert{}\sum{k=1}^K w_{i,k} \mathcal{N}(\hat{t}; \mu_{i,k}, \tau_{i,k}^2) \mathbf{q}{i,k}\right\Vert{}} (10) qi(t)= ∑k=1Kwi,kN(t^;μi,k,τi,k2)qi,k ∑k=1Kwi,kN(t^;μi,k,τi,k2)qi,k(10)每个 GMM 分量 k k k 存储一个基础四元数 q i , k \mathbf{q}{i,k} qi,k。该公式复用公式 (9) 中的高斯激活权重,对这 K K K 个四元数进行加权求和,并通过分母进行归一化,确保输出始终是一个合法的旋转四元数,从而实现物体在时序上的平滑连续旋转。

  

三、相机追踪

  目标 : 给定上一帧粗略位姿初始化的情况下,利用纯静态背景高斯精确优化当前帧的相机位姿。

  • 有效掩码构建 : M o ( u ) = 1 ( O ^ ( u ) ≥ α ) ( 11 a ) \mathcal{M}_o(\mathbf{u}) = \mathbb{1}(\hat{O}(\mathbf{u}) \geq \alpha)(11a) Mo(u)=1(O^(u)≥α)(11a) M v = ( ¬ M d y ) ∩ M o ( 11 b ) \mathcal{M}v = (\neg\mathcal{M}{dy}) \cap \mathcal{M}o(11b) Mv=(¬Mdy)∩Mo(11b)公式 (11a) 生成不透明度掩码 M o \mathcal{M}_o Mo,只保留渲染不透明度 O ^ \hat{O} O^ 大于阈值 α \alpha α 的像素 ,剔除未充分重建的空白区域。随后,**公式 (11b) 将 3.1 节求得的动态掩码 M d y \mathcal{M}{dy} Mdy 取反(即静态区域)与 M o \mathcal{M}o Mo 取交集** ,得到最终的有效掩码 M v \mathcal{M}v Mv。追踪损失函数 (Equation 12) L t r a c k = 1 ∣ V ∣ ∑ u ∈ V M v ( u ) ( λ 1 L 1 ( C ^ ( u ) ) + λ 2 L 1 ( D ^ ( u ) ) ) \mathcal{L}{track} = \frac{1}{\vert{}\mathcal{V}\vert{}} \sum{\mathbf{u} \in \mathcal{V}} \mathcal{M}_v(\mathbf{u}) \left( \lambda_1 L_1(\hat{\mathbf{C}}(\mathbf{u})) + \lambda_2 L_1(\hat{\mathbf{D}}(\mathbf{u})) \right) Ltrack=∣V∣1u∈V∑Mv(u)(λ1L1(C^(u))+λ2L1(D^(u)))在有效像素集合 V \mathcal{V} V 内, 计算静态 3DGS 渲染出的颜色 C ^ \hat{\mathbf{C}} C^ 和深度 D ^ \hat{\mathbf{D}} D^ 与输入真实值之间的 L 1 L_1 L1 误差。由于 M v \mathcal{M}_v Mv 彻底屏蔽了动态物体的干扰,梯度反向传播更新相机位姿

  

图 2. Flow4DGS-SLAM 的整体框架 。给定输入的 RGB-D 视频,首先提取先验语义掩码与光流 ,随后将它们输入至相机诱导运动分解模块,以滤除与类别无关的运动掩码,并求解基于光流引导的相机初始化问题 。静态GS用于在跟踪过程中优化相机位姿;动态高斯分布则采用混合形式表示------该形式结合了场景流高斯传播模块与自适应高斯插入模块,以加速模型训练。

四、光流引导的 4D 建图

  

4.1场景流高斯传播 (Scene Flow Gaussian Propagation)

如果画面里有一个人在走动,系统没必要在每一帧都重新从零开始猜他的位置。它可以通过 2D 光流预测运动趋势,直接把上一帧构成这个人的 3DGS"推"到当前帧的新位置2D预测转3D位移: Δ x i k = R k ⊤ ( D i k K − 1 u ˉ i k − t k ) − x i k − 1 ( 13 ) \Delta \mathbf{x}_i^k = \mathbf{R}_k^\top (\mathbf{D}_i^k \mathbf{K}^{-1} \mathbf{\bar{u}}_i^k - \mathbf{t}_k) - \mathbf{x}_i^{k-1}(13) Δxik=Rk⊤(DikK−1uˉik−tk)−xik−1(13)首先把上一帧的 3D 高斯投影到 2D,利用光流预测它在当前画面的 2D 坐标 u ˉ i k \mathbf{\bar{u}}_i^k uˉik。然后结合深度 D i k \mathbf{D}_i^k Dik 和相机参数,将其"反投影"回 3D 空间。用这个新预测的 3D 坐标减去原来的坐标 x i k − 1 \mathbf{x}_i^{k-1} xik−1,就算出了该高斯在真实世界里的三维移动量 Δ x i k \Delta \mathbf{x}i^k Δxik。 KNN 平滑(局部刚性约束): Δ x ^ i k = ∑ j ∈ N ( i ) w i j k n n Δ x j k ( 14 ) \Delta \hat{\mathbf{x}}i^k = \sum{j \in \mathcal{N}(i)} w{ij}^{knn} \Delta \mathbf{x}j^k(14) Δx^ik=j∈N(i)∑wijknnΔxjk(14) w i j k n n = N ( ∥ x j k − 1 − x i k − 1 ∥ 2 ; 0 , τ k n n 2 ) ∑ l ∈ N ( i ) N ( ∥ x l k − 1 − x i k − 1 ∥ 2 ; 0 , τ k n n 2 ) ( 15 ) w{ij}^{knn} = \frac{\mathcal{N}(\Vert{}\mathbf{x}_j^{k-1} - \mathbf{x}i^{k-1}\Vert{}2 ; 0, \tau{knn}^2)}{\sum{l \in \mathcal{N}(i)} \mathcal{N}(\Vert{}\mathbf{x}_l^{k-1} - \mathbf{x}i^{k-1}\Vert{}2 ; 0, \tau{knn}^2)}(15) wijknn=∑l∈N(i)N(∥xlk−1−xik−1∥2;0,τknn2)N(∥xjk−1−xik−1∥2;0,τknn2)(15)光流预测通常带有噪点 ,如果直接用,可能会导致原本连在一起的高斯散开(比如人的胳膊视觉上断裂)。公式让每个高斯去参考周围最近的邻居(KNN) ,利用高斯函数计算权重 w i j k n n w{ij}^{knn} wijknn,取一个加权平均的位移量 Δ x ^ i k \Delta \hat{\mathbf{x}}_i^k Δx^ik。这相当于让相邻的高斯"抱团移动",强制保持局部刚性,避免物体在运动中发生畸变

4.2自适应高斯插入 (Adaptive Gaussian Insertion)

刚才的"传播"只能移动已存在的物体。如果人转过身露出了背包,或者画面边缘走入新人,就需要"无中生有"地插入新高斯 。 寻找"新出现"的区域: M insert t k = { u p k ∈ M d y t k ∣ u p k − 1 ∉ M d y t k − 1 } ( 16 ) \mathcal{M}{\text{insert}}^{t_k} = \left\{\mathbf{u}p^k \in \mathcal{M}{dy}^{t_k} \mid \mathbf{u}p^{k-1} \notin \mathcal{M}{dy}^{t{k-1}}\right\}(16) Minserttk={upk∈Mdytk∣upk−1∈/Mdytk−1}(16)利用反向光流,系统将当前帧的动态区域掩码 M d y t k \mathcal{M}{dy}^{t_k} Mdytk 映射回上一帧 M d y t k − 1 \mathcal{M}{dy}^{t_{k-1}} Mdytk−1。如果某个像素现在是动态的,但在上一帧里找不到对应的源头,系统就会判定这是新出现或刚取消遮挡的区域,并专门在这些像素对应的 3D 空间里初始化全新的高斯。

4.3优化阶段 (Optimization)

公式 17:综合损失函数 L m a p = λ 1 L c + λ 2 L d + λ f L f + λ m L m + λ i s o L i s o \mathcal{L}_{map} = \lambda_1\mathcal{L}_c + \lambda_2\mathcal{L}_d + \lambda_f\mathcal{L}f + \lambda_m\mathcal{L}m + \lambda{iso}\mathcal{L}{iso} Lmap=λ1Lc+λ2Ld+λfLf+λmLm+λisoLiso位移和插入完成后,系统进行微调训练 。这个损失函数不仅约束渲染颜色 ( L c \mathcal{L}_c Lc) 和深度 ( L d \mathcal{L}_d Ld) 必须与真实画面一致,还加入了光流损失 ( L f \mathcal{L}_f Lf)、动态掩码一致性 ( L m \mathcal{L}m Lm),以及强制高斯斑块尽量保持球状的各向同性损失 ( L i s o \mathcal{L}{iso} Liso),从而全面提升 4D 重建质量。

  

实验

  数据集 (Datasets) :方法在两个真实的室内场景数据集上进行了验证:TUM RGB-D 数据集和 BONN 数据集。

  实现细节 :实验都在单张 NVIDIA RTX A6000 GPU 上运行;相机追踪 遵循 4DGS-SLAM 的参数,在 TUM RGB-D 数据集上每次建图最大迭代 100 次,在 BONN 数据集上最大迭代 200 次。动态建图 : 每次建图训练 50 次迭代,滑动窗口(sliding window)大小设为 8。为了加快整体速度,光流损失(flow loss)只在最后 25 次迭代中才会被计算和应用。关键帧提取 : 采用基于运动掩码差异的提取策略,并强制每 5 帧至少提取 1 个关键帧。在线训练结束后,参考 4DGS-SLAM 和 MonoGS 的做法,会额外进行 1500 次颜色细化(color refinement)迭代,以提升最终的渲染画质。

  对比基线 (Baseline Methods) :实验主要对比了没有显式闭环检测(explicit loop closure)的 3DGS-SLAM 方案。静态环境对比 :MonoGS 和 SplaTAM。动态重建对比:SC-GS 和 4DGS-SLAM(作者使用了 4DGS-SLAM 官方开源代码重新跑了测试结果)。

  评估指标 (Metrics):追踪精度: 使用了 SLAM 领域通用的标准,即计算所有帧的绝对轨迹误差(ATE, Absolute Trajectory Error)的均方根误差(RMSE)。渲染质量: 在所有帧上计算了 PSNR、SSIM 和 LPIPS 三个光度学指标来评估画面重建的保真度。

  

相关推荐
IT_陈寒1 小时前
React的状态更新坑得我差点加班到天亮
前端·人工智能·后端
腾视科技-AI1 小时前
腾视科技TS-NV-P200车载系列AI边缘算力盒子:引领车路协同新时代,赋能多元场景应用
人工智能·科技·ai·ai算力·ai边缘算力盒子·腾视科技·ai算力盒
147API1 小时前
知识更新频繁时,为什么先做RAG再决定是否蒸馏
人工智能
揽秀亭长1 小时前
论文降AI率哪个方法比较实用?4种方式实际对比
人工智能·深度学习
javaDocker1 小时前
电视台自建AI短视频生产线与算力底座:技术架构、关键实现与优化实践
人工智能·架构·音视频
工业HMI实战笔记1 小时前
未来已来:AR、VR与AI在下一代HMI中的展望
人工智能·ar·vr
Python大数据分析@1 小时前
GPT-6 Astra来了,会是AGI的开始吗?
人工智能
m0_462605222 小时前
week05
人工智能
johnsong2 小时前
AI 前沿日报:2026年9月4日
人工智能