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

news2024/11/16 2:17:21

介绍

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


文章目录

  • 介绍
  • 1.背景介绍
  • 2.关键内容
    • 2.1 Gaussian Splatting SLAM
    • 2.2 Gaussian Splats的配准
    • 2.3 3DGS的闭环检测
    • 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的快速光栅化,它无缝集成到系统中,在速度和精度方面都优于传统技术。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2110457.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言之联合体和枚举

目录 前言 一、联合体类型的声明 二、联合体的特点 三、联合体的大小计算 四、联合体的适用场景举例: 五、枚举类型的声明 六、枚举类型的优点 总结 前言 本文主要讲述C语言的两种结构类型:联合体和枚举。 ❤️感谢支持,点赞关注不迷路❤️ 一…

计算polydata相交

使用vtk.vtkBooleanOperationPolyDataFilter() 可以进行求交,差,并操作 并且可以填充交面,不会形成一个缺口 vtkBooleanOperationPolyDataFilter 计算由两个输入表面定义的体积计算出的并集、交集或差集的边界。 这两个表面不需要是流形的…

六,Spring Boot 容器中 Lombok 插件的详细使用,简化配置,提高开发效率

六,Spring Boot 容器中 Lombok 插件的详细使用,简化配置,提高开发效率 文章目录 六,Spring Boot 容器中 Lombok 插件的详细使用,简化配置,提高开发效率1. Lombok 介绍2. Lombok 常用注解2.1 ToString2.2 Se…

数字经济时代,零售企业如何实现以消费者为中心的数字化转型?

在数字经济时代,零售企业正面临着前所未有的挑战与机遇。随着消费者行为的数字化和多样化,传统的零售模式已难以满足市场需求。为了在激烈的市场竞争中立于不败之地,零售企业必须实现以消费者为中心的数字化转型。这一转型不仅仅是技术的升级…

[ios]准备好app后使用xcode发布ios操作

在app代码完成后,点击xcode进行发布

嵌入式开发学习路线(25届校招学习) 嵌入式学习路线七年规划:从大一小白到校招大佬 (学习路线汇总)

嵌入式开发学习路线(25届校招可以参考) 嵌入式系统作为当前最热门且最有发展前途的IT应用领域之一,吸引了大量有志于从事该行业的学习者。为了系统地掌握嵌入式开发技能,以下是一条详细的学习路线,旨在帮助初学者逐步…

算法:图片压缩算法【Z字行扫描】(Java实现)

要在Java中实现Z字形扫描,我们需要遍历一个给定的nn矩阵,并按照Z字形的顺序输出其元素。Z字形扫描的路径通常是从矩阵的左上角开始,沿着对角线方向交替向下和向上移动,直到遍历完整个矩阵。 下面是一个简单的Java实现示例&#xf…

不同vlan之间的通信方法

1.通过路由器的物理接口 1.给PC1,PC2配置IP地址,网关2.进入交换机配置vlan,交换机所有口都配置access口并绑定vlan3.配置路由器,进入路由器的两个接口配置网关IP和掩码缺点:成本高,每增加一个vlan就需要一个物理端口和…

【项目管理】项目管理办公室 --- PMO

项目管理办公室 PROJECT MANAGEMENT OFFICE 简称PMO 项目管理办公室Project Management Office,简称PMO 是现代企业管理中一个至关重要的组成部分,特别是在那些依赖项目驱动战略的企业中。 PMO的设立旨在提升项目管理的专业性和一致性,通过…

ctfshow-文件包含(web78-web88/web116-web117)

web78 <?phpif(isset($_GET[file])){$file $_GET[file];include($file); }else{highlight_file(__FILE__); } 判断是否存在file参数 如果存在 将包含这个参数值 文件 php://filter可以获取指定文件源码。当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执…

智能生成ppt使用什么软件?免费生成软件大盘点

在快节奏的商务交流、生动有趣的课堂教育以及各类激情洋溢的演讲场合中&#xff0c;PPT&#xff08;PowerPoint Presentation&#xff09;无疑是我们不可或缺的信息传递利器。 然而&#xff0c;设计一份既视觉吸睛又能精准传达核心信息的PPT&#xff0c;往往需要耗费大量的时间…

Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(1)

本文仅作笔记学习和分享&#xff0c;不用做任何商业用途 本文包括但不限于unity官方手册&#xff0c;unity唐老狮等教程知识&#xff0c;如有不足还请斧正​​ 事先声明:该工具我是跟唐老师教程来的&#xff0c;并非原创&#xff0c;仅作学习笔记交流 1.需求分析 最终目的就如…

从供货上游到下游消费者平台搭建 多商家供货供应链商城开发关键点

搭建一个多商家供货的供应链商城、从供货上游到下游消费者的综合供应链平台是一个复杂的事情。但这样的平台能高效地连接供应链的各个环节&#xff0c;还能保证信息的流畅传递和业务的高效运作。今天&#xff0c;商淘云为您分享从供货上游到下游消费者的平台搭建的4大关键点&am…

MLLM(二)| 阿里开源视频理解大模型:Qwen2-VL

2024年8月29日&#xff0c;阿里发布了 Qwen2-VL&#xff01;Qwen2-VL 是基于 Qwen2 的最新视觉语言大模型。与 Qwen-VL 相比&#xff0c;Qwen2-VL 具有以下能力&#xff1a; SoTA对各种分辨率和比例的图像的理解&#xff1a;Qwen2-VL在视觉理解基准上达到了最先进的性能&#…

Qt中使用DAG(有向无环图)

之前做的一个视觉检测项目&#xff0c;本来各个视觉检测工具之间是独立的&#xff0c;单独执行图像输入、得出结果&#xff0c;然后综合汇总结果&#xff0c;简单明了。 后来要求工具之间能存在依赖关系&#xff0c;也就是A工具的输出可以作为B工具的输入&#xff0c;这样就很麻…

【Android】ViewPager基本用法总结

文章目录 一、添加ViewPager控件二、构建适配器类三、在 MainActivity 中设置适配器示例一&#xff1a;图片切换适配器MainActivity 示例二&#xff1a;Fragment切换适配器FragmentMainActivity ViewPager 是 Android 中一个用于在同一屏幕上滑动不同页面&#xff08;通常是左右…

【C++】C++中的花式操作:lambda表达式、类成员初始化列表、三元运算符、运算符及其重载。。。

八、C中的花式操作&#xff1a;lambda表达式、构造函数初始化列表、三元运算符 10、lambda表达式 见mutable关键字&#xff1a;【C】C中的关键字&#xff1a;const、mutable、auto、new....-CSDN博客。 11、构造函数初始化列表 当我们编写一个类时&#xff0c;一般都要有一个…

鼠标指针美化 一大批鼠标指针特效 喜欢的快点收藏~!

鼠标指针美化 一大批鼠标指针特效 喜欢的快点收藏~&#xff01;鼠标指针美化&#xff0c;这个功能可能许多人都没用过&#xff0c;应该还有很多人都是用着系统默认的鼠标指针&#xff0c;我们今天给大家分享一个可以修改鼠标指针的工具&#xff0c;如果你也喜欢&#xff0c;那麻…

类比推理-错题集

001 解析 &#xff1a; 002

[Visual Stuidio 2022使用技巧]3.模板

本文主要介绍本人在使用vs2022开发WPF桌面程序时使用到的一些插件及配置。 语言&#xff1a;C# IDE&#xff1a;Microsoft Visual Studio Community 2022 框架&#xff1a;WPF&#xff0c;.net 8.0 一、工程模板 1.1 创建模板 编辑好模板代码&#xff0c;扩展及NuGet包之…