近年来,SLAM开始与语义信息相结合,语义信息包含环境中物体的位置、方向、颜色、纹理、形状和特定属性。与过去的SLAM方法相比,语义vSLAM不仅可以在映射过程中获得环境中的几何结构信息,还可以识别环境中的物体并获得语义信息,以适应复杂的环境,执行更多的智能任务。传统的vSLAM方法往往基于静态环境的假设,而语义vSLAM可以预测动态环境中物体的可移动属性。语义vSLAM中类似的物体信息表示可以共享,通过维护共享的知识库,改善SLAM系统的操作和存储效率。此外,语义vSLAM可以应用于智能路径规划和导航,如服务机器人选择运送物资的最佳路径。
语义vSLAM的框架可以大致分为语义信息提取模块和vSLAM模块,如图2所示。此外,语义vSLAM方法的关键是准确识别环境中的对象。对于语义提取的过程,我们可以把它看作是识别图像中感兴趣的对象并获得对象的信息。多年来出现的深度学习技术是最有希望的语义提取方法,如CNN和R-CNN。
它们的语义提取精度和实时性可以满足SLAM的要求。常用的vSLAM提取语义信息的方法有三种,即物体检测[21]-[28],语义分割[29]-[32],以及实例分割[33]。此外,对语义对象关联的处理也是至关重要的。
一阶段法:速度快
语义vSLAM通常采用SDD[21]或YOLO系列、(YOLOv1[22],YOLOv2[23],YOLOv3[24],YOLOv4[25])作为单阶段对象检测方法。SSD[21]是第一个基于DNN的实时物体检测器,在PASCAL VOC数据集[34]中达到70%以上的mAP,在TitanX中达到40 FPS。YOLOv1[22]速度和检测性能与SSD相当,被应用于语义vSLAM的物体检测[39]。Redmon等人提出了YOLOv2[23],它在识别类型、检测精度、速度和定位精度方面比YOLOv1和SSD有很大的改进。YOLOv3[24]借鉴了残余网络结构和多尺度检测思想,形成了更深的网络层次,提高了平均精度(mAP)和小物体检测。
[36]-[38]利用SSD检测静态物体,不考虑动态物体,但Zhong等人[35]通过SSD检测器检测潜在的移动物体(如人、车辆、动物),并剔除它们的区域以消除动态物体对姿势估计的影响。(相当于利用先验知识去删除特征点,但是这些潜在区域也可能是静止的)。Bavle等人[40]提出了一种基于室内环境语义信息的粒子过滤器定位方法。他们将语义信息融合到先验地图中,协助空中机器人进行精确定位。在室外语义vSLAM中,[41]、[42]分别使用YOLOv2检测室外车辆和街道路标,获得大量的物体测量,提高了定位精度。Yang等人[11]提出了一种适用于室内和室外场景的单图像三维立体检测方法,通过YOLOv2检测器和消失点技术获得三维语义物体。因此,大量的语义vSLAM工作[43][48]使用这种检测器来满足动态环境中物体检测和定位的准确性。在这些方法中,Nicholson等人[43]专门设计了一个基于YOLOv3的物体检测器的传感器模型。
二阶段法:精度更高
一些工作(如[2],[49])采用两阶段检测器进行物体检测,如R-CNN [26], Fast R-CNN [27], Faster R-CNN [28]。两阶段检测器需要获得区域建议,对结果进行分类,并调整候选边界框位置。
Li等人[2]认识到Faster R-CNN在检测小物体方面表现良好,因此利用语义信息和稀疏特征测量之间的空间-时间一致性关系来跟踪静态和动态物体。Iqbal等人[49]提出了基于Fast RCNN[28]和MobileNet[50]的混合检测器思想,系统可以灵活地使用不同的物体检测器来应对不同环境下的物体检测。此外,Li等人在[51]中把文本对象引入语义图,他们使用EAST文本检测器[52],并为检测到的文本斑块提供方向性信息。
但由物体检测器获得的物体边界框也包含前景和其他物体信息,这影响了物体重建和全局定位的准确性。因此,研究人员尝试使用语义分割或实例分割来获得像素级的物体。
U-Net [29], Bayesian SegNet [30], SegNet [31], PSPNet [32]。U-Net是最常用的分割模型之一,它简单、高效、易于构建,而且只需要少量的数据集进行训练。SegNet也经常被用于户外环境下的语义分割任务[54]-[56],其优点是更好地保存图像边缘信息和更高的运行速度。PSPNet考虑了前后关系匹配问题,即使在复杂的环境中也显示出良好的分割效果。
Qin等人[53]基于UNet模型将图像像素分为不同类别,如车道、停车线、减速带和障碍物。因为这些类别的物体具有清晰和稳定的特征,所以它们被用来提高定位的准确性。此外,停车线也被用于车位检测,障碍物被用于路径规划。[54]-[56]基于相同的框架[57],各自提出了一个完整的动态语义vSLAM系统。不同的是,[54]和[56]默认剔除了潜在的移动物体,而[55]将语义分割与移动一致性检查方法相结合,以过滤掉场景中的动态区域。Liu等人[58]利用PSPNet获得沙发、橱柜和书桌的语义标签,以构建高精度的语义场景图。
语义分割可以在像素级识别物体,但不能区分同一类别的物体实例。
为了检测动态对象实例,语义 vSLAM 开始使用实例分割方法,获得图像的像素级语义分割。实例分割是对象检测的进一步细化,以实现像素级对象分离。但是,它无法达到与目标检测相同的实时性能。Mask-RCNN[33],一种基于图像的实例级分割算法,可以分割出八十个语义对象类标签。
[60]-[62]不仅可以实时跟踪和重建场景中的静态背景和物体,而且具有强大的跟踪精度。
虽然现阶段三种语义提取方法可以满足语义vSLAM的基本要求,但要将语义提取方法有效地集成到语义vSLAM系统中,在识别精度和操作速度方面还有很大的提升空间,因为在许多复杂的环境中,存在着动态或遮挡的物体,这将影响物体检测的性能。为了解决这些挑战,vSLAM和语义提取方法在未来需要相互补充,帮助机器人完成更多的智能任务。
图像集 ,从开始到当前时刻T
当前环境包含的物体标签,如门,椅子,桌子,人和车辆
xt为图像It对应的相机位姿,ut是vSLAM在时间t的运动测量值,Rt是相机姿势噪声的协方差矩阵。
多了Lt为观测目标测量值,yt是路标点测量,zt为传感器观测值,
SLAM 系统创建关键帧:
假设当前场景中有一些可检测的物体,每个关键帧 Fd 可以通过物体检测方法检测Nd个物体测量值。通常,一个关键帧有多个对象测量值,可以表示为一个集合:
其中 Ldi 表示关键帧中第i个对象的测量信息,通常由对象类别 Ldic∈C 、检测置信度 Ldis 和对象检测边界框 Ldib 组成。
环境中地标的数量远小于物体观测的数量。原因是可以在连续的关键帧中观察到相同地标,并且在每个关键帧中检测到多个对象测量值。因此,引入了物体关联(object association)S的概念,它规定了跨关键帧的物体观测与同一地标相关联。每个物体测量值Ldi被分配一个唯一的地表Ok
在t时刻有dt个关键帧与一个关键帧对应的Nd个物体观测,物体关联可以表示为
随着机器人的长期移动,物体测量值的数量会不断累积。因此,物体关联是一个动态过程,随着不断获得的物体测量值而变化。在t时刻,在[36]-[38], [63], [64]中估计物体关联。
其中 X、L、Z 分别是通过 SLAM 算法从所有相机位姿 X 、物体测量值 L 和传感器测量值 Z 中选择的子集。一旦实现了对象关联,就需要使用对象和相机优化的结果来更新相机和对象位姿:
对象关联作用:准确地将语义对象的测量值与对象地标联系起来。它还可以为更新相机位置和物体位置提供正确的优化约束。
对象关联的难点:当前图像中存在多个类别相同、外观相似、位置接近的物体时,正确地将新的物体测量值与地图中现有的三维地标联系起来。物体关联有助于机器人获得环境中真实物体的数量,并将它们整合到语义地图中,提高对环境的感知能力。
然而,现实环境中存在许多不确定的因素,如大量具有相同类别和位置接近的物体,这大大降低了物体关联的准确性。[64]分层对象关联策略大大减少了位置和外观相似的对象之间的错误关联,包括短期对象关联和全局对象关联。[65]采用了不同的策略来关联动态和静态物体。静态物体测量的关联是基于[66]中的特征点匹配机制。对于动态物体的关联,他们考虑了物体在短时间内的恒定速度和特征点匹配这两个主要特征,然后通过重投影方法将物体测量值与地图中的地标进行关联。(跟特征点很像)
近年来,语义VSLAM中的语义提取方法和物体关联策略受到广泛关注。此外,目前的概率物体关联策略是提高SLAM系统感知能力的最佳方法之一,但其鲁棒性和通用性需要进一步提高。此外,由于现实世界环境的复杂性,语义提取和物体关联的准确性极易受到影响。
语义和SLAM技术是相互促进的两个部分。语义信息与定位和建图相结合,可以提高定位和场景理解的准确性。近年来,语义vSLAM技术推动了定位和测绘的发展,对自主驾驶、移动机器人和无人机等研究领域产生了重大影响。本节将重点讨论语义定位和语义建图的两个方面。
定位的目的是让机器人在未知环境中获取其方位,即确定其在该环境的世界坐标系中的位置。传统vSLAM易受环境因素影响,导致定位失败。尽管如此,可以在vSLAM中提取丰富的语义信息,帮助车辆和机器人感知环境中的高级信息。此外,语义信息中存在几何约束,可以有效提高系统的定位精度。
长期的户外视觉导航必须面临长时间运行、跨天气、光照变化明显等挑战。在这些挑战下,图像和地图之间的特征很难可靠地匹配,最终导致定位精度差甚至定位算法完全失败。为了解决这些问题,一些研究人员尝试基于语义分割图像和语义点特征图的定位算法[70],解决了长期视觉定位的问题。还有人在[71]中建立了基于跟踪过程中语义信息的中期约束,减少了视觉里程计的漂移误差。面对剧烈的视点变化,[72]用语义图描述符匹配进行全局定位,以实现多视角下的定位。
室内机器人定位问题的挑战性不亚于室外问题。 vSLAM系统仍然依赖表面的图像信息来感知环境,缺乏认知层面的能力。当进入具有动态或明显光照变化的复杂室内环境时,SLAM 的鲁棒性和可靠性尚未达到实用性。在提高机器人在环境中的认知能力方面,[43]提出了一个物体层面的语义vSLAM系统,首次采用双二次曲面表示3D地标,包含地标的大小、位置和方向。同时,他们推导出了因子图的公式,在解决对象关联的假设下联合估计对偶二次曲线和相机位姿参数。同样,[11]是一种基于单目的三维物体检测和建图方法,在语义物体约束的帮助下,改善了摄像机的姿势,减少了单眼漂移。EAO-SALM[47]借鉴了[43]和[11]的思路,是一个基于iForest(异常检测的孤立森林)的物体姿势估计框架。该框架包含一个离群的中心点、比例估计算法和一个物体姿势初始化算法,这大大促进了联合姿势优化。然而,[43]、[47]没有考虑动态物体因素,在没有物体细节的稀疏地图中椭圆或矩形代表了创建的物体。因此,研究者注意到,语义信息可以帮助区分静态和动态物体,提高机器人在动态环境中的定位精度和稳健性。采用语义信息来分割移动物体并过滤掉与移动物体相关的特征点[35], [55], [73]是经常实施的方法之一,改善了动态环境中的系统定位。
可见,融合语义信息是提高机器人定位性能的根本途径。在改进定位方面,语义工作通常用于 SLAM 系统初始化、后端优化、重新定位和闭环阶段。因此,有效地处理和利用语义信息对于提高定位精度至关重要。
建图是SLAM的另一个目标,它在vSLAM中为定位服务。通常情况下,我们希望机器人保存地图,这样机器人在接下来的工作中就不需要重复构建地图,节省大量的计算资源。在应用中,由vSLAM构建的地图包括稀疏地图[57],[74],半稠密地图[75],以及稠密地图[76],[77]。与稀疏地图相比,稠密地图包含许多三维空间点来描述地图,更适用于定位、导航、避障和重建。
然而,传统的vSLAM地图缺乏用于人机交互的高层次环境语义信息,使得机器人无法完成智能避障、识别、交互等复杂任务。为了更好地解决地图问题,建立一个准确可靠的三维语义地图越来越重要。早期的语义地图[5]往往采用先验的物体CAD模型数据库来构建三维语义地图,这样可以还原真实场景,并为存储密集的点云地图节省大量空间。尽管如此,CAD模型仅限于预先定义的数据库中的物体。在[9]、[69]、[78]、[79]中,研究人员建立了静态稠密语义地图,它将密集的vSLAM与语义分割标签整合在一起。对于动态环境重建,[10]、[35]、[60]采用实例感知的语义分割,将物体分类为背景、移动物体或潜在的移动物体。然而,他们未能实现系统的实时性能。考虑到语义vSLAM在映射中的实时性问题,一些研究人员[43],[48]试图构建稀疏语义图。以[11]、[36]、[44]、[47]、[51]、[64]为代表,这些方法基于ORB-SLAM2框架,将语义对象与实时构建稀疏的三维语义对象地图相结合。
必须指出的是,与传统的视觉地图相比,语义地图在智能场景中的应用更为广泛。然而,它需要面对复杂的计算、不同类型对象的识别以及地图存储等挑战。
最经常使用的SLAM数据集包括KITTI[80]、TUM RGB-D[81]、ICL-NUIM[82]和EuRoC MAV[83]。这些数据集收集自不同的环境,适合不同的vSLAM算法。因此,找到合适的数据集来评估vSLAM是非常重要的。最近,Liu等人[84]整理了过去十年SLAM工作中常用的数据集,并对其进行了全面的介绍和分析,这将有利于SLAM界找到合适的数据集。然而,这项调查并没有对适合语义vSLAM的数据集进行详细的介绍和分析。为了填补这一空白,我们组织了适合语义vSLAM的数据集,从中进行评估和比较。
注释信息主要介绍了数据集是否包含语义注释,这可以帮助语义vSLAM验证其性能,并为训练检测模型提供大量的注释信息。其他略过。
TartanAir[85]采用虚幻引擎,使用微软开发的AirSim插件收集数据[104]。与传统的数据集相比,模拟中收集的数据集包含各种物体、运动多样性和多样化的场景。
Cadena等人[18]调查了过去三十年来SLAM的发展,并讨论了SLAM正在进入一个新的时代,即鲁棒感知时代。与之前的纯几何vSLAM相比,新阶段的感知SLAM具有更强大的性能和更高的环境理解水平,这归功于将图像语义信息应用于SLAM的姿势估计、闭环和建图。因此,本节将回顾vSLAM的发展历史并介绍近年来语义vSLAM的发展。
传统的vSLAM系统基于图像信息估计机器人在未知环境中的姿态,并建立低级地图,这些地图采用多视角几何原理。目前,传统的vSLAM系统主要有基于滤波的方法[113],[114],基于关键帧的BA方法[66],[115]和直接跟踪方法[116],[117]。基于滤波器的vSLAM方法将每个时刻的系统状态视为高斯概率模型,并根据滤波器帮助机器人预测出准确的姿势。即使有各种噪音,滤波总是能预测出机器人的真实运动。例如,[113]选择了扩展卡尔曼滤波器(EKF)。由于视觉SLAM的姿势估计问题不是线性的,EKF不能保证姿势估计的全局最优性。PTAM[115]作为第一个基于关键帧BA的单目vSLAM系统,为后续基于关键帧的BA vSLAM工作奠定了基础。
ORB-SLAM[66]是在PTAM架构的基础上,增加了地图初始化和回环的功能,以及关键帧选择和映射的优化。在定位方面,其定位误差比[113], [115]小得多。不久,同一个研究团队不断改进ORBSLAM,并发布了开源的vSLAM系统(即ORBSLAM2 [57], ORB-SLAM3 [74])。这些系统的定位精度远远高于[76]、[77]、[118]。直接跟踪方法(即DTAM[116],LSD-SLAM[117])不依赖于特征点的提取和匹配,而是通过构建前后两帧之间的像素灰度值的光度误差来解决摄像机的运动问题。在特征缺失和图像模糊的情况下,这些方法比前两种方法具有更好的稳健性。但是,直接跟踪方法对光照变化和动态干扰更加敏感,所以定位精度一般不如[57]、[66]。
正如III-B节所介绍的,传统的vSLAM通过点云来表示周围的环境,如稀疏地图、半稠密地图和稠密地图。由于这些地图中的点云并不对应于环境中的物体,它们对机器人来说是没有意义的,如图3c所示。因此,研究人员试图利用几何和先验的感知信息来浓缩三维点云的特征并理解它们,这有助于机器人感知高层次的环境细节。恰逢语义概念的兴起,vSLAM系统与语义信息解决方案相结合,大大提高了机器人感知未开发环境的能力。在图3中,语义信息给点云贴上了语义标签,帮助建立了三维地标信息的语义地图。经过多年的发展和验证,语义信息提高了vSLAM对环境的鲁棒性,实现了更精确的回环。
语义vSLAM的早期工作可以追溯到Salas-Moreno等人[5]的早期调查。他们意识到,传统的vSLAM系统是在低级别的基元上运行的,需要进行严格的处理。此外,用传统的方法建立的地图只是有噪声的点云,并不像人类视觉中显示的地图那样。值得注意的是,该系统仅限于预先建立的物体数据库,并对检测到的物体的位置有严格要求。然而,它为语义vSLAM的后续发展提供了必要的基础。近年来,基于特征点的vSLAM系统在定位方面表现出突出的准确性和鲁棒性,因此,研究人员试图在ORB-SLAM2算法框架的基础上构建一个语义vSLAM系统。例如,在[11]、[36]、[64]中,研究人员将三维矩形引入地图,以构建一个轻量级的语义地图。其他研究人员[43], [45], [119]采用语义3-D椭圆来构建语义地图,因为它们能够紧凑地表示地标的大小、位置和方向。Liao等人在[43]的基础上加入了三个空间结构约束,并提出了一个具有完全耦合的三个空间结构约束的室内环境单目物体级SLAM算法[39]。不久之后,EAO-SLAM[47]整合了[11]、[43]的方法,并基于iForest方法改进了物体姿势估计,使得更准确地估计地标的位置、姿势和比例成为可能。
然而,以前关于语义VSLAM的工作往往假设场景是静态的,这限制了其应用场景。这些方法在面对动态环境时无法获得定位和映射的鲁棒性。为了解决这一难题,一些研究者提出了动态离群点检测策略来去除动态物体。例如,基于语义分割的运动一致性检查算法[55],基于语义分割的多视图几何算法[59],以及运动物体检测器[35]。[120]使用先验语义信息建立一个高效的在线概率模型来监测动态异常值。在[121][123]中,他们将动态物体区域变成现实的静态图像,改善了动态环境中基于视觉的定位和映射任务。此外,其他研究人员在文献[124]-[126]中关注物体运动跟踪和姿态估计。[127]整合了他们之前的工作[125],[126],提出了一个新颖的基于特征的动态SLAM系统,利用语义信息来定位机器人,建立环境结构,并跟踪刚性物体的运动。他们依靠更密集的物体特征来确保比[125]更稳健的跟踪,而且他们的物体跟踪精度比[126]好得多,因为他们的方法可以跟踪被遮挡的物体。
综上所述,近年来,语义vSLAM的发展受到了广泛关注,但许多解决方案仅限于特定场景,在实际应用中面临许多挑战。当面临在短时间内处理大量的语义对象测量时,有效的过滤和语义信息的关联仍然值得进一步研究。
Full Shape:是否可以完全重建该物体?Detailed Shape:是否有可能知道重建物体的详细形状?Large Scene:能否用于大型场景?Dynamic Scene:能否用于动态场景?FPS:语义上的vSLAM运行速率(/表示运行速率未知)。Online:系统能否在线运行?
一些语义SLAM工作使用多模态传感器(例如,RGB相机、深度相机、LiDAR)在未知环境中进行姿势估计和绘图。多模态语义SLAM系统在复杂和动态环境中可以更加稳健和准确。因为这些系统纳入了多模态语义信息,减少了物体关联的模糊性。此外,这些系统能更准确地识别动态物体,以减少由动态物体引起的定位漂移。当然,经过处理的多模态环境信息可以用来构建稠密的语义图。然而,在复杂和高度动态的环境中,仅靠这些传感器获得的语义信息已经不能满足实际需要。因此,未来的语义SLAM工作可以尝试融合更多的传感器(如毫米波雷达、红外相机和事件相机)和先前的语义地图(如2.5D地图)。虽然多模态方法可以获得更丰富的物体语义信息,并有助于改善物体关联的模糊性,但它们也带来了挑战,如多个传感器的校准和同步,实时融合,以及多模态语义信息的关联。
多机器人系统是机器人学中最重要的研究方向之一。在多机器人合作SLAM系统中,机器人之间的相互通信和协调可以有效利用空间分布的信息资源,提高解决问题的效率。而且,系统中单个机器人的损坏不会影响其他机器人的运行,比单机器人系统具有更好的容错性和抗干扰性。在传统的SLAM研究中,多机器人系统的协作方法有两种。一种是每个客户机器人单独建立一个局部地图,服务器接收并融合所有的局部地图,建立一个全局一致的地图。另一种是去中心化的架构。多机器人协作的前提是如何高效、准确地进行多机器人全局定位,但基于外观的定位方法很难在显著的视点差异和光线变化下实现准确定位。最近,语义信息(如文本信息)的融合有助于多机器人系统更加稳健,这归功于基于外观和上下文的语义定位方法,可以稳定而准确地进行全局定位。此外,多机器人为语义vSLAM带来了多视角语义信息。例如,在物体关联中,从多视角观察物体会增加对同一物体的观察次数,可以有效避免物体关联的模糊性问题。但它也同时增加了计算成本。
语义信息的获取和关联仍然是语义vSLAM系统中值得研究的问题。目前的语义信息获取方法是基于深度学习模型的,而模型的泛化和准确性决定了语义信息的准确性。例如,当一个物体被遮挡时,它很容易被物体检测方法所忽略。随着物体测量值的积累,正确地将物体测量值与地图点联系起来变得更加困难。目前的物体关联方法通常是基于语义信息,如距离、方向和外观。然而,当环境中出现相同类别的物体、相互靠近的物体、被遮挡的物体或动态物体时,采用传统的方法不可能准确地关联物体。因此,我们需要更深入的研究来挖掘潜在的语义信息约束,从而改善物体关联和全局定位。(有什么方法可以关联?)