基本信息

题目:Splat-SLAM: Globally Optimized RGB-only SLAM with 3D Gaussians

来源:CVPR 2025

学校:Google、ETH Zürich

是否开源:https://github.com/google-research/Splat-SLAM

摘要:纯视觉3DGS-SLAM

        3D高斯抛雪球已成为RGB - only SLAM 的几何和外观的强大表示,因为它提供了紧凑的稠密地图表示,同时实现了高效和高质量的地图渲染。然而,现有的方法由于没有使用全局地图和位姿优化或利用单目深度,重建质量明显差于使用其他3D表示的竞争方法,例如神经点云。作为回应,我们提出了第一个具有稠密3D高斯地图表示的RGB - only SLAM系统,该系统通过主动变形3D高斯地图来动态适应关键帧位姿和深度更新,从而利用全局优化跟踪的所有好处。此外,我们发现利用单目深度估计器对不准确区域的深度更新进行细化,进一步提高了三维重建的精度。我们在Replica、TUM - RGBD和ScanNet数据集上的实验表明了全局优化的3D高斯的有效性,因为该方法在跟踪、建图和渲染精度方面达到了优于或与现有的RGB - only SLAM方法相同的性能,同时产生了小的地图大小和快速的运行时间。源代码可在https://github.com/eriksandstroem/Splat- SLAM获得。

Introduction

        稠密SLAM领域的方法有很多:利用神经隐式场的(nerf)、利用多层八叉树的、利用哈希体素的、利用点云的、轴对齐特征平面的。当然其中还有用3DGS的。

        (不愧是谷歌、ETH的论文写的真的好)但是这么多方法到底哪一种更适合稠密重建,这场军备竞赛还有没有落下帷幕,并没有产生一个明显清晰的胜者。通过文献可见neural implicit point cloud representations(隐式神经点云表达)有着目前SOTA的精度,特别是RGBD作为输入时。同时,3DGS可以实现高保真重建效果好,但是由于没有用到任何多视图深度或几何先验,导致几何表达不行。并且上述工作仅有frame-to-model tracking,没有全局pose 和 traj 的优化,导致漂移,尤其是在真实世界中,目前效果最好的匹配方式是 frame-to-frame tracking。但是,neural implicit point cloud representations方式好是好,也有问题,就是nerf渲染时有伪影,同时它并没有直接优化点的位置,只能调整表面估计。

        引出本文方法!采用recurrent dense optical flow (Droid-slam,看来这玩意也得看一看了,多少论文都用这个当前端)+3DGS作为高保真重建。结合回环检测,可以调整高斯球的位置,并且根据多视图深度估计,得到全局一致的深度信息,增强单目深度估计的可靠性。贡献如下:

  • 具有全局一致性的帧对帧RGB - only跟踪器;
  • 可在线适应闭环和全局BA的稠密可变形三维高斯地图;
  • 由在线优化的多视角深度和单目深度估计器组成的proxy深度图,提高了渲染和重建质量;
  • 与其他稠密SLAM方法相比,改进了地图大小和运行时间。

Related Works

Dense Visual SLAM:

回顾下TSDF、KinectFusion。哈希体素[Voxblox、Bundlefusion]、八叉树[Vox-fusion、]用于增强可扩展性,让基于点云的SLAM[Elasticfusion、BAD-SLAM、sp-SLAM、point-slam、loopy-slam、gloric-slam]性能变好。为了解决位姿漂移,有些方法将全局地图拆分成子图【Bundlefusion、Mips-Fusion、Voxgraph、Ngel-SLAM】(有些论文实在是太老了,可见谷歌工作之扎实,有时候是得读读旧论文,不能一直盯着新论文看)。还有些带回环检测的(这引用的论文也太多了。。。可以这么写吗?还有引用重复的,甚至一个括号里引用20篇论文,lsd-slam都出来了,完全无法判断这些引用的文献质量,是不是真的是经典文献,各个都值得一读。)

下面是重点,3dgs+SLAM的方法有很多,但是这些方法都没有融合全局优化,也就是都没加回环检测!(怎么说,可以水了)【Gaussian-SLAM、Splatam论文 Review SplaTAM: Splat, Track & Map 3D Gaussians for Dense RGB-D SLAM-CSDN博客、Gs-SLAM论文粗略Review HI-SLAM2: Geometry-Aware Gaussian SLAM for Fast Monocular Scene Reconstruction-CSDN博客】最近的其他稠密slam论文【Go-SLAM、Hi-SLAM、Glorie-SLAM(nerf的)】加入了全局优化,因子图来优化全局一致性。

RGB-only Dense Visual SLAM:

大部分基于Nerf的rgb slam都没有解决全局一致性问题。然而,冗余点没有被剪枝,导致较大的地图大小。此外,渲染过程中的深度引导采样会在估计的深度中存在噪声的情况下导致渲染伪影。有用的就这些论文【MonoGS、Photo-SLAM、Mod-SLAM】。

Method

Splat-SLAM 是一种单目 SLAM 系统,旨在通过单目相机在实时场景中完成两项核心任务:

  1. 相机位姿跟踪:通过对选定关键帧进行局部束调整(Bundle Adjustment, BA),结合密集光流估计,优化相机位姿和关键帧的密集深度。
  2. 场景几何建图:通过逐步增长的 3D 高斯地图(Gaussian Splatting),根据关键帧位姿和代理深度图(proxy depth maps)进行在线变形,构建密集的场景几何。

3.1 Tracking

跟踪模块的目标是预测相机在场景探索中的运动轨迹。Splat-SLAM 使用以下关键技术:

  • 预训练循环光流模型:通过文献 [60] 中的模型预测关键帧之间的密集光流,用于建立像素对应关系。
  • 视差、尺度和位姿优化层(DSPO):通过文献 [75] 提出的 DSPO 层,联合优化相机位姿和每个像素的视差(disparity)。
  • Gauss-Newton 优化:基于因子图(factor graph)进行优化,因子图的节点存储关键帧位姿和视差,边存储关键帧之间的光流关系。

因子图 G(V,E)  是优化问题的基础:

  • 节点 V :存储关键帧的位姿(pose)和视差(disparity)。
  • 边 E :存储关键帧之间的光流关系,用于描述像素对应。
  • 添加新关键帧:通过计算当前帧与上一个关键帧的光流,判断平均光流是否超过阈值 τ。若超过,则将当前帧添加为新关键帧,并更新因子图。

优化过程分为三种情况,但使用相同的目标函数,只是因子图的结构不同:

  1. 局部 BA:优化滑动窗口内的关键帧。
  2. 闭环 BA:当检测到闭环时,优化扩展的因子图,包含闭环节点和边。
  3. 全局 BA:优化所有关键帧的因子图,确保全局一致性。

 DSPO 层包含两个交替优化的目标函数,用于联合优化相机位姿和视差。

3.1.1 第一个优化目标:密集束调整(Dense Bundle Adjustment, DBA)

公式 (1) 表示密集束调整的目标函数:

其中: (这里虽然说是优化disparity,但应该指的是优化深度吧)

3.1.2 第二个优化目标:引入单目深度

公式 (2) 引入单目深度 D^{\text{mono}},通过预训练的相对深度模型(如 DPT [12])(这个单目深度估计的方法经常见到)预测:

 

 3.1.3 高低误差视差分类

为了区分高误差和低误差视差,系统通过两视角一致性(two-view consistency)进行分类:

3.1.4 闭环检测(Loop Closure)

闭环检测用于缓解尺度和位姿漂移:

  • 检测条件
    1. 当前活跃关键帧与先前关键帧的平均光流小于阈值  \tau_{\text{loop}} ​,确保足够的共视区域。
    2. 两帧之间的时间间隔大于阈值 \tau_t,避免添加冗余边。
  • 优化过程: 当满足条件时,向因子图添加单向边,仅优化活跃关键帧及其闭环连接的节点,以控制计算量。

3.1.5 全局束调整(Global BA)

全局 BA 确保所有关键帧的全局一致性:

  • 因子图:包含所有关键帧,边基于时间和空间关系构建(参考文献 [79])。
  • 执行频率:每 20 个关键帧执行一次全局 BA。
  • 归一化:为保持数值稳定性,优化前对视差和位姿平移进行归一化: d_{\text{norm}} = \frac{d}{\bar{d}}, \quad t_{\text{norm}} = \bar{d}t 其中  \bar{d}  是所有关键帧的平均视差。

3.2 Deformable 3D Gaussian Scene Representation

3.2.1. 3D 高斯场景表示概述

Splat-SLAM 采用3D Gaussian Splatting作为场景的表示方式。与传统的点云或网格表示不同,3D 高斯泼洒使用一组 3D 高斯分布来描述场景的几何和外观,具有以下特点:

  • 高效渲染:通过将 3D 高斯投影到图像平面(称为“泼洒”),实现快速的颜色和深度渲染。
  • 可变形性:高斯参数能够根据相机位姿和深度的优化结果进行非刚性变形,保持全局一致性。
  • 密集表示:每个高斯表示场景中的一个局部区域,适合密集几何重建。

3.2.2. 渲染(Rendering)

老生常谈了。。。3dgs的表示和渲染

3.2.3. 地图初始化(Map Initialization)

由于 Splat-SLAM 是单目系统,没有直接的深度传感器数据,因此通过以下方式构造proxy深度图 D :

对于每个新关键帧,系统采用 MonoGS [38] 的 RGBD 策略:

  • 根据proxy深度图 D 和 RGB 图像,在未探索的场景区域添加新的 3D 高斯。
  • 新高斯的初始参数(均值 μi 、协方差 Σi 、颜色 ci ​、不透明度 oi )基于关键帧的像素颜色和深度初始化。

3.2.4. 关键帧选择与优化(Keyframe Selection and Optimization)

关键帧选择基于以下两方面:

  1. 光流阈值:如 3.1 节所述,当平均光流超过阈值 τ \tau τ,添加新关键帧。
  2. MonoGS 策略:参考文献 [38],避免选择冗余关键帧,确保地图覆盖新场景区域。

高斯参数通过反向传播优化,目标函数为: 

3.2.5. 地图变形(Map Deformation)

        由于我们的跟踪框架是全局一致的,关键帧姿态和proxy深度图的变化需要在3D高斯图中通过非刚性变形来考虑。虽然高斯均值是直接优化的,但理论上可以让优化器将地图变形,用于refine的位姿图,并提供proxy深度图。然而,我们发现,特别是渲染是通过主动变形3D高斯映射来辅助的。在映射之前,我们将变形应用于所有接收到更新姿态和深度的高斯。

        由于相机位姿和proxy深度图在 DSPO 和闭环优化中会更新,高斯地图需要通过非刚性变形保持一致性。每个高斯 gi 与添加它到地图的关键帧关联,关联的关键帧提供初始位姿 ω 和代理深度 D 。

5.3 特殊情况处理
  • 无效深度或超出视锥:对于投影到无效深度或视锥外的像素,仅应用刚性变换(仅更新  \mu_i' = \omega' \omega^{-1} \mu_i ​ 和  R_i' = R' R^{-1} R_i )。
  • 全局 BA 后:在全局束调整后,对整个高斯地图进行一次额外的变形和精炼(细节见补充材料)。

实验

硬件:实验在一块 NVIDIA A100 GPU 上进行。

1. 数据集

  • Replica:合成 RGBD 数据集,使用文献 [57] 的轨迹,适合评估渲染和重建质量。
  • TUM-RGBD :真实世界 RGBD 数据集,包含室内场景,测试系统在现实环境中的鲁棒性。
  • ScanNet :真实世界大规模室内场景数据集,挑战系统在复杂环境下的性能。

2. 基线方法

Splat-SLAM 与以下方法进行比较:

  • GlORIE-SLAM :基于深度引导体视差优化的 RGBD SLAM。
  • MonoGS :单目 3D 高斯 SLAM,依赖单目深度。
  • GaussianSLAM :RGBD SLAM,使用高斯表示。
  • GO-SLAM SplaTaM :其他密集 SLAM 方法。

3. 渲染实验

  • Replica 数据集(表 1):
    • Splat-SLAM 在所有 RGB 方法中表现最佳,PSNR、SSIM 和 LPIPS 指标均优于基线。
    • 即使不使用球谐函数(spherical harmonics)建模视角依赖外观,Splat-SLAM 仍超越了 RGBD 方法 GaussianSLAM 。
  • ScanNet 和 TUM-RGBD 数据集(表 2 和表 3):
    • Splat-SLAM 在渲染精度上大幅优于其他 RGB 方法。
    • 在大多数指标上超越 GaussianSLAM,尽管后者使用深度传感器数据。
  • 原因分析
    • Splat-SLAM 的可变形 3D 高斯地图结合强大的代理深度和全局一致的跟踪后端,确保了高质量的渲染。
    • MonoGS 在某些场景中因高跟踪误差表现较差,且缺乏强几何约束,导致渲染质量低于 Splat-SLAM。
    • GlORIE-SLAM  由于深度噪声敏感,渲染中出现浮动伪影(floating artifacts)。
  • 图 3 和图 1 显示了 ScanNet 和 TUM-RGBD 数据集上的渲染结果。
  • Splat-SLAM 生成高质量渲染,避免了 GlORIE-SLAM 的伪影,细节更丰富。
  • MonoGS 在跟踪误差低时仍无法达到 Splat-SLAM 的渲染保真度(fidelity)。

渲染质量得益于3dgs肯定不错,基于nerf的肯定不行,但是比起monoGS在集合上好不少。 

3. 重建实验

  • Replica 数据集(表 4):
    • Splat-SLAM 在所有重建指标(Accuracy、Completion、Completion Ratio)上均取得最佳性能。
    • 平均深度 L1 误差为 15.05 cm,优于所有基线方法。
  • 原因分析
    • 强大的代理深度(结合多视角深度和单目深度)与 3D 高斯地图的表示能力,确保了精细几何重建。
    • 特别是在薄结构(thin structures)上,Splat-SLAM 重建出更精细的细节(图 4 第二行)。
  • 对比基线
    • GlORIE-SLAM 使用深度引导体渲染,易受输入深度噪声影响,导致深度渲染不一致。
    • MonoGS 缺乏代理深度支持,重建质量显著低于 Splat-SLAM。
  • 图 4 显示了 Replica 数据集上的法线着色网格(normal shaded meshes)。
  • Splat-SLAM 的网格在多视角下展现出更精细的几何细节,优于基线方法。

重建效果虽然看着还行,小场景面比较多的话明显不好。还是得平面先验,没有优化平面的方法肯定是不行滴。 

 5. Memory and Runtime

算力消耗有点大。。。。 

初体验

TODO

参考文献

[12] Eftekhar, A., Sax, A., Malik, J., Zamir, A.: Omnidata: A scalable pipeline for making multi-task mid-level vision datasets from 3d scans. In: Proceedings of the IEEE/CVF International Conference on Computer Vision. pp. 10786–10796 (2021)

[79] Zhang, Y., Tosi, F., Mattoccia, S., Poggi, M.: Go-slam: Global optimization for consistent 3d instant reconstruction. In: Proceedings of the IEEE/CVF International Conference on Computer Vision. pp. 3727–3737 (2023)

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐