专栏名称: 点云PCL
公众号将会推送基于PCL库的点云处理,SLAM,三维视觉,高精地图相关的文章。公众号致力于理解三维世界相关内容的干货分享。不仅组织技术交流群,而且组建github组群,有兴趣的小伙伴们可以自由的分享。欢迎关注参与交流或分享。
目录
相关文章推荐
BioArt  ·  Science | ... ·  6 小时前  
生物探索  ·  会议速递 | ... ·  2 天前  
BioArt  ·  Cancer Cell | Eric ... ·  2 天前  
滴滴代驾服务订阅平台  ·  卓然而立,自在绽放:滴滴代驾妇女节关怀活动温暖落地 ·  2 天前  
51好读  ›  专栏  ›  点云PCL

VINGS-Mono:大规模场景中的视觉-惯性高斯溅射单目SLAM

点云PCL  · 公众号  ·  · 2025-02-19 09:00

正文

文章:VINGS-Mono: Visual-Inertial Gaussian Splatting Monocular SLAM in Large Scenes

作者:Ke Wu, Zicheng Zhang, Muer Tie, Ziqing Ai, Zhongxue Gan, Wenchao Ding

编辑:点云PCL

主页: https://vings-mono.github.io(代码即将开源)


欢迎各位加入知识星球,获取PDF论文,欢迎转发朋友圈。 文章仅做学术分享,如有侵权联系删文。

从技术角度观察行业发展,努力跟上时代的步伐。公众号致力于点云处理,SLAM,三维视觉,具身智能,自动驾驶等领域相关内容的干货分享,欢迎各位加入,有兴趣的可联系[email protected] 文章未申请原创,未经过本人允许请勿转载,有意转载联系微信920177957。

摘要


VINGS-Mono 是一种面向大规模场景的单目(惯性)高斯溅射(GS)SLAM框架,包含四个主要模块:VIO前端、2D高斯地图、NVS闭环检测和动态滤波器。在VIO前端中,RGB帧通过密集束调整和不确定性估计提取场景几何与位姿;基于此,建图模块逐步构建并维护2D高斯地图。2D高斯地图的核心组件包括基于采样的光栅化器、分数管理器和位姿优化模块,共同提升建图速度与定位精度,使SLAM系统能够处理包含多达5000万高斯椭球的大规模城市场景。为确保大尺度场景的全局一致性,我们设计了闭环模块,创新性地利用高斯溅射的新视角合成(NVS)能力进行闭环检测与高斯地图修正。此外,针对现实室外场景中动态物体的干扰,文章提出动态滤波器。通过在室内外环境的广泛评估,本方法在定位性能上与视觉-惯性里程计(VIO)相当,并超越近期基于GS/NeRF的SLAM方法,同时在建图与渲染质量上显著优于现有方法。我们还开发了移动端应用,验证了仅通过智能手机摄像头与低频IMU传感器即可实时生成高质量高斯地图。据我们所知,VINGS-Mono是首个支持户外场景与千米级大规模环境的单目高斯SLAM方法。

图1:VINGS-Mono 在三种不同场景下的轨迹估计和重建的高斯地图。该方法能够在大规模驾驶场景、无人机航拍视角和室内环境中有效估计位姿并重建高质量的高斯地图。特别是左侧的驾驶场景,其轨迹跨度达3.7公里,高斯地图包含3250万个高斯椭球。在训练过程中,我们跟踪高斯点的数量,并对特定区域进行放大,以提高可视化清晰度。

主要贡献



本文介绍了 VINGS-Mono,一种支持 大规模城市场景 的 单目(惯性)高斯点绘制(GS)SLAM 框架。该框架由四个主要模块组成:VIO 前端、2D 高斯地图、NVS 回环检测和动态物体清除器。关键技术创新:

  • 高斯地图存储与优化效率:我们开发了一种 评分管理器(Score Manager),通过整合局部和全局地图表示来管理 2D 高斯地图,提升存储和优化效率。

  • 加速 GS 反向传播计算:我们设计了一种 采样光栅化器(Sample Rasterizer),优化高斯点绘制的反向传播算法,显著提升计算效率。

  • 提高位姿精度,降低大场景漂移:我们提出了一种 单帧到多帧位姿优化(Single-to-Multi Pose Refinement) 模块,该模块通过单帧渲染误差的反向传播来优化整个视锥体范围内的所有帧位姿,提高全局位姿一致性。

  • 回环检测与大规模地图修正:我们利用 高斯点绘制的新视图合成(NVS) 进行 回环检测,并设计了一种高效的 回环修正方法,能够在检测到回环后 同时调整数千万个高斯属性,有效消除累积误差,确保地图的全局一致性。

  • 动态物体处理:我们设计了一种基于 重渲染损失 的启发式 语义分割掩码 生成方法,以有效识别并去除动态物体,提高建图的鲁棒性。

主要贡献:

  • ✅ 首个支持户外大规模城市场景 的 单目(惯性)GS-SLAM 系统,能够在公里级场景 运行。

  • ✅ 提出 2D 高斯地图模块,包含采样光栅化器、评分管理器和单帧到多帧位姿优化,实现高精度定位 和 实时高质量高斯地图构建。

  • ✅ 创新性 GS 回环检测方法,并提出一种 可一次性修正数千万高斯属性的高效回环修正策略,有效消除累积误差,确保地图的 全局一致性。

  • ✅ 在 多种场景(室内、无人机航拍、驾驶场景) 进行了 全面实验,结果表明 VINGS-Mono 在渲染质量和定位精度上均优于现有方法。此外开发了一款移动应用 并在 真实环境 中验证了该方法的实用性与可靠性。

主要内容


系统架构概述

框架流程如图 2 所示。给定 RGB 图像序列和 IMU 读数,我们首先利用 视觉-惯性前端选择关键帧,并通过稠密束调整 计算关键帧的初始深度和位姿信息。此外基于深度估计过程中的协方差计算 深度图的不确定性,从而过滤掉 几何不准确区域和天空区域。2D高斯地图模块利用视觉前端的输出 逐步添加并维护高斯椭球。我们设计了一种 基于贡献评分和误差评分 的管理机制,以有效裁剪冗余高斯点。此外提出了一种 基于单帧渲染误差的多帧位姿优化方法,提高全局位姿一致性。为了 适应大规模城市场景,我们 实现了 CPU-GPU 内存传输机制,提高计算效率。在 NVS 回环检测模块中,我们利用 高斯点绘制的新视图合成(NVS) 设计了一种创新性的 回环检测方法,并通过 高斯-位姿对匹配 来修正高斯地图。此外集成了 动态物体清除模块,该模块能够 屏蔽短暂出现的动态物体(如车辆和行人),确保在 静态场景假设下 进行一致且精准的建图。

图 2:VINGS-Mono 流程概述。RGB 图像和 IMU 读数由 视觉-惯性前端 处理,以计算位姿和逆深度。基于此,2D 高斯点绘制(GS)地图 逐步更新,并包含 评分管理器、采样光栅化和位姿优化。NVS 回环检测 利用 新视图合成(NVS) 进行高效的回环检测与修正,实现无缝闭环优化。此外动态物体清除模块 可有效减少动态物体对整个框架的影响。

视觉-惯性前端

1

稠密束调整与视觉约束

视觉信息的处理基于 稠密束调整(Dense Bundle Adjustment, DBA),其优化变量包括逆深度和相机位姿。具体而言,该模块从相邻的 RGB 帧中提取特征,并使用 RAFT(Recurrent All-Pairs Field Transforms)算法构建相关体积,从而计算光流场并估计场景的深度信息。

为了实现高效的深度估计,系统采用了一种 GRU(门控循环单元)网络结构。GRU 以当前图像的编码特征、相关体积中的光流特征以及自身的隐藏状态作为输入,并输出光流残差和优化权重。这些输出随后被用于光流场的修正以及深度估计的上采样处理。

为了提高计算效率,该模块会将原始图像的分辨率缩小 8 倍,因此逆深度的计算是在低分辨率空间中进行的。在每次迭代优化过程中,系统会基于 GRU 输出的修正光流场来调整逆深度和相机位姿,并通过高斯-牛顿(Gauss-Newton)方法求解最优解。

在优化过程中,系统会构建包含多个帧之间约束关系的Hessian 矩阵,其中包含了各个帧之间的视觉观测关系。这些矩阵块通过特定的数值优化方法进行求解,并且利用 GPU 进行并行加速计算,以提高优化效率。

最终,通过消元计算(Schur Complement),系统可以消除深度变量,仅保留帧间的位姿约束信息。这一过程等效于一个线性化的视觉束调整(BA),从而可以更高效地优化位姿和深度信息。

2

视觉-惯性因子图

为了融合视觉和惯性数据,系统采用 因子图(Factor Graph)优化 方法。该因子图的节点表示系统状态变量,包括:

  • IMU 在世界坐标系下的位姿;

  • IMU 在世界坐标系下的速度;

  • IMU 加速度计和陀螺仪的偏差。

在因子图优化中,视觉因子由视觉束调整(DBA) 计算得到,并通过Schur 消元 进一步优化,最终形成帧间位姿约束。与此同时,IMU 预积分因子则提供额外的运动信息约束。因子图的整体优化基于 GTSAM(Georgia Tech Smoothing And Mapping)库进行实现,能够有效地融合视觉与惯性数据,提高位姿估计的精度。

此外,在因子图构建过程中,所有的位姿变量均以 IMU 坐标系为基准,而视觉约束则是基于相机-IMU 外参 进行转换。这意味着,最终计算出的位姿是 IMU 坐标系下的位姿,而非直接从相机坐标系中获取。

IMU 预积分的计算方式参考了一种已有的方法,该方法能够在不同帧之间累积 IMU 测量值,并形成一个运动约束。具体来说,IMU 预积分约束包括:

  • 位置约束:描述相邻帧之间的相对平移;

  • 速度约束:描述相邻帧之间的速度变化;

  • 旋转约束:描述相邻帧之间的旋转变换;

  • 传感器偏差约束:对 IMU 的加速度计和陀螺仪偏置进行建模。

通过因子图优化,系统能够将视觉信息和惯性信息进行紧密融合,最终获得更为准确和鲁棒的位姿估计。

3

深度不确定性估计

在视觉-惯性 SLAM(同时定位与建图)任务中,由于视觉测量的不确定性,深度估计往往存在噪声和伪影。为了缓解这一问题,该系统基于信息矩阵(Information Matrix) 对深度不确定性进行建模,并通过稠密束调整(DBA) 提取每个像素逆深度的边缘协方差。

该方法的核心思想是:使用 Hessian 矩阵的稀疏形式来计算每个像素的逆深度不确定性。具体而言,系统通过 Cholesky 分解等方法求解边缘协方差,并最终获得每个像素的逆深度不确定性。该不确定性信息可用于:

  • 抑制噪声影响,提高深度估计精度;

  • 减少“漂浮点”(浮动点云)的生成,避免场景结构扭曲;

  • 提高 SLAM 过程中的鲁棒性。

最终,结合视觉-惯性前端的所有信息,包括:

  • 相机位姿序列;

  • 深度图;

  • 深度不确定性;

  • RGB 图像数据。

系统可以逐步构建并维护一个二维高斯概率地图(2D Gaussian Map),用于后续的 SLAM 任务,如优化回环检测、全局地图对齐等。

2D 高斯溅射地图


1

在线建图过程

2D 高斯地图的初始化是在 VIO(视觉惯性里程计)前端处理完首批关键帧后进行的。首先,对于每一帧图像,系统会筛除深度过大或不确定性高的像素点,确保输入数据的可靠性。随后,从剩余的像素中随机采样 50,000 个点,并将它们投影到世界坐标系中,生成点云。接着,这些点的高斯属性会按照 2DGS 方法进行初始化,包括均值、尺度、透明度和颜色等信息。

在渲染过程中,系统会按照 2DGS 方法生成 颜色、深度、法向量和累积值,并使用深度信息和法向量的方向来优化高斯椭球的渲染结果。渲染过程中,每个高斯点的深度值决定其在相机坐标系中的位置,而法向量的方向与相机视线对齐,以保证正确的可视化效果。

建图模块与 VIO 前端并行运行,并持续进行增量式地图更新。在原始 3DGS 方法中,密集化(densification)采用的是克隆-分裂策略,但该方法在 GS-SLAM(高斯 SLAM)中表现不佳,特别是在需要重置透明度时效果欠佳。因此,本文采用了先添加大量高斯点,再进行筛选的方法,以提高建图质量。

当前端添加新的关键帧时,新的高斯椭球会被加入地图,并在训练前进行优化。首先,系统会渲染该关键帧的颜色和深度信息,然后执行两个关键操作:

1. 删除冲突高斯点:

  • 在当前关键帧的视锥体(view frustum)内,如果某个高斯点的深度误差或颜色误差过大,则会被删除。

  • 如果某个高斯点的投影半径过大(意味着其覆盖范围过广,可能影响建图质量),也会被移除。

2. 添加新的高斯点

  • 在低累积值区域(即当前高斯点较少的地方),会根据深度信息添加新的高斯点。

  • 添加新高斯点的数量取决于低累积像素区域相对于总像素区域的比例。

  • 先添加冗余的高斯点,再进行选择性筛选,确保最终的建图结果具有更好的质量。

这种先增加、再筛选的策略在前向视角场景(如自动驾驶)中尤其有效,能够避免密集化过程中出现的透明度问题,并提高地图的完整性。

在新增高斯点后,系统会从最新的关键帧列表中随机抽取帧进行训练。训练过程中,系统会计算一个损失函数,包括颜色损失、深度损失、法向量损失和累积损失。其中,累积损失用于确保被遮挡的区域不会出现不合理的黑色高斯点。在每次训练迭代时,系统会记录并更新每个高斯点的局部贡献分数和误差分数,这些变量用于管理高斯点。

2

评分管理器

为了有效管理每个高斯椭球,本文提出了一种评分机制,主要涉及状态控制、存储控制和 GPU-CPU 传输。其核心思路是通过计算贡献分数和误差分数,确保每个高斯点既能提供最大贡献,又不会引入过多误差。

1. 贡献分数:

  • 计算某个高斯点在所有关键帧中的累计贡献值。

  • 贡献值的计算方法是:统计该高斯点覆盖的所有像素,并累加其权重,得到该帧的贡献值。

  • 最终,将该高斯点在所有关键帧中的贡献值求和,得到其总贡献分数。

2. 误差分数:

  • 计算某个高斯点在所有关键帧中的误差值。

  • 误差值由高斯点覆盖的像素的颜色损失累加得到,但在所有关键帧中,取最高的误差值作为最终误差分数。

此外,每个高斯点还会被赋予一个 ID 标识,表示在哪个关键帧中贡献最大。这些评分机制用于指导高斯点的存储和状态管理:

1. 状态控制:

  • GPU 上的高斯点分为稳定和不稳定两种状态。

  • 在一定训练迭代(400 次)后,贡献分数较低的不稳定高斯点会被移除,以减少存储和计算开销。

  • 误差分数过高的稳定高斯点会被标记为不稳定,允许它们被重新优化,以适应新环境。

2.存储控制

  • 每 200 次迭代后,系统会清理贡献分数过低且处于不稳定状态的高斯点,以减少冗余存储。

  • 在多房间环境或复杂道路结构中,历史高斯点可能重新进入视野。系统不会简单地根据投影半径或距离删除高斯点,而是通过稳定状态来决定是否保留,以避免误删重要信息。

3.GPU-CPU 传输:

  • 由于 GPU 内存有限,系统需要在 GPU 和 CPU 之间动态管理高斯点。

  • 每 8 个关键帧后,系统会根据位姿计算哪些高斯点需要驻留在 GPU,哪些可以转移到 CPU 存储,以优化计算和渲染效率。

3

采样光栅化器

在原始的高斯溅射方法(Gaussian Splatting)中,前向传播和反向传播是完全对称的,每个 GPU 线程处理一个像素,并将其损失回传到所有覆盖该像素的高斯点。这导致了一个性能瓶颈:计算时间由覆盖最多高斯点的像素决定。本文参考了 Taming 3DGS 和 NeRF 方法,优化了反向传播机制:

1. 存储中间变量:

  • 在前向传播阶段,每个线程会存储中间计算结果,每 32 个高斯点存储一次,以减少计算冗余。

2. 优化计算分工:

  • 反向传播阶段,GPU 被划分为多个 warp(每个 warp 由 32 个线程组成),并让每个 warp 处理固定数量的高斯点,降低单个线程的计算负担。

3. 重点采样:

  • 在每个 16×16 的像素块中,仅选择损失较高的 50% 像素进行反向传播。

  • 这一策略显著减少了计算量,使反向传播速度提升 273%。

图 3:采样光栅化器。在我们的反向传播过程中,每个线程负责一个高斯点,迭代次数取决于采样的像素数量。

4

单帧到多帧位姿优化

现有的基于高斯的方法通过优化高斯点的位置,间接优化相机位姿,但这一过程效率较低。本文改进了这一方法:

1. 高斯点与关键帧关联:

  • 计算每个高斯点与其关联的关键帧,并建立位姿变换矩阵作为优化变量。

2. 多帧位姿优化:

  • 在反向传播过程中,同时优化多个关键帧的位姿,而不是仅优化当前帧。

  • 通过渲染 RGB 图像并最小化损失,调整所有关键帧的位姿,提高整体优化效果。

NVS 回环闭合


在没有尺度信息的单目设置中,回环闭合对于消除由于连续移动而积累的误差尤其重要,尤其是在大规模环境中。为了解决这一问题,我们提出了一种基于高斯渲染的回环检测与修正方法。不同于传统的基于词袋模型(BoW)来进行回环检测的方法,我们采用了高斯渲染的新视角合成能力,从新视角合成的图像来判断是否存在回环闭合。接下来,我们利用图优化方法来修正历史帧的位姿,并通过高斯点的帧索引 ID(g) 来修正 2D 高斯地图。







请到「今天看啥」查看全文