编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

精度、速度、内存的完美结合!使用稀疏化打造内存高效的视觉SLAM

wxchong 2025-01-19 00:58:03 开源技术 59 ℃ 0 评论

0. 论文信息

标题:MS-SLAM: Memory-Efficient Visual SLAM With Sliding Window Map Sparsification

作者:Xiaoyu Zhang、Jinhu Dong、Yin Zhang、Yun‐Hui Liu

机构:Chinese University of Hong Kong、Westlake University

原文链接:https://onlinelibrary.wiley.com/doi/pdf/10.1002/rob.22431

代码链接:https://github.com/fishmarch/MS-SLAM

1. 导读

虽然传统的视觉SLAM系统通常优先考虑准确性或速度,但对于在大规模环境中工作的机器人来说,相关的内存消耗也会成为一个关注点。这主要是由于不断保留大量冗余的地图点所导致。这些冗余的地图点最初是为了确保帧跟踪的鲁棒性而构建的,但当机器人移动到其他位置后,它们的作用就变得微乎其微,主要只是为了潜在的回环检测而保留。经过持续的优化,这些地图点变得准确,但实际上并非所有地图点对于回环检测都是必要的。因此,本项目提出了MS-SLAM,一个具有地图稀疏化功能的内存高效视觉SLAM系统,旨在仅选择部分有用的地图点保留在全局地图中。在MS-SLAM中,所有局部地图点都暂时保留,以确保帧跟踪的鲁棒性和进一步的优化,而通过所提出的新型滑动窗口地图稀疏化方法,冗余的非局部地图点会被移除。该方法高效且与原始SLAM跟踪并行运行。回环检测仍然能够使用所选的有用地图点正常工作。通过在公共和自行收集的数据集上的各种场景中进行详尽的实验,MS-SLAM已证明与最先进的视觉SLAM具有相当的准确性,同时在大规模场景中显著减少了超过70%的内存消耗。这促进了视觉SLAM在大规模环境中的可扩展性,使其成为现实世界应用中的一种有前景的解决方案。

2. 引言

对于自主导航而言,移动机器人通常需要其工作场景的地图以及在该场景中的定位信息。同时定位与地图构建(SLAM)旨在同时解决这两个挑战。虽然SLAM可以使用各种传感器,如激光雷达和雷达,但相机因其价格实惠且能提供丰富的信息而成为热门选择。随着图形处理技术的飞速发展,涌现出了许多视觉SLAM系统,其中一些最先进(SOTA)的系统在准确性和速度方面,特别是在小规模环境中,取得了卓越的实验结果。

然而,将现有的SLAM系统应用于大规模环境的实际应用中会带来新的挑战,如内存消耗。在我们的实地实验中,我们注意到仅在运行5分钟内就迅速消耗了超过1GB的内存。这种快速的内存消耗带来了巨大挑战,尤其是对于资源受限的机器人而言。虽然大多数SLAM系统优先考虑提高准确性或速度,但内存消耗问题往往被忽视。

在视觉SLAM中,会从关键帧中提取大量特征点,并将其构建为地图点。虽然在理论上,查询帧仅通过四个匹配的地图点即可定位,但通常会使用冗余的地图点来增强帧跟踪的鲁棒性和准确性。这些冗余的地图点会永久存储在全局地图中。因此,当机器人在大规模场景中导航时,运行期间的内存消耗会迅速且无限制地增加。因此,如何处理这些冗余的地图点并保持全局地图是减少视觉SLAM中内存消耗的关键因素。

本文的重点是减少视觉SLAM中的内存消耗,以提高其在大规模实际应用环境中的可扩展性。由于内存消耗巨大的主要原因是地图点数量众多,因此减少地图点的数量成为了一个直接的解决方案。

在视觉SLAM中,用于匹配提取的特征和估计当前帧位姿(即帧跟踪)的地图点被称为局部地图点,它们构成局部地图。在初始阶段,地图点构建时存在较大误差,并且无法确定哪些地图点能够后续匹配。因此,为了稳健的跟踪,会在局部地图中构建大量的冗余地图点。这些地图点会不断匹配和优化。通常,局部地图只占全局地图的一小部分,如图1中红色部分所示。因此,我们选择保留局部地图中的所有地图点,以确保它们能够准确优化,并保持SLAM系统的原始操作不受干扰。

因此,我们的方法是通过减少非局部地图中的地图点数量来减轻内存消耗,同时确保回环检测的能力,如图1中蓝色部分所示。与原始灰色地图点相比,我们只在全局地图中保留了约10%的地图点,从而使内存消耗降低了70%以上。尽管进行了这种减少,但在我们的测试序列中,回环检测仍然正常运行,如图1中地图的一致性所示。

在选择地图点子集的同时保持定位和回环检测性能相当的过程被称为地图稀疏化。为了选择最优子集,地图稀疏化与K覆盖问题相关,其目标是最小化所选地图点的数量,同时确保每个关键帧中可见的地图点数量超过指定阈值(即K)。地图稀疏化在相关工作中已得到广泛研究。但这些现有方法通常对整个全局地图进行操作,因此是离线设计的。此外,这些方法的计算复杂度随着涉及的地图点数量的增加而迅速增加。因此,需要特定的设计才能将地图稀疏化应用于在线视觉SLAM。

在本文中,我们介绍了一种新颖的滑动窗口在线地图稀疏化方法,该方法与视觉SLAM并行运行,逐渐减少非局部地图中的地图点数量。通过使用固定大小的滑动窗口,地图稀疏化过程得以高效执行,且不会损害视觉SLAM的性能。结合这种在线地图稀疏化,我们提出了一种内存高效的视觉SLAM系统,称为MS-SLAM。在MS-SLAM中,通过删除冗余的非局部地图点及其相关信息,显著降低了内存消耗。

我们使用公开和自行收集的数据集在各种环境中进行了详尽的实验。我们的MS-SLAM与SOTA视觉SLAM方法具有相当的准确性,但内存消耗可降低70%以上,尤其是对于大规模场景而言。

3. 效果展示

局部地图之外的地图点,称为非局部地图点,在帧跟踪中作用甚微,但对内存消耗贡献显著,如图1中灰色部分所示。这些冗余的非局部地图点主要是为了回环检测而保留。但与局部地图点不同,非局部地图点已经过多次匹配并进行了充分的优化。此外,并非所有这些点对于回环检测都是必要的,理论上仅需要三个匹配的地图点即可计算回环校正的变换。无需在全局地图中保留所有非局部地图点,只需一小部分准确的点就足以进行回环检测。

4. 主要贡献

本文的主要贡献如下:

? 我们提出了一种滑动窗口在线地图稀疏化方法,用于选择和保留对回环检测最有用的地图点,该方法高效且可以与视觉SLAM并行运行。

? 通过集成在线地图稀疏化,我们引入了MS-SLAM,该系统通过删除非局部地图中的冗余地图点,在保持相当准确性的同时显著降低了内存消耗。

? 我们在各种环境中进行了详尽的实验,证明MS-SLAM在消耗更少内存的同时实现了相当的准确性。这种内存消耗的显著减少有助于增强视觉SLAM在大规模环境中的可扩展性。

5. 方法

如图3所示,所提出的滑动窗口地图稀疏化主要包含两个步骤:滑动窗口构建和高效地图稀疏化。首先,在滑动窗口内收集用于稀疏化的地图点。然后,基于这些地图点及其与关键帧的关联进行地图稀疏化。

在本节中,我们将介绍所提出的内存高效视觉SLAM,其中集成了所提出的滑动窗口地图稀疏化。所提出的MS-SLAM框架如图4所示,其中主要提出的模块以橙色块突出显示。视觉SLAM系统通常包含三个独立的线程:跟踪、局部建图和回环闭合。除了这三个线程外,我们还引入了一个新的线程,专门用于执行所提出的滑动窗口地图稀疏化。该线程负责移除冗余的地图点并清理其对应的信息。为了保持SLAM系统的正常运行不受干扰,地图稀疏化是针对非局部地图点进行的。

6. 实验结果

7. 总结 & 未来工作

在本文中,我们重点关注减少视觉SLAM中的内存消耗。由于全局地图中永久保留了大量的冗余地图点,内存消耗会迅速且无限制地增加。这对于资源受限的机器人来说是一个巨大的挑战,并且在前人的工作中经常被忽视。在本文中,我们详细分析了视觉SLAM的内存消耗,并提出通过移除冗余地图点来解决这个问题。

为了实现这一目标,我们设计了一种新型的滑动窗口地图稀疏化方法,该方法仅选择最有用的地图点保留在全局地图中。所提出的地图稀疏化与在线视觉SLAM相结合,以从非局部地图中移除冗余的地图点。

我们在不同的数据集上评估了所提出的内存高效视觉SLAM(MSSLAM),涵盖了室内和室外、小规模和大规模场景。在这些测试中,我们的MS-SLAM与最先进的视觉SLAM方法具有相当的准确性。在大规模环境中运行时,MS-SLAM的最大内存消耗降低了70%–80%,平均内存增长率降低了75%–85%。这一显著的内存消耗减少增强了视觉SLAM在大规模实际应用环境中的可扩展性。

对更多实验结果和文章细节感兴趣的读者,可以阅读一下论文原文~


Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表