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

前言

多传感器融合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.xdnf.cn/news/1547539.html

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

相关文章

class 023 随机快速排序

这篇文章是看了“左程云”老师在b站上的讲解之后写的, 自己感觉已经能理解了, 所以就将整个过程写下来了。 这个是“左程云”老师个人空间的b站的链接, 数据结构与算法讲的很好很好, 希望大家可以多多支持左程云老师, 真心推荐. https://space.bilibili.com/8888480?spm_id_f…

MySql简介及发展

MySql简介及发展 1、MySql起源和分支 MySQL 是最流行的关系型数据库软件之一&#xff0c;由于其体积小、速度快、开源免费、简单易用、维护成本 低等&#xff0c;在集群架构中易于扩展、高可用&#xff0c;因此深受开发者和企业的欢迎。 Oracle和MySQL是世界市场占比最高的两…

从入门到入土:计算机视觉CV学习路线图

在当今这个被数据和图像淹没的世界&#xff0c;计算机视觉&#xff08;CV&#xff09;正如一位聪明绝顶的魔术师&#xff0c;能够从无数的图像中提取出有意义的信息。对于那些初入这个领域的新人&#xff0c;学习计算机视觉既是一场冒险&#xff0c;也是一场盛宴。让我作为一位…

C语言进阶之泛型列表(Generic List)

1.前言 数据结构是需要泛型的,而在C语言中实现泛型就只能去用指针魔法了,来跟我一起实现吧!所有代码经测试未发现明显bug,可放心食用. 2.代码截图展示 1.list.h 2.main.c 3.list.c 3.结语 这次分享的列表采用动态数组的方式实现,下次我会去用链表实现,两种实现方式各有优劣,希…

20 vue3之自定义hooks

Vue3 自定义Hook的作用 主要用来处理复用代码逻辑的一些封装 Vue3 的 hook函数 相当于 vue2 的 mixin, 不同在与 hooks 是函数Vue3 的 hook函数 可以帮助我们提高代码的复用性, 让我们能在不同的组件中都利用 hooks 函数 这个在vue2 就已经有一个东西是Mixins mixins就是将…

代码随想录算法训练营第57天 | 寻宝

寻宝 题目描述 在世界的某个区域&#xff0c;有一些分散的神秘岛屿&#xff0c;每个岛屿上都有一种珍稀的资源或者宝藏。国王打算在这些岛屿上建公路&#xff0c;方便运输。 不同岛屿之间&#xff0c;路途距离不同&#xff0c;国王希望你可以规划建公路的方案&#xff0c;如何…

PostgreSQL 创建表,常规表、外部表、分区表区别讲解

PostgreSQL 创建表&#xff0c;常规表、外部表、分区表区别讲解 创建表&#xff0c;常规表、外部表、分区表区一、常规表1. 定义和特点&#xff1a;2. 适用场景&#xff1a; 二、外部表1. 定义和特点&#xff1a;2. 适用场景&#xff1a; 三、分区表1. 定义和特点&#xff1a;2…

什么是Agent智能体?

你好&#xff0c;我是三桥君 近期&#xff0c;从各大厂商的年度大会到多个大型AI峰会&#xff0c;三桥君明显感受到行业风气的转变。这些会议不仅展示了众多AI Agent的实际应用案例&#xff0c;还有专家们对未来发展的预测。一时间&#xff0c;“Agent”这个词成为了热门词汇&…

【论文阅读】Diffusion Policy: Visuomotor Policy Learning via Action Diffusion

Abstract 本文介绍了扩散策略&#xff0c;这是一种通过将机器人的视觉运动policy表示为条件去噪扩散过程来生成机器人行为的新方法。我们对来自 4 个不同的机器人操作基准的 15 个不同任务的扩散策略进行了基准测试&#xff0c;发现它始终优于现有的 state-of-the-art 机器人学…

【AndroidStudio】关于AndroidStudio的常见控件TextView和Button

作者&#xff1a;CSDN-PleaSure乐事 欢迎大家阅读我的博客 希望大家喜欢 使用环境&#xff1a;AndroidStudio 1.常见控件TextView 1.1基本信息 TextView主要用于在界面上显示一段文本信息。最基本的代码格式如下&#xff1a; <TextView android:id"id/text_vie…

如何在 macOS(MacBook Pro、Air 和 iMac)上恢复未保存的 Word 文档

Microsoft Word 在许多用户中很受欢迎&#xff0c;并且有多种用途。无论是为学校写论文、在办公室写报告还是其他许多事情。但是不保存文档并丢失数据可能是您可能面临的最可怕的噩梦。但是&#xff0c;也有几种方法可以在 macOS 上恢复未保存的 Word 文档。 用户在 Windows P…

智能手机取证: 专家如何从被锁定设备中提取数据?

在数字取证领域&#xff0c;从被锁定的手机中检索数据的能力是决定调查成功与否的关键技能。由于智能手机往往是解决复杂案件的关键&#xff0c;智能手机取证已经成为打击犯罪和恐怖主义战争中的一个关键组成部分。通话记录、短信、电子邮件&#xff0c;甚至位置数据都可能被发…

如何在谷歌浏览器上玩大型多人在线游戏

在如今的数字时代&#xff0c;谷歌浏览器已经成为了许多人上网冲浪的首选工具。除了浏览网页、观看视频之外&#xff0c;你还可以在谷歌浏览器上畅玩各种大型多人在线游戏。本文将为你详细介绍如何在谷歌浏览器上玩大型多人在线游戏的步骤。 &#xff08;本文由https://chrome…

asp.net mvc core 路由约束,数据标记DataTokens

》从0自己搭建MVC 》用 asp.net Core web 应用 空web 应用程序 需要配置 mvc服务 、mvc路由 新建 Controller 、Models、Views 》》》core 6 之前版本 vs2022 asp.net Core Web 应用&#xff08;模型-视图-控制器&#xff09; 不需要配置 就是mvc框架 asp.net Core web 应…

c++算法第二天

温馨提示&#xff1a;本篇文章适合刚开始练算法的小白&#xff0c;大佬若见勿嘲 题目 题目解析 遇到0写两遍&#xff0c;非0写一遍&#xff0c;其余非零数右移即可 编写原理 第一步找到最后一个被复写的数 先根据题目所给的例子找到最后一次要复写的数字 20240923_142843 第…

OpenHarmony(鸿蒙南向)——平台驱动指南【I2C】

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ 持续更新中…… 概述 功能简介 I2C&#xff08;Inter Integrated Circuit&#x…

怎么备考2024年11月软考高级系统架构师 ?

分享下我的系统架构设计师考证之路&#xff0c;希望能对即将参加考试的小伙伴们带来一些启示和帮助。 先贴出自己软考系统架构设计师成绩&#xff0c;备考一次就通过了考试。 一、架构考试教材 架构考试教材目前使用的是系统架构设计师教程&#xff08;第2版&#xff09;&…

Excel锁定单元格,使其不可再编辑

‌在Excel中&#xff0c;锁定单元格后仍然可以编辑‌&#xff0c;这主要涉及到对特定单元格或区域的锁定与保护工作表的设置。以下是实现这一功能的具体步骤&#xff1a; ‌解除工作表的锁定状态‌&#xff1a;首先&#xff0c;需要全选表格&#xff08;使用CtrlA快捷键&#x…

叉车司机信息权限采集系统,保障与优化叉车运输网络的安全

叉车司机信息权限采集系统可以通过监控司机的行车行为和车辆状况&#xff0c;实时掌握车辆位置和行驶路线&#xff0c;从而提高运输安全性&#xff0c;优化运输网络&#xff0c;降低事故风险。同时&#xff0c;该系统还可以通过对叉车司机信息和行车数据的分析&#xff0c;优化…

新书推荐——《Python贝叶斯深度学习》

在过去的十年中&#xff0c;机器学习领域取得了长足的进步&#xff0c;并因此激发了公众的想象力。但我们必须记住&#xff0c;尽管这些算法令人印象深刻&#xff0c;但它们并非完美无缺。本书旨在通过平实的语言介绍如何在深度学习中利用贝叶斯推理&#xff0c;帮助读者掌握开…