场景规模的限制
从单目视频中实现同步定位与建图(SLAM)一直是计算机视觉领域的一个长期挑战。传统的SLAM方法致力于实现精确的相机位姿跟踪和高质量的地图构建。近年来,神经辐射场(NeRF)和3D高斯喷溅(3DGS)的进步启发了SLAM社区,通过这些技术增强地图表达能力,使得系统能够进行丰富的外观编码,并支持从任意视角进行逼真的渲染。基于NeRF和3DGS的SLAM新技术在在线建图和渲染方面展现了极大的潜力,这为增强现实(AR)、虚拟现实(VR)、自动驾驶和无人机导航等应用提供了新的可能,使用户和智能体能够从不同视角渲染场景。
尽管这些技术取得了显著进展,
但当前系统仍面临一个关键挑战:现有基于NeRF和3DGS的SLAM框架通常受限于场景规模,大多数方法依赖于RGB-D深度信息来确保大规模场景的精确建图和跟踪。这主要归因于两方面的限制:一是场景表示能力的不足,二是全局对齐的困难
。隐式方法(如NeRF)由于有限的表示能力,通常仅适用于有界区域。显式方法(如高斯喷溅)虽然更具表达力,但存储开销较大,其大小随场景增长而迅速扩展,导致计算和存储效率下降。第二个挑战在于全局对齐问题。在大规模场景中,回环检测至关重要,它可以有效减少全局漂移。然而,大多数基于NeRF和3DGS的SLAM方法仍依赖于增量梯度优化进行注册,而这种方式在大规模场景下的全局对齐能力有限。此外,现有方法尚不清楚如何在回环检测后进行地图变形和更新,而不损害渲染性能。因此,现有的
NeRF和3DGS SLAM方法大多受限于小规模、有界的室内环境,并通常依赖于RGB-D数据以确保场景的稳健对齐
。
为了解决这些问题,我们提出了 GigaSLAM,一个基于高斯喷溅的SLAM框架,专门设计用于大规模、长期、无限制的户外环境。GigaSLAM的核心技术贡献在于提出了一种新的分层稀疏体素表示,用于支持大规模、高保真的渲染SLAM系统,其中每个层级的体素以不同的细节等级编码高斯。这种地图表示方式具备
两个关键优势
:
-
无边界性:随着相机移动,地图可以动态扩展,突破有界场景的限制;
-
内容感知、高效渲染:通过分层细节表示(Level-of-Detail, LoD),系统可以在大规模场景下进行高效的内容感知渲染,避免一次性加载数亿个高斯点用于单帧渲染。
此外,我们通过数据驱动的单目度量深度模块增强了地图几何和相机位姿跟踪的精度。最后,我们集成了基于词袋模型的回环检测机制,并设计了一套全面的回环后地图更新方案,确保渲染精度在场景更新后依然保持一致。实验表明,GigaSLAM 可以扩展到城市驾驶场景下数十公里的行驶距离,并在单张 GPU 上实现稳健、精准的位姿跟踪,同时支持任意视角的高质量渲染。据我们所知,当前尚无其他框架能够同时满足这些能力。
我们在 KITTI 和 KITTI 360 数据集上对 GigaSLAM 进行了验证,结果表明,本方法在大规模室外场景下的跟踪精度和鲁棒性显著优于其他单目 SLAM 方法,特别是在长期户外数据集上的表现。此外,现有基于 NeRF 和 3D 高斯喷溅的 SLAM 框架在处理这种大规模、无边界场景时仍然存在明显局限性。对于室内数据集,我们的方法在跟踪和渲染性能上可与最先进的 3DGS SLAM 方法相媲美,这些方法通常仅针对室内场景并使用单目 RGB 图像进行优化。
项目链接(暂未开源)
:https://github.com/DengKaiCQ/GigaSLAM
主要贡献
:
-
提出 GigaSLAM,一种基于高斯喷溅的 SLAM 框架,专为大规模、无限制的环境设计;
-
提出一种分层地图表示,支持动态增长和多级细节渲染,适用于大规模 SLAM 任务;
-
设计了一种高效的回环检测与地图更新机制,能够适用于高斯喷溅的地图表示。
具体方法
GigaSLAM 通过单目 RGB 输入对大规模户外环境进行建图,采用
分层稀疏体素结构
。图 2 展示了我们算法的概览。
预备知识
3D 高斯喷溅(Gaussian Splatting)
一个高斯基元
由颜色
、尺度
、不透明度
、均值向量
以及对角协方差矩阵
组成,其中
表示高斯在 3D 空间中的椭球形状及位置。每个高斯基元
由一个稀疏体素
通过神经网络解码得到,该神经网络表示为多层感知机(MLP),其参数为
。
在每个时间步
,地图
由稀疏体素
和高斯喷溅
组成,其中
代表时间
时的第
个体素。
在渲染过程中,高斯基元按其到相机的距离排序,并通过
alpha 混合
进行合成。每个 3D 高斯
在图像平面上投影为 2D 高斯
:
其中
是投影函数,
表示相机位姿,
为雅可比矩阵,
为相机旋转矩阵。这种设置确保 3D 高斯喷溅的端到端可微分性。
像素
处的颜色
和深度
计算如下:
其中
是第
个高斯基元的相机到均值的距离。
体素化高斯表示(Voxelized Gaussian Representation)
本工作采用 Scaffold-GS 进行体素化 3D 表示。该表示方式提供
快速渲染
、
快速收敛
,并通过将 3DGS 数据编码为特征向量提高存储效率。此外,它允许将映射到相同体素的多个点合并为一个体素表示,从而减少内存占用并降低冗余。
场景被划分为稀疏体素,每个体素的中心位置称为锚点位置
,包含上下文特征向量
、缩放因子
及
个偏移量
。每个体素通过共享的 MLP 进行解码,生成
个高斯:
其中
是体素到相机的距离,
是视角方向。类似地,可以计算
和
,而高斯的均值
计算如下:
解码后的高斯通过喷溅(Splat)操作进行渲染,如前文所述。
建图
在大规模 SLAM 中,关键挑战在于选择一种
可扩展
、
表达能力强
且
灵活
的地图表示方法,以适应室外环境的复杂性。与室内场景不同,室外环境的开放性使得 NeRF 等隐式表示方法难以适用,因为它们难以处理无限范围的场景以及不断变化的深度。对于 3D 高斯喷溅(3DGS),大量远距离的高斯基元对最终渲染贡献较小,但会显著增加计算成本,从而降低渲染效率。
分层表示
我们使用体素化表示,并通过调整体素大小建立
分层结构
。如图 3(左)所示,提高体素细节可以增强近景物体的重建质量,但对远景(如建筑或天空)提升有限,且会大幅增加计算资源需求。因此,在 3DGS 表示中,采用
近景细粒度体素,远景粗粒度体素
的策略,可以在保证近处重建精度的同时,提高大规模场景的渲染效率。此外,分层表示还能解决可能出现的
“碰撞”问题
(图 3 右),即在长序列中,先前视角的高斯基元可能与后续帧的高斯重叠,影响相机位姿跟踪的精度。通过在远景采用较粗粒度的体素,我们可以确保近景细节清晰,同时优化计算效率和准确性。
我们使用不同的体素大小对点云进行分层体素化,根据相机距离划分不同分辨率的层级,从高精度到低精度排列。设
个体素层级为
,以及分层阈值
,则每个体素的层级
由以下公式确定:
其中
为点云坐标,
表示第
层的体素大小,由相机距离决定。
在渲染过程中,我们根据相机位置动态选择适当的稀疏体素。体素选择掩码计算如下:
此掩码确保仅选择
在指定层级范围内
并且
相机可见
的体素,然后将其输入 MLP 以生成高斯用于喷溅渲染。
地图更新
对地图表示进行更新,采用 L1 颜色距离和结构相似性(SSIM)来约束当前视图的渲染质量: