GS-SLAM论文阅读笔记--MM-Gaussian

介绍

这是一篇多模态的GS-SLAM,也已经被IROS2024录用。由于多传感器融合的GS-SLAM还是比较少的,所以应该仔细阅读一篇。
在这里插入图片描述



1.背景介绍

  1. 传统的SLAM方法往往受到地图表示的限制,如点云,surfel和voxel,它们只能以固定的分辨率重建地图。这一限制阻碍了对场景复杂纹理的捕捉,并阻碍了SLAM实现合成新视点等功能.此外,户外场景由于其无界特性,带来的挑战呈现出特别的复杂性。
  2. 现存方法通常是基于RGB-D或单目相机。单目相机中深度数据的缺失会导致三维高斯分布的不准确。同时,RGB-D相机捕获的深度信息范围有限,使其在广阔的户外场景中的使用变得复杂。
  3. 我们观察到现实世界中退化的场景,如无纹理的地面和墙壁,会导致定位错误,从而可能导致地图构建失败。

2.关键内容

2.1 跟踪

由于图像中缺乏3D信息,直接求解相机的姿势可能具有挑战性或不准确。所以作者首先使用点云配准算法估计激光雷达在时刻T的姿态。具体来说,对于三维高斯地图中的每个高斯点 G i G_i Gi,作者将标记它是来自激光雷达还是密度的结果。只保留LiDAR起源点的位置属性,将其视为一个正常的点云,然后在时刻t与LiDAR点 P t L P^ L_ t PtL进行配准,以获得LiDAR的姿态 T L , t W T^W_{ L,t} TL,tW

随后,相机的姿态被导出为 T C , t W = T L , t W . C L , C W T^W_{ C,t}=T^W_{ L,t}.C^W_{ L,C} TC,tW=TL,tW.CL,CW 。利用这个姿势,我们之前的公式从3D高斯图G中渲染RGB,深度和轮廓图像。接下来,我们通过比较渲染的RGB和深度图像与投影生成的捕获的RGB图像和深度图像之间的差异,进一步优化相机的姿态。由于图像中包含了尚未重构的部分,为了避免该部分的损失累积而影响位姿优化,我们按照splatam的方法,建立阈值 θ s θs θs。我们认为轮廓图像中超过这个阈值的区域已经被重建,因此,我们只计算这些区域内的损失。参考了splatam的策略

我们的损失函数由颜色损失和深度损失组成,两者都利用L1范数。通过施加一个权重因子λc,我们将颜色损失和深度损失结合起来,并使用Adam优化器进行梯度下降,以确定当前帧的估计姿态。公式如下:
在这里插入图片描述

2.2 重定位

跟踪失败会严重影响三维高斯图的重建,为了解决这个问题,我们首先引入跟踪失败检测模块,然后通过重定位模块将不正确的姿态重置回正确的轨迹。

在跟踪失败检测中,我们评估每帧使用公式(8)计算的损失是否超过阈值 θ f a i l θfail θfail。当损耗值超过 θ f a i l θfail θfail时,MM-Gaussian系统将进入跟踪失效状态。在这种状态下,跟踪模块被认为无法继续输出正确的姿态,并停止接受新的数据。因此,地图扩展和地图更新过程也停止了。同时,重新定位模块被激活。
在这里插入图片描述
如上图所示,跟踪在第t帧失败。我们使用t - m帧作为恢复点来执行查找操作。通过求解PnP问题,成功估计了第t + i帧的姿态。

具体来说,在第t帧失败时,我们从之前的m帧中检索相机的姿势 T C , t − m W T^W_{ C,t-m} TC,tmW,这被认为是正确的姿势。我们保持 T C , t − m W T^W_{ C,t-m} TC,tmW的平移部分不变,并对旋转进行“look-around”操作,即均匀采样n次旋转,形成n个新姿态。 同时渲染n个姿态对应的RGB、深度和silhouette图像。然后,对于跟踪失败后相机捕获的每一帧 I t + i I_{t+i} It+i我们使用SuperPoint进行特征提取,使用LightGlue进行当前帧与n张渲染的RGB图像之间的特征匹配。

我们在超过阈值 θ f e a t u r e θ_{feature} θfeature的n幅图像中选择匹配点数量最多的一张作为候选图像。利用候选的姿态,我们通过公式(7)的逆将渲染的深度图投影回3D空间,然后基于特征的对应性,使用Perspective-n-Point (PnP)计算当前帧的姿态 T C , T + i W T ^W _{C, T +i} TC,T+iW。通过这个结果,我们再次渲染相应的RGB、深度和silhouette图像,并通过公式(8)评估其损失。如果损失低于阈值 θ f a i l θ_{fail} θfail,则认为重新定位成功。追踪、地图扩展和地图更新模块将恢复。失败的第t帧和成功重新定位的第t+i帧之间的帧将被丢弃,以避免影响3D高斯j建图。

2.3 建图

1)地图扩展: 在跟踪阶段之后,我们得到了当前帧的估计姿态。基于此姿态,我们将当前帧的LiDAR点云转换为3D高斯点云,并将其添加到地图中进行扩展。具体来说,对于 p t L p^L_t ptL中传入的N个点,我们将它们转化为N个高斯点,并使用改进的LiDAR姿态将它们添加到地图中:
在这里插入图片描述
添加到三维高斯图G中的高斯点G的位置µ由p在 P t W P^W_t PtW中的对应位置决定。通过将点云投影到像素平面上,我们可以使用投影像素的颜色作为高斯函数的初始颜色。之后对高斯的其他属性进行赋值。

2)地图更新:我们保持一个持续增长的关键帧序列 Q k e y Q_{key} Qkey,在一定数量的输入帧后添加一个新的帧到序列中。在建图阶段之前,我们从 Q k e y Q_{key} Qkey中选择k−2帧与当前帧和该建图阶段最新的关键帧一起进行优化。为了选择与当前帧最相关的关键帧,我们将当前帧的点云转换成世界坐标系,然后投影到每个关键帧上。选择是基于投影到像素平面上的点的数量。

在建图阶段,我们的目标是更新三维高斯的属性,而不优化相机姿势。因此,我们设置了固定的迭代次数,每次从之前选择的k帧中随机选择一帧。根据所选帧估计的相机姿态,渲染RGB图像,然后根据输入图像计算损失函数。
由于我们已经将输入LiDAR点云转换成高斯数据并添加到地图中,因此我们不再在建图阶段的损失函数中包含深度损失。相反,我们添加了SSIM损失,并继续使用Adam优化器。

在这里插入图片描述

在优化过程中,一些无用的高斯函数可能变得透明,或者太大。因此,根据三维高斯溅射,我们在建图阶段结束时增加一个对高斯分布的剪枝步骤,去除这些无用的高斯分布。除此之外,为了更精细地表示物体表面的细节,我们采用了致密化过程,其中包括基于梯度复制高斯函数以生成新的高斯函数。(参考的是高斯原论文的策略)

2.4总体流程

整个系统以多模态数据为输入,即LiDAR的点云和相机的图像,最终输出一个大尺度的三维高斯图G,便于无界场景下的高质量图像渲染。具体来说,激光雷达和相机都以10Hz的频率捕获点云和图像。在时刻t,得到点云pt,图像It。利用在LiDAR和相机之间使用EdgeCalib预校准的外部参数C C L,将点云投影到图像平面上,形成稀疏深度图像DGT。

MM-Gaussian算法主要包括跟踪、重新定位、地图扩展和地图更新四个部分。在跟踪阶段,使用完善的点云配准来获得初始姿态估计,随后通过将相机图像与渲染图像进行比较来改进姿态估计,以提高姿态估计的精度。此外,为了防止跟踪失败对建图造成的灾难性后果,采用了重定位模块将错误位置重置到正确轨迹上,增强了MM-Gaussian处理各种场景的鲁棒性。在建图阶段,激光雷达的点云被处理成三维高斯点并合并到地图中。随后,使用维护的图像关键帧序列来优化地图中3D高斯点的属性,从而实现更好的渲染。
在这里插入图片描述

3.文章贡献

  1. 本文介绍了一种基于三维高斯的多传感器融合SLAM方法,该方法利用了激光雷达和相机的数据。我们的系统能够在无边界场景和室外场景增量地构建三维高斯图,还可以实时渲染高质量的图像。
  2. 本文开发了一个重新定位模块,用于在定位失败的情况下纠正系统的轨迹,从而提高系统的鲁棒性。
### GS-SLAM 的实现方式及相关源码下载 #### 1. **GS-SLAM 的核心概念** GS-SLAM 是一种基于高斯表示的 SLAM 方法,其主要特点是使用高效的可微分 splatting 渲染管道来实现实时的地图优化和 RGB-D 图像重绘[^3]。这种方法相较于传统的神经隐式表示方法具有更高的效率和精度平衡能力。 GS-SLAM 提出了两种关键技术: - 自适应扩展策略:动态添加或移除有噪声的 3D 高斯分布,用于高效重建新观察到的场景几何,并改进已观察区域的地图质量。 - 粗到精的选择技术:在姿态跟踪过程中选择可靠的 3D 高斯表示以优化相机姿态,从而降低计算复杂度并提高估计的鲁棒性。 这些特性使得 GS-SLAM 能够在 Replica 和 TUM-RGBD 数据集上表现出与现有最先进方法相媲美的性能。 --- #### 2. **GS-SLAM 的实现细节** ##### (a) 地图更新机制 GS-SLAM 使用自适应扩展策略来管理地图中的 3D 高斯分布。当检测到新的场景几何时,会自动引入新的高斯分布;而对于被判定为噪声的数据,则会被从地图中剔除。这一过程确保了地图的质量和实时性。 ##### (b) 姿态估计算法 为了减少运行时间和提高鲁棒性,GS-SLAM 设计了一种由粗到精的方法来选择参与优化的 3D 高斯分布。该方法优先考虑那些对当前帧贡献较大的高斯分布,从而有效降低了计算负担。 ##### (c) 可视化与渲染 GS-SLAM 利用了实时可微分的 splatting 渲染管道,这不仅加快了地图优化的速度,还支持高质量的新视角合成[^5]。相比于其他 NeRF 类型的 SLAM 方法,GS-SLAM 在保持高性能的同时实现了更优的视觉效果。 --- #### 3. **GS-SLAM 源码获取与安装指南** ##### (a) 获取源码 GS-SLAM 的官方仓库可以通过以下命令克隆: ```bash git clone https://github.com/GaussianSLAM/gs_slam.git cd gs_slam ``` 需要注意的是,默认情况下 `git clone` 不会拉取子模块的内容。因此需要手动初始化并更新子模块: ```bash git submodule init git submodule update --recursive ``` 如果遇到某些依赖项未成功下载的情况,可以单独进入 `submodules` 文件夹执行额外的克隆操作[^4]: ```bash cd submodules/ git clone https://github.com/Lab-of-AI-and-Robotics/diff-gaussian-rasterization.git git clone https://github.com/Lab-of-AI-and-Robotics/fast_gicp.git git clone https://github.com/camenduru/simple-knn.git ``` 完成上述步骤后即可获得完整的项目文件。 ##### (b) 编译与运行环境配置 建议按照 README 文档中的说明设置开发环境。通常需要安装以下依赖库: - Python >= 3.8 - PyTorch >= 1.9 - CUDA Toolkit (如果有 GPU 支持) - C++ 编译工具链(如 GCC 或 MSVC) 编译完成后可通过脚本启动演示程序,验证功能是否正常工作。 --- #### 4. **与其他 SLAM 方法的对比分析** | 特性 | GS-SLAM | SplaTAM / ESLAM | |-------------------------|----------------------------------|-------------------------------| | 内存消耗 | 较低 | 易于耗尽 | | 新视角合成质量 | 高 | 中等 | | 运行速度 | 实时 | 准实时 | 从表中可以看出,GS-SLAM 在内存管理和运行效率方面表现优异,同时能够提供高质量的重建结果。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值