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

前言

最近GS-SLAM回环检测的工作已经逐步发展了,看一下这篇新文章。

在这里插入图片描述


文章目录

  • 前言
  • 1.背景介绍
  • 2.关键内容
    • 2.1 tracking
    • 2.2 local mapping
    • 2.3 Loop Closing
    • 2.4总体流程
  • 3.文章贡献


1.背景介绍

  1. 现有的基于3dgs的SLAM方法往往存在累积的跟踪误差和地图漂移,特别是在大规模环境中。Photo-SLAM结合了基于ORB-SLAM的闭环,但其对基于特征的跟踪器的依赖限制了闭环的有效性,因为跟踪器无法利用地图的细化。基于nerf的SLAM方法集成了在线闭环来实现准确和鲁棒的跟踪,但需要存储历史帧和昂贵的重新训练整个隐式建图来更新回环矫正。

2.关键内容

2.1 tracking

我们采用基于映射场景的 frame-to-model 跟踪耦合系统设计。我们首先用恒定速度假设初始化当前相机姿态 T i T_i Ti:
在这里插入图片描述
其中相机姿态Ti = {Ri, Ti}可以分解为旋转矩阵和平移向量。然后通过最小化跟踪损失 L t r a c k i n g L_{tracking} Ltracking相对于相对相机姿态Ti−1来优化Ti。我们在跟踪损失中应用alpha掩模 M a l p h a M{alpha} Malpha和inlier掩模 M i n l i e r M{inlier} Minlier,以解决由重建不良或先前未观察到的区域引起的严重误差,如下所示:
在这里插入图片描述
C和D是输入的颜色和深度图。

2.2 local mapping

我们以渐进的方式增长3D高斯子地图,并将每个子地图锚定到全局关键帧。每次向子地图中添加新高斯时,在固定次数的迭代中,对活动子地图中的所有高斯进行联合优化,进行最小化损失,并且只有选定的关键帧包含在优化中。
1.地图构建:我们随着新传入的关键帧逐渐增加子地图,并在相机运动超过阈值时初始化新的子地图,第一个关键帧作为全局关键帧。在任何时候,只处理活动子地图。这种方法限制了计算成本,并确保在探索更大的场景时保持快速优化。

每个新的关键帧添加3D高斯到活动子地图,捕捉新观察到的场景区域。具体来说,在当前关键帧的姿态估计之后,从RGB-D输入计算密集点云。我们使用致密化蒙版来填充未观察区域的孔洞,避免渲染图像中的局部最小值。从累积alpha值低于阈值 α t h r e α_{thre} αthre的区域均匀采样点,否则会出现较大的渲染颜色和深度误差。使用在当前子图的搜索半径内没有邻居的采样点,将新的3D高斯添加到子图中。新高斯是各向异性的,它们的尺度是基于活动子地图内的最近邻距离来定义的。

2.最小化不确定性关键帧选择:对于一个新的输入帧,如果当前帧与最后插入帧的帧重叠比小于某个阈值,则将该帧插入关键帧集,其中 r o r_o ro定义为:
在这里插入图片描述
其中 G i G_i Gi G i − 1 G_{i−1} Gi1分别是当前帧和最后一帧观测到的三维高斯集合。

受到CG-SLAM的影响,我们在每个地图迭代采用一个不确定性高斯选择策略该策略。在高斯不确定性的帮助下,旨在选择观察到更多有价值的3D高斯的关键帧,这些关键帧可能对优化有积极的影响。每个关键帧的信息分数定义为:
在这里插入图片描述
其中|G|为关键帧观测到的三维高斯数。

我们首先选择k个关键帧,这些关键帧覆盖了分数总和最高的高斯。在将覆盖的高斯标记为观察到的之后,我们使用相同的选择策略,但在下一个时间步长计算 s i n f o r s_{infor} sinfor时只考虑剩余的未观察到的高斯。如果所有高斯都被标记为观察到的,则通过将高斯分布重置为未观察到的来重复该过程。

3.损失函数设计:对于深度监督,使用损失:
在这里插入图片描述
深度损失Ldepth用不确定度图U加权,以保证不确定度高的像素加权较小。

对于颜色监督,我们使用L1和SSIM损失的加权组合:
在这里插入图片描述
其中C为原始图像,C为渲染后的图像,λ = 0.2。我们还添加了一个各向同性正则化项 L r e g L_{reg} Lreg:
在这里插入图片描述
其中P是子地图, s p s_p sp是三维高斯的比例尺, ¯ s p ¯s_p ¯sp是平均子地图比例尺,|P|是子地图中三维高斯的数量。建图的最终损失函数最终表示为:
在这里插入图片描述

2.3 Loop Closing

我们使用分层闭环检测来实现子地图内部和子地图之间的全局一致性。全局回环检测校正子地图间的累积误差,而局部回环检测通过精细的全局关键帧姿态和精确的子地图内部几何形状辅助全局校正。

(1)回环检测:对于位置识别,我们使用预训练的NetVLAD模型为每个关键帧提取特征描述符。提取的特征存储在全局和局部关键帧数据库中。描述符之间的余弦相似性作为回环检测的准则。

创建新的子地图时触发全局环路检测。如果视觉相似性得分高于全局阈值,则从全局关键帧数据库中选择最佳匹配,该阈值动态计算为全局关键帧与活动子地图内关键帧之间的最小分数。本地回环检测在本地建图过程中进行,接受相似度评分超过预定义阈值 s l o c a l s_{local} slocal的最相似关键帧。为了避免错误的循环,特别是在室内场景中有重复的物体,如椅子或桌子,我们进一步应用几何检查。我们评估两个循环候选关键帧之间的帧重叠率,如果0超过阈值,则接受它们。

(2)姿态图优化:构建姿态图模型,节点代表关键帧姿态,边缘对应顺序相对姿态。从回环节点之间的相对姿态计算环路边缘约束,然后添加到姿态图中。
我们在整个姿态图上执行姿态图优化,以使估计的轨迹更接近真值。姿态图优化有效地减小了累积误差,提高了跟踪精度。我们使用levenberg - marquaret算法来解决由Eq.(14)描述的非线性位姿图优化问题,其中v为节点集, E s E_s Es为序列边集, E l E_l El为环状边集, Λ i Λ_i Λi表示对应边的不确定性。
在这里插入图片描述
(3)地图调整:为了保持姿态图优化后的地图一致性,我们使用以关键帧为中心的调整策略重新排列3D高斯子地图。每个三维高斯 g i g_i gi与一个关键帧相关联,并根据关联关键帧的优化姿态更新高斯均值来实现子图调整。关联是由哪个关键帧将3D高斯添加到场景中决定的。将平均值 μ i μ_i μi投影到T '中以找到像素对应关系。具体来说,假设相机姿态T = {R, T}的关键帧更新为T ’ = {R ', T '},我们更新与关键帧相关的所有3D高斯函数的平均值和旋转。我们将 µ i µ_i µi r i r_i ri更新为:
在这里插入图片描述
在地图调整之后,我们对更新后的子地图执行一组细化步骤。我们禁用了三维高斯的剪枝和密度化,并使用相同的损失函数Eq13简单地执行一组优化迭代。

2.4总体流程

在这里插入图片描述
本文的系统包括三个过程:跟踪,映射和闭环。跟踪过程通过最小化跟踪损失来估计和改进相机姿态{R, t}。场景被管理为高斯子地图,局部建图过程以最小化不确定性的策略选择关键帧来优化活动子地图。如果检测到回环,闭环关闭进程触发在线回环检测,随后进行有效的地图调整以纠正累积误差并减轻地图漂移。

3.文章贡献

  1. 一种实现大规模环境下三维高斯子图的鲁棒帧到模型跟踪和全局一致建图的高斯溅射SLAM系统。
  2. 高效回环模块,包括全局到局部回环检测、位姿图优化和直接地图更新,减少累积误差和地图漂移。
  3. 最小化不确定性关键帧选择策略,在子图优化过程中选择观察到更稳定的三维高斯分布的信息关键帧,以提高映射精度和鲁棒性。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【后端开发】JavaEE初阶—线程安全问题与加锁原理(超详解)

前言: 🌈上期博客:【后端开发】JavaEE初阶—Theard类及常见方法—线程的操作(超详解)-CSDN博客 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🌈小编会在后端开发的学习中不…

Java反射机制入门:解锁运行时类信息的秘密

反射技术: 其实就是对类进行解剖的技术 类中有什么?构造方法 成员方法成员变量 结论:反射技术就是把一个类进行了解剖,然后获取到 构造方法、成员变量、成员方法 反射技术的应用案例: idea框架技术:Spr…

通过document获取节点元素

1.层级节点 <ul><li id"li1">1</li><li>2</li><li id"li3">3</li><li>4</li><li>5</li></ul><script>//获取id名为li1的元素赋值给li1let li1document.getElementById(li…

爬虫----webpack

目录 一. 什么是webpack 出现的原因&#xff1a;同名函数 概念: 特征&#xff1a;大量缩进 webpack的格式 简单的webpack格式&#xff1a; 详细的webpack格式&#xff1a; 几个参数的运用 1. webpack数组形式 2. webpack对象格式 3.多个js文件打包 打印要扣的代码 …

【chromedriver编译-绕过selenium机器人检测】

有小伙伴说使用selenium没能绕过机器人检测&#xff0c;盘他。 selenium机器人检测有2种&#xff0c;一是cdp检测&#xff0c;二是webdriver特征检测。cdp检测前面的博客已写过&#xff0c;这里就提下webdriver特征检测。一、selenium简介 Selenium 是一个强大的工具&#xff…

单片机带隙电压基准电路

单片机带隙电压基准电路 一、带隙电压基准电路概述 带隙电压基准电路在单片机中占据着至关重要的地位。它能够为各种模拟集成电路提供稳定的参考电压&#xff0c;确保电路的正常运行。例如&#xff0c;在高精度的比较器中&#xff0c;带隙电压基准电路可以提供一个精确的参考…

linux 的 sed 命令的 使用学习

&#xff08;1&#xff09; sed 概述&#xff1a; &#xff08;2&#xff09; 首先谢谢 b 站这位老师&#xff0c;这位专家的完美讲解 讲解继续&#xff1a; &#xff08;3&#xff09; 关于 sed 里的模式&#xff1a; &#xff08;4&#xff09; sed 支持的常用的对文本编辑的…

Matlab|考虑柔性负荷的综合能源系统低碳经济优化调度

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 程序主要实现的是考虑柔性负荷的综合能源系统低碳经济优化调度&#xff0c;模型参考《考虑柔性负荷的综合能源系统低碳经济优化调度》&#xff0c;求解方法采用的是混合整数规划算法&#xff0c;通过matlabc…

【设计模式】UML类图

目录 前言 一、类图概述 二、类图的作用 三、类图表示法 四、类之间关系的表示方法 1. 关联关系 1.1 单向关联 1.2 双向关联 1.3 自关联 2. 聚合关系 3. 组合关系 4. 依赖关系 5. 继承关系 6. 实现关系 总结 前言 统一建模语言&#xff08; Unified Modeling La…

如何快速上手一个Github的开源项目

程序研发领域正是有一些热衷开源的小伙伴&#xff0c;技能迭代才能如此的迅速&#xff0c;因此&#xff0c;快速上手一个GitHub上的开源项目&#xff0c;基本上已经变成很个程序员小伙伴必须掌握的技能&#xff0c;因为终究你会应用到其中的一个或多个项目&#xff0c;帮助自己…

【资源一号04A卫星(中巴地球资源卫星04A星)】

资源一号04A卫星&#xff08;中巴地球资源卫星04A星&#xff09; 资源一号04A卫星&#xff0c;全称为中巴地球资源卫星04A星&#xff08;CBERS-04A&#xff09;&#xff0c;是中国与巴西两国合作研制的第六颗地球资源卫星。以下是对该卫星的详细介绍&#xff1a; 一、基本信…

打造灵活DateTimePicker日期时间选择器组件:轻松实现时间的独立清除功能

element ui中日期和时间选择器&#xff08;DateTimePicker&#xff09;是一个常见且重要的组件。它允许用户轻松地选择日期和时间&#xff0c;极大地提升了用户体验。然而&#xff0c;在某些场景下&#xff0c;用户可能需要更细粒度的控制&#xff0c;例如单独清除已选择的时间…

【资源一号02C卫星】

资源一号02C卫星 资源一号02C卫星是中国航天科技集团公司所属中国空间技术研究院负责研制生产的一颗重要遥感卫星。以下是关于该卫星的详细介绍&#xff1a; 一、基本信息 发射时间&#xff1a;2011年12月22日11时26分发射地点&#xff1a;中国太原卫星发射中心运载火箭&am…

基于区块链的相亲交易系统源码解析

随着区块链技术的成熟与发展&#xff0c;其去中心化、不可篡改的特性逐渐被应用于各行各业。特别是在婚恋市场中&#xff0c;区块链技术的应用为相亲平台带来了新的可能性 。本文将探讨如何利用区块链技术构建一个透明、高效的相亲交易系统&#xff0c;并提供部分源码示例。 区…

提前解锁 Vue 3.5 的新特性

Vue 3.5 是 Vue.js 新发布的版本&#xff0c;虽然没有引入重大变更&#xff0c;但带来了许多实用的增强功能、内部优化和性能改进。 1. 响应式系统优化 Vue 3.5 进一步优化了响应式系统的性能&#xff0c;并且减少内存占用。尤其在处理大型或深度嵌套的响应式数组时&#xff…

Contact Form 7最新5.9.8版错误修复方案

最近有多位用户反应Contact Form 7最新5.9.8版的管理页面有错误如下图所示 具体错误文件的路径为wp-content\plugins\contact-form-7\admin\includes\welcome-panel.php on line 153 找到welcome-panel.php这个文件编辑它&#xff0c;将如下图选中的部分删除 删除以后&#xf…

显示和隐藏图片【JavaScript】

使用 JavaScript 来实现显示和隐藏图片。下面是一个简单的示例&#xff0c;展示如何通过按钮点击来切换图片的可见性。 实现效果: 代码&#xff1a; <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name&…

python爬虫案例——抓取链家租房信息

文章目录 1、任务目标2、分析网页3、编写代码1、任务目标 目标站点:链家租房版块(https://bj.lianjia.com/zufang/) 要求:抓取该链接下前5页所有的租房信息,包括:标题、详情信息、详情链接、价格 如: 2、分析网页 用浏览器打开链接,按F12或右键检查,进入开发者模式;因…

计算机毕业设计 美发管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

OpenAI converting API code from GPT-3 to chatGPT-3.5

题意&#xff1a;将OpenAI API代码从GPT-3转换为ChatGPT-3.5 问题背景&#xff1a; Below is my working code for the GPT-3 API. I am having trouble converting it to work with chatGPT-3.5. 以下是我用于GPT-3 API的工作代码。我在将其转换为适用于ChatGPT-3.5时遇到了…