动态SLAM论文(6) — Dynamic-SLAM: Semantic monocular visual localization and mapping...

目录

1 引言

2 Related work

2.1. 视觉 SLAM

2.2. SSD目标检测网络

2.3. SLAMIDE问题和深度学习

3 System overview and approach

3.1. 漏检补偿算法

3.2. 基于先验知识的动态物体确定

3.3. 物体检测模块和选择性跟踪

扫描二维码关注公众号,回复: 15894481 查看本文章

 4 Experiments and result

4.1. SSD目标检测验证

4.2. 抗动态物体干扰测试

 4.4 使用TUM动态数据集进行室内精度测试

4.5. KITTI数据集中的户外动态大规模地图构建

4.6.使用移动机器人进行实际环境测试

 5 结论


本论文对比实验非常丰富,原文论文也长达17页

摘要:在动态环境中工作时,传统的SLAM框架由于受到动态物体的干扰而表现不佳。为了解决动态环境下SLAM的问题,提出了一种基于深度学习的语义同时定位与地图构建(Dynamic-SLAM)框架。首先,基于卷积神经网络构建了一个结合先验知识的SSD目标检测器,用于在新的检测线程中以语义级别检测动态物体。然后,针对现有SSD目标检测网络的低召回率问题,提出了一种基于相邻帧中速度不变性的漏检补偿算法,大大提高了检测的召回率。最后,构建了一个基于特征的视觉SLAM系统,通过跟踪线程中的选择性跟踪算法处理动态物体的特征点,以显著减少错误匹配所导致的位姿估计误差。与原始的SSD网络相比,该系统的召回率从82.3%提高到了99.8%。多个实验证明,Dynamic-SLAM系统的定位精度高于现有最先进系统。该系统成功地利用移动机器人在实际动态环境中实现了精确的定位和构建环境地图。总之,我们的实验验证了Dynamic-SLAM在机器人定位和地图构建方面相对于最先进的SLAM系统在动态环境中具有改进的精度和鲁棒性。

1 引言

        SLAM[1]已经发展了大约30年,并成为机器人、自动化和计算机视觉领域的关键技术。相比其他传感器模式,相机更便宜并提供丰富的视觉和环境信息,未来有巨大的发展空间。目前,微型空中飞行器(MAV),无人地面车辆(UGV),自动驾驶,虚拟现实(VR)和增强现实(AR)等应用需要SLAM技术提供可靠的定位和地图构建结果。然而,在视觉SLAM中,特别是在动态环境中,姿态估计的鲁棒性和准确性仍然存在许多重要挑战。

        为了使视觉SLAM系统在动态环境中正常工作,通常的方法是避免使用动态物体上的特征点。因此,有必要提前计算动态物体的位置。与此同时,基于深度学习的目标检测和语义分割在这方面取得了显著的成果。将深度学习技术应用于SLAM对于解决机器人在实际动态环境中的定位和地图构建问题至关重要。

        本研究基于ORB-SLAM2 [2]构建了Dynamic-SLAM,它是一个基于深度学习的语义单目视觉SLAM系统,针对动态环境。Dynamic-SLAM主要包括视觉前端,包括两个线程和一个模块,即跟踪线程、目标检测线程和语义纠正模块;以及SLAM后端,主要包括局部地图线程和闭环检测线程。该框架如图1所示,将在第3节中详细介绍。Dynamic-SLAM可以成功地在复杂的室内和室外动态环境中实时运行。它可以解决行人和车辆存在时的定位、BA(捆绑调整)、闭环检测、稀疏重建等问题。它可以满足正常实际环境中的定位和地图构建需求。本文的主要贡献如下:

  • 鉴于现有 SSD 目标检测网络的低召回率,提出了一种基于相邻帧间速度不变性的漏检补偿算法,用于 SLAM 系统,大大提高了检测的召回率,并为后续模块提供了良好基础。
  • 提出了一种选择跟踪算法,以简单有效的方式消除动态物体,提高系统的稳健性和准确性。
  • 构建了基于特征的视觉动态 SLAM 系统。基于 SSD 卷积神经网络,构建深度学习技术,实现了机器人定位和建图中的动态物体语义级别检测,结合先验知识。 

 图1 Dynamic-SLAM的系统概述。通过单目摄像头捕获的图像作为SLAM模块和目标检测模块的输入数据。 通过语义修正模块后,目标检测模块的输出数据实时反馈给SLAM模块。

2 Related work

2.1. 视觉 SLAM

        在过去的十年里,视觉 SLAM 取得了快速发展。由于其成本低、体积小,吸引了研究者的关注。Davison 等人是视觉 SLAM 的先驱者。2007 年,他首次提出了 Mono-SLAM [3] 来实现单目实时 SLAM 系统。随后,Klein 等人提出的 PTAM [4](并行跟踪与地图构建)创造性地将整个系统分为两个线程:跟踪和地图构建,成为后续 SLAM 研究的基准。2014 年,Engel 等人提出的 LSD-SLAM [5] 阐明了像素梯度与直接方法的关系。与此同时,Forster 等人提出了快速半直接单目视觉里程计(SVO)[6,7],结合了特征点和直接跟踪光流法。随后,DSO [8]、VINS-Mono [9] 等框架也采用了直接方法。这种方法在跟踪和匹配中节省了计算资源,但对特征的不敏感性是其进一步应用于 SLAM 中的致命弱点。

        为了建立一个完整而强大的SLAM框架,使用特征点是必不可少的。一方面,特征提取和匹配可以确保SLAM跟踪中位姿估计的准确性。另一方面,特征方法可以从视觉图像中提取更有效的信息,如语义、物体识别、特征定位等。实际上,Leutenegger提出的OKVIS [10]视觉惯性测距框架,以及Mur-Artal等人提出的ORB-SLAM [11]和ORB-SLAM2 [2]都是基于特征跟踪的成功SLAM应用。

        ORB-SLAM2框架是经典SLAM线程模型的继任者。为了完成SLAM系统,它使用ORB [12]特征点和三个主要的并行线程:实时跟踪线程,用于跟踪特征点;局部建图线程,用于构建局部捆绑调整(Bundle Adjustments,BA)地图;闭环线程,用于纠正累积漂移并进行位姿图优化。它可以使系统在大场景和大回环下长时间运行,从而确保轨迹和地图的全局一致性。

        ORB-SLAM2是最佳的定位和建图框架之一。然而,在处理动态环境问题方面,它仍有许多不足之处,需要进一步探索。

2.2. SSD目标检测网络

        目前,基于卷积神经网络的目标检测和语义分割方法在速度和准确性方面不断取得突破。深度学习在相关任务上的性能逐渐超过其他方法,成为主流。

        与图像识别相比,目标检测更加困难,因为它不仅需要对图片中的不同对象进行分类,还需要给出每个对象的位置。以R-CNN [13]为首的以神经网络为基础的方法,如SPP-Net [14]、Fast R-CNN [15]、Faster R-CNN [16]等,利用卷积神经网络自动学习特征,并避免手动设计特征的限制。它们通过候选框提取、特征提取和分类等多个操作来获得目标检测结果。尽管这些方法具有很高的精度,但因为候选框提取和目标识别是两个步骤进行的,所以非常耗时。相比之下,YOLO(You Only Look Once)[17]算法直接通过单个卷积神经网络处理每个边界框的回归问题,并预测相应类别的概率,从而实现快速和较高的准确性。

        Liu等人提出的SSD(Single Shot MultiBox Detector)[18]借鉴了Faster-RCNN中的Anchor boxes来适应不同形状的物体。它是Dynamic-SLAM中特征点的识别器,使用VGG16的基本网络结构,将前五层保持不变,使用à trous [19]算法将fc6和fc7层转换为两个卷积层,然后在其后添加三个卷积层和一个平均池化层。最后,通过非极大值抑制(Non-Maximal Suppression,NMS)获得最终的检测结果。通过省略初始候选框生成步骤,使整个目标检测过程可以在单个网络中完成,从而实现高性能的检测效率(46 fps,Titan X)和准确性(77.2%)。在保证速度的前提下,SSD已经获得了足够的准确性,超过了基于候选框的方法。

2.3. SLAMIDE问题和深度学习

        早在2003年[20],就有一些关于动态环境下SLAM(同时定位与地图构建)问题的研究。传统的动态环境下SLAM方法可以分为两类:一种是动态物体的检测和跟踪[20];另一种是动态物体的检测和滤波[21]。前者被总结为移动物体的检测和跟踪(DATMO)[22]方法。一些研究者[23]认为,在获取到一组合理的检测特征之后,处理SLAMIDE问题至少有四种相关的数据关联技术,包括GNN[24]、JPDA[25]、MHT[26]和RANSAC[27]。Charles等人[28]提出了一个将最小二乘、滑动窗口优化和广义期望最大化结合的框架。Chen等人[29]提出了一个仅依赖于地标且没有先验信息的动态环境下SLAM系统。Walcott-Bryant等人[30]提出了一个用于动态环境的动态位姿图(DPG)模型。2018年,Bahraini等人[31]提出了一种使用多级RANSAC来分割和跟踪多个移动物体的方法。总的来说,大多数视觉研究者仍然关注如何使用特征检测方法从相邻帧中提取动态物体。特征检测方法的一个潜在缺点是,在动态物体移动过慢或过快时将失效。Muhamad等人[32]对动态环境中的视觉SLAM和结构运动(SfM)问题进行了调查。根据分类,动态SLAM是一个强大的视觉SLAM方法。
        SLAMIDE一直是SLAM领域的一个难以逾越的问题。原因在于传统的SLAM理论完全基于静态环境的假设。它的挑战主要来自两个方面:首先,很难从平面像素中定义出动态物体;其次,动态物体不容易被检测和跟踪。
        由于深度学习在目标检测方面取得了良好的性能,许多研究者已将深度学习与SLAMIDE问题相结合[32]。张等人[33]将深度卷积神经网络模型集成到地形分割中,提高了准确性并使其对复杂环境更具鲁棒性。一些类似的RGB-D SLAMIDE研究[34-37]将最前沿的SLAM框架与深度学习网络相结合,取得了可观的成果。大多数SLAMIDE研究者侧重于激光SLAM和RGB-D SLAM,因为这些传感器可以直接获取深度信息来估计动态物体的位置[38]。相比之下,单目视觉系统中的SLAMIDE研究非常有限。Barnes等人[39]提出了一种自我监督的方法,以忽略单目相机图像中的干扰因素,从而在城市动态环境中稳健地估计车辆运动。Bescos等人[40]采用了与我们类似的方法。他们将ORB-SLAM2与Mask RCNN[41]结合,实现了动态环境中的单目和双目系统,并结合多视角几何模型和深度学习算法实现了RGB-D系统。

3 System overview and approach

        在本研究中,Dynamic-SLAM基于ORB-SLAM2 [2] 构建,通过添加一个动态物体决策模块来结合语义信息并利用特征点优化视觉里程计算法。Dynamic-SLAM通过对图像进行静态和动态特征的分割,并将动态部分视为异常点,实现了鲁棒性。姿态估计和非线性优化基于选择性跟踪算法计算静态特征点,以避免动态环境物体的干扰。考虑到现有SSD目标检测网络的召回率较低,提出了一种基于基本运动模型的漏检补偿算法,大大提高了目标检测模块的准确性。图2显示了Dynamic-SLAM的简要框架。

图2 Dynamic-SLAM的简要框架。它展示了新添加的模块与ORB-SLAM2的现有三个线程之间的关系。使用目标检测线程和语义校正模块来消除动态物体的干扰。

3.1. 漏检补偿算法

        在实验过程中,发现神经网络的检测准确度对于SLAM来说并不足够,可以进一步提高。由于图片之间没有显著的相关性,传统的目标检测任务中无法通过上下文信息提高检测准确度。然而,在SLAM中,视频帧按时间序列到达,可以利用前一帧的检测结果来预测下一帧的检测结果,以避免下一个关键帧中的漏检或误检。

        在目标检测任务的准确性评估中,通常研究人员更关注精确率和召回率两个方面。对于SLAMIDE问题中的动态目标检测任务,召回率更重要。在漏检或误检的情况下,两个相邻图像之间的差异将导致特征点的正确匹配数量急剧变化,从而导致系统不稳定。根据Davis等人的工作[42],召回率和漏检率可以定义如下:

在SSD中表示将默认框 i 与物体类别 p 的真实框 j 进行匹配的指示符。当发生漏检时,等于0,预测框(l)与真实框(g)之间的平滑 L1 定位损失[15]将增加:

其中,D(cu,cv,w,h)表示边界框(d)的中心点坐标(cu,cv)以及宽度和高度。

        提出了一种用于相邻帧的漏检补偿模型,该模型基于一个合理的假设:动态物体的运动速度在短时间内趋于恒定(即加速度趋于0)。动态物体在像素平面上的速度用表示,amax表示像素平面上的动态物体速度变化率的阈值。它们之间应满足以下关系:

        移动速度用于描述动态对象在几个帧之间的运动位移。 在实践中,视频序列中两个相邻帧之间的时间差非常短,动态对象在运动位移中的变化量并不大。该模型可以用于确定是否发生了漏检,并在发生漏检时提供补偿策略。前面一段时间内当前帧K与之前帧的相应边界框可以通过来确认。如果超过了阈值amax,就被认为是不匹配,即漏检。当前关键帧 K 进入SSD网络并输出检测到的对象列表。列表中的每一项是边界框的定位,即检测到的对象的位置坐标(,其中是帧K中的边界框数)。对于前一帧的每个检测结果,如果在当前帧确定的范围内未检测到,将被认为是漏检,并需要将添加到帧 K 的检测列表中,

其中: k是用于对当前帧执行漏检和补偿的前一个帧的数量。 算法处理如下:

        漏检补偿算法的效果如图3所示。它在动态目标的选择和跟踪中起着至关重要的作用。 上述公式中k和amax的选择将影响漏检补偿的灵敏度。如果k太小,将导致过于敏感和错误的补偿。通常在确定帧K之前选择3-5帧。同时,如果在连续两帧以上检测到目标缺失,将放弃补偿。这可能会引入少量的错误补偿,但可以显著减少漏检的发生。另外,当amax太小时,正确的检测结果可能被视为漏检。如果值太大,系统将不敏感,多个动态目标检测区域可能会重叠。

  图3. 遗漏检测补偿算法的演示图。红色边界框表示SSD网络的检测结果。遗漏检测可以根据阈值 amax (蓝色虚线框)来确定,然后根据速度不变性假设计算补偿结果 (绿色虚线框)。(对于本图例中颜色的解释,请参考本文章的网络版)。

3.2. 基于先验知识的动态物体确定

        环境物体的语义是人们基于经验对环境的理解。在记忆陌生环境时,人们会在先验知识的帮助下自动忽略动态物体,如车辆和行人,而记住静态物体,如建筑物和植被。如果SLAM系统无法从语义层面理解周围环境,则无法真正区分动态和静态物体。它只能在短时间内找到移动物体,因此无法保证长期一致性。因此,结合对象检测结果和先验知识,可以在语义层面上执行动态物体判定模型。对于Dynamic-SLAM来说,前端SSD目标检测模块的输出信息是冗余的。它只需知道检测到的特征点是静态还是动态的。根据人类的先验知识,可以将目标的动态特性得分从0分(静态)到10分(动态)。得分应与预定义的阈值进行比较。因此,可以区分特征点的静态和动态特性。该区间内常见物体的近似得分如图4所示。

        实际上,这是一个最大化后验问题。当前帧的边界框被检测为动态物体时,当前帧的边界框也将判断为同一点并重新检测,然后进入遗漏检测补偿循环。将分别作为边界框的真实情况和测量值,在贝叶斯规则的基础上,

然后:

在Dynamic-SLAM框架中,第K帧的判定结果将受到过去多个帧的干扰。根据 K-1 帧的条件概率扩展有:

基于先验知识的动态物体检测解决了从神经网络获取的冗余语义信息,对特征点处理更加实用。

3.3. 物体检测模块和选择性跟踪

        特征点跟踪并不繁琐,但并非所有特征点都能用于跟踪,并且并非所有动态物体的特征点都适用于跟踪。这里有两种特殊情况:1.一个被分类为动态物体的物体在场景中是静止的(例如停车场中的汽车);2.动态物体占据了相机视野的大部分区域(例如拥挤的购物中心)。在不同的场景中区分前景动态特征点和背景静态特征点至关重要。

        Dynamic-SLAM的具体系统结构如图 2所示。物体检测线程使用SSD物体检测网络计算物体的类别和位置。之后,通过语义校正模块将物体进一步划分为动态物体或静态物体,并将动态物体的位置提供给跟踪线程。跟踪线程对每个关键帧图像进行ORB特征提取,然后将结果与参考帧进行匹配,以获取两个图像的特征点之间的相应关系,用于估计相机姿态。

        完成初始化后,姿态估计为PnP(透视n点)问题。使用Bundle Adjustment [43]所代表的非线性优化方法解决这个问题。该方法可以充分利用所有匹配结果,并获得姿态的最佳估计。非线性优化的成本函数定义如下:

        最小投影误差是观察到的像素坐标 ui 与当前姿态 ξ 下3D点 Pi 的重投影坐标之间的差异。优化的目标是寻找最小化重投影误差的姿态。 在动态环境中,动态物体上的特征点的重投影误差将达到极高水平,导致相机姿态无法收敛到最优值。Dynamic-SLAM的语义校正模块的决策结果以掩码图像 mask(u, v) = {0, 1} 的形式表示,这是一个与原始图像具有相同宽度和高度的二维矩阵,元素值为0的点表示静态像素点,而值为1的点表示动态像素点。

        图5展示了选择性跟踪算法的过程。 动态特征点的像素坐标是从语义校正模块中获取的。 然后,在像素区域 L 中计算静态特征点的平均像素位移,该区域距离边界框的距离为 l。 最后,计算动态特征点的像素位移并进行判断:

 图5 选择性跟踪算法的过程

其中 ρ 是决策系数,是决策阈值,计算方法如下:

如果动态特征点与静态特征点之间的相对位移在可接受范围内,则允许用于跟踪,否则将被剔除。 选择性跟踪算法可以充分利用深度学习的检测结果。

        当动态物体处于静止状态或动态物体占据大部分视野时,它可以很好地解决特征点问题,从而确保系统的稳健性。它在一定程度上牺牲了维度信息,但在机器人低速运行时,这种策略是有效的。

        为了保证Dynamic-SLAM系统的实时性能,目标检测和跟踪被分为两个线程。同时,设计了一个名为Detection的新数据结构类,用于安全高效地支持并发操作以传递检测结果。此外,使用了名为unique_lock的互斥锁来确保两个线程没有访问冲突。由于目标检测线程和跟踪线程的处理速度不同步,使用异步读写共享变量来实现线程间通信,并充分利用CPU时间。

 4 Experiments and result

        为了验证DynamicSLAM系统在动态环境中的鲁棒性和准确性,我们设计和实施了六个不同方面的实验,包括SSD目标检测验证、抗动态物体干扰测试、在动态物体干扰下的初始化测试、使用TUM动态数据集的室内准确性测试、室外大规模映射测试以及使用移动机器人的实际环境测试。

        实验中使用的SSD神经网络的先验知识主要是20类对象(如飞机、自行车、鸟、船、瓶子、公交车、汽车、猫、椅子、牛、桌子、狗、马、摩托车、人、植物、羊、沙发、火车和电视),这些对象可以在网络中被识别。具有先验知识的模型源自训练后的SSD300*VOC07+12+COCO,1网络,该网络经过了PASCAL VOC2007、VOC2012 [44]和MS COCO [45]数据集的训练。在漏检补偿模块中,amax作为先验知识,其值被设置为每个方块帧20个像素,采样率为30帧/秒。实验的操作环境是一台配有Intel Core i5-7300HQ CPU(4核2.5 GHz)、8GB RAM和NVIDIA GeForce GTX1050Ti GPU(4GB图形内存)的笔记本电脑。

4.1. SSD目标检测验证

        为了减少SLAM系统中的漏检率并提高召回率,本文在第3节中提出了一种邻近帧漏检补偿算法。为了验证其有效性,将新模型与原始的SSD网络进行比较。

        TUM RGB-D基准测试[46]是由TUM计算机视觉组提供的一系列数据集,内容涵盖了SLAM研究的各个方面,现已成为SLAM算法性能和准确性测试的标准之一。在walking_rpy序列中,连续的487帧图像中,SSD网络成功检测到401次,失败86次,召回率为82.3%(即漏检率为17.3%)。在运动补偿后,测试成功486次,失败一次,检测率达到99.8%(即漏检率降至0.2%)。图 6 显示了每30帧进行的对象检测抽样结果。实验结果表明,漏检补偿模型大大提高了对象检测的召回率,为接下来的定位和映射模块提供了良好的基础。

 图6. SSD目标检测测试结果。上方:SSD的原始检测结果(召回率82.3%),下方:补偿后的检测结果(召回率99.8%)。红色框表示检测到的物体位置,角标表示物体类别。(对于图例中颜色的解释,请参考本文章的网页版本。)

4.2. 抗动态物体干扰测试

        在机器人应用中,摄像头视野中经常存在动态物体。当动态物体与周围环境相对运动时,传统的SLAM系统无法确定应该使用哪些特征来估计自身运动。

        因此,设计了一个数据集来模拟人物一直存在于摄像头视野中的情况。分别对ORB-SLAM2和Dynamic-SLAM的运行效果进行了测试。图7显示了ORB-SLAM2和Dynamic-SLAM的特征提取情况。图8显示了两个框架的定位和映射结果。图9是整个过程中动态和静态特征点的数量。为了突出动态特征点的比例,在本实验中每个关键帧的平均特征点数量约为3090个,其中平均动态特征点为2290个,平均静态特征点为809个。动态特征点的比例为74.11%,比静态特征点多出47.93%。在图8的左侧,相机在一段时间的运动后完全停止,尺度漂移严重,红色地图点不再更新。可以发现,在这种极端情况下,ORB-SLAM2系统将动态物体作为背景环境,导致定位结果依赖于动态物体与相机之间的相对运动。相比之下,Dynamic-SLAM可以自动选择静态环境的特征。它的定位结果是一条连贯的路径,构建的地图也与实际场景一致。实验测试了在极端条件下SLAM的定位和建图能力,并且Dynamic-SLAM成功应对了这种环境。实验表明,Dynamic-SLAM的动态点选择跟踪策略在动态环境中更有效。

  图7. ORB-SLAM2(上方)和Dynamic-SLAM(下方)在抗动态物体干扰时的特征提取。

 图8. 定位和建图结果。左:ORB-SLAM2(失败);右:Dynamic-SLAM(成功)。 (对于图例中颜色的解释,请参考本文章的网页版本。)

图9. 在此极端动态场景中整个过程中动态和静态特征点的数量。动态特征点的比例为76.33%,比静态特征点多47.93%。

4.3 动态对象干扰下的初始化测试

        初始化是视觉SLAM中的重要步骤。在动态对象的干扰下容易出现错误初始化。由于在初始时刻没有事先创建地图,因此尺度因子和位姿只能通过初始相邻帧匹配确定。

        在图10中,相机固定以测试动态对象对初始化的影响。可以看到,在动态环境中,ORB-SLAM2无法区分前景对象和背景对象。相比之下,Dynamic-SLAM成功检测到动态对象的位置并排除了干扰,从而避免了错误初始化。

        接下来,相机保持小幅摆动状态,同时人与相机的距离不断变化,并重复进行20次。结果是,ORB-SLAM2成功初始化15次,成功率仅为75%,而Dynamic-SLAM2成功初始化19次,成功率达95%。这种策略改善了动态环境下的初始化过程,因为它基于先验知识和经过训练的检测网络确定动态对象。

图10. 在动态物体干扰下的初始化测试结果。上:ORB-SLAM2;右:Dynamic-SLAM。在ORB-SLAM2中,特征点主要集中在动态物体上,在第四张图片中初始化错误。当特征点从绿色变成蓝色,并且特征点同时准确稳定时,表示在ORB-SLAM2中初始化成功。通常,初始化时间在5秒之内。(对于图例中颜色的解释,请参考本文章的网页版本。) 

 4.4 使用TUM动态数据集进行室内精度测试

        在动态环境中进行定位和建图通常表现较差。为了准确评估框架的性能,使用TUM RGB-D Benchmark中的动态序列进行动态环境测试。这是一个两个人在桌子周围工作的场景,运动范围大,视野比例显著。在该场景中测试算法的准确度和性能。

        使用TUM数据集对最先进的单目视觉SLAM框架进行了全面比较。在未确定缩放因子的条件下,使用关键帧轨迹的绝对姿态误差(APE)和相对姿态误差(RPE2)来评估每个框架的定位精度。计算中使用了Sim(3) Umeyama对齐。RPE包含相对平移误差和相对旋转误差。为了衡量相对旋转误差比绝对旋转误差更有意义,APE仅与平移部分进行比较。考虑到数据的有效性,我们主要使用均方根误差(RMSE)、平均误差(Mean error)、中位数误差(Median error)和标准差(Std.)来评估结果。改进(Imp.)的计算方法如下:

其中κ是改进值,γ 是从ORB-SLAM2获得的值,λ 是从Dynamic-SLAM获得的值。对于每个序列,在3次执行中比较轨迹RMSE误差。

         在表1中,主要比较对象是ORB-SLAM2(Mono)[2]、SVO [7]、LSD-SLAM[5]和PTAM [4]的绝对姿态误差。我们还与DynaSLAM[40]进行了比较,它是一种类似的SLAMIDE方法,使用ORB-SLAM2与语义分割策略相结合。DynaSLAM和最后两个框架结果的数据来自于已报告的结果[11,40],在类似的方法中进行了处理。在表2和表3中,主要比较对象是ORB-SLAM2和Dynamic-SLAM的相对姿态误差。由于比例太小,RPE旋转部分的单位使用每帧的度数。图11显示了序列fr3_walking_xyz中ORB-SLAM2和Dynamic-SLAM的实时图像。在操作参数相同的情况下,记录了所有关键帧的定位结果,与真实值进行比较并计算误差。

图11 显示了序列fr3_walking_xyz中ORB-SLAM2和Dynamic-SLAM的实时图像

        绝对位姿误差的结果在表 1 和图12中显示出来。相对位姿误差列在表2和表3中。从表1-3的结果可以看出,在大多数情况下,Dynamic-SLAM的结果优于其他框架。以RMSE作为标准,Dynamic-SLAM的准确度比ORB-SLAM2高7.48%~62.33%。在操作性能方面,两种算法在行走序列walking_xyz的运行时间记录在表4中。Dynamic-SLAM的性能比ORB-SLAM2高10%。其他序列的性能几乎相同。

        尽管Dynamic-SLAM增加了一个物体检测线程,但它不会减慢整个系统,反而缩短了运行时间,因为物体检测是在一个单独的线程中进行,并使用了GPU加速。这种改进是因为减少了无效的特征点,使系统只使用有效的特征点进行计算,从而节省了位姿估计和非线性优化的时间。

 图12. 使用Sim(3) Umeyama对TUM数据集中每个动态序列的绝对位姿误差进行了结果展示,并将误差映射到轨迹上。对于数据集的每个序列部分,有3个子图,左侧: ORB-SLAM2的相对于平移部分的绝对位姿误差(以米为单位),中间: Dynamic-SLAM的相对于平移部分的绝对位姿误差(以米为单位),右侧: 通过与地面真实轨迹(虚线)进行比较,将绝对位姿误差映射到轨迹上(以米为单位),右侧的色条是误差范围图。由于轨迹图中没有明显的差异,因此没有进行比较。至于左侧和中间子图中的位姿误差,Dynamic-SLAM的误差小于ORB-SLAM2。

4.5. KITTI数据集中的户外动态大规模地图构建

        动态环境在大规模场景中更加实际。KITTI数据集[47]是目前用于自动驾驶大规模场景的最大计算机视觉算法评估数据集。它包含11个户外实景序列,还提供了通过GPS和Velodyne激光扫描仪收集的准确地面真值。该数据集用于进一步验证算法在真实环境中的有效性(除了序列01,因为高速公路中的可追踪对象很少)。由于ORB-SLAM2已经是大规模场景中受欢迎的框架,所以使用其单目版本来比较和衡量Dynamic-SLAM的改进。实验结果还比较了ORB-SLAM和DynaSLAM。

        APE和RPE也用于评估结果的精度。由于KITTI数据集的大规模,RPE旋转部分的单位采用每米的角度。评估方法的其他部分与TUM数据集的测试相同。图13显示了动态SLAM的实时图像。表5和图14显示了绝对位姿误差结果。表6和表7显示了相对位姿误差分别与平移部分和旋转部分有关。ORB-SLAM和DynaSLAM的数据来自报告的结果[11, 40]。从表5可以看出,Dynamic-SLAM的性能比ORB-SLAM2好0.10%∼53.69%。同时,70%的结果比DynaSLAM好。表6和表7还显示,在90%的情况下,Dynamic-SLAM的结果比ORB-SLAM2好。

 图13. 在对KITTI数据集进行测试时,展示了Dynamic-SLAM的实时图像。图中红色掩模覆盖的对象是动态对象,包括汽车、行人等。这些动态对象上有许多特征点,对定位和建图有影响。(对于图例中颜色的解释,请参阅本文章的网络版本。)

图14. 使用Sim(3) Umeyama对KITTI数据集中每个动态序列的绝对位姿误差进行了结果展示,并将误差映射到轨迹上。对于数据集的每个序列部分,有3个子图,左侧: ORB-SLAM2的相对于平移部分的绝对位姿误差(以米为单位),中间: Dynamic-SLAM的相对于平移部分的绝对位姿误差(以米为单位),右侧: 通过与地面真实轨迹(虚线)进行比较,将绝对位姿误差映射到轨迹上(以米为单位),右侧的色条是误差范围图。由于轨迹图中没有明显的差异,因此没有进行比较。至于左侧和中间子图中的位姿误差,Dynamic-SLAM的误差小于ORB-SLAM2。

      在ORB-SLAM2中,这些动态对象上有许多特征点,对定位和建图有影响。可以看出,随着运动场景变得更加复杂,单目SLAM会出现越来越大的角度漂移和尺度漂移。在序列02和08中,Dynamic-SLAM和ORB-SLAM2都遭受了严重的尺度漂移。相比之下,Dynamic-SLAM由于消除了动态干扰,使尺度漂移减轻,其性能也比ORB-SLAM2好。虽然在这个数据集中大多数动态对象处于静态状态,但选择性跟踪算法对提高整个系统的准确性是有帮助的。 实际上,TUM和KITTI数据集对于测试动态环境算法并不是很适合。在KITTI数据集中,大多数动态对象都处于静止状态,与真实场景相差很大,也较不困难。对于单目SLAM来说,TUM动态数据集有一些困难,因为其运动模糊程度太严重,而且尺度太小,影响了算法的评估。因此,Dynamic-SLAM系统在真实世界的动态环境中进一步通过使用物理机器人进行测试。

4.6.使用移动机器人进行实际环境测试

        实际上,TUM和KITTI数据集并不非常适合测试动态环境算法。在KITTI数据集中,大多数动态对象静止不动,这与真实场景非常不同,也较为简单。对于单目SLAM来说,TUM动态数据集有一定的困难,因为其运动模糊和尺度都较小,这影响了算法的评估。因此,Dynamic-SLAM系统在真实世界的动态环境中通过使用物理机器人进行进一步测试。

4.6.1.移动机器人平台

        SLAM的各种应用场景需要嵌入式平台的支持,以实现小型化和实时操作。机器人平台主要由嵌入式开发板和机械零部件组成。开发了自定义固件以在嵌入级别上运行,以满足反馈控制和评估需求。如图15所示,该机器人是一款65厘米×55厘米×50厘米体积、40千克重的无人地面车辆(UGV)。核心板单元是一块搭载Dynamic-SLAM系统(ROS package)和UGV控制模块的NVIDIA Jetson TX23开发板。相关配置包括一块NVIDIA Pascal架构GPU、256个CUDA核心和基于ARM架构的四核CPU(标准频率1.4 GHz),以及8GB的RAM。视觉传感器是由MatrixVision公司生产的mvBlueFox-MLC200w单色全局快门摄像机,分辨率为752×480,像素尺寸为6微米×6微米。一块32位MCU被用作UGV的控制中心,并由Jetson TX2控制。所有算法开发在Ubuntu 16.04和ROS Kinetic4中进行,使用C++语言。

图15 UGV控制模块的NVIDIA Jetson TX23开发板

4.6.2. 移植后的性能优化和评估

        移植到机器人平台后,每帧的平均处理时间由于较低性能的CPU和GPU而增加了三倍(在论文中分别为0.156秒和0.045秒)。为了测试移植后的算法性能是否满足实时要求,作者通过使用TUM RGB-D基准数据集中的动态环境序列walking_xyz对移植结果进行了评估。评估结果见表8,实验结果如图16所示。随着优化级别的提升,跟踪时间逐渐缩短,最终性能类似于笔记本电脑。同时,尽管准确性稍有损失,但对结果影响不大。总体而言,移植的性能基本与原始笔记本电脑相同,准确性稍有损失。

图16. 使用TUM RGB-D基准数据集中的dynamic environment sequence walking_xyz升级优化级别后,跟踪、检测和均方根误差的值变化。GPU优化(检测)未进行。在每次优化中,实验重复3次,并将平均值作为最终结果。 

 4.6.3. 现实世界实验

        在嵌入式平台上进行了一个室外大规模场景实验。实验场景位于北京的一个社区。整个场景从北到南约跨越350米,从东到西约跨越370米。整个路线形成一个闭环。在测试中,UGV的最大速度限制为2米/秒,实验持续了15分钟。实验重复了三次。使用相同的优化条件,通过使用UGV机器人对Dynamic-SLAM和ORB-SLAM2的定位和建图效果进行了测试。此外,还使用APX-15无人机和由Velodyne生产的16线3D激光雷达传感器VLP-16来收集地面真实数据。

        图17显示了Dynamic-SLAM在实时中的特征提取和动态物体消除效果。定位和建图结果显示在图18和图19中。

 图17. 使用嵌入式平台进行的户外大规模和实际动态环境实验,用于Dynamic-SLAM。

图18. ORB-SLAM2的定位和建图结果(失败)。 

 图19. Dynamic-SLAM的定位和建图结果(成功)。

        图17显示Dynamic-SLAM成功检测到了人和车辆,并消除了动态物体的干扰。由于动态物体的错误关联,ORB-SLAM2无法正常进行全局优化。结果在闭环之后无法纠正先前的错误,如图18所示最终失败。相比之下,Dynamic-SLAM在闭环之后取得了可靠的结果。与图19中的地面真实数据进行对比,Dynamic-SLAM的轨迹RMSE误差为2.29米,可以接受的定位精度。

        实验结果表明,Dynamic-SLAM算法可以在实际动态环境中胜任嵌入式移动机器人平台上的同时定位和建图工作。

 5 结论

        在本论文中,构建了一个完整的SLAM框架,称为DynamicSLAM,这是一个使用深度学习来改善动态环境下性能的语义单目视觉同时定位和地图构建系统。该框架有三个主要贡献。首先,针对现有SSD目标检测网络的召回率低的问题,提出了一种基于相邻帧中的速度不变性的漏检补偿算法,该算法大大提高了检测的召回率,并为后续模块提供了良好的基础。其次,提出了一种选择性跟踪算法,以简单有效的方式消除动态物体,从而提高了系统的鲁棒性和准确性。最后,构建了一个基于特征的视觉DynamicSLAM系统。基于SSD卷积神经网络,构建了一个新的对象检测模块,它结合了先验知识,实现了机器人定位和地图构建中对动态物体的语义级别的检测。为了评估该框架,在设计了六个实验来验证Dynamic-SLAM的优越性、准确性、鲁棒性和可移植性。在TUM数据集中,与原始SSD检测网络相比,该系统的检测召回率从82.3%提高到99.8%。在TUM室内动态环境数据集的测试中,Dynamic-SLAM的定位准确度比当前最先进的ORB-SLAM2系统高出7.48%~62.33%,操作性能提高了约10%,也优于PTAM、LSD-SLAM、SVO和DynaSLAM框架。在KITTI室外大规模动态环境测试中,Dynamic-SLAM成功实现了定位和构建了更精确的环境地图,性能超过了ORB-SLAM2和DynaSLAM。为了进一步验证算法的实用性,将Dynamic-SLAM移植到嵌入式机器人平台上,并成功实现了在真实世界动态环境中的定位和地图构建,而ORB-SLAM2失败了。实验结果表明,Dynamic-SLAM在动态环境中具有可靠的优越性、准确性和鲁棒性。总之,本论文是对现实动态环境中SLAM技术的探索,并成功展示了基于深度学习和SLAM的人工智能融合的广阔前景。在进一步的研究中,深度学习可以更广泛地应用于SLAM,不仅局限于前端。同时,应该挑战更复杂的环境。

猜你喜欢

转载自blog.csdn.net/qq_41921826/article/details/131559073