当前位置: 首页 > news >正文

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融合和回环检测,以进一步提高跟踪性能。

相关文章:

  • vue打包后的dist文件如何启动测试
  • 苹果电脑系统重磅更新——macOS Sequoia 15 系统 新功能一 览
  • 2024年软考——信息系统监理师30天冲刺学习指南!!!
  • 2024年自动化、电气控制系统与设备国际学术会议(AECSE 2024)
  • 半导体制造过程中设备通信的高级概述
  • 无人机飞手入伍当兵技术优势分析
  • 【达梦数据库】临时表的使用测试
  • 使用Plotly绘制交互式图表:从入门到精通
  • LabVIEW界面输入值设为默认值
  • 【Python报错已解决】AttributeError: ‘tuple‘ object has no attribute ‘log_softmax‘
  • Voxel mamba :基于Mamba的3D目标检测算法解析
  • vue2+elementUI实现handleSelectionChange批量删除-前后端
  • 基于物联网技术的智能运动检测仪设计(微信小程序)(230)
  • 数据链路层之以太网
  • windows通过文件系统访问ftp传输中文乱码
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • iOS编译提示和导航提示
  • java8-模拟hadoop
  • java取消线程实例
  • JSDuck 与 AngularJS 融合技巧
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • oldjun 检测网站的经验
  • SpringBoot几种定时任务的实现方式
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • WebSocket使用
  • 彻底搞懂浏览器Event-loop
  • 分享一份非常强势的Android面试题
  • 给Prometheus造假数据的方法
  • 技术胖1-4季视频复习— (看视频笔记)
  • 前端
  • 首页查询功能的一次实现过程
  • 我与Jetbrains的这些年
  • 一个项目push到多个远程Git仓库
  • 用Python写一份独特的元宵节祝福
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • ​数据结构之初始二叉树(3)
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # Apache SeaTunnel 究竟是什么?
  • #预处理和函数的对比以及条件编译
  • ${ }的特别功能
  • $LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
  • (SERIES10)DM逻辑备份还原
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (四)进入MySQL 【事务】
  • (五)网络优化与超参数选择--九五小庞
  • (转) 深度模型优化性能 调参
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .gitignore不生效的解决方案
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端