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

news2024/9/24 7:07:15

前言

最近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.coloradmin.cn/o/2159752.html

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

相关文章

三菱FX5U CPU模块的初始化“(格式化PLC)”

1、连接FX5U PLC 1、使用以太网电缆连接计算机与CPU模块。 2、从工程工具的菜单选择[在线]中[当前连接目标]。 3、在“简易连接目标设置 Connection”画面中,在与CPU模块的直接连接方法中选择[以太网]。点击[通信测试]按钮,确认能否与CPU模块连接。 FX5…

小柴冲刺软考中级嵌入式系统设计师系列二、嵌入式系统硬件基础知识(1)数字电路基础

目录 一、信号特征 二、组合逻辑电路和时序逻辑电路 1、组合逻辑电路 2、时序逻辑线路 三、信号转换 1、数字集成电路的分类 2、常用电平接口技术 四、可编程逻辑器件 flechazohttps://www.zhihu.com/people/jiu_sheng 小柴冲刺嵌入式系统设计师系列总目录https://blo…

[vulnhub] Prime 1

https://www.vulnhub.com/entry/prime-1,358/ 主机发现端口扫描 探测存活主机,137是靶机 nmap -sP 192.168.75.0/24 // Starting Nmap 7.93 ( https://nmap.org ) at 2024-09-22 16:25 CST Nmap scan report for 192.168.75.1 Host is up (…

Rust - 字符串:str 与 String

在其他语言中,字符串通常都会比较简单,例如 “hello, world” 就是字符串章节的几乎全部内容了。 但是Rust中的字符串与其他语言有所不同,若带着其他语言的习惯来学习Rust字符串,将会波折不断。 所以最好先忘记脑中已有的关于字…

MMD模型一键完美导入UE5-VRM4U插件方案(一)

1、下载pmx模型 1、去模之屋官网下载MMD模型,模之屋 2、下载完成得到pmx和Texture文件 2、下载并启用VRM4U插件 1、下载VRM4U插件, VRM4U,点击Latest下载对应引擎版本 2、将插件放到Plugins目录,然后

GB28181语音对讲协议详解

GB28181-2016语音对讲流程如下图1所示: 图1.语音对讲流程。 其中, 信令 1 、2 、 3 、 4 为语音广播通知、 语音广播应答消息流程; 信令 5 、 1 2 、 1 3 、 1 4 、 1 5 、 1 6 为 S I P 服务器接收到客户端的呼叫请求通过 B 2 B UA 代理方式建立语音流接收者与媒…

DevExpress WPF中文教程:如何解决行焦点、选择的常见问题?

DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

【HarmonyOS】应用权限原理和封装

背景 在项目中,避免不了需要调用系统资源和系统能力,比如:日历读写、摄像头等。因此,需要了解对系统资源访问权限的申请方式方法。 授权方式 包括两种授权方式,分别是system_grant(系统授权) 和 user_grant(用户授权)…

ruoyi源码解析学习 - 微服务版 - ruoyi-gateway

com.ruoyi.gateway 今天简单看看若依的gateway的配置模块干了啥 最近面试很多外包公司,都对低代码平台有点要求,这些代码虽说用起来不费劲,但是其中还是有很多细节能让我学习学习的。(微服务版,上次搞jeecgboot的笔试…

R包安装教程,如何安装rjags和infercnv

一.介绍 在数据分析过程中,R语言因其强大的统计分析能力和丰富的包生态系统,成为众多研究人员和数据科学家的首选工具。本文将详细介绍如何在R环境中安装两个重要的R包——rjags和infercnv。rjags用于与JAGS(Just Another Gibbs Sampler&…

热斑黄斑光伏发电板 红外黄斑检测图像数据集内含最高温度信息 1200张,jpg格式。

热斑黄斑光伏发电板 红外黄斑检测图像数据集 内含最高温度信息 1200张,jpg格式。 热斑黄斑光伏发电板红外黄斑检测图像数据集介绍 数据集名称 热斑黄斑光伏发电板红外黄斑检测图像数据集(Hot Spot and Yellow Spot Detection in Photovoltaic Panels I…

Linux下进程通信与FIFO操作详解

Linux下进程通信与FIFO操作详解 一、命名管道(FIFO)概述1.1 命名管道的特点1.2 创建命名管道二、命名管道的操作2.1 打开命名管道2.2 读写命名管道2.3 关闭命名管道三、命名管道的使用实例3.1 命名管道的创建和通信过程3.1.1 发送方(writer)3.1.2 接收方(reader)3.2 运行…

java项目之健身房管理系统源码(springboot)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的健身房管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 健身房管理系统的主要使用…

Java框架学习(Spring)(tx)(03)

简介:以本片记录在尚硅谷学习ssm-spring-tx时遇到的小知识 详情移步:想参考的朋友建议全部打开相互配合学习! 视频: 057-spring-tx-编程式和声明式事务理解_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1AP411s7D7?p5…

第九节 Opencv自带颜色表操作

知识点:Look Up lTable(LUT)查找表 了解LUT查找表的作用与用法,代码实现与API介绍 -applyColorMap(src,dst,COLORMAP) -src表示输入图像 -dst表示输出图像 匹配到的颜色LUT,Opencv支持13种…

Android OpenGLES2.0开发(一):艰难的开始

生而为人,本质上,都是孤独的! 引言 我一直觉得OpenGL ES是一块硬骨头,每次用到GLSurfaceView作为Camera的预览视图时,总是去网上找现成的代码。CtrlC和CtrlV之后总有一种沾沾自喜的感觉,但是你要让我改里面…

JavaScript --- 字符串常用方法(1)

chartAt(索引)&#xff0c;返回索引对应字符 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" …

Java | Leetcode Java题解之第433题最小基因变化

题目&#xff1a; 题解&#xff1a; class Solution {public int minMutation(String start, String end, String[] bank) {int m start.length();int n bank.length;List<Integer>[] adj new List[n];for (int i 0; i < n; i) {adj[i] new ArrayList<Intege…

chsharp文件如何查找在unity中使用的 位置?

在 Unity 中&#xff0c;C 脚本文件&#xff08;.cs 文件&#xff09;被用于控制游戏对象的行为。要查找某个 C 文件在 Unity 项目中被使用的位置&#xff0c;你可以通过以下几种方法&#xff1a; 1. 查找依赖项&#xff08;References&#xff09; Unity 提供了一个工具&#…

物联网助力智慧交通:优势与前景

智慧交通是当今城市发展的必然趋势&#xff0c;而物联网技术在交通运输领域的应用正是为实现智慧交通建设提供了前所未有的机遇和优势。物联网作为连接和控制物理世界的重要技术手段&#xff0c;在交通领域的应用极大地改善了交通系统的效率、安全性和环保性。 首先&#xff0c…