GS-SLAM论文阅读笔记--LoopSplat

介绍

这篇文章看标题是解决GS-SLAM回环检测的,GS-SLAM回环检测之前文章很少,但他对于SLAM又很重要,确实值得阅读一番。而且这些作者的学校又是很厉害的。


文章目录

  • 介绍
  • 1.背景介绍
  • 2.关键内容
    • [2.1 Gaussian Splatting SLAM](#2.1 Gaussian Splatting SLAM)
    • [2.2 Gaussian Splats的配准](#2.2 Gaussian Splats的配准)
    • [2.3 3DGS的闭环检测](#2.3 3DGS的闭环检测)
    • [2.4 整体流程](#2.4 整体流程)
  • 3.文章贡献

1.背景介绍

  1. 基于3D高斯Splats (3DGS)的SLAM最近显示出更精确、更密集的3D场景地图的前景,现有的基于3dgs的方法无法通过回环或全局BAY优化来解决场景的全局一致性。
  2. 现有的方法可以分为解耦和耦合两类,其中解耦方法不利用稠密地图进行跟踪任务,而耦合方法使用稠密地图进行帧到模型的跟踪。但两者都有各自的缺陷:解耦映射和跟踪通常会在系统中产生不必要的冗余,例如低效的信息共享和增加的计算开销。另一方面,所有耦合的3DGS SLAM方法都缺乏在地图和姿态上实现全局一致性的策略,导致姿态误差的积累和地图的扭曲。
  3. 为了解决当前系统的局限性,作者想要寻求一种耦合SLAM系统,该系统避免保存所有建图的输入帧,并且能够直接从稠密建图中提取回环约束,而无需冗余计算。作者提出了一个关键问题:我们能否在SLAM系统中使用地图表示(即3DGS)本身来进行闭环?
  4. 作者发现传统的点云配准技术不适合从三维高斯分布中导出回环约束,于是提出了一种新的直接操作3DGS表示的配准方法,从而将3DGS作为统一的场景表示进行跟踪、建图和保持全局一致性。

2.关键内容

2.1 Gaussian Splatting SLAM

作者参考loopy-slam和Gaussian-slam,使用一组子地图来表示场景,每个子地图用3D高斯点云Ps建模一些关键帧,其中

上面的公式就是高斯参数的表达。

子地图的初始化:从第一个关键帧开始,每个子地图对观察特定区域的一系列关键帧进行建模。随着探索场景空间的扩展,将初始化一个新的子地图,以避免同时处理整个全局地图。与之前使用固定数量关键帧的方法不同,当当前帧的相对位移或旋转到第一个关键帧I s f超过预定义的阈值d thre或θ thre时,作者动态触发新的子映射初始化。

Frame-to-model跟踪:为了在当前子地图Ps中定位传入帧I s j,我们首先根据恒定运动假设初始化相机姿态Tj为:Tj = Tj−1·T−1 j−2·Tj−1。

接下来,我们通过最小化跟踪损失Ltracking来优化Tj, Ltracking(ˆIsj,ˆDsj, Isj, Dsj, Tj)测量在视点Tj的渲染颜色ˆIj和深度,ˆdj图像与输入颜色Ij和深度Dj之间的差异。为了稳定跟踪,我们使用alpha掩模Ma和内隐掩模Min来处理由重建不良或以前未观察到的区域引起的严重误差。最终的跟踪损失是对有效像素的求和:

其中λc为平衡颜色和深度损失的权重,∥·∥为两幅图像之间的L1损失。

子地图的扩展:关键帧以固定的间隔为子地图选择。一旦当前关键帧Isj被定位,我们主要在稀疏覆盖的区域扩展3D高斯地图,以实现有效的建图。首先从RGB-D输入计算一个稠密的点云,然后从累积alpha值低于阈值α thre或发生显著深度差异的区域均匀采样Mk个点。这些点被初始化为各向异性的三维高斯点,并根据当前子地图内的最近邻距离定义比例尺。(子地图的扩展)。只有在半径ρ内没有现有的3D高斯均值时,新的3D高斯splats才会添加到当前子地图。(新的子地图添加条件)。

子地图更新:在添加新的高斯后,当前子图中的所有高斯函数都通过最小化渲染损失Lrender(在子图的所有关键帧上计算)来针对固定次数的迭代进行优化,至少40%的计算分配给最近的关键帧。渲染损失由三个部分组成:颜色损失Lcolor、深度损失Ldepth 和 正则化项Lreg。

其中λ *为超参数。与跟踪损失类似,深度损失是渲染深度图和真值深度图之间的L1损失。对于颜色监督,我们使用L1和SSIM损失的加权组合:

为了正则化在稀疏覆盖或几乎没有观测到的区域中过度拉长的三维高斯,我们添加了一个各向同性正则化项:

其中sk∈R3是三维高斯的比例尺,~sk是它的均值,K是子图中高斯的个数。在优化过程中,为了保留从深度传感器直接测量的几何形状并减少计算时间,我们没有克隆或修剪高斯函数。

2.2 Gaussian Splats的配准

LoopSplat的第一个贡献与高斯splat的配准有关,其公式如下。考虑两个重叠的3D高斯子地图P和Q,每个子地图都使用不同的关键帧重建,并且没有对齐。作者目标是估计一个将P与Q对齐的刚性变换T P→Q∈SE(3),每个子地图也与一组视点VP相关联:

其中I和D分别是单独的RGB和深度测量值,T是上一节中估计的相机姿态。

重叠部分的估计:了解源地图和目标子地图P和Q之间的近似重叠对于鲁棒和准确配准至关重要,并且可以通过比较特征相似性来提取这种共上下文信息。虽然高斯飞溅的均值确实形成了一个点云,但我们发现通过匹配局部特征直接从它们中估计重叠区域效果并不好。相反,我们从每个子地图中识别共享相似视觉内容的视点。具体来说,我们首先通过NetVLAD传递所有关键帧来提取它们的全局描述符。然后,我们计算两组关键帧之间的余弦相似度,并保留前k对进行注册。

配准为关键帧定位:考虑到3DGS子地图及其视点可以视为一个刚体,我们建议将3DGS配准作为关键帧定位问题来处理。对于选定的视点vpi,在Q内确定其相机姿态Tqi允许从Q渲染与vpi相同的RGB-D图像。因此,刚性变换TP→Q可计算为T qi· T −1i。

在关键帧定位过程中,我们保持Q的参数不变,通过最小化渲染损失L = Lcol + Ldepth来优化刚性变换T P→Q,其中Lcol和Ldepth都是L1损失。

我们估计所选视点的刚性变换,VP中的视点从P到Q, VQ中的视点与之相反,并行进行。在优化完成后,渲染残差也被保存。通过使用估计重叠区域中采样的top-k视点作为选择视点,大大提高了配准效率,并且在不重叠视点中没有冗余。首先估计视点变换,然后用于计算子地图的全局变换。

2.3 3DGS的闭环检测

闭环检测旨在识别过去子图和关键帧的姿态修正(即相对于当前估计的相对转换),以确保全局一致性。该过程在创建新的子地图时启动,在检测到新的闭环时,构建包含所有历史子地图的姿态图。然后使用3DGS配准计算姿态图的回环边缘约束。随后,进行姿态图优化(Pose Graph Optimization, PGO),实现3DGS全局一致的多向配准。

回环检测:为了有效检测系统对同一位置的重新访问,我们首先使用预训练的NetVLAD提取全局描述符d∈R1024。我们计算了第i个子图中所有关键帧的余弦相似度,并确定了对应于它们的第p个百分位数的自相似度分数。然后,我们应用相同的方法来计算第i个子映射和第j个子地图之间的交叉相似度。 如果s i,j cross > min(s i self, s j self),则添加一个新的闭环。

然而,仅仅依靠视觉相似性来回环检测可能会产生假的回环边缘,从而潜在地降低PGO的性能。为了降低这种风险,我们额外评估两个子地图的高斯分布之间的初始几何重叠比r,并仅保留r > 0.2的回环。

姿态图优化:每次检测到一个新的回环时,我们都会创建一个新的姿态图,并确保它的连接与前一个相匹配,除了新的子图引入的新边。每个子图的相对位姿改正{Tc i∈SE(3)}定义为位姿图中的节点,这些节点与测程边和回环边相连。其中Tc表示应用于第i个子地图的校正量。连接相邻节点的节点和边(即测程边)用单位矩阵初始化。在检测到的回环上添加回环边缘约束,并根据高斯飞溅配准进行初始化。边的信息矩阵直接从高斯中心计算并合并到姿态图中。PGO在回环检测后触发,我们一个使用基于线过程的鲁棒公式。

全局一致的地图调整:从PGO输出中,我们获得了Ns个子地图的姿态校正集{Tc i= Rc i \| Tc i} Ns i=1,其中ci表示子地图 i 的校正。对于每个子地图,我们更新相机姿态,高斯平均值和协方差:

其中,µi和Σi分别表示第i个子地图S中的高斯的中心集和协方差矩阵集,索引 j 在子地图的关键帧跨度上迭代。

我们省略球谐(SH)以减小高斯图的大小并提高姿态估计精度。

2.4 整体流程

LoopSplat是一个耦合的RGB-D SLAM系统,它使用高斯splat作为统一的场景表示,用于跟踪、建图和维护全局一致性。在前端,它连续估计相机的位置,同时使用高斯splats构建场景。当相机穿越超过预定义的阈值时,当前子地图将被确定,并启动一个新的子地图。同时,后端回环检测模块监视位置重访。当检测到一个回环时,系统生成一个姿态图,结合从我们提出的3DGS配准中得到的回环边缘约束。随后,执行姿态图优化(PGO)来优化相机姿态和子地图,以确保整体空间一致性。

3.文章贡献

  1. 介绍了一种基于高斯泼溅的紧耦合RGB-D SLAM系统LoopSplat,该系统具有新颖的闭环模块。该模块直接在高斯飞溅上运行,集成了3D几何和视觉场景内容,用于鲁棒回环检测。
  2. 开发了一种有效的方法来注册两个3DGS表示,从而有效地提取边缘约束进行位姿图优化。利用3DGS的快速光栅化,它无缝集成到系统中,在速度和精度方面都优于传统技术。
相关推荐
叼烟扛炮12 分钟前
[Git 实战] 学习笔记:从生成 SSH 密钥到解决 TortoiseGit 推送报错全指南
linux·运维·笔记·git·学习
蒸蒸yyyyzwd1 小时前
学习笔记 八股手撕
笔记·学习
揣一尾游鱼yu2 小时前
Spring上(IOC)笔记
java·笔记·spring·ioc
小李不想当小白4 小时前
BKP备份寄存器与RTC实时时钟(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
瑞码空间6 小时前
JSP与Servlet核心开发与CRUD实战笔记
java·笔记·servlet·jsp
La Pulga6 小时前
【FreeRTOS源码学习笔记】链表的实现
数据结构·笔记·stm32·mcu·链表·嵌入式·freertos
lally.8 小时前
论文阅读-FAST_FAIR
论文阅读
wuyoutrans9 小时前
以色列专利OA答复翻译,重点要避开哪些坑?
笔记
宝绿特塑业再生科技9 小时前
HDPE再生颗粒户外家具表面粉化机理与改性技术全解析
笔记·户外家具·再生塑料·塑木桌椅
凉、介10 小时前
深入理解 ARMv7-A | Generic Timer
笔记·学习·嵌入式·arm