目标三:现实世界可行性
这类方法的主要目标是在各种环境中使用,并在多种场景下工作。论文注意到,本节中的引用与从环境中提取的语义信息高度集成,并展示了端到端的VSLAM应用。
1)动态环境
在这方面,Yu等人[61]引入了一个名为DS-SLAM的VSLAM系统,该系统可用于动态上下文,并为地图构建提供语义级信息。该系统基于ORB-SLAM 2.0,包含五个线程:跟踪、语义分割、局部建图、回环和密集语义图构建。为了在姿态估计过程之前排除动态目标并提高定位精度,DS-SLAM使用了实时语义分割网络SegNet的光流算法[80]。DS-SLAM已经在现实世界环境中、RGB-D相机以及TUM RGB-D数据集上进行了测试。然而,尽管它的定位精度很高,但它仍面临语义分割限制和计算密集型特征的问题。
Semantic Optical Flow SLAM(SOF-SLAM)是基于ORB-SLAM 2.0的RGB-D模式构建的间接VSLAM系统[45]。他们的方法使用语义光流动态特征检测模块,该模块提取并跳过ORB特征提取提供的语义和几何信息中隐藏的变化特征。为了提供准确的相机姿态和环境信息,SOF-SLAM使用了SegNet的像素级语义分割模块。在极端动态的情况下,TUM RGB-D数据集和现实环境中的实验结果表明,SOF-SLAM的性能优于ORB-SLAM 2.0。然而,非静态特征识别的无效方法和仅依赖于两个连续帧是SOF-SLAM的缺点。其他相关算法[81]、[82]可以参考相关论文。
2)基于深度学习的解决方案
在Li等人[83]的另一个名为DXSLAM的工作中,深度学习用于找到类似于SuperPoints的关键点,并生成通用描述子和图像的关键点。他们训练先进的CNN HF-NET,通过从每个帧中提取局部和全局信息,生成基于帧和关键点的描述子。此外还使用离线Bag of Words(BoW)方法训练局部特征的视觉词汇表,以实现精确的回环识别。DXSLAM在不使用GPU的情况下实时运行,并且与当代CPU兼容。即使这些品质没有得到特别的处理,它也有很强的抵抗动态环境中动态变化的能力。DXSLAM已经在TUM RGB-D和OpenLORIS场景数据集以及室内和室外图像上进行了测试,可以获得比ORB-SLAM 2.0和DS-SLAM更准确的结果。然而,这种方法的主要缺点是复杂的特征提取架构和将深层特征合并到旧的SLAM框架中。
在另一种方法中,Li等人[84]开发了一种实时VSLAM技术,用于在复杂情况下基于深度学习提取特征点。该方法可以在GPU上运行,支持创建3D密集地图,是一个具有自监督功能的多任务特征提取CNN。CNN输出是固定长度为256的二进制代码串,这使得它可以被更传统的特征点检测器(如ORB)所取代。系统包括三个线程,用于在动态场景中实现可靠和及时的性能:跟踪、局部建图和回环。支持使用ORB-SLAM 2.0作为基线的单目和RGB-D相机的系统。其他相关算法[85]可以参考相关论文。
3)使用人工地标
Medina Carnicer等人提出的一种称为UcoSLAM[86]的技术,通过结合自然和人造地标,并使用基准标记自动计算周围环境的比例,从而优于传统的VSLAM系统。
UcoSLAM的主要驱动力是对抗自然地标的不稳定性、重复性和较差的跟踪质量。它可以在没有标签或特征的环境中运行,因为它只能在关键点、地标和混合模式下运行。为了定位地图对应关系,优化重投影误差,并在跟踪失败时重新定位,UcoSLAM具有跟踪模式。此外,它有一个基于地标的回环检测系统,可以使用任何描述子描述特征,包括ORB和FAST。尽管UcoSLAM有很多优点,但系统在多线程中执行,这使得它成为一种耗时的方法。
4)广泛的设置
用于动态室内和室外环境的另一种VSLAM策略是DMS-SLAM[87],它支持单目、立体和RGB-D视觉传感器。该系统采用滑动窗口和基于网格的运动统计(GMS)[88]特征匹配方法来找到静态特征位置。DMS-SLAM以ORB-SLAM 2.0系统为基础,跟踪ORB算法识别的静态特征。作者在TUM RGB-D和KITTI数据集上测试了他们建议的方法,并优于先进的的VSLAM算法。此外,由于在跟踪步骤中删除了动态目标上的特征点,DMS-SLAM比原始的ORB-SLAM 2.0执行得更快。尽管有上述优点,但DMS-SLAM在纹理少、运动快和高度动态环境的情况下会遇到困难。
目标四:资源限制
在另一类中,与其他标准设备相比,一些VSLAM方法是为计算资源有限的设备构建的。例如,为移动设备和具有嵌入式系统的机器人设计的VSLAM系统就属于这一类别。
1)处理能力有限的设备
在这方面,edgeSLAM是Xu等人提出的用于移动和资源受限设备的实时、边缘辅助语义VSLAM系统[89]。它采用了一系列细粒度模块,由边缘服务器和相关移动设备使用,而不需要多线程。edgeSLAM中还包括基于Mask-RCNN技术的语义分割模块,以改进分割和目标跟踪。作者在一个边缘服务器上安装了一些商用移动设备,如手机和开发板。通过重用目标分割的结果,他们通过使系统参数适应不同的网络带宽和延迟情况来避免重复处理。EdgeSLAM已在TUM RGB-D、KITTI的单目视觉实例和为实验设置创建的数据集上进行了评估。
对于立体相机设置,Grisetti等人[90]提出了一种轻量级的基于特征的VSLAM框架,名为ProSLAM,其结果与先进技术不相上下。四个模块组成了他们的方法:triangulation模块,它创建3D点和相关的特征描述子;增量运动估计模块,其处理两个帧以确定当前位置;创建局部地图的地图管理模块;以及基于局部地图的相似性更新世界地图的重新定位模块。ProSLAM使用单个线程检索点的3D位置,并利用少量已知库来创建简单的系统。根据KITTI和EuRoC数据集的实验,他们的方法可以获得稳健的结果。然而,它在旋转估计方面表现出不足,并且不包含任何光束法平差模块。其他相关算法VPS-SLAM[91]、[94]可以参考相关论文。
2)计算迁移
Ben Ali等人[96]建议使用边缘计算将资源密集型操作迁移到云上,并减少机器人的计算负担。他们在其间接框架Edge-SLAM中修改了ORB-SLAM 2.0的架构,在机器人上维护了跟踪模块,并将剩余部分委派给边缘。通过在机器人和边缘设备之间拆分VSLAM流水线,系统可以维护局部和全局地图。在可用资源较少的情况下,它们仍然可以在不牺牲准确性的情况下正确运行。[96]使用TUM RGB-D数据集和两个不同的移动设备,基于RGB-D相机生成定制的室内环境数据集进行评估。然而,该方法的缺点之一是由于各种SLAM模块的解耦而导致架构的复杂性。另一个问题是,系统仅在短期设置下工作,在长期场景(例如,多天)中使用Edge SLAM将面临性能下降。
目标五:弹性化(Versatility)
VSLAM在这一类中的工作侧重于直接的开发、利用、适应和扩展。
在这方面,Sumikura等人[95]引入了OpenVSLAM,这是一个高度适应性的开源VSLAM框架,旨在快速开发并被其他第三方程序调用。他们基于特征的方法与多种相机类型兼容,包括单目、立体和RGB-D,并且可以存储或重用重建的地图以供以后使用。由于其强大的ORB特征提取模块,OpenVSLAM在跟踪精度和效率方面优于ORB-SLAM和ORB-SLAM2.0。然而,由于担心代码相似性侵犯了ORB-SLAM 2.0的权利,该系统的开源代码已经停止。
为了弥合实时能力、准确性和弹性之间的差距,Ferrera等人[97]开发了OV2SLAM,可用于单目和立体视觉相机。通过将特征提取限制在关键帧中,并通过消除测光误差在后续帧中对其进行监控,他们的方法减少了计算量。从这个意义上讲,OV2SLAM是一种混合策略,它结合了VSLAM直接和间接方法的优点。在室内和室外实验中,使用包括EuRoC、KITTI和TartanAir在内的著名基准数据集,证明OV2SLAM在性能和准确性方面优于几种流行技术。其他相关算法DROID-SLAM[98]、iRotate[99]可以参考相关论文。
目标六:视觉里程计(Visual Odometry)
此类方法旨在以尽可能高的精度确定机器人的位置和方向。
1)深度神经网络
在这方面,[100]中提出了Dynamic-SLAM框架,该框架利用深度学习进行准确的姿态预测和适当的环境理解。作为优化VO的语义级模块的一部分,作者使用CNN来识别环境中的运动目标,这有助于他们降低由不正确的特征匹配带来的姿态估计误差。此外,Dynamic-SLAM使用选择性跟踪模块来忽略场景中的动态位置,并使用缺失特征校正算法来实现相邻帧中的速度不变性。尽管结果很好,但由于定义的语义类数量有限,该系统需要巨大的计算成本,并面临动态/静态目标误分类的风险。
Bloesch等人[101]提出了Code-SLAM,它提供了场景几何体的浓缩和密集表示。他们的VSLAM系统是PTAM的增强版[14],该系统仅与单目摄像机一起工作。其将强度图像划分为卷积特征,并使用根据SceneNet RGB-D数据集的强度图像训练的CNN将其馈送到深度自编码器。EuRoC数据集的实验结果表明,其结果在准确性和性能方面很有希望。其他相关算法DeepVO[102]、[103]、DeepFactors[104]可以参考相关论文。
2)深度相邻帧处理
在另一项工作中,[106]的作者通过减少用于摄像机运动检测的两幅图像之间的光度和几何误差,为RGB-D摄像机开发了一种实时密集SLAM方法,改进了他们先前的方法[107]。他们基于关键帧的解决方案扩展了Pose SLAM[108],它只保留非冗余姿态,以生成紧凑的地图,增加了密集的视觉里程计特征,并有效地利用来自相机帧的信息进行可靠的相机运动估计。作者还采用了一种基于熵的技术来度量关键帧的相似性,用于回环检测和漂移避免。然而,他们的方法仍然需要在回环检测和关键帧选择质量方面进行工作。
在Li等人[109]介绍的另一项工作中,使用称为DP-SLAM的基于特征的VSLAM方法实现实时动态目标移除。该方法使用基于从运动目标导出的关键点的似然性的贝叶斯概率传播模型。使用移动概率传播算法和迭代概率更新,DP-SLAM可以克服几何约束和语义数据的变化。它与ORB-SLAM 2.0集成,并在TUM RGB-D数据集上进行了测试。尽管结果准确,但由于迭代概率更新模块,该系统仅在稀疏VSLAM中工作,并且面临较高的计算成本。其他相关算法[110]可以参考相关论文。
3)各种特征处理
此类别中的另一种方法是Li等人[111]提出的基于文本的VSLAM系统,称为TextSLAM。它将使用FAST角点检测技术从场景中检索的文本项合并到SLAM管道中。文本包括各种纹理、图案和语义,这使得使用它们创建高质量3D文本地图的方法更加有效。
TextSLAM使用文本作为可靠的视觉基准标记,在找到文本的第一帧之后对其进行参数化,然后将3D文本目标投影到目标图像上以再次定位。他们还提出了一种新的三变量参数化技术,用于初始化瞬时文本特征。使用单目相机和作者创建的数据集,在室内和室外环境中进行了实验,结果非常准确。在无文本环境中操作、解释短字母以及需要存储大量文本词典是TextSLAM的三大基本挑战。其他相关算法[43]、[112]可以参考相关论文。
确定当前趋势
统计数字
关于上述各方面调查论文的分类,论文将图4中的处理数据可视化,以找出VSLAM的当前趋势。在子图“a”中,可以看到,大多数拟议的VSLAM系统都是独立的应用程序,它们使用视觉传感器从头开始执行定位和建图的整个过程。虽然ORB-SLAM2.0和ORB-SLAM是用于构建新框架的其他基础平台,但只有很少的方法基于其他VSLAM系统,如PTAM和PoseSLAM。此外,就VSLAM应用程序的目标而言,子图“b”中最重要的是改进视觉里程计模块。因此,大多数最近的VSLAM都试图解决当前算法在确定机器人位置和方向方面的问题。姿态估计和真实世界生存能力是提出新的VSLAM论文的进一步基本目标。关于调查论文中用于评估的数据集,子图“c”说明了大多数工作都在TUM RGB-D数据集上进行了测试。此外,许多研究人员倾向于对他们生成的数据集进行实验。我们可以假设生成数据集的主要动机是展示VSLAM方法在真实场景中的工作方式,以及它是否可以作为端到端应用程序使用。EuRoC MAV和KITTI分别是VSLAM工作中下一个流行的评估数据集。从子图“d”中提取的另一个有趣信息涉及使用VSLAM系统时使用语义数据的影响。我们可以看到,大多数论文在处理环境时不包括语义数据。论文假设不使用语义数据的原因是:
- 在许多情况下,训练识别目标并将其用于语义分割的模型的计算成本相当大,这可能会增加处理时间;
- 大多数基于几何的VSLAM算法被设计在即插即用的设备上工作,因此它们可以用最少的努力使用相机数据进行定位和建图;
- 从场景中提取的不正确信息也会导致过程中增加更多的噪声。
当考虑环境时,我们可以在子图“e”中看到,一半以上的方法也可以在具有挑战性的动态环境中工作,而其余的系统只关注没有动态变化的环境。此外,在子图“f”中,大多数方法都适用于“室内环境”或“室内和室外环境”,而其余的论文仅在室外条件下进行了测试。应当指出的是,如果在其他情况下采用的方法只能在具有限制性假设的特定情况下工作,则可能不会产生相同的准确性。这是一些方法只集中于特定情况的主要原因之一。
分析当前趋势
本文回顾了最先进的视觉SLAM方法,这些方法吸引了大量关注,并展示了它们在该领域的主要贡献。尽管在过去几年中,VSLAM系统的各个模块都有了广泛的可靠解决方案和改进,但仍有许多高潜力领域和未解决的问题需要在这些领域进行研究,从而在SLAM的未来发展中采用更稳健的方法。鉴于视觉SLAM方法的广泛性,论文介绍以下开放的研究方向:
深度学习:深度神经网络在各种应用中显示出令人鼓舞的结果,包括VSLAM[15],使其成为多个研究领域的一个重要趋势。由于其学习能力,这些体系结构已显示出相当大的潜力,可以用作可靠的特征提取器,以解决VO和回环检测中的不同问题。CNN可以帮助VSLAM进行精确的目标检测和语义分割,并且在正确识别人工设计的特征方面可以优于传统的特征提取和匹配算法。必须指出的是,由于基于深度学习的方法是在具有大量多样数据和有限目标类的数据集上进行训练的,因此总是存在对动态点进行错误分类并导致错误分割的风险。因此,它可能导致较低的分割精度和姿态估计误差。
信息检索和计算成本权衡:通常情况下,处理成本和场景中的信息量应始终保持平衡。从这个角度来看,密集地图允许VSLAM应用程序记录高维完整场景信息,但实时这样做将需要计算量。另一方面,稀疏表示由于其较低的计算成本,将无法捕获所有需要的信息。还应注意的是,实时性能与摄像机的帧速率直接相关,峰值处理时间的帧丢失会对VSLAM系统的性能产生负面影响,而与算法性能无关。此外,VSLAM通常利用紧耦合的模块,修改一个模块可能会对其他模块产生不利影响,这使得平衡任务更具挑战性。
语义分割:在创建环境地图的同时提供语义信息可以为机器人带来非常有用的信息。识别摄像机视场中的目标(例如门、窗、人等)是当前和未来VSLAM工作中的一个热门话题,因为语义信息可用于姿态估计、轨迹规划和回环检测模块。随着目标检测和跟踪算法的广泛使用,语义VSLAM无疑将成为该领域未来的解决方案之一。回环算法:任何SLAM系统中的关键问题之一是漂移问题,以及由于累积的定位误差而导致的特征轨迹丢失。在VSLAM系统中,检测漂移和回环以识别先前访问过的位置会导致计算延迟和高成本[89]。主要原因是回环检测的复杂度随着重建地图的大小而增加。此外,组合从不同地点收集的地图数据并细化估计姿态是非常复杂的任务。因此,回环检测模块的优化和平衡具有巨大的改进空间。检测回环的常见方法之一是通过基于局部特征训练视觉词汇表,然后将其聚合来改进图像检索。
在具有挑战性的场景中工作:在没有纹理的环境中工作,很少有显著特征点,这通常会导致机器人的位置和方向出现漂移误差。作为VSLAM的主要挑战之一,此错误可能导致系统故障。因此,在基于特征的方法中考虑互补的场景理解方法,例如目标检测或线条特征,将是一个热门话题。
结论
本文介绍了一系列SLAM算法,其中从摄像机采集的视觉数据起着重要作用。论文根据VSLAM系统方法的各种特点,如实验环境、新颖领域、目标检测和跟踪算法、语义级生存能力、性能等,对其最近的工作进行了分类。论文还根据作者的主张、未来版本的改进以及其他相关方法中解决的问题,回顾了相关算法的关键贡献以及现有的缺陷和挑战。本文的另一个贡献是讨论了VSLAM系统的当前趋势以及研究人员将更多研究的现有开放问题。
参考
[1] Visual SLAM: What are the Current Trends and What to Expect?
原文首发微信公众号【自动驾驶之心】:一个专注自动驾驶与AI的社区(https://mp.weixin.qq.com/s/NK-0tfm_5KxmOfFHpK5mBA)