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

前言

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


文章目录


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} t−1∆pt,可由式(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} t−1∆Θ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高斯。最后,根据所选关键帧的建图损失对三维高斯参数进行优化。

3.文章贡献

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

4.个人思考

  1. 本文的深度估计应该是采用了一个网络,将估计深度和渲染深度进行一个相关性计算获得深度损失。
  2. 对于IMU的融合,作者采用的应该是一个松耦合方式,只在初始化或者剧烈运动导致相机位姿估计比较困难的时候,采用IMU进行估计,这个策略还是比较简单的。不过作者在最后提及未来的工作可能会扩展到包括紧密耦合的IMU融合和回环检测,以进一步提高跟踪性能。
相关推荐
aramae3 分钟前
C++ -- STL -- vector
开发语言·c++·笔记·后端·visual studio
fen_fen31 分钟前
学习笔记(32):matplotlib绘制简单图表-数据分布图
笔记·学习·matplotlib
云空3 小时前
《PyQt6-3D应用开发技术文档》
3d·pyqt
饕餮争锋4 小时前
设计模式笔记_创建型_建造者模式
笔记·设计模式·建造者模式
萝卜青今天也要开心5 小时前
2025年上半年软件设计师考后分享
笔记·学习
吃货界的硬件攻城狮5 小时前
【STM32 学习笔记】SPI通信协议
笔记·stm32·学习
蓝染yy5 小时前
Apache
笔记
Jamence6 小时前
多模态大语言模型arxiv论文略读(155)
论文阅读·人工智能·计算机视觉·语言模型·论文笔记
lxiaoj1116 小时前
Python文件操作笔记
笔记·python
半导体守望者7 小时前
ADVANTEST R4131 SPECTRUM ANALYZER 光谱分析仪
经验分享·笔记·功能测试·自动化·制造