论文标题:
MotionGS : Compact Gaussian Splatting SLAM by Motion Filter
论文作者:
Xinli Guo, Peng Han, Weidong Zhang, Hongtian Chen
项目地址:
https://github.com/Antonio521/MotionGS
导读:
上海交大团队提出了一种基于3DGS的SLAM方法(名为MotionGS),以提升实时定位与建图能力。该方法结合深度视觉特征、双关键帧选择和3DGS,优化了帧处理和姿态调整,并减少了内存消耗。在TUM RGB-D和Replica数据集的实验显示,MotionGS在跟踪、映射和内存使用上均优于现有技术。未来研究将扩展至多传感器3DGS SLAM,适应更广阔的户外场景。©️【深蓝AI】编译
1. 摘要
最近,基于NeRF的 SLAM技术呈激增之势,而基于3DGS 的 SLAM 却少之又少。该文则提出了一种融合了深度视觉特征、双关键帧选择和3DGS的SLAM方法。与现有方法相比,该方法所提出的选择性跟踪是通过对每一帧进行特征提取和运动滤波来实现的。姿态和 3D 高斯的联合优化贯穿整个映射过程。此外,通过双关键特征选择和新颖的损失函数实现了从粗到细的姿态估计和紧凑的高斯场景表示。实验结果表明,所提算法不仅在跟踪和映射方面优于现有方法,而且内存使用量也更少。
本文的主要贡献如下:
●提出了一种新的基于3DGS的密集视觉SLAM方法(将深度特征提取、双关键帧选择和3DGS相结合),能够实现精确的实时跟踪和高保真重建;
●设计了一种新颖的双关键帧策略,包括运动滤波和信息滤波,有效减少了处理帧数,同时提升了跟踪性能;
●引入了新的损失函数和优化策略,用于在跟踪和映射线程中同时优化关键帧姿态和3D高斯,实现了从粗糙到精细的姿态优化;
●通过紧凑的高斯场景表示和优化的算法,减少了内存使用,使得MotionGS在资源受限的设备上也能高效运行。
2. MotionGS核心介绍
2.1 系统框架
MotionGS主要由两部分组成:跟踪和高斯密集映射。每个部分作为一个独立的线程运行,并保持彼此之间的通信,共同构建高保真的密集重建图。MotionGS在每个时间步的输入是当前的RGB-D或RGB图像。运动滤波后,基于GT与渲染结果之间的光度误差,直接对运动关键帧进行位姿优化。经过信息过滤后,在映射线程中对滑动窗口和随机历史帧上的关键帧姿态和三维场景几何图形进行联合优化。最后,对场景进行细化,整体流程如图1所示。
图1|MotionGS系统框架©️【深蓝AI】编译
2.2 紧凑的3DGS场景表示
3DGS用一组各向异性高斯显式表示场景。每个高斯iii封装属性:ci,oi,shi,pi,vic_i,o_i,sh_i,p_i,v_ici,oi,shi,pi,vi,分别表示颜色、不透明度、球面谐波、在世界坐标系中的位置和几何形状。3DGS表示的基于体素的显式渲染可以通过飞溅和混合NNN高斯来渲染指定像素的颜色和深度:
cp=∑iNcioi∏ji−1(1−oj)c_{p}=\sum_{i}^{N}c_{i}o_{i}\prod_{j}^{i-1}(1-o_{j})cp=i∑Ncioij∏i−1(1−oj)dp=∑iNdioi∏ji−1(1−oj)d_{p}=\sum_{i}^{N}d_{i}o_{i}\prod_{j}^{i-1}(1-o_{j})dp=i∑Ndioij∏i−1(1−oj)
其中cic_ici表示第iii个高斯光束随相机光线的颜色;did_idi表示从相机到第iii高斯光束的距离。在3DGS的栅格化渲染过程中,3d−Gaussian(pw,vw)3d-Gaussian(p_w, v_w)3d−Gaussian(pw,vw)到2d−Gaussian(pc,vc)2d-Gaussian(p_c, v_c)2d−Gaussian(pc,vc)的可微变换函数表示为:
pc=Tcw∗pw,vc=JWvwWTJTp_{c}=T_{cw}*p_{w},v_{c}=JWv_{w}W^{T}J^{T}pc=Tcw∗pw,vc=JWvwWTJT
其中Tcw∈SE3T_{cw}\in SE^{3}Tcw∈SE3表示摄像机姿态;JJJ是投影变换的雅可比矩阵的线性逼近;WWW是TcwT_{cw}Tcw的转动分量。
基于上述公式,开源的diff-gaussian-rasterization实现了可微的三维高斯栅格化。这个库建立在可微分的渲染梯度上,简化了空白空间的计算,从而加快了训练和渲染过程。在每次迭代中,通过groundtruth与渲染图像之间的L1L_1L1和structural similarity index (SSIM)的加权和对GS场景进行端到端优化。
在优化过程中根据高斯的位置和不透明度设置新的惩罚项,在保持原有性能的同时紧凑地表示场景。首先,在每次迭代优化过程中,对每个高斯的不透明度oio^ioi和位置pip^ipi设置二值maskB∈[0,1]B\in[0,1]B∈[0,1]。为了使它们可微,引入一个辅助参数b∈Rb\in Rb∈R。mask处理后的姿态和不透明度如下:
Bi=Stop(1[σ(bi)<ϵ]−σ(bi))+σ(bi)B_i=Stop(1[\sigma(b_i)<\epsilon]-\sigma(b_i))+\sigma(b_i)Bi=Stop(1[σ(bi)<ϵ]−σ(bi))+σ(bi)p^i=Mipi,o^i=Mioi\hat{p}_{i}=M_{i}p_{i},\hat{o}_{i}=M_{i}o_{i}p^i=Mipi,o^i=Mioi
其中,StopStopStop和σσσ分别表示停止梯度和sigmoid函数。这种mask消除了在栅格化渲染过程中影响很小的Mini-Gaussian遮挡。在每次密度化过程中,除了分割、克隆和剪枝外,还在此mask的基础上去除一些场景几何图形,以减少优化过程中涉及的高斯函数的数量。此外,为了平衡高保真渲染与减少场景几何,研究人员设计了一个新的mask损失:
LM=1N∑i=1Nσ(bi)L_M=\frac{1}{N}\sum_{i=1}^N\sigma(b_i)LM=N1i=1∑Nσ(bi)
完整损失函数构造为:
L=(1−λ1)L1+λ1Lssim+λ2LML=(1-\lambda_1)L_1+\lambda_1L_{ssim}+\lambda_2L_ML=(1−λ1)L1+λ1Lssim+λ2LM
其中λ1λ_1λ1和λ2λ_2λ2表示权重。
2.3 双关键帧策略
双关键帧策略由运动滤波器和信息滤波器组成,分别对应于运动关键帧和信息关键帧。
运动过滤器对每一帧进行特征提取,只保留超过阈值的帧。在运动滤波过程中,预设了运动阈值和最大帧间隔。当一帧的帧间运动向量的范数超过运动阈值,或者帧间相对于前一帧的运动关键帧的间隔超过最大帧间隔时,作为新的运动关键帧添加该帧。基于运动模型更新新运动关键帧的初始姿态,其中运动矢量定义为前一个运动关键帧与前一个运动关键帧之间的姿态变换。该环节中主要设计了三个网络结构:特征网络、上下文网络和更新网络。每个输入图像由6个残差模块和3个下采样模块组成的特征网络进行处理,生成原始图像尺寸1/8分辨率的密集特征图。这些密集的特征映射用于构建相关金字塔并获得相关特征向量集,同时在每次更新过程中将上下文网络提取的更精细的纹理特征添加到更新网络中。更新后得到帧间运动矢量。
为了满足SLAM算法的高实时性要求,对所有运动关键帧进行高斯优化是不切实际的。因此,跟踪线程执行双关键帧选择来更新和维护信息关键帧的滑动窗口。如果运动关键帧与前一信息关键帧的相对补足超过阈值,或者其与前一信息关键帧的距离超过最小映射帧距离,则将该运动关键帧添加到滑动窗口。为了保持恒定的窗口大小,还执行了删除操作。如果信息关键帧与新信息关键帧的重叠系数低于阈值,或者信息关键帧与前信息关键帧的帧间位移最小,则信息关键帧被删除。
2.4 基于3DGS的直接姿态优化
3DGS的渲染结果本质上会有一定程度的模糊,对真实照片和渲染图像之间的部分像素进行精确匹配和调整是十分困难的。尽管基于光度误差的位姿优化在速度上可能稍有滞后,但它与 3DGS 的可微分渲染框架是一致的,因此,所有像素都可直接用于基于真实照片和渲染图像之间光度误差的位姿优化框架中。
相对于相机姿态和深度(如果可用)的姿态6优化的光度误差定义如下:
Ergb=opacity∗∥Irender−Igt∥1E_{rgb}=opacity*\left\|I_{render}-I_{gt}\right\|_{1}Ergb=opacity∗∥Irender−Igt∥1
Ed=opacity∗∥Drender−Dgt∥1E_{d}=opacity*\left\|D_{render}-D_{gt}\right\|_{1}Ed=opacity∗∥Drender−Dgt∥1
3DGS中光栅化渲染变换函数的链式展开表示如下:
∂pc∂Tcw=∂pc∂pw∂pw∂Tcw∂vc∂Tcw=∂vc∂J∂J∂pc∂pc∂Tcw+∂vc∂W∂W∂Tcw\begin{array}{c} \frac{\partial p_{c}}{\partial T_{c w}}=\frac{\partial p_{c}}{\partial p_{w}} \frac{\partial p_{w}}{\partial T_{c w}} \\ \frac{\partial v_{c}}{\partial T_{c w}}=\frac{\partial v_{c}}{\partial J} \frac{\partial J}{\partial p_{c}} \frac{\partial p_{c}}{\partial T_{c w}}+\frac{\partial v_{c}}{\partial W} \frac{\partial W}{\partial T_{c w}} \end{array} ∂Tcw∂pc=∂pw∂pc∂Tcw∂pw∂Tcw∂vc=∂J∂vc∂pc∂J∂Tcw∂pc+∂W∂vc∂Tcw∂W
根据流形上的函数雅可比矩阵可将上述链式法则简化为:
∂pc∂Tcw=[1,−pc×]∂W∂Tcw=[0W:,1×0W:,2×0W:,3×]\begin{array}{c} \frac{\partial p_{c}}{\partial T_{c w}}=\left[1,-p_{c}^{\times}\right] \\ \frac{\partial W}{\partial T_{c w}}=\left[\begin{array}{ll} 0 & W_{:, 1}^{\times} \\ 0 & W_{:, 2}^{\times} \\ 0 & W_{:, 3}^{\times} \end{array}\right] \end{array}∂Tcw∂pc=[1,−pc×]∂Tcw∂W=000W:,1×W:,2×W:,3×
其中,×××表示三维向量的偏对称矩阵。
3. 实验
该项工作在TUM RGB-D(3个序列)和Replica(8个序列)两个知名的数据集上进行了实验,比较了MotionGS与其他方法的性能。
3.1 定位性能
表1|在TUM上跟踪结果ATE (cm)的比较©️【深蓝AI】编译
表1显示了TUM数据集上各种方法的ATE指标。在RGBD设置中,MotionGS在fr1和fr3场景中已经超过了基于3DGS的SLAM和基于NeRF的SLAM的最先进方法,仅略低于fr2场景中的基线方法。在单眼设置中,MotionGS优于单眼设置,但由于缺乏闭环检测和全局BA,与DROID-SLAM和ORB-SLAM2相比,MotionGS仍然表现出更高的误差。这证明了闭环检测和全局BA在提高SLAM方法的定位精度方面的关键作用及其在3DGS环境中的潜力。
表2|在Replica上跟踪结果ATE (cm)的比较©️【深蓝AI】编译
表2给出了各种方法在Replica数据集上的ATE指标。虽然基线方法取得了毫米级的精度,但MotionGS仍然具有竞争力,在8个场景中的5个场景中超过了基线方法。在o0和r0场景中,最佳方法在ATE中仅比MotionGS高出0.14 cm。表1和表2所示的优异性能主要归功于粗到细的位姿估计设计以及位姿与高斯的联合优化。
3.2 渲染性能
表3|在Replica上渲染结果的比较©️【深蓝AI】编译
表3显示了MotionGS在Replica数据集上的渲染性能,并与NICE-SLAM、Point-SLAM、MonoGS、SplaTAM和GS-SLAM进行了比较。结果表明,与最先进的基于NeRF的SLAM相比,基于3DGS的SLAM具有竞争力的渲染性能。此外,MotionGS在每个场景上都实现了最佳的PSNR和LPIPS,优于当前最先进的基于3d的SLAM。虽然MotionGS的SSIM指标并不是每个场景的最佳性能,但所有SSIM指标的平均值排名第一。这些数据集的场景可视化如图2和图3所示。与基线相比,动态图像具有更高的保真度和更多的场景细节。MotionGS渲染效果具有更好的细节表现能力,在钟表、花盆、壁画、书籍等渲染结果可以证明。
图2|在TUM中的渲染结果©️【深蓝AI】编译
图3|在Replica中的渲染结果©️【深蓝AI】编译
3.3 消融实验
表4|KF策略的消融分析©️【深蓝AI】编译
表5|mask损耗的消融分析(Ours*指的是没有mask损耗的运动)©️【深蓝AI】编译
根据表4和表5所示可以明显看出,特征选择对动作的跟踪精度有着深远的影响,从而凸显了双特征选择策略的优势。此外,SplaTAM的存储内存接近0.5GB,如表2所示,而MotionGS的存储内存不足50MB。mask损失有效地减少了场景表示中使用的高斯函数的数量,使其与SplaTAM相比成为一种更有效的解决方案。
4. 结论
本研究提出了一种集深度视觉特征、双关键帧选择和3DGS为一体的基于3DGS的SLAM技术——MotionGS。其精巧的设计和先进的性能在大量的实验中得到了充分的证明。本文提出的一系列方法进一步强调了3DGS在SLAM领域的广阔潜力。在此基础上,针对大型户外场景的多传感器3DGS-based SLAM将是下一步的研究方向。
编译|唐僧洗头用飘柔
审核|Los
移步公众号【深蓝AI】,第一时间获取自动驾驶、人工智能与机器人行业最新最前沿论文和科技动态。