CVPR 2024顶级SLAM论文精读:SplaTAM如何用3D高斯实现稠密RGB-D SLAM?

CVPR 2024顶级SLAM论文精读:SplaTAM如何用3D高斯实现稠密RGB-D SLAM?

文章标签

SLAM 3D Gaussian Splatting RGB-D 三维重建 机器人视觉 稠密建图 CVPR2024


摘要

传统 SLAM 通常关注两个核心问题:相机在哪里?地图怎么建?

但随着机器人、AR、数字孪生和三维重建的发展,大家对 SLAM 的要求已经不再只是"能定位",而是希望系统能够实时构建出更加真实、更加稠密、更加可渲染的三维地图。

CVPR 2024 论文 SplaTAM: Splat, Track & Map 3D Gaussians for Dense RGB-D SLAM 正是这一方向的代表工作。它把近几年非常火的 3D Gaussian Splatting 引入 SLAM,用三维高斯作为地图表达,并通过可微渲染同时完成相机跟踪和地图优化。

这篇论文的核心亮点可以概括为一句话:

SplaTAM 不再把 SLAM 地图只看成稀疏点云或隐式神经场,而是用显式 3D 高斯地图来同时实现跟踪、建图和高质量渲染。

相比传统 RGB-D SLAM,SplaTAM 的优势是地图更加稠密、视觉效果更好;相比 NeRF-SLAM,它又具备更快的渲染效率和更显式的地图更新方式。因此,这篇论文非常适合机器人视觉、AR重建、室内建图和三维可视化方向的同学重点阅读。


1. 论文基本信息

项目 内容
论文名称 SplaTAM: Splat, Track & Map 3D Gaussians for Dense RGB-D SLAM
中文理解 基于3D高斯的稠密RGB-D同步定位与建图
会议 CVPR 2024
研究方向 RGB-D SLAM、3D Gaussian Splatting、稠密建图、三维重建
输入 单路未位姿化 RGB-D 相机序列
输出 相机轨迹 + 稠密3D Gaussian地图 + 新视角渲染结果
核心关键词 3D Gaussian、Differentiable Rendering、Tracking、Mapping、Silhouette Mask

2. 一句话看懂这篇论文

传统 SLAM 的地图表达通常是:

text 复制代码
稀疏特征点
稠密点云
体素地图
TSDF地图
隐式神经场

而 SplaTAM 的核心思路是:

text 复制代码
用一组三维高斯球表示整个场景,
通过可微渲染把地图投影回当前图像,
再利用渲染误差同时优化相机位姿和高斯地图。

也就是说,SplaTAM 把 SLAM 过程变成了一个不断循环的过程:

text 复制代码
输入RGB-D图像
      ↓
渲染当前高斯地图
      ↓
比较渲染结果和真实观测
      ↓
优化当前相机位姿
      ↓
判断哪些区域还没建图
      ↓
添加新的3D Gaussian
      ↓
更新地图参数

3. 为什么这篇论文值得关注?

SLAM 一直是机器人和计算机视觉中的核心问题。

对于移动机器人来说,SLAM 要解决的是:

text 复制代码
机器人在哪里?
周围环境是什么样?
地图能不能用于后续导航和决策?

对于 AR 和三维重建来说,SLAM 还要解决:

text 复制代码
能不能实时重建场景?
能不能从新视角渲染?
重建结果是否足够真实?

传统 SLAM 虽然在定位方面已经很成熟,但在三维场景表达方面仍然存在不足。


3.1 稀疏地图不够直观

ORB-SLAM、VINS 等经典方法主要构建稀疏特征点地图。

这种地图适合定位,但不适合直接做三维可视化。

例如稀疏地图通常只能看到一些点:

text 复制代码
墙上几个点
桌子边缘几个点
地面少量特征点
物体轮廓不完整

如果要用于 AR 显示、机器人环境理解或数字孪生,稀疏点地图显然不够。


3.2 NeRF-SLAM效果好但优化成本高

NeRF 类方法可以获得较好的新视角渲染效果,但它通常使用隐式神经场表达场景。

这种方法存在几个问题:

text 复制代码
训练和优化成本较高
地图更新不够直观
实时性压力较大
局部结构编辑不方便

所以研究者开始思考:

有没有一种既能高质量渲染,又更适合实时更新的地图表达方式?

3D Gaussian Splatting 就是在这个背景下进入 SLAM 领域的。


3.3 3D Gaussian更适合显式地图更新

3D Gaussian Splatting 使用大量三维高斯来表示场景。

每个高斯可以理解为一个小的空间"椭球体",它包含:

text 复制代码
位置
颜色
透明度
尺度
旋转

这种表达方式有几个优势:

text 复制代码
显式可见
渲染速度快
可以局部添加和更新
适合在线建图
能保留较好的视觉细节

SplaTAM 正是利用了这些特点,把 3D Gaussian 引入到了 RGB-D SLAM 中。


4. 方法总览:SplaTAM整体框架

SplaTAM 的名字本身就说明了它的流程:

text 复制代码
Splat  →  用3D Gaussian进行可微渲染
Track  →  估计当前相机位姿
Map    →  更新和扩展三维高斯地图

整体流程可以概括为:

text 复制代码
RGB-D输入帧
      ↓
当前3D Gaussian地图渲染
      ↓
渲染RGB图和深度图
      ↓
与真实RGB-D观测比较
      ↓
优化当前相机位姿
      ↓
利用Silhouette判断未建图区域
      ↓
添加新的3D Gaussian
      ↓
更新地图颜色、位置、尺度、透明度
      ↓
进入下一帧

5. 核心概念一:什么是3D Gaussian Splatting?

3D Gaussian Splatting 是一种显式三维场景表示方法。

它不是用网格,也不是用神经网络隐式函数,而是用很多三维高斯来表示场景。

可以简单理解为:

text 复制代码
一个房间 = 很多个3D Gaussian组成
一面墙 = 很多个小高斯拼出来
一张桌子 = 很多个带颜色的高斯组合出来

每个高斯通常包含如下参数:

text 复制代码
位置:表示它在三维空间中的中心
尺度:表示它的大小
旋转:表示它的方向
颜色:表示它渲染出来的颜色
透明度:表示它对最终图像的贡献

在渲染时,系统会把这些三维高斯投影到相机图像平面上,然后通过 Alpha Compositing 合成最终图像。


6. 核心概念二:为什么3DGS适合SLAM?

SLAM 需要持续处理视频流,所以地图表达必须支持在线更新。

3D Gaussian 对 SLAM 很有吸引力,主要有三个原因。


6.1 渲染速度快

相比 NeRF 需要沿射线采样很多点,3D Gaussian Splatting 可以直接把显式高斯投影到图像平面。

这使得它在新视角渲染时速度更快。

对于 SLAM 来说,渲染速度很关键,因为系统每一帧都可能需要:

text 复制代码
渲染当前地图
计算图像误差
优化相机位姿
更新地图参数

如果渲染太慢,SLAM 就很难实时运行。


6.2 地图结构显式

传统 NeRF 地图是隐式神经网络参数,不太容易直接判断哪里已经被建图,哪里还没有被建图。

而 3D Gaussian 是显式点状结构,因此更容易做:

text 复制代码
添加新高斯
删除低贡献高斯
更新局部区域
判断已观测区域
地图可视化

这对于在线 SLAM 很重要。


6.3 适合高质量可视化

3DGS 的渲染质量通常比普通点云更好。

点云容易出现孔洞、离散、不连续等问题,而 3D Gaussian 由于具有尺度和透明度,可以形成更加连续的视觉效果。

这使得 SplaTAM 不只是一个定位系统,也是一个可视化质量较高的三维重建系统。


7. SplaTAM的三个核心步骤

SplaTAM 主要由三个步骤构成:

text 复制代码
Step 1:Camera Tracking
Step 2:Gaussian Densification
Step 3:Map Update

下面逐个分析。


8. Step 1:Camera Tracking,相机跟踪

在每个新 RGB-D 帧到来时,系统首先要估计当前相机位姿。

传统 SLAM 可能通过特征点匹配来估计位姿。

SplaTAM 的做法是:

text 复制代码
先用当前已有的3D Gaussian地图渲染出RGB图和深度图,
再把渲染结果与真实输入图像进行比较,
通过误差反向优化当前相机位姿。

可以理解为:

text 复制代码
当前地图 + 假设位姿 → 渲染图像
渲染图像 vs 真实图像 → 得到误差
调整相机位姿 → 让误差变小

如果位姿正确,那么当前地图渲染出的图像应该和真实相机看到的图像非常接近。

所以,相机跟踪可以被转化为一个图像对齐优化问题。


9. Step 2:Gaussian Densification,高斯增密

当相机看到新的区域时,原来的地图中可能没有对应的高斯。

这时候系统需要往地图中添加新的 Gaussian。

例如机器人刚转过一个弯,看到了新的墙面或桌子区域:

text 复制代码
旧地图里没有这个区域
当前RGB-D帧观测到了这个区域
系统需要新建一批3D Gaussian

SplaTAM 使用 Silhouette Mask 来判断哪些区域已经被现有地图解释,哪些区域还没有被解释。

简单来说:

text 复制代码
如果某个像素区域当前地图无法渲染出来
说明这里可能是新观察到的区域
需要添加新的3D Gaussian

这一步就是地图扩展的关键。


10. Step 3:Map Update,地图更新

添加新高斯之后,系统还需要优化高斯地图的参数。

需要优化的内容包括:

text 复制代码
高斯的位置
高斯的颜色
高斯的尺度
高斯的旋转
高斯的透明度

优化目标是让当前高斯地图渲染出来的 RGB 图和深度图,尽可能接近真实输入帧。

可以简单表示为:

text 复制代码
地图优化目标 = RGB渲染误差 + 深度渲染误差

也就是说,SplaTAM 不只是把深度点直接堆成点云,而是通过可微渲染持续优化地图,使地图更加适合新视角渲染。


11. SplaTAM为什么使用RGB-D输入?

SplaTAM 的输入是 RGB-D 图像,也就是同时包含:

text 复制代码
RGB彩色图像
Depth深度图像

相比单目 SLAM,RGB-D 的优势是可以直接提供深度信息。

这让系统在初始化和建图时更加稳定。

具体来说,深度信息可以帮助系统:

text 复制代码
更准确地初始化3D Gaussian位置
减少单目尺度漂移
提升几何结构准确性
增强相机跟踪稳定性

但是 RGB-D 也有局限:

text 复制代码
深度相机作用距离有限
强光环境下可能不稳定
透明/反光物体深度错误
室外大范围场景较难使用

所以 SplaTAM 更适合室内机器人、AR扫描、房间重建、数字孪生等场景。


12. 和传统RGB-D SLAM相比有什么不同?

传统 RGB-D SLAM 通常会使用:

text 复制代码
ICP配准
特征点匹配
TSDF融合
点云拼接
Pose Graph优化

这些方法可以得到较好的几何地图,但视觉真实感通常有限。

SplaTAM 的不同在于:

text 复制代码
它把地图表示成可渲染的3D Gaussian,
并通过可微渲染把跟踪和建图统一起来。

对比如下:

方法 地图表达 优点 局限
ORB-SLAM2 RGB-D 稀疏点云 定位成熟,速度快 地图不稠密,不适合高质量渲染
KinectFusion TSDF体素 几何融合稳定 视觉细节和大场景扩展有限
Point-SLAM 神经点云 表达能力较强 优化和渲染成本较高
NICE-SLAM 神经隐式场 几何连续性较好 训练和更新相对复杂
SplaTAM 3D Gaussian 显式、稠密、渲染质量高 仍依赖RGB-D和GPU计算

13. SplaTAM的主要创新点

13.1 创新点一:首次将3D Gaussian作为稠密RGB-D SLAM核心地图表达

SplaTAM 的最大贡献是把 3D Gaussian Splatting 引入到在线 RGB-D SLAM 中。

它不是先做 SLAM 再离线重建,而是在 SLAM 过程中直接维护一个可渲染的高斯地图。

这使得系统同时具备:

text 复制代码
定位能力
建图能力
新视角渲染能力
高质量可视化能力

13.2 创新点二:用可微渲染统一跟踪和建图

SplaTAM 的相机跟踪和地图更新都依赖渲染误差。

这意味着系统中存在一个统一的闭环:

text 复制代码
地图 → 渲染 → 对比真实观测 → 优化位姿和地图

这种方式比传统特征点匹配更加直接,也更适合稠密视觉场景。


13.3 创新点三:利用Silhouette Mask判断新区域

SplaTAM 使用 Silhouette Mask 判断哪些图像区域已经被当前地图解释,哪些区域还没有被地图覆盖。

这使得地图扩展更加有结构,而不是盲目添加高斯。

可以理解为:

text 复制代码
已覆盖区域:优化已有Gaussian
未覆盖区域:添加新的Gaussian

这对在线建图非常重要。


13.4 创新点四:兼顾定位、建图和新视角合成

很多 SLAM 系统只关注位姿精度。

很多重建系统只关注视觉效果。

SplaTAM 的特点是两者都考虑:

text 复制代码
既要相机轨迹准确
也要地图视觉效果好
还要支持新视角渲染

这让它更接近未来机器人三维感知系统的需求。


14. 实验结果怎么理解?

论文在多个数据集上进行实验,包括:

text 复制代码
Replica
TUM RGB-D
ScanNet
ScanNet++

这些数据集覆盖了合成室内场景、真实 RGB-D 场景和复杂室内扫描场景。

从实验结果来看,SplaTAM 的优势主要体现在三个方面。


14.1 相机轨迹估计更加稳定

由于 SplaTAM 使用 RGB-D 信息和显式高斯地图进行渲染对齐,因此在很多室内场景中可以获得较稳定的位姿估计。

它不是只依赖稀疏特征点,而是利用稠密渲染误差进行优化。

这对于弱纹理区域有一定帮助。


14.2 稠密地图质量更高

相比普通点云或稀疏地图,3D Gaussian 地图视觉效果更连续。

它可以重建出更加细腻的室内结构,例如:

text 复制代码
墙面
桌椅
柜子
地面
物体边缘
室内布局

这对 AR、机器人导航可视化和数字孪生都有价值。


14.3 新视角渲染效果更好

SplaTAM 的地图本身就是可渲染的。

因此,在建图完成后,可以从新的视角观察场景。

这和传统 SLAM 地图有很大不同。

传统 SLAM 地图更多用于定位和规划,而 SplaTAM 的地图还可以用于:

text 复制代码
新视角合成
三维可视化
交互式漫游
虚拟现实场景构建
数字孪生展示

15. 工程复现:官方代码运行方式

官方代码已经开源,可以按照如下方式运行。

15.1 克隆代码

bash 复制代码
git clone https://github.com/spla-tam/SplaTAM.git
cd SplaTAM

15.2 创建环境

bash 复制代码
conda create -n splatam python=3.10
conda activate splatam

15.3 安装CUDA和PyTorch依赖

bash 复制代码
conda install -c "nvidia/label/cuda-11.6.0" cuda-toolkit
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.6 -c pytorch -c conda-forge
pip install -r requirements.txt

15.4 运行iPhone示例数据

bash 复制代码
python scripts/splatam.py configs/iphone/splatam.py

15.5 可视化最终重建结果

bash 复制代码
python viz_scripts/final_recon.py configs/iphone/splatam.py

15.6 导出PLY格式高斯地图

bash 复制代码
python scripts/export_ply.py configs/iphone/splatam.py

导出的 PLY 格式可以在一些 3D Gaussian viewer 中查看。


16. 对AGV和机器人视觉有什么启发?

SplaTAM 对机器人视觉方向有很强启发。

虽然它主要面向 RGB-D 稠密 SLAM,但其中的思想可以迁移到 AGV、移动机器人和工业三维感知中。


16.1 机器人地图正在从"能定位"走向"能显示"

过去机器人地图更多是为了导航,例如:

text 复制代码
二维栅格地图
稀疏特征点地图
激光点云地图

这些地图对机器人够用,但对人类不够直观。

未来机器人可能需要更强的环境表达能力:

text 复制代码
地图能实时显示
地图能被人理解
地图能做三维巡检
地图能用于仿真和数字孪生

SplaTAM 代表了这种趋势。


16.2 3D Gaussian地图适合机器人可视化

对于 AGV 或巡检机器人来说,如果能够构建高质量三维地图,就可以用于:

text 复制代码
远程监控
异常区域定位
仓库三维展示
机器人运行回放
货架环境建模
数字孪生平台

这比单纯显示二维轨迹更加直观。


16.3 RGB-D输入适合室内和近距离场景

很多 AGV 工作在室内环境,例如:

text 复制代码
仓库
工厂
实验室
医院
展厅
机房

这些场景中,RGB-D 相机可以提供较稳定的深度信息。

因此,SplaTAM 这类 RGB-D 稠密建图方法对室内机器人有一定参考价值。


16.4 工业落地仍需要轻量化

SplaTAM 的效果很好,但真正部署到机器人端还需要考虑:

text 复制代码
显存占用
实时性
算力平台
传感器稳定性
地图规模增长
长期运行内存管理

对于 AGV 来说,可能需要结合:

text 复制代码
关键帧筛选
高斯数量控制
局部地图管理
TensorRT加速
ROS/ROS2集成
多传感器融合

这样才能更接近实际落地。


17. 和前两篇论文的区别

前面分析过 MASt3R-SLAM 和 WildGS-SLAM,这里可以做一个简单对比。

论文 输入 核心地图表达 主要特点
MASt3R-SLAM 单目RGB Pointmap / Dense Geometry 利用三维重建先验做实时单目稠密SLAM
WildGS-SLAM 单目RGB 3D Gaussian 面向动态场景,用不确定性过滤动态干扰
SplaTAM RGB-D 3D Gaussian 用显式高斯地图实现稠密跟踪、建图和渲染

简单理解:

text 复制代码
MASt3R-SLAM关注:
三维重建先验如何提升单目SLAM

WildGS-SLAM关注:
动态环境中如何避免地图污染

SplaTAM关注:
RGB-D输入下如何用3D Gaussian实现高质量稠密SLAM

18. 不足与挑战

SplaTAM 虽然非常有代表性,但也存在一些不足。

问题 说明
依赖RGB-D输入 对深度相机质量有要求
GPU资源需求较高 3DGS优化和渲染需要GPU支持
长期大场景管理困难 高斯数量可能不断增加
动态物体处理有限 原始方法主要面向相对静态场景
工程部署复杂 依赖CUDA、PyTorch和可微渲染模块

尤其在真实机器人环境中,还需要考虑:

text 复制代码
动态行人
光照变化
反光物体
深度空洞
相机抖动
长期运行地图膨胀

这些都是未来可以继续改进的方向。


19. 未来可以怎么改进?

从研究角度看,SplaTAM 可以继续扩展到以下方向:

text 复制代码
1. 加入动态物体过滤机制
2. 结合IMU提升运动鲁棒性
3. 设计高斯地图压缩和裁剪策略
4. 引入语义信息增强地图理解
5. 支持更大规模室内外场景
6. 面向Jetson等边缘设备做轻量化部署
7. 与ROS2导航系统深度融合

从 AGV 场景看,还可以结合:

text 复制代码
激光雷达
轮速计
二维码/地码定位
仓库CAD地图
多机器人协同建图
工业缺陷检测模块

这样可以把高质量三维建图能力真正接入机器人系统。


20. 个人总结

SplaTAM 是 3D Gaussian Splatting 进入 SLAM 领域的一篇代表性论文。

它的核心价值不是简单地把点云换成高斯,而是提出了一种新的 SLAM 思路:

text 复制代码
用显式3D Gaussian表示地图,
用可微渲染连接地图和图像观测,
用渲染误差同时优化相机位姿和场景地图。

相比传统 SLAM,它的地图更加稠密、更加直观;

相比 NeRF-SLAM,它的表达更加显式、渲染更加高效;

相比普通点云建图,它更适合新视角合成和三维可视化。

如果用一句话总结:

SplaTAM 把 SLAM 从"稀疏定位地图"推进到了"可渲染三维高斯地图",为机器人视觉、AR重建和数字孪生提供了新的技术路径。


22. 参考资料

1\] Keetha N, Karhade J, Jatavallabhula K M, Yang G, Scherer S, Ramanan D, Luiten J. SplaTAM: Splat, Track \& Map 3D Gaussians for Dense RGB-D SLAM. CVPR 2024. \[2\] SplaTAM Project Page: https://spla-tam.github.io/ \[3\] SplaTAM GitHub Repository: https://github.com/spla-tam/SplaTAM \[4\] CVF Open Access Paper Page: https://openaccess.thecvf.com/content/CVPR2024/html/Keetha_SplaTAM_Splat_Track__Map_3D_Gaussians_for_Dense_RGB-D_CVPR_2024_paper.html \[5\] arXiv Paper Page: https://arxiv.org/abs/2312.02126

相关推荐
wayz113 小时前
Day 18:Keras深度学习框架入门
人工智能·深度学习·神经网络·算法·机器学习·keras
AI技术增长3 小时前
Pytorch图像去噪实战(十二):DDPM图像去噪完整训练流程,构建可复现扩散模型工程
pytorch·python·深度学习
蔡俊锋3 小时前
AI时代:人类从操控者到旁观者的蜕变
人工智能·深度学习·hermes·ai团队·ai团队知识沉淀
AI医影跨模态组学4 小时前
如何将深度学习超声影像特征与乳腺癌腋窝淋巴结治疗响应的生物学机制建立关联,并进一步解释其预测pCR与个体化治疗的机制联系
人工智能·深度学习·论文·医学·医学影像·影像组学·医学科研
hhhhhh_we4 小时前
皮肤人格的工程化实现:预颜美历如何用3D点云与循环神经网络构建数字孪生人格
图像处理·人工智能·rnn·深度学习·神经网络·3d·产品运营
初圣魔门首席弟子4 小时前
深度学习复习笔记|多层感知机 (MLP):原理 + 从零实现 + 简洁实现
人工智能·笔记·深度学习
Coovally AI模型快速验证4 小时前
YOLO26仓储检测实战:物体定位+有向边界框+姿态估计+实例分割,一个模型盯住整个仓库
大数据·人工智能·3d·视觉检测·工业质检
ting94520004 小时前
动手学深度学习(PyTorch版)深度详解(5):深度学习计算核心 —— 卷积操作、填充步幅、汇聚层与 LeNet 完整精讲
人工智能·pytorch·深度学习
2zcode4 小时前
基于深度学习的违章停车检测系统的设计与实现
人工智能·深度学习