港大最新LVI-GS:结合3DGS的实时LiDAR-视觉-惯性紧耦合SLAM

点击下方卡片,关注“自动驾驶之心”公众号

戳我-> 领取自动驾驶近15个方向学习路线

>>点击进入→自动驾驶之心3DGS技术交流群

3DGS SLAM的难点

传统的 SLAM 系统使用地标、点云、占据栅格、符号距离函数(SDF)体素网格或网格来表示环境。其中,点云是由摄像头和 LiDAR 等传感器直接获取的简单场景表示。基于点云的 SLAM 系统能够实现精确定位,并可以构建稀疏或稠密的地图,但这些地图通常缺乏丰富的视觉细节。

NeRF 使用辐射场隐式地表示场景,通过优化连续的体积场景函数来实现,这种方式所需的存储量极少。然而,由于这些系统涉及大量的优化过程,难以实现实时性能。此外,将地图存储在多层感知器(MLP)中带来了灾难性遗忘和边界限制等问题,这些问题会阻碍场景重建。

3D 高斯分布(3DGS)提供了一种令人兴奋的替代方案,通过可微的 3D 高斯形状的原语来连续且适应性地表示 3D 场景。作为一种半隐式的建图方法,它在牺牲部分新视图合成功能的情况下,显著加快了优化和渲染速度。尽管基于优化,3DGS 的特性与点云和表面元素云类似,因而继承了其高效性、本地化和适应性等优点——这些特性对 SLAM 建图非常有利。在 1080p 分辨率下,3DGS 渲染速度可达 200 帧每秒,并且可以使用点云进行初始化,从而能够利用传统 SLAM 系统生成的稀疏或稠密点云来生成高保真图像。

一些集成了 3D 高斯的 SLAM 方法显示出了良好的效果。例如,SplaTAM、MonoGS、GS-SLAM和 Photo-SLAM使用序列的 RGB-D 或 RGB 数据来构建完整的 SLAM 系统。然而,这些技术在具有挑战性的光照条件、复杂背景和快速运动的非受控户外大规模环境中遇到了困难。尽管 LiDAR 为 3D 高斯提供了高质量的几何初始化,在户外环境中通常比摄像头更为稳健,但将其集成到 SLAM 系统中带来了独特的挑战。LIV-Gaussianmap和 LetsGo使用 LiDAR 初始化 3D 高斯,而 Gaussian-LIC结合了 LiDAR-惯性-摄像头的设置来实现综合的 3D 高斯构建。然而,LIV-Gaussianmap和 LetsGo等系统仅限于离线处理,而 Gaussian-LIC则需要复杂的前端里程计和大量的关键帧维护。

60541df0be137e7897960dba89b9ff20.png

LVI-GS[1]的项目链接: https://kwanwaipang.github.io/LVI-GS/

主要贡献

  1. 开发并实现了一个复杂的实时 LVI-GS 系统,能够维护一个动态的超原语模块。该系统利用 3D 高斯分布在三维空间中执行高质量、实时的渲染,从而确保了复杂环境的高效准确表示。

  2. 为了进一步提升系统的性能和可扩展性,采用了粗到细的地图构建方法。此方法利用 RGB 图像和深度图像的金字塔结构,在不同细节层次上逐步优化地图。此外,实施了一种先进的线程管理技术,以优化计算效率,从而确保在处理大型数据集时的实时操作顺畅。

  3. 为了改善地图表示和渲染质量,设计了一个稳健的关键帧管理策略,能够有效地选择和处理关键帧。此外,通过将深度损失纳入系统,增强了 3D 高斯地图的准确性,实现了更精确的重建和视觉上更优的渲染效果。

具体方法

框架通过两个并行线程来实现完整的系统功能:

  • 一个线程处理里程计

  • 另一个线程进行 3D 高斯的实时优化。

这两个线程协同维护一个共享的超原语模块。在这两个线程之间,交换的数据包括 3D 点云、相机姿态、相机图像和深度信息。

超原语

我们维护一个超原语模块,其中包括 3D 点云、体素和 3D 高斯分布。为了高效访问用于 3D 高斯初始化的 3D 点云,地图点被组织为固定大小的体素(例如,0.1 米 x 0.1 米 x 0.1 米)。体素的激活状态取决于最近添加的点的存在(例如,过去一秒内)。激活的体素表示最近有活动,而非激活的体素则表示没有近期更新。

此外,在视觉-惯性里程计 (VIO) 模块中,如果点的投影或光度误差超过指定阈值,则该点会被移除。对于点云中的每个点,我们识别其在网格中的位置;如果该位置已有点存在,则该点会被丢弃。我们还会控制每个体素中的点数以维持密度的稳定性。通过这种初始过滤过程,在里程计进行过程中,所获得的点云避免了 3D 高斯的冗余添加。

3D 高斯分布投影

我们的场景表示采用 3D 高斯分布,通过一组各向异性的高斯体  来进行建图。每个高斯体包含不透明度 、中心位置 、RGB 颜色 、半径  和 3D 协方差矩阵 。给定中心位置  和 3D 协方差矩阵 ,高斯分布定义为:

fd6a2b367eb19dd7f4cb6375f9099c7d.png

由于每个高斯体的形状为椭球体,我们将 3D 高斯的协方差参数化为:

其中, 为描述 3D 尺度的向量, 表示旋转矩阵。不同于沿相机光线进行的遍历,3D 高斯分布投影通过迭代 3D 高斯体进行光栅化,从而在渲染过程中忽略空白区域。由于 3DGS 采用体积渲染,因此无需直接导出表面,而是通过投影和混合多个 3D 高斯体的叠加,得到像素的颜色 :

e2ae82c2b688c6e5aaa01a9f7de8b32c.png

同样地,我们可以使用相同的方法获得深度 :

c0b2e37176de518ea26595b17f15a6b0.png

我们还渲染出一个可见性图像,用于确定当前像素的可见性:

a80daba2a8c822d82df605a48c5cdd3d.png

其中,最终的不透明度  是学习到的不透明度  与高斯体的乘积:

0c6b379f9fa085cc44079c68e71065ce.png

其中坐标  和  都在投影空间中。

我们的最终目标是将 3D 高斯体投影到二维平面上进行渲染,以获得高保真图像,这一过程通常被称为“投影”。当我们获得传感器的位姿变换 ([Q_{iw}, T_{iw}])(从图像到世界的转换)后,3D 高斯体()可以被投影为二维高斯体():

e84d8fbfc9645163886a5479c270fa25.png

其中, 为投影变换的雅可比矩阵的线性近似, 和  分别为传感器姿态的旋转和平移部分。

关键帧管理

我们通过超原语模块获取点云,将每  个点与相应的相机姿态和图像打包成一个单帧,以便后续选择。所有带颜色的 LiDAR 点用于初始化 3D 高斯体。我们在图像上进行关键帧选择,评估那些没有运动模糊的图像。如果图像的旋转或平移超过指定的阈值,则该图像被添加为关键帧,加入关键帧序列:

5e49bc292f1667c9f781e5f9c07bca1c.png

此外,对于每一个新添加的关键帧,我们评估其与先前关键帧的视觉重叠。如果重叠超过指定阈值,表明相似度较高,则该帧被视为冗余,不会加入序列。此外,我们还为高斯体的添加设定了过滤标准。我们从当前关键帧的视点计算累计不透明度,选择满足透明度要求的 3D 高斯体。如果 ,则过滤掉该点。

在使用所有关键帧的带颜色 LiDAR 点进行 3D 高斯体初始化之前,我们引入一个缓冲容器来延迟关键帧序列的整合到地图中。此延迟可防止由前一帧初始化的高斯体的不透明度快速降至可剔除的阈值,从而确保 3D 高斯体可以从后续帧的视点被观察到,从多个角度进行训练。

基于金字塔的训练

在我们的大规模 3D 高斯场景表示中,我们采用渐进训练方法来优化 3D 高斯场的训练效率,同时保持渲染质量。通过在不同分辨率下使用颜色和深度图像,我们构建了颜色和深度图像的金字塔,从而通过逐步细化的细节层次来改进训练过程。具体来说,我们将高斯地图划分为多尺度表示,以捕获不同层次的细节。输入的颜色和深度图像经过多次下采样,使我们能够从粗到细逐步训练 3D 高斯体。

在训练过程中,我们优先使用低分辨率数据来优化粗略细节。在一定数量的迭代后,我们逐渐减少下采样级别,最终使用原始输入分辨率来完成训练。该方法确保了训练的高效性,同时在各个细节层次上保持了 3D 高斯场景的高质量表示。

3bc1d92c2cb6f6aefe824ed1d1931013.png

在此公式中, 表示金字塔的层级, 表示渲染的颜色图像, 表示渲染的深度图像, 表示颜色图像的金字塔, 表示深度图像的金字塔。

高斯建图

在接收每一个关键帧后,我们初始化 3D 高斯体。对于第一个帧,我们处理整个点云,将点的 3D 坐标作为 3D 高斯体的中心。我们计算每个点到原点的平方欧氏距离,以确保最小值,防止距离为零。使用反 Sigmoid 函数初始化不透明度参数。对于颜色信息,我们初始化一个张量来存储从点云颜色数据中提取的特征,其中 RGB 通道对应于球谐系数。尽管我们采用了球谐函数 (SH),但初始的 SH 阶数设置为 0。随着优化迭代次数和关键帧数量的增加,SH 阶数逐步提升,以更好地适应多个视角,最大不超过 3。

我们将每个接收到的关键帧作为子地图进行一次优化。随后,在管理关键帧序列时,每接收一个新帧,我们会随机打乱所有关键帧,并随机选择一个帧进行优化。为了确保每个关键帧在优化时的一致性并保持地图的完整性,我们为每个关键帧设置了优化迭代次数的上限。达到该上限的关键帧会从关键帧序列中移除。

我们通过最小化图像损失  和几何损失  来优化 3D 高斯体的参数,包括旋转、缩放、密度和球谐系数 (SH)。

图像损失包含亮度误差和图像结构相似性(SSIM)误差:

c9e97e5a8cbc79391b0e1d8479232dd4.png

几何损失定义为渲染深度  与 LiDAR 测量的深度  之间的  损失:

实验效果

a7e7cea2fa1f7474790d3d8ed5fc1c4e.png f808d35a32e2924d97c129d1c2d8edf2.jpeg 2d2402009900def04d5197ee1d41ca46.jpeg a233ab3a53cb5b67c2d885100946b754.png b91d467c63d45e085fc6899787892832.png a2a9e937136c32867127abd653be09c5.png

总结一下

LVI-GS是一种利用 3D 高斯分布 (3DGS) 的 LiDAR-视觉-惯性紧耦合 SLAM 系统,用于实时的高保真场景重建和渲染。我们的方法结合了 LiDAR 和图像数据,使其能够捕捉精确的几何结构和细致的视觉信息,即使在具有挑战性的户外环境中也表现出色。通过有效集成高斯地图扩展、关键帧管理、线程管理和基于 CUDA 的加速策略,我们的系统在保持高质量建图的同时实现了显著的计算效率。

大量实验表明,LVI-GS 在各种复杂场景中,在渲染质量和效率方面都优于现有的 RGB 或 RGB-D 基于 3DGS 的 SLAM 系统。我们的消融实验进一步验证了基于金字塔的训练和深度损失对提升地图表示准确性的优势。

未来工作:将探索集成更多传感器类型,并进一步优化该框架,以更广泛地应用于实时机器人和 AR/VR 环境中。

参考

[1] LVI-GS: Tightly-coupled LiDAR-Visual-Inertial SLAM using 3D Gaussian Splatting

『自动驾驶之心知识星球』欢迎加入交流!重磅,自动驾驶之心科研论文辅导来啦,申博、CCF系列、SCI、EI、毕业论文、比赛辅导等多个方向,欢迎联系我们!

b27f55f34c95f9fa5862df67d2d28997.png

① 全网独家视频课程

端到端自动驾驶、仿真测试、自动驾驶C++、BEV感知、BEV模型部署、BEV目标跟踪、毫米波雷达视觉融合多传感器标定多传感器融合多模态3D目标检测车道线检测轨迹预测在线高精地图世界模型点云3D目标检测目标跟踪Occupancy、CUDA与TensorRT模型部署大模型与自动驾驶NeRF语义分割自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习

8baf56f1a351d83131ec17324734bc3d.png

网页端官网:www.zdjszx.com

② 国内首个自动驾驶学习社区

国内外最大最专业,近4000人的交流社区,已得到大多数自动驾驶公司的认可!涉及30+自动驾驶技术栈学习路线,从0到一带你入门自动驾驶感知端到端自动驾驶世界模型仿真闭环2D/3D检测、语义分割、车道线、BEV感知、Occupancy、多传感器融合、多传感器标定、目标跟踪)、自动驾驶定位建图SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案大模型,更有行业动态和岗位发布!欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频

c573729dd50485d18a04a28f6836a472.png

③【自动驾驶之心】技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦感知、定位、融合、规控、标定、端到端、仿真、产品经理、自动驾驶开发、自动标注与数据闭环多个方向,目前近60+技术交流群,欢迎加入!扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)

3587929b7b1a51287cb1ae150be812b9.jpeg

④【自动驾驶之心】全平台矩阵

9f4655000fdedf791f1732a65abd926b.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值