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

news2024/9/27 19:31:26

前言

多传感器融合GS-SLAM的另一个IROS2024,不过这篇没有用到激光雷达,而是相机和IMU结合而实现的。今天看一下这篇。

1


文章目录

  • 前言
  • 1.背景介绍
  • 2.关键内容
    • 2.1 跟踪
    • 2.2 深度监督
    • 2.3 惯性融合
    • 2.4建图
    • 2.5 总体流程
  • 3.文章贡献
  • 4.个人思考


1.背景介绍

  1. 虽然SLAM方法使用稀疏点云来表示操作环境,可以获得最先进的跟踪精度,但由于稀疏性,生成的地图是不相交的,在视觉上不如较新的3D重建方法。虽然视觉质量与导航的唯一目的无关,但创建逼真的地图对于人类消费,语义分割和后期处理是有价值的。
  2. 3DGS的前置操作是高斯的深度初始化。大多数方法使用来自相对昂贵的传感器(如激光雷达)的深度输入,这些传感器可能不容易在消费者手机等设备上获得
  3. 其他方法使用RGB-D相机通过立体深度估计提供深度信息。然而,仅仅依靠RGB-D相机可能会导致错误的深度,特别是随着距离相机的增加,导致跟踪精度下降。

2.关键内容

2.1 跟踪

跟踪过程包括给定固定的三维高斯地图的相机姿态优化。为了使梯度反向传播到相机姿态,在保持相机固定的情况下,将反相机变换应用于高斯地图。这实现了相同的渲染,而无需在3DGS光栅化器中实现相机姿态梯度。随后,对三维高斯图进行冻结,并根据以下损失函数对相机姿态进行优化:
在这里插入图片描述
由于此渲染过程是可微的,因此可以使用渲染图像与未失真图像之间的L1损失I来优化G:深度损失在下一章介绍。
在这里插入图片描述
其中 l g ( G , T c ) l_{g (G,Tc)} lg(G,Tc)是一个指标函数,定义为:
在这里插入图片描述
由于地图不能保证覆盖当前帧的整个范围,所以不透明度< 0.99的像素被过滤。

为了帮助收敛,可以在优化之前应用动态模型来提供相机位姿的初始假设。在大多数情况下,使用恒定速度模型。然而,在惯性传感器的存在下,跟踪精度可以通过利用惯性测量来提高。需要注意的是,第一帧的跟踪被跳过,因为还没有现有的建图,并且假设一个标识变换矩阵作为初始假设。

2.2 深度监督

当使用三维高斯图进行相机姿态跟踪时,对图像进行精确的几何信息编码是至关重要的。这对于一个未优化的地图来说尤其如此,因为高斯函数的训练时间不够长,无法收敛到正确的位置。深度先验的使用通过为高斯位置提供合理的初始估计来解决这个问题,最大限度地减少不一致的几何形状和训练时间。此外,深度先验可以监督地图训练损失,以防止几何伪影在有限视图上过度拟合。

为了以可微的方式渲染深度,执行第二次光栅化通道,将每个高斯的颜色 c i c_i ci替换为其在图像平面上的投影深度。在RGB-D的情况下,这些深度先验可以直接通过深度传感器或使用立体深度收集。然而,在没有此类传感器的情况下,可以使用单目密集深度估计网络,如DPT。由于稠密深度估计器输出的是相对相反的深度,因此无法直接比较估计的深度和呈现的深度。接下来,使用估计和渲染深度图 D e D_e De D r D_r Dr之间的线性相关(Pearson相关系数)来计算深度损失:

在这里插入图片描述
对于初始化高斯位置,必须首先解决深度估计的尺度模糊问题。这可以通过求解适合当前地图深度估计的缩放σ和平移θ来实现。这可以用线性最小二乘问题的形式来建模:
在这里插入图片描述
其中de和dr是De和Dr的平面向量。一旦估计的深度被适当地拟合到现有的地图上,新的高斯函数就可以被初始化到未知的区域,用几何信息初始化未优化的地图。

2.3 惯性融合

在优化当前帧的相机姿态之前,需要初始姿态估计来帮助优化。良好的初始估计可以缩短优化时间。此外,在收敛误差可能较小的未优化地区,良好的初始估计对于防止跟踪发散至关重要。
在单目环境中,姿态估计可以通过假设连续帧之间的恒定速度来推断。然而,在剧烈的相机运动和低图像帧率的存在下,该模型失效。

通过IMU获得的惯性测量可以集成到帧之间准确传播相机姿态并产生有意义的初始估计。大多数6自由度(6-DOF) imu通过加速度计提供三维空间的线性加速度测量, a = [ x ¨ , y ¨ , z ¨ ] a = [\ddot x,\ddot y,\ddot z] a=[x¨,y¨,z¨],以及角速度, Θ ˙ = [ α ¨ , β ¨ , γ ¨ ] \dot Θ =[\ddot α,\ddot β,\ddot γ] Θ˙=[α¨β¨γ¨]
t 时刻的位置变化,在前一坐标系中表示为 t − 1 ∆ p t t−1_{∆pt} t1pt,可由式(8)计算:
在这里插入图片描述

同样,t时刻的角度位置变化,在前一坐标系中表示为t−1∆pt,可通过式(9)计算,
在这里插入图片描述
利用Eq.(8)和Eq.(9),可以构造两个连续坐标系t - 1 t T I T_I TI之间的相对变换,如Eq.(10)所示:
在这里插入图片描述
其中,相对旋转矩阵t−1 t R由式(9)中的 t − 1 ∆ Θ t t−1_{∆Θt} t1∆Θt构造。使用IMU与摄像机帧的静态变换,则连续摄像机帧之间的相对变换可按式(11)计算:
在这里插入图片描述
为了获得滑动窗口内任意两帧之间的变换,可以将式(11)中的相对变换从当前帧链接到感兴趣的目标帧。

需要注意的是,这种开环方法不估计内部IMU偏差。这是因为t−1 t T c Tc Tc的误差在短时间delta内很小,这些小误差被视觉相机姿态优化所消除。

2.4建图

(1) 高斯初始化:为了覆盖看不见的区域,在不透明度低于0.5且深度误差超过中位数深度误差50倍的像素处添加每个关键帧的新高斯。这些新的高斯分布是按像素添加的,RGB初始化为像素颜色,位置初始化为深度测量/估计,不透明度初始化为0.5,缩放初始化为各向同性,以覆盖初始化深度处单个像素的范围。

(2) 关键帧选择: 在实时设置中,在整个视频帧集上优化3D高斯建图是不切实际的。通常,关键帧的选择应尽量减少处理的冗余帧数,并使信息增益最大化。当地图没有足够的信息来跟踪当前帧时,MM3DGS通过选择一个输入帧作为关键帧来实现这一点。这是使用共可见度度量来计算的,它定义了在多个关键帧中哪些高斯是可见的。

为此,首先,使用当前帧的估计姿态创建深度渲染。这种深度渲染可以反向投影到点云中。这个点云可以投影到任意关键帧估计位姿的图像平面上。然后可以将共可见度定义为关键帧中可见点的百分比。如果此共可见度低于95%,则将当前帧添加为关键帧。

在存在视觉噪声的情况下,例如当输入帧描绘运动模糊时,低图像质量的关键帧可能会持续存在并降低重建和跟踪质量。(这确实是一个很需要解决的问题!!)为了防止异常噪声图像被选择,使用自然图像质量评估器(NIQE)度量在滑动窗口中选择最高质量的帧。

(3) 建图损失: 在建图阶段,高斯在与当前帧共可见的关键帧集上进行优化。通过这种方式,优化影响所有可用的相关测量,同时最大限度地减少冗余帧的处理并减少计算负载。建图过程优化了当前共可见关键帧集内可见的高斯特征。对于当前帧和每个选定的关键帧,根据以下损失函数进行优化:
在这里插入图片描述

2.5 总体流程

我们接收来自移动机器人的相机图像和惯性测量值。利用深度测量和IMU预积分进行姿态优化,使用组合跟踪损失。我们在滑动窗口中应用了基于图像共可见度和NIQE度量的关键帧选择方法,并为低不透明度和高深度误差的关键帧初始化新的3D高斯。最后,根据所选关键帧的建图损失对三维高斯参数进行优化。
2

3.文章贡献

  1. 本文将惯性测量和深度估计从没有位姿的单目RGB或RGB- D相机集成到实时MM3DGS SLAM框架中,使用3D高斯图像进行场景表示。
  2. 本文的框架实现了尺度感知以及横向、纵向和垂直轨迹对齐。并且可以利用大多数消费者智能手机上的廉价传感器的输入。
  3. 我们发布了一个使用移动机器人收集的多模态数据集,该数据集由多个室内场景组成,包括RGB和RGB- D图像、激光雷达深度、6自由度惯性测量单元(IMU)测量以及用于误差分析的地面真实轨迹。

4.个人思考

  1. 本文的深度估计应该是采用了一个网络,将估计深度和渲染深度进行一个相关性计算获得深度损失。
  2. 对于IMU的融合,作者采用的应该是一个松耦合方式,只在初始化或者剧烈运动导致相机位姿估计比较困难的时候,采用IMU进行估计,这个策略还是比较简单的。不过作者在最后提及未来的工作可能会扩展到包括紧密耦合的IMU融合和回环检测,以进一步提高跟踪性能。

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

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

相关文章

基于keras 的神经网络股价预测模型

这些年从网上的各位大牛那学到很多&#xff0c;本着开源开放的精神&#xff0c;今天我决定开源我量化交易代码。输入股票代码&#xff0c;和训练的数据时间&#xff0c;自动预测股票未来的走势。。。。。。。。。。。。。。。。。。 #!/usr/bin/env python3 # -*- coding: utf…

物联网系统中隔离式交流转直流AC/DC电源模块方案

01 物联网系统中为什么要使用隔离式AC/DC电源模块 物联网系统中使用隔离式AC/DC电源模块的原因主要基于其在电力转换、系统安全、电磁兼容性以及设备保护等方面的优势。以下是详细分析&#xff1a; 电力转换的高效性 高效转换&#xff1a;隔离式AC/DC电源模块能够将交流电&am…

【中级通信工程师】终端与业务(八):市场营销战略

【零基础3天通关中级通信工程师】 终端与业务(八)&#xff1a;市场营销战略 本文是中级通信工程师考试《终端与业务》科目第八章《市场营销战略》的复习资料和真题汇总。本章的核心内容涵盖了市场营销战略、企业战略的层次与特点、服务的特征、体验式营销的类型等内容。通过本…

专业网站建设必备

专业网站建设不仅仅是简单的页面搭建&#xff0c;更是一项综合性的工程&#xff0c;需要结合行业特性、用户体验和技术创新&#xff0c;打造一个符合企业需求、独具特色的线上空间。 第一印象至关重要 一个企业网站就如同公司的数字名片&#xff0c;第一印象往往决定了用户是否…

C#的属性(Property)应用说明(二)

Property的应用说明补充&#xff1a; 一.自定义逻辑&#xff1a; 可以在 get 和 set 访问器中包含自定义的逻辑。 public class Person {private string name;public string Name{get { return name; }set{if (string.IsNullOrWhiteSpace(value))throw new ArgumentException…

Kubernetes从零到精通(15-安全)

目录 一、Kubernetes API访问控制 1.传输安全(Transport Security) 2.认证(Authentication) 2.1 认证方式 2.2 ServiceAccount和普通用户的区别 2.3 ServiceAccount管理方式 自动ServiceAccount示例 手动ServiceAccount示例 3.鉴权 (Authorization) 3.1鉴权方式 3.2 …

一次阿里云ECS免费试用实践

必坑指南 域名注册了&#xff0c;但是试用版无法完成ICP认证的流程 外网不能访问&#xff0c;推荐使用香港地区–自己就是坑在了杭州 阿里云的网站界面有点太复杂了&#xff0c;经常找不到自己想要的界面 为什么使用ECS ECS 一个在云端的弹性计算服务器。 可以支持对外公网映…

C++进阶:set和map

✨✨所属专栏&#xff1a;C✨✨ ✨✨作者主页&#xff1a;嶔某✨✨ 序列式容器和关联式容器 前⾯我们已经接触过STL中的部分容器如&#xff1a;string、vector、list、deque、array、forward_list等&#xff0c;这些容器统称为序列式容器&#xff0c;因为逻辑结构为线性序列的…

五子棋双人对战项目(1)——WebSocket介绍

目录 一、项目介绍 如何实现实时同步对局&#xff1f; 二、WebSocket 1、什么是WebSocket&#xff1f; 2、WebSocket的报文格式 opcode payload len payload data 3、WebSocket握手过程 4、WebSocket代码的简单编写 三、WebSocket 和 HTTP的关系 1、相同点&#xf…

如何把pdf拆分成一页一页?推荐4个简单方便的拆分方法(内含详细教程)

如何把pdf拆分成一页一页&#xff1f;对于现在的职场来说&#xff0c;想要编辑pdf格式文件还是蛮简单的。PDF文档早就成为了我们日常办公中信息传递与存储的核心载体&#xff0c;因此对于编辑pdf的需求是越来越多了。 关于如何编辑pdf文件&#xff0c;市面上提供了很多方法和软…

七大机器学习常用库一次讲清楚(TensorFlow|Scikit-Learn|NumPy|Keras|PyTorch|LightGBM||NLTK)

机器学习的研究和学习必须使用Python开发库&#xff0c;面对很多个机器学习的Python库或者框架&#xff0c;我们是不是傻傻的分不清&#xff0c;这个那个到底是做什么&#xff0c;什么时候用这个&#xff0c;什么时候用那个&#xff0c;他们各自的优势劣势都有哪些&#xff0c;…

smb文件夹共享设置

UOS统信三种不同场景的文件夹共享,分别是:1、UOS系统间的文件共享;2、Windows7系统访问UOS共享的文件;3、UOS系统访问Windows7共享的文件 文章目录 第二种场景:Windows7系统访问UOS共享的文件步骤一:设置共享密码步骤二:输入共享IP地址步骤三:输入网络密码步骤四:共享…

RabbitMQ高级特性-发送方确认

对于发送方发送消息到RabbitMQ的可靠性机制 引入&#xff1a;在持久化的消息正确存⼊RabbitMQ之后,还需要有⼀段时间(虽然很短,但是不可忽视)才能存⼊磁盘中.RabbitMQ并不会为每条消息都进⾏同步存盘(调⽤内核的fsync⽅法)的处理, 可能仅仅保存到操作系统缓存之中⽽不是物理磁…

Vue3 + element-plus el-table二次封装组件新增虚拟滚动功能

1、此功能已集成到TTable组件 和TSelectTable 2、最终效果&#xff08;基于element-plus 的 el-table组件&#xff09; 3、TTable或TSelectTable组件使用&#xff08;只需要在标签中设置useVirtual即可&#xff09; 4、源码&#xff08;可以提取当做hooks方式来使用–具体看组…

工作笔记【四】

对于这种&#xff0c;样式一样&#xff0c;但是图片和字体颜色不一样&#xff0c;动态渲染。 代码&#xff1a; <template><view class"page"><view class"rows" v-for"item in data"><view class"v0"><v…

云桌面+数字人:开启直播新纪元

随着科技的飞速发展&#xff0c;直播行业也在不断变革。云桌面和数字人直播作为新兴力量&#xff0c;正逐渐崭露头角&#xff0c;受到了广泛关注。 云桌面技术的出现&#xff0c;为直播带来了全新的可能性。它不再依赖传统的本地硬件设备&#xff0c;而是通过云计算提供弹性可…

Abaqus:一款强大的非线性分析软件

Abaqus是一款由达索系统公司开发的工程仿真软件&#xff0c;它提供了广泛的解决方案来解决各种复杂的工程问题。从2016版本到2018版本&#xff0c;Abaqus安装包中包含了多种辅助工具&#xff0c;如Fe-safe疲劳分析软件、Tosca结构优化软件以及Isight多学科优化平台等&#xff0…

长效静态IP代理详解:稳定网络访问的保障

在这个信息爆炸的时代&#xff0c;网络安全和隐私保护变得尤为重要。无论是个人用户还是企业&#xff0c;都希望在网络上能够畅行无阻而不被追踪。而长效静态IP代理&#xff0c;正是这个隐形守护者&#xff0c;让你在网络世界中如鱼得水。本文将深入探讨长效静态IP代理的各个方…

python爬虫:将知乎专栏文章转为pdf

欢迎关注本人的知乎主页~ 实现思路 用户输入专栏ID&#xff1a; 代码首先提示用户输入一个知乎专栏的ID&#xff0c;默认值为 c_1747690982282477569。输入的ID用于构建API请求的URL。 发送HTTP请求&#xff1a; 使用 requests.get() 向知乎API发送GET请求&#xff0c;获取指定…

C:数据在内存中的存储

目录 一、整数在内存中的存储 二、大小端字节序 2.1 大小端字节序的介绍 2.2 为什么有大小端之分&#xff08;了解即可&#xff09; 2.3 判断大小端的代码实现 三、浮点数的数据存储 3.1 浮点数的存储 3.2 浮点数存储的过程 3.2.1 对于有效数字M 3.2.1 对于指数E 3.3…