GS-SLAM论文阅读笔记-MGSO

前言

MGSO首字母缩略词是直接稀疏里程计(DSO),我们建立的光度SLAM系统和高斯飞溅(GS)的混合。这应该是第一个前端用DSO的高斯SLAM,不知道这个系统的组合能不能打得过ORB-SLAM3,以及对DSO会做出怎么样的改进以适应高斯地图,接下来就看一下吧!
在这里插入图片描述

G i s h e l l o G^s_ihello Gishello
我是红色


文章目录

  • 前言
  • 1.背景介绍
  • 2.关键内容
    • 2.1SLAM module
    • 2.2 Dense Reconstruction
  • 3.文章贡献
  • 4.个人思考


1.背景介绍

  1. 然而,现有的基于3dgs的SLAM系统难以平衡硬件简洁性、速度和地图质量。大多数系统在上述的一个或两个方面表现出色,但很少能做到全部。一个关键问题是在同时进行SLAM时初始化高斯的困难。
  2. 传统上,SLAM系统提供语义差的地图表示,对定位和基本导航有效,但缺乏复杂任务所需的细节。解耦的稠密地图SLAM一个关键挑战是SLAM和密集重建组件之间缺乏协同作用。SLAM算法往往不能为高质量的密集重建提供最优数据,从而影响系统的整体性能。
  3. 3DGS通常需要一个初始点云来开始重建,更密集、结构良好的初始点云可以改善和更快地得到结果。然而,传统的基于特征的SLAM方法产生的稀疏点云对于3DGS初始化不是最优的。虽然RGB-D数据可以提供密集和精确的点云,但使用单目相机适用范围更广。
  4. 紧耦合方法在继续跟踪之前引入了对建图细化的依赖,从而导致性能降低。此外,目前大多数3DGS系统严重依赖深度数据来执行3D重建,这使得它们依赖于RGB-D传感器。虽然MGSO与Photo-slam最相似,,但我们解决了photoslam倾向于创建大型,内存效率低下的地图的问题。
    在这里插入图片描述

2.关键内容

MGSO集成了两个并发操作的核心组件:负责精确姿态估计的SLAM模块和用于绘图的3D稠密重建模块。

2.1SLAM module

我们系统的跟踪主干是建立在直接稀疏里程计(Direct Sparse Odometry, DSO)的一系列视觉SLAM方法之上的。<>DSO的关键创新在于,与使用图像中的所有像素相比,用于光度跟踪的选择性像素采样提高了定位精度。我们之所以选择基于DSO,是因为我们发现它的像素选择策略也与初始化3DGS非常一致。DSO在连续帧 i 和 j 上跟踪一组像素,通过最小化跟踪的每个像素的光度损失方程来优化相机姿势p。
在这里插入图片描述
其中I查询像素强度,a和b是考虑光照变化的变量,s是相机曝光。该损失方程的基本原理是识别最匹配连续帧i和j之间像素强度变化的姿态变化。该方程适用于跟踪和建图级别。

在每一帧,我们的系统的跟踪过程计算相对于最新关键帧的姿态变化,假设一个固定的地图。只有在插入关键帧时才调整跟踪像素的建图。一个新的关键帧是一个参考帧,它捕获了相对于现有关键帧的场景的独特视图。当建图完成后,所有当前关键帧姿态和由跟踪像素点组成的地图都会被调整。然后,我们的系统将跟踪像素的地图转换为点云地图,并将其与关键帧姿势一起添加到稠密重建模块中。

我们采用DSO的窗口关键帧管理策略,当检测到视场、旋转或光照发生重大变化时,生成关键帧。如果关键帧的数量超过窗口大小(默认为8个),旧的关键帧将被删除,使用基于距离的评分来确保关键帧在3D空间中分布良好。

我们方法的灵感来自于对原始3DGS的最终3DGS高斯位置的分析(图3)。我们意识到最终地图的最终位置、颜色和高斯分布与DSO输出的点云相似。根据这一观察,我们推测用光度SLAM初始化3DGS会增强3DGS优化,因为它会减少所需的优化。

在这里插入图片描述

DSO结构良好的密集点云的一个主要方面是它的像素选择策略。DSO通过将图像分成块并在每个块中选择梯度阈值以上的最高梯度像素来进行像素选择。然后用更低的阈值和更大的块重复这个过程。该方法不仅可以在复杂区域跟踪更多的像素,而且可以保证在简单区域的像素选择。它与传统方法不同,传统方法通常只跟踪容易识别的特征,如角落和边缘。在图4中可以观察到这两种方法之间的差异。这很重要,因为我们观察到,虽然完成的3DGS地图在复杂区域有更多的高斯分布,但它们在非复杂区域仍然保持一些高斯分布。
在这里插入图片描述
此外,DSO跟踪具有高梯度的像素,这比可跟踪的特征点更常见。因此,DSO的输出点云更接近于完成3DGS地图的密度。我们的实验表明,虽然edso的像素选择密度是跟踪的最佳选择,但增加像素选择密度可以增强3DGS的性能,特别是在低梯度区域,这对跟踪具有挑战性。为了解决这个问题,我们修改了DSO,增加了不用于姿态估计的额外跟踪像素,以增加输出点云密度(图5)。这种修改允许系统具有跟踪和3DGS的最佳像素密度。尽管有这些增强功能,但具有最小或没有梯度的平坦区域仍然稀疏地填充有跟踪像素。这是因为DSO的像素跟踪系统至少需要一些梯度进行跟踪,因此,没有梯度的区域中的像素永远不会被跟踪。
在这里插入图片描述
我们观察到,在平面区域中初始化点稍微错位的情况下,3DGS的性能要优于没有初始化点的情况。因此,我们实现了一种插值方法,该方法基于附近的跟踪像素估计低梯度区域中的点位置。我们的方法采用Delaunay三角剖分算法,以跟踪像素为顶点将图像划分为一系列三角形。每个插值点的深度计算为三角形顶点的平均深度,这通常为平面上的像素提供准确的结果。虽然像Photo-SLAM这样的基于特征的系统也可以插值非活动的2D特征点,但我们的方法优于他们的方法,因为初始点计数更高,并且通过将插值集中在最准确的平坦区域。

2.2 Dense Reconstruction

MGSO采用3DGS作为密集重建方法。

在原始3DGS之后,我们使用一组各向异性高斯g来创建场景,每个高斯g都使用不透明度、旋转、位置、比例和颜色进行建模。我们遵循Mono-GS的技术,使用RGB而不是球面谐波来表示颜色,因为Mono-GS显示这种速度的提高对重建质量的影响最小。我们使用3DGS中引入的原始可微分瓷砖光栅化来渲染地图的RGB图像。利用梯度下降法优化每个高斯函数的参数,使光度损失L最小:
在这里插入图片描述
为了提高系统的速度,我们采用Photo-SLAM中引入的基于高斯金字塔的学习来逐步训练高斯映射。金字塔有助于加速现场视频场景的训练。通过对相机捕获的真地图像进行多次平滑和下采样,建立了一个多尺度高斯金字塔。光度损失计算从初始迭代中使用最高金字塔水平到随着训练的进展使用更低的金字塔水平。此外,我们使用了一个优化版本的3DGS CUDA后端,比原来的更快。

我们的自适应控制策略每1000次训练迭代就会周期性地对高斯分布进行密度化和剪枝处理,以提高地图质量。我们围绕SLAM模块返回的点云设计策略,类似于Photo-SLAM为ORBSLAM3量身定制策略。我们的SLAM系统生成的点云具有密度大、覆盖均匀的特点。

它们适应场景的复杂性,集中在复杂的区域,同时保持简单区域的代表性。当一个新的关键帧被处理时,我们用SLAM系统创建的点云中获取的位置和颜色初始化新的高斯函数。

然而,我们注意到在使用3DGS的致密化和修剪策略时出现了漂浮物。为了减轻飞蚊的存在,我们在AbsGS中采用了自适应控制策略。因此,作为自适应控制策略的一部分,我们通过分裂或克隆具有高同向视图空间位置梯度的高斯函数来周期性地致密化它们。大的、高方差的高斯分布被分割,而小的高斯分布在重建不足的区域被克隆。此外,我们定期修剪低不透明度的高斯分布,以去除透明的漂浮物。我们使用与原始3DGS相同的分裂和克隆参数。

3.文章贡献

  1. 一个实时密集SLAM系统,利用了光度SLAM和3DGS之间的协同作用。
  2. 我们的系统只需要一个单目摄像机。
  3. 实验表明,我们的系统具有其他稠密SLAM系统无法比拟的速度、地图质量和内存效率。

4.个人思考

  1. 对于文章说的,DSO生成的初始化点云比ORB-SLAM更好,我比较赞同。因为DSO是通过光度跟踪像素,会生成更结构化的点云。ORB-SLAM在弱纹理的情况下提取特征很少。
  2. 总的来说,作者使用了解耦的方法保证了SLAM的速度,又使用DSO获得一个更好的初始化点云,保证了建图的质量,最终得到了一个较好的结果。

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

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

相关文章

随笔(四)——代码优化

文章目录 前言1.原本代码2.新增逻辑3.优化逻辑 前言 原逻辑&#xff1a;后端data数据中返回数组&#xff0c;数组中有两个对象&#xff0c;一个是属性指标&#xff0c;一个是应用指标&#xff0c;根据这两个指标展示不同的多选框 1.原本代码 getIndicatorRange(indexReportLi…

cherry-markdown开源markdown组件详细使用教程

文章目录 前言开发定位目标调研技术方案前提工作量安排数据库表设计实现步骤1、引入依赖2、实现cherry-markdown的vue组件&#xff08;修改上传接口路径&#xff09;3、支持draw.io组件4、支持展示悬浮目录toc前端使用&#xff1a;编辑状态使用cherry-markdown的vue组件前端使用…

【AUTOSAR 基础软件】COM模块详解(通信)

文章包含了AUTOSAR基础软件&#xff08;BSW&#xff09;中COM模块相关的内容详解。本文从AUTOSAR规范解析&#xff0c;ISOLAR-AB配置以及模块相关代码分析三个维度来帮读者清晰的认识和了解COM这一基础软件模块。文中涉及的ISOLAR-AB配置以及模块相关代码都是依托于ETAS提供的工…

Pikachu-Unsafe Fileupload-服务端check

MIME MIME是Multipurpose Internet Mail Extensions &#xff08;多用途互联网邮件扩展类型&#xff09;的缩写&#xff0c;用来表示文件、文档、或字节流的性质和格式。是设定某种扩展名的文件用一种应用程序来打开的方式类型&#xff0c;当该扩展名文件被访问的时候&#xff…

CNN模型对CIFAR-10中的图像进行分类

代码功能 这段代码展示了如何使用 Keras 和 TensorFlow 构建一个卷积神经网络&#xff08;CNN&#xff09;模型&#xff0c;用于对 CIFAR-10 数据集中的图像进行分类。主要功能包括&#xff1a; 加载数据&#xff1a;从 CIFAR-10 数据集加载训练和测试图像。 数据预处理&#…

不只是前端,后端、产品和测试也需要了解的浏览器知识(二)

目录标题 一、业务系统呈现给用户的节点1. 输入 URL 并解析1.1 用户输入 URL 并按下回车键1.2 浏览器解析 URL1.3 DNS 解析 2. 建立连接、发送请求并接收响应2.1 建立 TCP 连接2.2 发送 HTTP 请求2.3 服务器处理请求2.4 发送 HTTP 响应2.5 浏览器接收响应 3. 解析和加载资源、渲…

【Android】设备操作

本文介绍App开发常用的一些设备操作&#xff0c;主要包括如何使用摄像头进行拍照、如何使用麦克风进行录音并结合摄像头进行录像、如何播放录制好的音频和视频、如何使用常见传感器实现业务功能、如何使用定位功能获取位置信息、如何利用短距离通信技术实现物联网等。 摄像头 …

【韩顺平Java笔记】第7章:面向对象编程(基础部分)【214-226】

文章目录 214. 递归解决什么问题215. 递归执行机制1216. 递归执行机制2217 递归执行机制3217.1 阶乘218. 递归执行机制4219. 斐波那契数列220. 猴子吃桃221. 222. 223. 224. 老鼠出迷宫1,2,3,4224.1 什么是回溯 225. 汉诺塔226. 八皇后 214. 递归解决什么问题 简单的说: 递归就…

[Meachines] [Easy] Sea WonderCMS-XSS-RCE+System Monitor 命令注入

信息收集 IP AddressOpening Ports10.10.11.28TCP:22&#xff0c;80 $ nmap -p- 10.10.11.28 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.11 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 3072 e3:54:…

Python3使用cv_bridge转换ROS的image信息

0. Preface 现在很多新的图片处理model都是基于python3的&#xff0c;而ROS还是2.7的&#xff0c;要结合起来用不可避免有很多问题&#xff0c;以下以接收ROS image为例子 以下方法需要用的anaconda&#xff0c;安装方法有很多blog分享 1. Preparation 以下是python3接收ima…

解锁 SDKMAN!:最新教程与全面简介

SDKMAN! 是一个用于管理开发工具的软件开发工具包管理器,特别适用于 JVM 生态系统。 官网地址:https://sdkman.io/ 多版本管理:允许用户在同一台机器上安装和管理多个版本的 SDK(如 Java、Groovy、Scala、Kotlin 等)。 简单安装:通过简单的命令行命令可以安装、更新和卸载…

15分钟学 Python 第36天 :Python 爬虫入门(二)

Python 爬虫入门&#xff1a;环境准备 在进行Python爬虫的学习和实践之前&#xff0c;首先需要准备好合适的开发环境。本节将详细介绍Python环境的安装、必要库的配置、以及常用工具的使用&#xff0c;为后续的爬虫编写奠定坚实的基础。 1. 环境准备概述 1.1 为什么环境准备…

OpenAI为ChatGPT推出Canvas功能,对标Claude Artifacts!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;专注于分享AI全维度知识&#xff0c;包括但不限于AI科普&#xff0c;AI工…

Pikachu-File Inclusion-远程文件包含

远程文件包含漏洞 是指能够包含远程服务器上的文件并执行。由于远程服务器的文件是我们可控的&#xff0c;因此漏洞一旦存在&#xff0c;危害性会很大。但远程文件包含漏洞的利用条件较为苛刻&#xff1b;因此&#xff0c;在web应用系统的功能设计上尽量不要让前端用户直接传变…

多模态—文字生成图片

DALL-E是一个用于文字生成图片的模型&#xff0c;这也是一个很好思路的模型。该模型的训练分为两个阶段&#xff1a; 第一阶段&#xff1a;图片经过编码器编码为图片向量&#xff0c;当然我们应该注意这个过程存在无损压缩&#xff08;图片假设200*200&#xff0c;如果用one-h…

Vue2基础指令

Vue2基础指令 Vue使用核心步骤&#xff08;4步&#xff09;&#xff1a; 准备容器引包&#xff08;官网&#xff09; — 开发版本/生产版本创建Vue实例 new Vue()指定配置项&#xff0c;渲染数据 el:指定挂载点data提供数据 <body><div id"app"><…

国外透明代理IP解析:匿名性的全貌

网络世界中&#xff0c;透明代理IP是一个广受关注的话题。究竟什么国外透明代理IP&#xff1f;以及它的匿名性如何&#xff1f;本文将深入解析透明代理IP的定义及其匿名性&#xff0c;为您呈现一个清晰的认识。 1. 概念 透明代理IP是指在进行网络请求时&#xff0c;客户端&am…

黑马JavaWeb开发跟学(九)MyBatis基础操作

黑马JavaWeb开发跟学九.MyBatis基础操作 1. Mybatis基础操作1.1 需求1.2 准备1.3 删除1.3.1 功能实现1.3.2 日志输入1.3.3 预编译SQL1.3.3.1 介绍1.3.3.2 SQL注入1.3.3.3 参数占位符 1.4 新增1.4.1 基本新增1.4.2 主键返回 1.5 更新1.6 查询1.6.1 根据ID查询1.6.2 数据封装1.6.…

【MySQL 08】复合查询

目录 1.准备工作 2.多表查询 笛卡尔积 多表查询案例 3. 自连接 4.子查询 1.单行子查询 2.多行子查询 3.多列子查询 4.在from子句中使用子查询 5.合并查询 1.union 2.union all 1.准备工作 如下三个表&#xff0c;将作为示例&#xff0c;理解复合查询 EMP员工表…

MongoDB-aggregate流式计算:带条件的关联查询使用案例分析

在数据库的查询中&#xff0c;是一定会遇到表关联查询的。当两张大表关联时&#xff0c;时常会遇到性能和资源问题。这篇文章就是用一个例子来分享MongoDB带条件的关联查询发挥的作用。 假设工作环境中有两张MongoDB集合&#xff1a;SC_DATA&#xff08;学生基本信息集合&…