出处:Chen W, Shang G, Ji A, et al. An overview on visual slam: From tradition to semantic[J]. Remote Sensing, 2022, 14(13): 3010.
作者单位:泉州信息工程学院/南京信息工程大学/南京航空航天大学
参考:https://blog.csdn.net/qq_40165706/article/details/126685455
视觉SLAM(VSLAM)由于其传感器成本低、易于与其他传感器融合、环境信息更丰富等优势而得到迅速发展。传统的基于视觉的 SLAM 研究取得了许多成就,但在具有挑战性的环境中可能无法取得预期的结果。深度学习推动了计算机视觉的发展,深度学习与SLAM的结合越来越受到关注。语义信息作为高级环境信息,可以使机器人更好地了解周围环境。本文从传统VSLAM和语义VSLAM结合深度学习两个方面介绍了VSLAM技术的发展。对于传统的VSLAM,我们详细总结了间接和直接方法的优缺点,并给出了一些经典的VSLAM开源算法。此外,我们专注于基于深度学习的语义 VSLAM 的开发。从典型的神经网络 CNN 和 RNN 开始,我们详细总结了 VSLAM 系统的神经网络改进。之后,我们重点介绍目标检测和语义分割对 VSLAM 语义信息引入的帮助。我们相信,未来智能时代的发展离不开语义技术的助力。将深度学习引入VSLAM系统提供语义信息,可以帮助机器人更好地感知周围环境,为人们提供更高层次的帮助。
关键词:SLAM, 深度学习, 神经网络,计算机视觉,语义, 智能时代。
人们需要移动机器人自己完成一些任务,这就需要机器人能够适应陌生的环境。因此,能够在陌生环境中进行定位和建图的 SLAM [1](同时定位和建图)已成为自主移动机器人的必备能力。自 1986 年首次提出以来,SLAM 受到了众多研究人员的广泛关注,并在机器人、虚拟现实等领域迅速发展。 SLAM是指基于位置和地图的自定位,基于自定位构建增量地图。主要用于解决机器人在未知环境中移动时的定位和地图构建问题[2]。 SLAM作为一项基础技术,早期已应用于移动机器人定位导航。随着计算机技术(硬件)和人工智能(软件)的发展,机器人研究受到越来越多的关注和投入。许多研究人员致力于使机器人更加智能。 SLAM被认为是促进移动机器人真正自主的关键[3]。
有学者根据采用的传感器不同,将 SLAM 分为激光 SLAM 和视觉 SLAM(VSLAM)[4]。与VSLAM相比,由于起步较早,国外的激光SLAM研究相对成熟,长期以来一直被认为是移动机器人的首选方案。与人眼类似,VSLAM 主要以图像作为环境感知的信息源,比激光 SLAM 更符合人类的理解,信息量更多。近年来,基于相机的 VSLAM 研究引起了研究人员的广泛关注。由于价格便宜、易于安装、环境信息丰富、易于与其他传感器融合等优点,出现了许多基于视觉的 SLAM 算法[5]。 VSLAM 具有环境信息更丰富的优势,被认为能够赋予移动机器人更强的感知能力,并应用于一些特定场景。因此,本文将重点放在 VSLAM 上,并梳理出由此衍生的算法。基于各种激光雷达的SLAM不在本文讨论范围内。有兴趣的读者可以参考文献[6,7,8]等来源。
作为自主机器人导航的解决方案之一,传统的VSLAM本质上是基于图像几何特征的简单环境理解[9]。 因为传统的 VSLAM 只利用环境的几何特征,如点、线等。面对这种低层次的几何信息环境,传统的VSLAM可以达到高度的实时性。 面对光照、纹理和动态物体等普遍的变化,传统的VSLAM显示出明显的不足,在位置精度和鲁棒性方面存在缺陷[10]。 虽然传统视觉SLAM构建的地图包含了环境中的重要信息,在一定程度上满足了机器人的定位需求, 但不足以支持机器人的自主导航和避障任务。 此外,它不能满足智能机器人与环境和人类的交互需求[11]。
人们对智能移动机器人的需求与日俱增,对机器人的自主能力和人机交互能力提出了很高的要求[12]。传统的 VSLAM 算法可以满足机器人的基本定位导航需求,但无法完成“帮我关卧室门”、“去厨房给我拿苹果”等更高级的任务。这样的目标,机器人需要识别场景中物体的信息,找出它们的位置并构建语义图。借助语义信息,将数据关联从传统的像素级升级到对象级。此外,感知几何环境信息被赋予语义标签以获得高级语义图。它可以帮助机器人理解自主环境和人机交互[13]。我们认为,深度学习的快速发展为将语义信息引入 VSLAM 提供了桥梁。尤其是在语义图构建中,将其与 VLAM 相结合,可以使机器人获得对场景的高级感知和理解。它显着提高了机器人与环境之间的交互能力[14]。
2016 年,Cadena 等人 [15]首先提出将SLAM的发展分为三个阶段。在他们的描述中,我们处于鲁棒感知阶段,如图1所示。他们从经典、算法和鲁棒三个方面描述了SLAM在不同时期的重点和贡献。参考 [16] 总结了 2010 年到 2016 年基于视觉的 SLAM 算法的发展,并提供了一个工具包来帮助初学者。优素福等人 [17] 讨论了 VSLAM 的基本框架,并总结了几个数学问题,以帮助读者做出最佳选择。巴夫勒等人 [18]总结了机器人SLAM技术,指出了机器人场景理解的发展趋势。
Servieres 等人从视觉和视觉惯性的融合出发 [19]回顾和比较了重要的方法,总结了SLAM中出现的优秀算法。阿扎姆等人 [20]对基于特征的方法进行了全面研究。他们根据在环境中观察到的视觉特征对所审查的方法进行了分类。此外,他们还提出了未来SLAM发展可能遇到的问题和解决方案。参考。 [21]详细介绍了基于单目、双目、RGB-D和视觉-惯性融合的SLAM方法,并给出了存在的问题和未来的方向。参考[22]描述了VSLAM从几何到深度学习的机遇和挑战,并预测了VSLAM在未来语义时代的发展前景。
图 图 1. SLAM 发展时代概览。 SLAM 的发展经历了三个主要阶段:理论框架、算法分析和高级鲁棒感知。 时间点没有严格限制,只是代表了SLAM在一定阶段的发展和人们感兴趣的热点问题。
如您所见,这里有一些基于视觉的 SLAM 技术的调查和总结。 但大多只关注 VSLAM 的一个方面,没有更全面地总结 VSLAM 的发展历程。 此外,上述评论更多地关注传统的视觉SLAM算法,而语义SLAM结合深度学习没有详细介绍。 因此,有必要对基于视觉的 SLAM 算法进行全面回顾,以帮助研究人员和学生在视觉 SLAM 技术方面展开努力,以了解这一大领域的概况。
为了让读者对 SLAM 领域有更深入、更全面的了解,我们回顾了通用 SLAM 算法从诞生到现在的历史。此外,我们总结了推动 SLAM 解决方案技术演进的关键解决方案。 SLAM的工作从点问题的形成到最常用的状态方法进行了描述。我们不仅仅关注一个方面,而是提出了关键的主要方法来展示将 SLAM 方法带到当前状态的研究之间的联系。此外,我们回顾了 SLAM 从传统到语义的演变,这一视角涵盖了历史上主要的、有趣的和领先的设计方法。在此基础上,我们对深度学习 SLAM 算法进行了全面总结。语义 VSLAM 也进行了详细的解释,以帮助读者更好地理解语义 VSLAM 的特点。我们认为我们的工作可以帮助读者更好地理解机器人环境感知。我们在语义 VSLAM 方面的工作可以为读者提供更好的思路,并为未来的 SLAM 研究甚至机器人自主感知提供有用的参考。因此,本文对基于视觉的 SLAM 技术的发展进行了全面的补充和更新。此外,本文将基于视觉的 SLAM 的发展分为两个阶段:传统 VSLAM 和集成深度学习的语义 VSLAM。让读者更好地了解VSLAM的研究热点,把握VSLAM的发展方向。我们认为传统的相位 SLAM 问题主要解决算法的框架问题。在语义时代,SLAM 侧重于结合深度学习的高级态势感知和系统鲁棒性。
我们的回顾对最先进的技术做出了以下贡献:
具体来说,在第一节中,本文详细介绍了传统 VSLAM 的特点,包括直接法和基于前端视觉里程计的间接法,并对基于深度相机的 VSLAM 与集成IMU的经典 VSLAM 进行了比较。在第 2 节中,本文分为两部分。我们首先从两个神经网络 CNN 和 RNN 中介绍深度学习和 VSLAM 的结合。我们认为,将深度学习引入语义 VSLAM 是语义 VSLAM 发展的前提。此外,这个阶段也可以看作是语义 VSLAM 的开始。然后,本文从目标检测和语义分割两个方面描述了深度学习将语义 VSLAM 推向高级阶段的过程。所以本文从动态对象的定位、建图和消除三个方面总结了语义VSLAM的发展方向。在第 3 节中,本文介绍了一些主流的 SLAM 数据集,以及该领域的一些优秀实验室。最后,我们总结了当前的研究,并指出了未来VSLAM研究的方向。本文的章节目录如图 2 所示。
图 2. 本文其余部分的结构图。 本文重点介绍第二章的语义VSLAM。 我们认为引入神经网络是语义 VSLAM 的开始。 我们从一个深度神经网络入手,描述了它与VSLAM的结合,然后从基于深度学习的目标检测和语义分割等方面对现代语义VSLAM进行了详细的解释,并进行了总结和展望。
VSLAM 中使用的传感器通常包括单目相机、立体相机和 RGB-D 相机。单目摄像头和立体摄像头的原理相似,可以广泛应用于室内外环境。 RGB-D相机作为一种特殊形式的相机,主要通过主动发射红外结构光或计算飞行时间(TOF)来直接获取图像深度。使用方便,但对光敏感,大多数情况下只能在室内使用[23]。事件相机作为近几年出现的一种新型摄像头传感器,一张有别于传统摄像头的照片。事件相机就是“事件”,可以简单到“像素亮度变化”。事件相机输出的变化是像素亮度,基于事件相机的SLAM算法仍仅处于初步研究阶段[24]。此外,作为基于视觉的经典SLAM系统,视觉-惯性融合在很多方面都取得了优异的成绩。在图 3 中,我们比较了不同相机的主要特征。
图 3. 不同相机之间的比较。 事件相机不是特定类型的相机,而是可以获取“事件信息”的相机。 “传统相机”工作频率恒定,在拍摄高速物体时存在滞后、模糊、曝光过度等天然缺陷。 然而,事件相机,一种类似于人眼的基于神经的信息处理方法,没有这些问题。
SLAM 问题已经存在了几十年。 在过去的几十年里,涌现了许多优秀的算法,尽管侧重点不同,但每种算法都不同程度地促进了 SLAM 技术的快速发展。 每个算法都必须进行公平比较。 一般来说,我们可以从耗时、复杂度和准确性等多个角度来评估一个 SLAM 算法。 然而,最重要的是我们最关注它的准确性。 ATE(Absolute Trajectory Error)和RPE(Relative Pose Error)是用来评估SLAM准确性的两个最重要的指标。 相对位姿误差用于计算相同两个时间戳中位姿变化的差异,适用于估计系统漂移。 绝对轨迹误差直接计算相机位姿的真实值与SLAM系统的估计值之间的差异。 ATE和RPE的基本原理如下。
//TODO
语义 SLAM 是指一种 SLAM 系统,它不仅可以获取未知环境的几何信息和机器人运动信息,还可以检测和识别场景中的目标。它可以获得语义信息,例如它们的功能属性和与周围物体的关系,甚至可以理解整个环境的内容[134]。传统的 VSLAM 以点云等形式表示环境,对我们来说是一堆毫无意义的点。为了从几何和内容层面感知世界并为人类提供更好的服务,机器人需要进一步抽象这些点的特征并理解它们[135]。随着深度学习的发展,研究人员逐渐意识到它可能有助于解决 SLAM 问题 [136]。语义信息可以帮助 SLAM 在更高层次上理解地图。此外,它减少了 SLAM 系统对特征点的依赖,提高了系统的鲁棒性 [137]。
现代语义VSLAM系统离不开深度学习的帮助,通过学习获得的特征属性和关联关系可以用于不同的任务[138]。 作为机器学习的一个重要分支,深度学习在图像识别[139]、语义理解[140]、图像匹配[141]、3D重建[142]等任务中取得了显著成果。 深度学习在计算机视觉中的应用可以极大地缓解传统方法遇到的问题[143]。 传统的 VSLAM 系统在许多方面都取得了可喜的成绩,但仍有许多具有挑战性的问题需要解决 [144]。 参考[145]详细总结了基于深度学习的VSLAM,并指出了传统VSLAM存在的问题。 这些工作 [146,147,148,149] 建议应该使用深度学习来替代传统 SLAM 的一些模块,例如闭环和姿态估计,以改进传统方法。
机器学习是人工智能的一个子集,它使用统计技术提供从计算机“学习”数据的能力,而无需复杂的编程。与特定于任务的算法不同,深度学习是基于学习数据的机器学习的一个子集。它的灵感来自于所谓的人工神经网络的功能和结构。深度学习通过学习将世界显示为更简单的概念和层次结构,并根据不太抽象的概念计算更抽象的表示,从而获得了极大的灵活性和能力。传统机器学习和深度学习最重要的区别在于数据扩展的性能。当数据非常小时,深度学习算法就不能很好地工作,因为它们需要大数据来完美地识别和理解它。机器学习算法的性能取决于识别和提取特征的准确性。另一方面,深度学习算法从数据中识别这些高级特征,从而减少为每个问题开发全新特征提取器的工作量。深度学习是机器学习的一个子集,与传统的机器学习算法相比,它已被证明是行业中一个更强大、更有前途的分支。它以其分层的特性实现了许多传统机器学习无法实现的功能。 SLAM 系统需要收集环境中的大量信息,因此需要计算的数据量非常巨大,而深度学习模型正好适合解决这个问题。
本文认为语义 VSLAM 是一个不断发展的过程。 早期,一些研究人员试图通过使用 CNN 等神经网络提取环境中的语义信息来提高 VSLAM 的性能。 在现代阶段,目标检测、语义分割等深度学习方法是推动语义 VSLAM 发展的有力工具。 因此,在本章中,我们将首先描述典型神经网络在 VSLAM 中的应用。 我们认为这是现代语义 VSLAM 发展的前提。 神经网络在 VSLAM 中的应用为现代语义 VSLAM 提供了模型。 本文认为,神经网络是将语义信息引入现代语义VSLAM系统并获得快速发展的桥梁。
图13显示了CNN和RNN的典型框架。CNN可以从图像中捕捉空间特征,这有助于我们准确识别对象及其与图像中其他对象的关系[150]。RNN的特点是它可以处理图像或数字数据。由于网络本身的内存容量,它可以学习具有上下文相关性的数据类型[151]。此外,其他类型的神经网络,如DNN(深度神经网络)也有一些尝试性工作,但仍处于初始阶段。本文指出,CNN具有以下优点:使用特定模型提取事物的特征,然后根据特征进行分类、识别、预测或决策。它可以帮助VSLAM的不同模块。此外,本文认为RNN在帮助建立相邻帧之间的一致性方面具有很大优势。此外,高级特征具有更好的区分,这可以帮助机器人更好地完成数据关联。
图13.CNN和RNN的结构框图。CNN适用于从分层或空间数据中提取未标记特征。RNN适用于时间数据和其他类型的顺序数据。
传统帧间估计方法采用基于特征的方法或直接方法,通过多视图几何识别摄像机姿态[152]。基于特征的方法需要复杂的特征提取和匹配。直接方法依赖于像素强度值,这使得传统方法难以在强照明或稀疏纹理等环境中获得期望的结果[153]。相比之下,基于深度学习的方法更直观和简洁。这是因为它们不需要提取环境特征、特征匹配和复杂的几何操作[154]???。由于CNN的特征检测层通过训练数据学习,它避免了显示中的特征提取,并在使用过程中从训练数据隐式学习。参考文献。[155156]和其他工作做了详细总结.
CNN在图像处理方面的优势已得到充分验证。例如,视觉深度估计改善了单目摄像机无法获得可靠深度信息的问题[157]。2017年,Tateno等人[158]提出了一种实时SLAM系统“CNN-SLAM”“基于LSD-SLAM框架中的CNN。如图14所示,该算法通过训练深度估计网络模型获得了可靠的深度图。CNN用于深度预测,并将其输入到后续模块,如传统的姿态估计,以提高定位和映射精度。此外,该框架中添加了CNN语义分割模块,该模块提供了IDE有助于VSLAM系统的高级信息感知。使用网络来估计深度信息的类似工作包括基于立体相机的代码SLAM[42]和DVSO[159]。同年,Godard等人[160]提出了一种无监督图像深度估计方案。通过使用立体数据集改进无监督学习,然后使用单个帧进行姿态估计,这与其他方案相比有很大的改进。
CNN不仅解决了传统方法无法使用单目摄像机获得可靠深度数据的问题,而且改善了传统方法在摄像机姿态估计中的缺陷。2020年,Yang等人[48]提出了D3VO。该方法从深度估计、姿态估计和不确定性估计三个方面进行深度学习。预测深度、姿态和不确定性紧密结合到直接视觉里程表中,以同时提高前端跟踪和后端非线性优化的性能。然而,自监督方法难以适应所有环境。此外,Qin等人[161]在2020年提出了一种基于语义特征的遥感器,有效解决了传统视觉SLAM方法容易跟踪丢失的问题。其原理是使用CNN在狭窄拥挤的地下停车场环境中检测语义特征,缺少GPS信号,光线暗淡,纹理稀疏。然后使用U-Net[162]进行语义分割,以分离停车线、减速带和地面上的其他指示器,然后使用里程表信息。语义特征被映射到全局坐标系以构建停车场地图。然后将语义特征与先前构建的地图匹配以定位车辆。最后,EKF用于整合视觉定位结果和里程表信息,以确保系统在地下停车环境中获得连续稳定的定位结果。Zhu等人[163]通过使用CNN学习旋转和平移,专注于光流输入的不同象限。然而,取代视觉里程表的端到端方法简单且粗糙,但没有理论支持和推广能力
图14.CNN-SLAM的结构。
环路闭合检测可以消除累积轨迹误差和地图误差,并确定整个系统的精度,这本质上是一个场景识别问题[164]。传统方法通过人工设计的稀疏特征或像素级密集特征进行匹配。深度学习可以通过神经网络学习图像中的高级特征。此外,利用深度学习的强大识别能力提取图像的更高层次鲁棒特征,其识别率可以达到更高的水平。这样,系统可以对图像变化(如透视和照明)具有更强的适应性,并提高闭环图像识别能力[165]。因此,基于深度学习的场景识别可以提高闭环检测的精度,而CNN对于闭环检测也取得了许多可靠的效果。Memon等人[166]提出了一种基于词典的深度学习方法,该方法不同于传统的Bow词典,使用更高层次和更抽象的深度学习特征。该方法不需要创建词汇表,具有更高的内存效率,并且比类似方法具有更快的运行速度。然而,本文仅基于相似度评分检测周期,因此不具有广泛的代表性。Li等人[167]提出了一种基于学习特征的视觉SLAM系统,称为DXSLAM,解决了上述方法的局限性。使用CNN从每个帧中提取局部和全局特征,然后将这些特征输入现代SLAM管道,用于姿态跟踪、局部映射和重新定位。与传统的基于BOW的方法相比,它具有更高的效率和更低的计算成本。此外,秦等人[168]使用CNN提取环境语义信息,并将视觉场景建模为语义子图。利用语义信息可以有效地提高环回检测的效率。参考文献。[169170]等详细描述了深度学习在许多方面的成就。然而,随着更复杂、更好模型的引入,如何保证模型计算的实时性?如何在资源受限的平台上更好地设置环内闭包检测模型,以及模型的轻量级也是一个主要问题[171]。
CNN在取代传统VSLAM算法的一些模块(如深度估计和环路闭合检测)方面取得了良好的效果。其稳定性仍然不如传统的VSLAM算法[172]。相比之下,CNN系统的语义信息提取带来了更好的效果。利用CNN对传统VSLAM的过程进行优化,以提取具有更高层次特征的环境的语义信息,使传统的VSLAM获得更好的结果。使用神经网络提取语义信息并将其与VSLAM相结合将是一个非常感兴趣的领域。在语义信息的帮助下,数据关联从传统的像素级升级到对象级。感知几何环境信息被分配语义标签以获得高级语义地图。它可以帮助机器人理解自主环境和人机交互。表8显示了VSLAM中CNN网络的一些主要应用链接。有些涉及许多方面,这里仅列出主要贡献。
RNN(递归神经网络)的研究始于20世纪80年代和90年代,并在21世纪初发展成为经典的深度学习算法之一。长期短期记忆网络(LSTM)是最常见的递归神经网络之一[178]。LSTM是RNN的一种变体,它记忆可控量的先前训练数据或更正确地忘记它[179]。如图15所示,给出了LSTM的结构及其不同模块的状态方程。具有特殊隐式单元的LSTM可以长时间保存输入。LSTM继承了RNN模型的大部分特征,并解决了遥感器逐渐减少导致的梯度反向传输过程消失问题 。作为RNN的另一种变体,GRU(门控递归单元)更易于训练,并可提高训练效率[180]。神经网络由于具有记忆性和参数共享性,在学习序列的非线性特征方面具有一定的优势。通过引入卷积神经网络CNN构建的RNN可以处理涉及序列输入的计算机视觉问题[181]。
在姿态估计中,引入端到端深度学习方法来求解视觉图像帧间的姿态参数,而无需特征匹配和复杂的几何操作。它可以通过直接输入附近的帧快速获得帧之间的相对姿态参数[182]。Xue等人[183]使用深度学习来学习特征选择过程,并实现基于RNN的姿态估计。在姿态估计中,旋转和位移分别训练,与传统方法相比具有更好的适应性。2021,Teed等人[184]引入了DROID-SLAM,其核心是一个可学习的更新算子。如图16所示,更新算子是一个隐藏状态为H的3×3卷积GRU。更新算子的迭代应用创建了一系列姿态和深度,这些姿态和深度收敛到反映真实重建的固定点。该算法是一种用于视觉SLAM的端到端神经网络体系结构,在具有挑战性的环境中比以前的工作具有很大的优势。
现有的方法大多采用CNN和RNN相结合来提高VSLAM的整体性能。CNN和RNN可以使用单独的层进行组合,CNN的输出作为RNN的输入。一方面,它可以通过CNN自动学习VO问题的有效特征表示。另一方面,它可以通过RNN隐式地建模时序模型(运动模型)和数据关联模型(图像序列)[185]。2017年,Yu等人[60]将RNN与KinectFusion相结合,对RGB-D采集的图像进行语义标注,以重建3D语义图。他们在RNN中引入了一个新的闭环单元,以解决GPU计算资源消耗问题。该方法充分利用了RNN的优点,实现了语义信息的标注。高级特征具有更好的辨别能力,帮助机器人更好地完成数据关联。由于使用RGB-D摄像机,它们只能在室内环境中运行。DeepSeqSLAM[186]很好地解决了这个问题。在该方案中,可训练的CNN+RNN架构用于从单个单目图像序列联合学习视觉和位置表示。RNN用于整合短图像序列上的时间信息。同时,利用这些网络的动态信息处理功能,首次实现了端到端位置和序列位置学习。此外,能够从大驱动数据集的单个图像序列中学习有意义的时间关系。在运行时间、精度和计算需求方面,基于序列的方法明显优于传统方法,并且可以在室外环境中稳定运行。
CNN可以与VLSAM的许多环节相结合,如特征提取和匹配、深度估计和姿态估计,并在这些方面取得了良好的效果。相比之下,RNN的应用范围较小,但在帮助建立相邻帧之间的一致性方面具有很大优势。RNN是深度学习中数据驱动时序建模的常用方法。惯性测量单元输出的高帧速率角速度和加速度等惯性数据对时序有严格的依赖性,特别适用于RNN模型。基于此,Clark等人[175]提出使用传统的小型LSTM网络来处理IMU的原始数据,并获得IMU数据下的运动特性。最后,他们将视觉运动特征与IMU运动特征相结合,并将其发送到核心LSTM网络,用于特征融合和姿态估计。其原理如图17所示。
与姿态估计相比,我们认为RNN对视觉惯性数据融合的贡献更具吸引力。该方法能有效地融合视觉惯性数据,比传统方法更方便。类似的工作,如[187188],证明了融合策略的有效性,与直接融合相比,融合策略提供了更好的性能。本文在表9中给出了RNN对部分VSLAM的贡献。
本节介绍了深度学习和传统VSLAM与经典神经网络CNN和RNN的结合。表10显示了将神经网络与VSLAM相结合的一些优秀算法。
深度学习在姿态估计、深度估计和闭环检测方面取得了许多成就。然而,在VSLAM中,深度学习目前无法撼动传统方法的主导地位。然而,将深度学习应用于语义VSLAM研究可以获得更多有价值的发现,这可以快速促进语义VSLAM的发展。参考文献。[60158168]使用CNN或RNN提取环境中的语义信息,以提高传统VSLAM中不同模块的性能。语义信息用于姿态估计和回环检测。它显著提高了传统方法的性能,并证明了语义信息在VSLAM系统中的有效性。本文认为,这为现代语义VSLAM的发展提供了技术支持,是现代语义VSLA的开端。使用目标检测和语义分割等深度学习方法创建语义地图,这是语义SLAM发展的重要代表时期。参考文献。[135200]指出,根据不同的目标检测方法,语义SLAM可分为两种类型。一种是使用传统方法检测目标。实时单目对象SLAM是最常见的一种,使用大量的二进制字和对象模型数据库来提供实时检测。然而,它非常有限,因为语义类有很多类型的3D对象实体,例如“汽车”。“SLAM的另一种方法是使用深度学习方法(如[46]中提出的方法)进行对象识别。
语义和SLAM似乎是独立的模块,但实际上并非如此。在许多应用中,两者是并行不悖的。一方面,语义信息可以帮助SLAM提高映射和定位的准确性,特别是对于复杂的动态场景[201]传统SLAM的映射和定位大多基于像素级几何匹配。通过语义信息,我们可以将数据关联从传统像素级升级到对象级,提高复杂场景的准确性[202]。另一方面,通过使用SLAM技术计算对象之间的位置约束,一致性约束可以应用于同一对象在不同角度和不同时间的识别结果,从而提高语义理解的准确性。语义和SLAM的集成不仅大大有助于提高两者的准确性,还促进了SLAM在机器人技术中的应用,如机器人路径规划和导航、根据人类指令搬运物体、做家务以及伴随人类运动等。
例如,我们希望机器人从卧室走到厨房去拿苹果。这是如何工作的?依靠传统的SLAM,机器人计算其位置(自动)和苹果的位置(手动),然后进行路径规划和导航。如果苹果在冰箱中,还需要手动设置冰箱和苹果之间的关系。然而,现在有了我们的语义SLAM技术,人类发送机器人“请去厨房给我一个苹果”就更自然了,机器人会自动完成剩下的工作。如果在操作过程中机器人前面有污染的地面,传统的路径规划算法需要手动标记污染区域,以便机器人可以绕过它[203]。
语义信息可以帮助机器人更好地理解周围环境。将语义信息集成到VSLAM是近年来受到越来越多关注的一个新兴领域。本文将从定位、映射和动态对象移除两个方面阐述我们对语义VSLAM的理解。我们相信深度学习对VSLAM的最大贡献是语义信息的引入。它可以在不同程度上提高传统方法的不同模块的性能。特别是在语义地图的构建方面,推动了整个智能机器人领域的创新。
现代语义VSLAM与传统VSLAM的核心区别在于对象检测模块的集成。它可以获得环境中对象的属性和语义信息[204]。语义VSLAM的第一步是从摄像机获得的图像中提取语义信息。此外,基于图像信息的语义信息可以通过对图像信息进行分类来实现[205]。传统的目标检测依赖于可解释的机器学习分类器,如决策树和支持向量机来分类和实现目标特征。然而,检测过程缓慢,精度低,泛化能力弱[206]。基于深度学习的图像分类可分为对象检测、语义分割和实例分割,如图18所示。
如何更好地从图像中提取语义信息是计算机视觉领域的一个研究热点,其本质是从场景中提取对象特征信息[207]。我们认为,尽管CNN等神经网络也有助于语义信息提取,但现代语义VSLAM更依赖于目标检测等语义提取模块。目标检测和图像语义分割都是从图像中提取语义信息的方法。图像的语义分割是在像素级理解图像,以获得图像中的深层信息,包括空间、类别和边缘。基于深度神经网络的语义分割技术突破了传统语义分割的瓶颈[208]。与语义分割相比,目标检测仅获取图像的目标信息和空间信息。此外,它通过绘制对象的候选框来识别每个对象的类别,因此目标检测比语义分割更快[209]。与对象检测相比,语义分割技术具有更高的准确性,但其速度要低得多[210]。
目标检测分为一级和两级结构[211]。早期的目标检测算法使用两阶段架构。在创建一系列候选框作为样本后,通过卷积神经网络进行样本分类。常用的算法包括R-CNN[212]、快速R-CNN[213]、快速R-CNN[214]等。后来,约洛[215]创造性地提出了一级结构。它直接一步完成两阶段的两个步骤,一步完成对象的分类和定位,并直接输出回归得到的候选框及其类别。一个阶段减少了目标检测算法的步骤,并直接将目标帧定位问题转化为回归问题理论,而无需创建速度优越的候选框。常用算法包括YOLO和SSD[216]。
2014年,R-CNN的出现颠覆了传统的目标检测方案,提高了检测精度,推动了目标检测技术的快速发展,其核心是提取候选区域,然后通过Alexnet获得特征向量,最后使用SVM分类和帧校正。然而,由于RCNN使用的串行特征提取方法,特征提取的速度受到限制。罗斯在2015年提出了快速R-CNN来很好地解决这个问题。在快速R-CNN中使用感兴趣区域池(ROI池)操作以提高特征提取的效率,并使用区域生成网络(RPN)进行坐标校正。在RPN中设置许多候选帧(锚)。然后判断锚与背景的依赖关系,以计算出锚的覆盖区域并确定目标是否被覆盖。此外,YOLO提高了预测精度,加快了处理速度,增加了识别对象的类型,并提出了一种用于目标分类和检测的联合训练方法。YOLO是最广泛使用的目标检测算法之一,提供实时检测和一系列改进版本。
与对象检测不同的是,语义分割不仅可以预测对象在图像中的位置和类别,而且可以准确地描述不同类型对象之间的边界。然而,在语义分割技术中,普通的卷积神经网络无法获得足够的信息。为了解决这个问题,Long等人提出了全卷积神经网络FCN[217]。与CNN相比,FCN没有完全连接的层。新的FCN获得特征地图的空间位置,并将不同深度层的输出与分层结构融合。该方法将局部信息与全局信息相结合,提高了语义分割的准确性。在Badriarayansn等人[218]提出的Segnet网络中,提出了编码器-解码器结构,将两个独立网络结合起来,以提高分割精度。然而,两个独立网络的组合严重降低了检测速度。Zhao等人提出了PSPNet[219]和金字塔模块,该模块融合了每一层的特征,如金字塔,并最终融合输出,以进一步提高分割效果。
近年来,计算机性能的不断提高促进了视觉中实例分割的快速发展。实例分割不仅具有像素级的分类(语义分割),还具有不同对象的位置信息(目标检测),甚至可以检测到相同的对象。2017年,他等人提出了掩模R-CNN[220]。该算法是实例分割的开创性工作。如图19所示,其主要思想是添加一个基于更快的R-CNN的语义分割分支。
虽然基于神经网络的目标检测和分割技术已经很完善,但它需要依靠强大的计算能力来实现实时处理。VSLAM对实时操作有很高的要求,因此如何有效地将所需对象及其语义信息从环境中分离出来将是一项长期而艰巨的任务。作为语义VSLAM的基础,在处理语义分割后,我们将关注语义信息对VSLAM不同方面的影响。我们将详细介绍定位、映射和动态对象移除的三个方面。目标检测和语义分割都是从图像中提取语义信息的手段。表11显示了一些算法的贡献。对象检测比语义分割更快。然而,语义分割在精度上更好。实例分割融合了对象检测和语义分割,在精度上表现突出,但不能保证运行速度。对于一些不能提供原始文件的方案,我们提供了开放源代码,如YOLOV5。
定位精度是SLAM系统中最基本的评估标准之一,也是移动机器人执行许多任务的先决条件[225]。引入环境语义信息可以有效改善视觉SLAM定位中的尺度不确定性和累积漂移,从而在不同程度上提高定位精度[226]。
Bowman等人[177]提出了传感器状态估计和语义地标位置优化问题,该问题集成了度量信息、语义信息和数据关联。在从目标检测中获得语义信息后,他们引入期望最大化(EM),并根据语义分类的结果计算数据关联的概率。他们成功地将语义SLAM转化为概率问题,提高了SLAM系统的定位精度。然而,本文中有许多强有力的假设。例如物体的三维中心的投影应该接近检测网络的中心,这在实践中不容易满足。
2020年,西安交通大学的赵等人[227]提出了一个具有里程碑意义的大规模室外环境视觉语义同时定位和映射系统。其核心是将ORB-SLAM中的3D点云与卷积神经网络模型PSPNET-101中的语义分割信息相结合。它可以构建大规模环境的3D语义地图。他们提出了一种将真实地标与点云地图相关联的方法。它将建筑地标与语义点云相关联,并将从谷歌地图获得的地标与用于城市区域导航的语义3D地图相关联。借助于语义点云,该系统在无GPS信息的情况下,在广泛的户外环境中实现基于地标的重新定位。其过程如图20所示。2018年,苏黎世联邦理工学院基于自动驾驶场景的语义信息提出了VSO[228]。该方案解决了室外照明变化环境下的视觉SLAM定位问题。它建立了语义信息与图像之间的约束,并利用了语义信息不受视角、比例和照明影响的优势。类似地,Stenborg等人[229]也提出了此类问题的解决方案。
在轨迹估计方面,几何特征只能为摄像机姿态提供短期约束,这将在大范围环境的遥感器中产生大的偏差。相反,当光照强度、观察距离和角度变化时,作为高级特征的对象可以保持其语义信息不变。例如,桌子在任何光线和角度下仍然是桌子,其更稳定的性能可以为相机姿态提供长期约束。此外,语义SLAM可以有效地解决传统视觉SLAM对光照变化敏感和干扰系统定位鲁棒性的问题。我们认为VSLAM定位本质上是摄像机姿态估计。语义信息可以提高传统VSLAM系统在强光照和高摄像机旋转下的定位精度。然而,在实践中,语义信息的引入不可避免地会降低整个系统的运行速度,这是VSLAM中亟待解决的问题。我们认为,在大多数情况下,传统的VSLAM在定位精度方面仍然表现良好。然而,语义帮助VSLAM系统提高定位精度也值得研究。表12比较了VSLAM定位的传统方法和语义方法之间的差异。
VSLAM和深度学习的另一个关键节点是SLAM的语义图构建,大多数语义VSLAM系统都基于这一思想[230]。对于机器人来说,要理解环境以及人类,并从一个地方到另一个地方执行不同的任务,需要不同于几何地图所能提供的技能[231]。机器人应该有能力以人为中心理解其环境。它需要区分房间和走廊,或者未来厨房和客厅的不同功能[232]。因此,涉及人类概念(如房间类型、对象及其空间布局)的语义属性被认为是未来机器人的必要属性[233]。近年来,随着深度学习的快速发展,包含语义信息的语义地图逐渐进入人们的视野[234]。语义SLAM系统中的语义地图使机器人能够获得几何信息,例如环境的特征点。此外,它还可以识别环境中的对象,并获得位置、属性和类别等语义信息。与传统VSLAM构建的地图相比,机器人可以具备感知能力。机器人处理复杂环境和完成人机交互非常重要[235]。。语义地图构建是SLAM研究的热点之一[236]。2005年,Galindo等人[237]提出了语义地图的概念。如图21所示,它由两个平行层表示:空间表示和语义表示。它为机器人提供了类似于人类对环境的推理能力(例如,卧室是包含床的房间)。后来,Vasudevan等人[238]进一步加强了人们对语义地图的理解。
近年来,深度学习技术发展迅速。越来越多的研究人员将深度学习与SLAM技术相结合,他们使用目标检测、语义分割等算法来获取环境的语义信息。此外,将其整合到环境地图中以构建环境语义地图[239]。
如图22所示,语义图构建的研究主要分为两个方向:面向场景的语义图构建和面向对象的语义图构造。
大多数面向场景的语义映射基于深度学习方法,将2D语义信息映射到3D点云。面向场景的语义地图可以帮助机器人更好地理解他们的环境[240]。2020年,麻省理工学院提出了Kimera[241]。这是一种成熟的面向场景的语义SLAM算法。参考文献[242]提出了一种面向场景的语义地图构建算法。基于RTABMAP[243],YOLO用于目标检测。在粗略估计物体的位置后,他们使用Canny算子检测深度图像中目标物体的边缘。然后,通过基于区域生长算法的边缘处理,实现了目标的精确分割。通过非深度学习语义分割算法,解决了传统语义地图构建中计算资源大的问题,实时构建了面向场景的语义地图。面向场景的语义地图将帮助机器人更好地理解环境,并构建更具表现力的环境地图。然而,这种方法不能为机器人了解环境提供更多帮助,阻止机器人和个体的环境进行交互,在一定程度上限制了机器人的智能化程度[244]。此外,此类算法需要对场景中的对象进行像素级语义分割,这导致系统计算量大,实时性低。因此,一些学者转向面向对象的语义图构建算法[245]。
面向对象语义映射是指仅包含部分实例语义信息的映射,语义信息独立存在于聚类方法中[246]。这种类型的地图允许机器人操作和维护地图上每个实体的语义信息。因此,这更有利于机器人了解环境并与环境中的实体进行交互,提高地图的实用性[247]。参考文献[45]提出了一种基于mask RCNN和Kinect融合算法的基于体素的语义视觉SLAM系统。在通过MaskRCNN算法进行对象检测之后,将对象检测结果与基于体素前景理论的TSDF模型融合,以构建面向对象的语义图。虽然检测精度得到保证,但仍然无法解决算法实时性差的问题。参考文献[248]提出了一种轻量级面向对象的SLAM系统,有效解决了数据关联和姿态估计问题,并解决了上述方法实时性差的问题。核心框架基于ORB-SLAM2开发,使用YOLOv3作为对象检测器融合语义线程。在跟踪线程中,融合边界盒、语义标签和点云信息,构建面向对象的半密集语义图。实验结果表明,与ORB-SLAM2相比,该方案能够处理复杂环境中具有不同尺度和方向的多类对象,并能更好地表达环境。然而,对于一些大型对象,精确的姿态估计是不可能的。类似地,伦敦大学学院提出了DSP-SLAM[249]。
目前,大多数语义图构建方法需要同时处理实例分割和语义分割,这导致系统的实时性能较差[250]。表13列出了一些语义图构建工作。此外,在处理动态对象时,大多数算法通过消除动态对象来实现系统的鲁棒性,这将使系统失去许多有用信息。因此,面向动态场景的SLAM是一个亟待解决的问题[251]
传统VSLAM算法假设环境中的对象是静态或低运动的,这影响了VSLAM系统在实际场景中的适用性[258]。当环境中存在动态对象(如人、车辆和宠物)时,它们会给系统带来错误的观测数据,并降低系统的准确性和鲁棒性[259]。传统方法通过RANSAC算法来解决一些异常值对系统的影响。然而,如果动态对象占据大部分图像区域,或者移动对象很快,仍然无法获得可靠的观察数据[260]。如图23所示,由于动态对象,摄像机无法准确捕获数据。因此,如何解决动态对象对SLAM系统的影响成为许多研究者的目标。
现在,对于动态对象给SLAM系统带来的干扰问题的解决方案是一致的。也就是说,在视觉里程表之前,使用目标检测和图像分割算法滤除图像中的动态区域。然后使用静态环境点计算摄像机的附近位置,并构建包含语义信息的地图[261]。图24显示了一个典型的结构。虽然不能完全解决动态对象的影响,但系统的鲁棒性大大提高。
图23.传统方法使用几何约束来判断对象是否移动。例如,在(a)中,X是空间中的静态点,因此可以平滑地获得空间变换关系。在(b)中,空间点X1移动到X2后会带来系统误差
2018年,Bescos等人[262]提出了基于ORB-SlAM2的动态场景视觉SLAM的动态SLAM算法。该系统为单目、立体和RGB-D摄像机提供接口。对于单目和立体摄像机,MASK-RCNN用于分割每帧中的动态对象,以避免在SLAM系统中提取动态对象的特征。如果使用RGB-D摄像机,则使用多视图几何方法进行更精确的运动分割。动态段将从当前帧和贴图中删除。但是,该方法选择移除所有可能移动的对象,如停放的汽车。这可能导致剩余的静止特征点太少,并影响相机姿态估计。同年,清华大学团队提出了一个基于ORB-SLAM2的完整的SLAM系统DS-SLAM[263]。其核心是ORB-SLAM2添加了语义网络分段,并作为实时运行的独立线程。它可以移除场景动态分割中的对象,并创建单独的线程来构建密集的语义八叉树图,以帮助机器人实现更高级别的任务。
一些方法使用语义信息隐藏被认为是动态的对象。尽管这些方法在一定程度上改善了动态对象对系统的影响,但“一刀切”方法可能会导致系统丢失许多有用的特征点。例如,停放在路边的汽车可被视为动态对象,其携带的所有特征点均被过滤掉[264]。然而,静止在路边的汽车可以用作系统中的可靠特征点。然而,它甚至可以是高质量特征点的主要来源。参考文献[265]提出将语义信息集成到传统的VSLAM方法中。该方法不需要运动检测。置信度的引入为每个物体提供了不同的可能运动概率,以判断物体是否在运动。此外,语义标签分布与地图点观测一致性相结合,以估计每个3D点测量的可靠性。然后将其用于姿态估计和优化步骤的映射。该方法可以处理被视为动态但静止的对象,例如停在路边的汽车。参考文献[266]基于去除动态对象的光流方法。其核心思想是基于ORB-SLAM2。在前端,使用四个CNN神经网络同时预测每个帧的深度、姿态、光流和语义掩码。通过计算由深度和姿态合成的刚性光流,并与估计的光流进行比较,获得初始运动区域。该算法能够区分当前场景中的运动对象,并保留静态对象的特征点。避免了仅基于类别属性移除运动对象,这导致了SLAM系统的跟踪失败。文章[267]提出了一种基于ORB-SLAM2的视觉SLAM系统,该系统在动态环境中通过丢弃移动特征点,借助于由Mask RCNN获得的语义信息和RGB-D摄像机提供的深度信息,稳健而准确地执行。该方法试图通过找出从可移动对象中提取的静态特征点来为摄像机姿态估计开发更可靠的特征点,当静态对象不能在场景中提供足够的特征点时,这将受益匪浅。
语义信息可以更好地帮助系统解决动态对象带来的干扰,因为计算资源的高消耗。然而,现有方案通常不够实时,无法广泛推广到实际机器人,应用场景非常有限[268]。此外,语义信息可能在摄像机帧速率下不可用,或者可能不总是提供准确的数据[269]。将图像区域分配给错误的语义类可能不必要地将其排除在姿势估计之外,这在稀疏纹理环境中可能是至关重要的[270]。该问题的当前解决方案集中于使用光流等方法来检测场景中移动的物体[271]。尽管现有算法在数据集上取得了良好的结果,但在实际工程中并没有取得非常可靠的结果。表14显示了近年来使用深度神经网络改善动态环境的VSLAM算法。
同时定位和映射是机器人界的一个主要研究问题,在机器人界,大量的工作致力于开发新方法,以最大限度地提高其鲁棒性和可靠性。基于视觉的SLAM技术经历了多年的发展,出现了许多优秀的算法,已成功应用于机器人和无人机等各个领域。深度学习的快速发展推动了计算机领域的创新,两者的结合成为一个活跃的研究领域。因此,VSLAM的研究受到越来越多的关注。此外,随着智能时代的到来,对移动机器人的自主性提出了更高的要求。为了实现机器人的高级环境感知,语义VSLAM被提出并迅速发展。传统的VSLAM在构建环境地图时仅恢复环境的几何特征,无法满足机器人导航、人机交互、自主探索等应用的要求。但早期的语义图构建方法一般采用模型库匹配方法,需要提前构建对象模型库,局限性大,不利于推广应用。随着计算机性能的提高和深度学习技术的快速发展,VSLAM技术与深度学习技术相结合,以弥补传统VSLAM系统的不足。近年来,深度学习技术作为最有前景和最具优势的计算机视觉处理方法,受到了SLAM研究者的广泛关注。在语义SLAM系统中,环境语义信息可以通过深度学习技术直接从预训练图像集和实时感知图像集学习。它还可以更好地利用大型数据集,使系统具有更强的泛化能力。在构建语义地图时,语义SLAM系统可以使用深度学习方法检测和分类环境中的对象,并构建信息更丰富的地图,具有更好的实用性
在本文中,我们研究了大多数最先进的视觉SLAM解决方案,它们使用特征来定位机器人并绘制其周围环境。我们根据基于特征的视觉SLAM方法所依赖的特征类型对它们进行分类;传统VSLAM和VSLAM与深度学习相结合。对每个类别的优势和劣势进行了彻底调查,并在适用的情况下突出了每个解决方案克服的挑战。。这项工作证明了使用视觉作为唯一外部感知传感器来解决SLAM问题的重要性。这主要是因为相机是一种理想的传感器,因为它轻便、被动、低功耗,并且能够捕获关于场景的丰富而独特的信息。然而,由于移动的人或物体、无特征区域的幻影、昼夜转换或任何其他不可预见的情况,视觉的使用需要可靠的算法,在可变的照明条件下具有良好的性能和一致性。因此,使用视觉作为唯一传感器的SLAM系统仍然是一个具有挑战性和前景的研究领域。图像匹配和数据关联分别是计算机视觉和机器人视觉中的开放研究领域。检测器和描述符的选择直接影响系统跟踪显著特征、识别先前看到的区域、建立一致的环境模型和实时工作的性能。数据关联尤其需要长期导航,尽管数据库不断增长,环境不断变化和复杂。接受不良关联将导致整个SLAM系统中的严重错误,这意味着位置计算和地图构建将不一致。
此外,我们强调了融合语义信息的VSLAM的开发。结合语义信息的VSLAM系统在鲁棒性、精度和高级感知方面取得了更好的结果。语义VLSAM的研究将受到更多关注。语义VSLAM将从根本上提高机器人的自主交互能力。
结合其他研究,我们对VSLAM的未来发展做出以下展望:
(1)工程应用。经过几十年的发展,VSLAM已广泛应用于机器人等许多领域。然而,SLAM对环境光照、高速运动、运动干扰等问题敏感,因此如何提高系统的鲁棒性,长时间构建大比例尺地图都是值得挑战的。SLAM中使用的两个主要场景基于智能手机或无人机等嵌入式平台,以及3D重建、场景理解和深度学习。如何平衡实时性和准确性是一个重要的开放问题。动态、非结构化、复杂、不确定和大规模环境的解决方案仍有待探索。
(2) 理论支持。通过深度学习获得的信息特征仍然缺乏直观意义和明确的理论指导。目前,深度学习主要应用于SLAM的局部子模块,如深度估计和闭环检测。然而,如何将深度学习应用于整个SLAM系统仍然是一个巨大的挑战。传统的VSLAM在定位和导航方面仍然具有优势。虽然传统方法的一些模块通过深度学习进行了改进,但深度学习的范围一般不广,在某些数据集可能会取得良好效果,但在另一场景中可能不稳定。定位和映射过程涉及大量数学公式,深度学习在处理数学问题时存在缺陷,而使用深度学习进行相关训练的数据较少,这种方法更为传统。SLAM框架没有显著的优势,目前还不可用。SLAM技术的主要算法。未来,SLAM将逐渐吸收深度学习方法并改进训练数量。数据集用于提高定位和映射的准确性和鲁棒性。
(3) 高级环境信息感知和人机交互。随着深度学习的进一步发展,语义VSLAM的研究和应用将有巨大的发展空间。未来智能时代,人们对智能自主移动机器人的需求将快速增长,如何利用语义VSLAM技术更好地提高机器人的自主能力将是一项长期而艰巨的任务。尽管近年来取得了一些优秀的成果,但与经典的VSLAM算法相比,语义VSLAM仍处于发展阶段。目前,语义SLAM的开源解决方案并不多,语义SLAM的应用还处于初始阶段,主要是因为构建准确的语义地图需要大量计算资源。该遥感器严重干扰了SLAM的实时性能。随着未来硬件水平的不断提高,SLAM系统实时性差的问题可能会得到很大改善。
(4) 建立健全评价体系。语义VSLAM技术近年来发展迅速。然而,与传统的VSLAM相比,目前还没有完善的评价标准。在SLAM系统研究中,ATE或RPE通常用于评估系统性能。然而,这两个评估标准都是基于SLAM系统的姿态估计结果,对于地图构建的效果没有公认的可靠评估标准。对于语义SLAM系统,如何评估语义信息获取的准确性以及如何评估语义地图构建的效果是语义SLAM的评估标准中应该考虑的问题。此外,仅通过主观指标进行评估并不是一个长期解决方案。未来,如何建立语义VSLAM的系统评价指标将是一个热门话题。