GS-SLAM论文阅读笔记--LoopSplat
介绍
这篇文章看标题是解决GS-SLAM回环检测的,GS-SLAM回环检测之前文章很少,但他对于SLAM又很重要,确实值得阅读一番。而且这些作者的学校又是很厉害的。
文章目录
- 介绍
- 1.背景介绍
- 2.关键内容
- 2.1 Gaussian Splatting SLAM
- 2.2 Gaussian Splats的配准
- 2.3 3DGS的闭环检测
- 2.4 整体流程
- 3.文章贡献
1.背景介绍
- 基于3D高斯Splats (3DGS)的SLAM最近显示出更精确、更密集的3D场景地图的前景,现有的基于3dgs的方法无法通过回环或全局BAY优化来解决场景的全局一致性。
- 现有的方法可以分为解耦和耦合两类,其中解耦方法不利用稠密地图进行跟踪任务,而耦合方法使用稠密地图进行帧到模型的跟踪。但两者都有各自的缺陷:解耦映射和跟踪通常会在系统中产生不必要的冗余,例如低效的信息共享和增加的计算开销。另一方面,所有耦合的3DGS SLAM方法都缺乏在地图和姿态上实现全局一致性的策略,导致姿态误差的积累和地图的扭曲。
- 为了解决当前系统的局限性,作者想要寻求一种耦合SLAM系统,该系统避免保存所有建图的输入帧,并且能够直接从稠密建图中提取回环约束,而无需冗余计算。作者提出了一个关键问题:我们能否在SLAM系统中使用地图表示(即3DGS)本身来进行闭环?
- 作者发现传统的点云配准技术不适合从三维高斯分布中导出回环约束,于是提出了一种新的直接操作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.文章贡献
- 介绍了一种基于高斯泼溅的紧耦合RGB-D SLAM系统LoopSplat,该系统具有新颖的闭环模块。该模块直接在高斯飞溅上运行,集成了3D几何和视觉场景内容,用于鲁棒回环检测。
- 开发了一种有效的方法来注册两个3DGS表示,从而有效地提取边缘约束进行位姿图优化。利用3DGS的快速光栅化,它无缝集成到系统中,在速度和精度方面都优于传统技术。
相关文章:

GS-SLAM论文阅读笔记--LoopSplat
介绍 这篇文章看标题是解决GS-SLAM回环检测的,GS-SLAM回环检测之前文章很少,但他对于SLAM又很重要,确实值得阅读一番。而且这些作者的学校又是很厉害的。 文章目录 介绍1.背景介绍2.关键内容2.1 Gaussian Splatting SLAM2.2 Gaussian Splat…...
Mysql数据库表结构迁移PostgreSQL
1、背景: 公司本来用的数据库都是mysql,为了国产化适配兼容pg和dm。dm提供了数据迁移工具,可以直接做数据迁移,生成脚本之后在其他环境执行。但是pg貌似没有工具能直接用。navicat由于版权问题公司也用不了。pgloader使用总是有问…...

店匠科技携手Stripe共谋电商支付新篇章
在全球电商行业蓬勃发展的背景下,支付环节作为交易闭环的核心,其重要性日益凸显。随着消费者对支付体验要求的不断提高,以及跨境电商的迅猛发展,支付市场正经历着前所未有的变革与挑战。在这一充满机遇与竞争的领域,店匠科技(Shoplazza)凭借其创新的嵌入式支付解决方案—— Sho…...
大众(奥迪)汽车继电器编号对照表
数字功能放大器零件编号1化油器进气歧管加热器40a1719063832燃油泵(CE1 MK1 Golf 和 Early Rocco/cabrio K-Jet,无转速限制器)-443906059A 321906059D/E3燃油泵(CE1 MK1 Golf 和 Early Rocco/cabrio K-Jet,无转速限制器)-4439060594安全带警告继电器5早期 MFA 时钟的换档…...

《佛脚闪卡watch》——Apple Watch上的高效学习助手
在快节奏的生活环境中,时间管理成为了学习成功的关键因素之一。**《佛脚闪卡watch》**是一款专为Apple Watch设计的应用程序,旨在帮助学生和自学者更高效地利用碎片时间进行学习。无论是等待公交、散步还是短暂休息,您都可以随时随地进行复习…...

六、桥接模式
桥接模式(Bridge Pattern)是一种结构型设计模式,旨在将抽象与实现分离,使得两者可以独立变化。通过使用桥接模式,可以避免在多个维度上进行继承,降低代码的复杂度,从而提高系统的可扩展性。 组成…...
Vue eslint 语法检测问题
1. 修改 prettier 配置文件 确保你的项目中有 .prettierrc 配置文件,并在其中添加或修改 endOfLine 设置为 lf,确保统一使用 LF 换行符。 在 .prettierrc 文件中添加: {"endOfLine": "lf" }2. 修改 .editorconfig 文件…...

QT Creater实现国庆节主题项目【0基础完成版】
本文适用对象 想要学习qt creater的小白;想要学习c++制作软件的编程爱好者。可以先下载这篇博客绑定的资源,然后一边操作,一边学习,会更高效~0. 创建初始项目 一步步来操作吧,首先下载qt creter,之前发布过相关资源,大家直接查找下载,或者自行下载。 1. 初始代码 mai…...

Qt 加载 WPS 时提示要登录
项目中Qt加载word时 默认用wps打开word文档 程序一运行老是提示要立即登录 看着很烦 可以按下面的方法去掉这个烦人的东西 在下面的项目中新建字符串enableforceloginforfirstinstalldevice,值为false即可。...

vue3的el-tree的default-checked-keys无法勾选的问题解决
前言:有些树形控件是需要默认勾选的 但是请求后渲染不显示 刷新外部的key值也没有用 看了一下文档 我们使用自带的方法来解决 <el-treenode-key"id":data"state.parentMenuList":default-checked-keys"state.checkIdList":check-on-click-n…...
class 5: vue.js 3 v-model和表单输入
v-model是Vue.js 3中用于实现双向绑定的重要指令,双向绑定就是对于数据的修改会映射回UI组件上,同时对于UI组件上数据的变更也会映射回底层数据当中,v-model会根据控件的类型自动选取正确的方法来更新元素v-model底层实现的原理实际上是v-bin…...

了解一下HTTP 与 HTTPS 的区别
介绍: HTTP是超文本传输协议。规定了客户端(通常是浏览器)和服务器之间如何传输超文本,也就是包含链接的文本。通常使用TCP【1】/IP协议来传输数据,默认端口为80。 HTTPS是超文本传输安全协议,具有CA证书。…...

Opencv中的直方图(1)计算反向投影直方图函数calcBackProject()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 计算直方图的反向投影。 cv::calcBackProject 函数计算直方图的反向投影。也就是说,类似于 calcHist,在每个位置 (x, y)…...
VUE3项目的几种创建方式
文章目录 1.使用 Vue CLI (Vue Command Line Interface):2.使用 Create Vue App:3.使用 Vite:4.使用图形用户界面 (GUI):5.纯手工搭建6.基于模板创建: 1.使用 Vue CLI (Vue Command Line Interface): Vue CLI 是官方推荐的方式来快速搭建 Vue 项目的基础结构。命令:…...

VBA进行excel坐标转换
在Excel里利用坐标绘图时,可以比较容易想到采用数据透视表,但是数据透视表生成的图不可更改,因此本案例采用VBA进行坐标变换而不改变原始值来转换图像,即实现图像的左右翻转和上下翻转,如下图所示,选择map的…...

使用pytorch深度学习框架搭建神经网络
简介 现在主流有两个框架pytorch和TensorFlow,本文主要介绍pytorch PyTorch:由 Facebook 的人工智能研究小组开发和维护。PyTorch 以其动态计算图(Dynamic Computational Graph)和易用性著称,非常适合研究人员和开发者进行实验和…...

Hive数据库与表操作全指南
目录 Hive数据库操作详解 创建数据库 1)语法 2)案例 查询数据库 1)展示所有数据库 (1)语法 (2)案例 2)查看数据库信息 (1)语法 (2&#…...

UniaApp引入Iconfont
一、下载图标资源 登录到阿里巴巴矢量图标库(iconfont)官网(https://www.iconfont.cn/)。找到你需要的图标并添加到购物车,然后点击购物车图标进入到管理界面,选择 “下载代码”。在下载选项中选择 “Font…...

面试题:软件测试缺陷产生的原因有哪些?
软件缺陷产生的原因多种多样,一般可能有以下几种原因: 1.需求表述、理解、编写引起的错误。 2.系统架构设计引起的错误。 3.开发过程缺乏有效的沟通及监督,甚至没有沟通或监督。 4.程序员编程中产生的错误。 5.软件开发工具本身隐藏的问…...

RabbitMQ 04 集群
01...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
1. 开发环境准备 安装DevEco Studio 3.1: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK 项目配置: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...