«上一篇 下一篇»
  计算机工程  2022, Vol. 48 Issue (5): 18-26  DOI: 10.19678/j.issn.1000-3428.0061041
0

引用本文  

房立金, 王科棋. 一种结合深度学习的运动重检测视觉SLAM算法[J]. 计算机工程, 2022, 48(5), 18-26. DOI: 10.19678/j.issn.1000-3428.0061041.
FANG Lijin, WANG Keqi. A Visual SLAM Algorithm for Motion Redetection Combined with Deep Learning[J]. Computer Engineering, 2022, 48(5), 18-26. DOI: 10.19678/j.issn.1000-3428.0061041.

基金项目

国家自然科学基金(51575092);辽宁省中央引导地方科技发展专项(2021JH6/10500132)

作者简介

房立金(1965—),男,教授、博士、博士生导师,主研方向为仿生攀爬移动机器人设计与控制、高精度机器人控制、机器人视觉控制;
王科棋,硕士研究生

文章历史

收稿日期:2021-03-08
修回日期:2021-07-09
一种结合深度学习的运动重检测视觉SLAM算法
房立金 , 王科棋     
东北大学 机器人科学与工程学院,沈阳 11016
摘要:在现实场景中,传统视觉同步定位与建图(SLAM)算法存在静态环境假设的限制。由于运动物体的影响,传统的视觉里程计存在大量误匹配,从而影响整个SLAM算法的运行精度,导致系统无法在现实场景中稳定运行。基于深度学习和多视图几何,提出一种面向室内动态环境的视觉SLAM算法。采用目标检测网络对动态物体进行预检测确定潜在运动对象,根据预检测结果,利用多视图几何完成运动物体重检测,确认实际产生运动的物体并将场景中的对象划分为动态和静态两种状态。基于跟踪线程和局部建图线程,提出一种语义数据关联方法和关键帧选取策略,以减少运动物体对算法精度的影响,提高系统的稳定性。在TUM公开数据集上的实验结果表明,在动态场景下,相较于ORB-SLAM2算法,该算法平均均方根误差降低了40%,与同样具有运动剔除的DynaSLAM算法相比,算法实时性提高10倍以上,且运行速度与精度均明显提高。
关键词同步定位与建图    深度学习    多视图几何    动态场景    运动剔除    
A Visual SLAM Algorithm for Motion Redetection Combined with Deep Learning
FANG Lijin , WANG Keqi     
School of Robot Science and Engineering, Northeastern University, Shenyang 110169, China
Abstract: In real scenes, the traditional visual Simultaneous Localization and Mapping(SLAM) algorithm is limited by the assumption of a static environment.Because of the influence of moving objects, the traditional visual odometer makes many mismatches.Thisaffects the running accuracy of the entire SLAM algorithm, which makes the system unable to run statically in real scenes.This paper proposes a robust visual SLAM algorithm for indoor dynamic environments based on deep learning and multiview geometry.First, the object detection network is used to predetect the dynamic objects to determine the potential moving objects.Then, according to the predetection results, multiview geometry is used to complete the redetection of moving objects to confirm the actual moving objects.The objects in the scene are divided into dynamic and static states.Second, a semantic data association method and a key-frame selection strategy are proposed for the tracking thread and the local mapping thread to reduce the influence of moving objects on the algorithm accuracy.Experimental results on the Technical University of Munich(TUM) open dataset show that, in dynamic scenarios, compared with the Oriented fast and Rotated Brief Simultaneous Localization and Mapping 2 (ORB-SLAM2) algorithm, the root-mean-square error of the proposed algorithm is reduced by 40%.Compared with the Dynamic Simultaneous Localization and Mapping(DynaSLAM) algorithm with kinematic removal, the real-time performance of the proposed algorithm is more than 10 times better.In addition, the running speed and accuracy are improvedsignificantly.
Key words: Simultaneous Localization and Mapping(SLAM)    deep learning    multi-view geometry    dynamic scene    motion removal    

开放科学(资源服务)标志码(OSID):

0 概述

同步定位与建图(Simultaneous Localization and Mapping,SLAM)是指在没有周围环境先验信息的条件下,仅从机载传感器获取周围环境信息同时完成自身位姿估计和环境地图构建的工作。SLAM技术在智能机器人实时定位、导航、自动驾驶、增强现实/虚拟现实等方面有着极其重要的应用。而视觉传感器具有成本低廉、提供数据信息丰富等特点,所以视觉SLAM得到了研究人员的广泛关注。很多团队已经从不同的角度对视觉SLAM问题进行了讨论,其中一些优秀的成果极大地推进了视觉SLAM的发展,例如LSD-SLAM[1]、DSO[2]、ORB-SLAM2[3]、VINS-Mono[4]等,但是为了简化计算,这些算法都是在静态环境假设基础上进行的。由于忽略了现实场景中运动物体对视觉SLAM算法所带来的影响,这些模型很难适应复杂多变的真实场景。因此,针对动态环境下的视觉SLAM算法进行研究就显得尤为重要。现阶段动态环境SLAM算法主要通过处理动态物体来减少其对系统精度的影响。

运动物体检测方法可分为基于多视图几何的方法和基于深度学习的方法。基于多视图几何方法一般通过光流、对极几何约束、最小化重投影误差等检测运动物体。CENG等[5]采用光流方法计算图像序列相邻帧之间像素运动。如果相机运动与动态物体存在运动一致性问题,则这种方法可能会失败。SUN等[6]使用深度图提供的深度信息识别出明显的运动物体,此方法受限于传感器检测范围和分辨率,无法适应复杂环境。LI等[7]利用深度图进行边缘提取,根据具有相似运动的点进行分组和分配概率来识别动态对象,但是它们具有较高的计算成本,并且在嘈杂环境或退化运动中无法正常地工作。浙江大学章国峰团队[8]提出的RDSLAM算法[9]能够在动态环境中稳定运行,该算法的主要贡献是提出一种在线更新关键帧的方法,从而及时剔除环境中的运动物体,同时通过改进传统随机一致性采样(Random Sample Consensus,RANSAC)算法[10],提出一种自适应RANSAC算法,在剔除大量外点情况下保证算法鲁棒性。

基于深度学习的方法在近年来开始兴起,清华大学CHAO等[11]针对动态环境提出DS-SLAM算法,该算法基于ORB-SLAM2框架加入实时语义分割线程,将语义分割与对极几何约束方法相结合,过滤出场景中的动态特征。但是对极几何计算的基础矩阵容易受外点影响,从而影响算法的精度。BESCOS等[12]同样基于ORB-SLAM2框架提出了DynaSLAM算法,该算法融合语义分割和多视图几何的方法检测场景中的运动特征,但语义分割算法模型复杂度过高无法满足实时性的需求。ZHANG等[13]基于深度学习目标检测算法提出动态场景下基于特征点法的视觉SLAM算法,该算法能够提高跟踪精度和地图适应性。

MINA等[14]提出一种基于特征的、无模型的、可感知对象的动态SLAM算法Dynamic SLAM,其利用语义分割来估计场景中刚性对象的运动,而无需估计对象的姿势或具有任何先验知识的3D模型。该算法生成动态和静态结构图,并能够提取场景中刚性移动物体的速度。BESCOS等[15]基于DynaSLAM提出新一代视觉SLAM系统DynaSLAM Ⅱ,其利用实例语义分割和ORB特征来跟踪动态对象,并将静态场景和动态对象的结构放在捆绑调整(Bundle Adjustment,BA)中与摄像机的运行轨迹同时进行优化,并且三维运动对象的3D边界框也可以在固定的时间窗口内进行估算和粗略优化。ZHANG等[16]基于机器学习及深度学习提出RGB-D SLAM算法来适应动态场景,提升视觉SLAM在动态场景中的精度。但是,该算法占用计算机资源较大无法满足实时性的需求。

综上,现有动态环境SLAM算法虽然能够解决部分动态场景问题,但是现有算法仍然存在模型复杂度高、计算量过大、应用范围有限、无法保证实时性等问题,且只进行一次运动物体判定,一旦判定失效则无法保证视觉里程计的稳定运行,从而影响整个SLAM算法的运行精度。本文在保证计算量和实时性的同时,针对室内动态场景,提出一种基于深度学习和多视图几何的两阶段运动物体检测优化算法,以提高视觉SLAM算法的运行精度和运行效率。

1 系统流程与框架

本文系统框架如图 1所示,按照系统运行流程可分为跟踪线程、局部建图线程、回环检测3个线程。输入的RGB-D图像序列,针对RGB通道利用深度学习目标检测算法进行先验的运动物体预检测,并采用多视图几何算法进行运动物体重检测,确定真正产生运动的物体。在跟踪线程中,首先针对这些动态物体相对应的关键点进行语义数据关联,添加相应的运动状态。然后通过最小化重投影误差进行相机位姿估计,完成视觉里程计初始化,同时跟踪局部地图。最后根据本文提出的关键帧选取策略,在局部建图线程中插入候选关键帧,根据所插入关键帧中跟踪的空间地图点完成局部地图更新。同时在后端优化过程中执行局部光束平差(BA)法完成相机位姿优化。

Download:
图 1 本文系统流程与框架 Fig. 1 Procedure and framework of this system

回环检测线程将每一次插入的关键帧与之前存储的关键帧进行匹配。如果检测到环境中的闭环则计算关于相机位姿累计误差的相似性变换。由于本文回环检测过程主要参考ORB-SLAM2的检测过程,因此本文不再赘述。

2 融合运动检测的视觉SLAM算法 2.1 目标检测

本文将基于改进的SSD[17]网络作为解决实时目标检测的方案,考虑到移动机器人所搭载的计算平台具有运算能力相对较差、计算量不足等问题,为减轻网络参数量,采用MobileNet[18]网络替换原来SSD网络中VGG-16[19]特征提取主干网络,在保证检测精度相对准确的同时能够满足目标检测器实时运行的需求,网络结构设计为全卷积网络结构,如图 2所示。

Download:
图 2 全卷积神经网络结构 Fig. 2 Fully convolutional neural network structure

为了提高小目标物体检测精度,本文采用De-convoluational模块并借鉴FPN[20]网络结构,将深层特征图和浅层特征图进行信息融合,融合后的特征图同时具有深层特征图的语义信息和浅层特征图位置信息。Decorder部分主要借鉴了DSSD[21]的网络结构,经过在特征图上进行1×1的卷积后得到两个支路,一个用于分类,另一个用于回归。进行此操作的主要目的是更多地利用深层网络特征。

针对室内场景目标检测,本文在MS COCO[22]数据集上对MobileNet-SSD进行预训练,MS COCO包含91种不同的物体,其中包含人、猫、桌子、椅子等室内常见的物体。

2.2 运动物体预检测

本文采用上述深度学习目标检测网络进行运动物体预检测,即认定环境中潜在的运动物体。根据目标检测网络提供潜在运动物体的二维位置信息,对潜在运动物体相对应的特征点进行运动状态预标记。

首先根据Bounding Box所提供运动物体的二维坐标$ \left({P}_{x}, {P}_{y}, {P}_{w}, {P}_{h}\right) $确定动态目标的位置,其中$ {P}_{x} $$ {P}_{y} $$ {P}_{w} $$ {P}_{h} $分别表示检测框中心点坐标以及宽度和高度。根据这些信息能够计算出Bounding Box的最大、最小坐标$ \left({u}_{\mathrm{m}\mathrm{a}\mathrm{x}}, {u}_{\mathrm{m}\mathrm{a}\mathrm{x}}, {u}_{\mathrm{m}\mathrm{i}\mathrm{n}}, {u}_{\mathrm{m}\mathrm{i}\mathrm{n}}\right) $。相机输入的图像$ I $提取到的关键点的二维坐标定义为$ {p}_{i}=\left({u}_{i}, {v}_{i}\right) $,通过与$ \left({u}_{\mathrm{m}\mathrm{a}\mathrm{x}}, {u}_{\mathrm{m}\mathrm{a}\mathrm{x}}, {u}_{\mathrm{m}\mathrm{i}\mathrm{n}}, {u}_{\mathrm{m}\mathrm{i}\mathrm{n}}\right) $对比得到取值在最大、最小坐标区间内的特征点。将每一个Bounding Box根据关键点数量进行编号排序并将检测框内的特征点$ {p}_{i} $对应归为一类,即$ {p}_{i}\in \mathrm{B}\mathrm{o}{\mathrm{x}}_{i} $。同时所有的$ \mathrm{B}\mathrm{o}{\mathrm{x}}_{i} $均属于Box潜在运动物体类,即$ \mathrm{B}\mathrm{o}{\mathrm{x}}_{1}, \mathrm{ }\mathrm{B}\mathrm{o}{\mathrm{x}}_{2}, \cdots ,\mathrm{B}\mathrm{o}{\mathrm{x}}_{i}\in \mathrm{B}\mathrm{o}\mathrm{x} $

为了提高检测精度,同时减少计算量,本文只计算关键帧的数据并且目标检测置信度大于默认阈值的Bounding Box(本文默认设置为0.7)内的特征点。通过上述过程能够得到环境中潜在的运动物体并分类得到潜在运动物体类Box,完成运动物体预检测与运动状态预标记过程。

2.3 运动物体重检测

本节针对运动物体预检测得到的潜在运动物体类中的运动对象进行运动物体重检测,两次确认这些物体是否产生实际运动,并将实际产生运动的物体所对应的特征点添加相应的运动状态。

在三维空间中,运动物体产生的像素运动与相机自身运动所产生的像素运动具有不同的运动方向。由于运动三维物体对应在二维图像中会产生不同的动态视差$ {d}_{i} $,因此本文采用像素之间投影点的距离,即像素间的重投影误差$ {d}_{i} $对动态视差进行度量。像素间的重投影误差主要取决于:

1)动态物体对应特征点的像素坐标。

2)动态物体对应特征点的深度。

3)运动物体与相机运动之间的相对运动角度。

为减少计算量,本文只计算Bounding Box中匹配关键点像素间重投影误差$ {d}_{i} $,定义如下:

$ {d}_{i}=\sum {‖{p}_{i}-{\tilde{p}}_{i}‖}_{2}^{2} $ (1)

其中:$ {p}_{i} $表示三维空间中相对应空间点$ {P}_{i} $在当前帧中关键点的二维坐标;$ {\tilde{p}}_{i} $表示通过前一帧匹配关键点在当前帧恢复的投影点坐标;$ {d}_{i} $表示投影点与当前帧关键点的重投影误差。

重投影误差示意图如图 3所示。

Download:
图 3 重投影误差示意图 Fig. 3 Schematic diagram of re-projection error

本文引入可变阈值$ \mathrm{\Delta }\omega $对运动物体进行运动重检测,阈值大小由微分熵函数[23]进行确定。对于服从高斯分布的$ k $维微分熵定义如下:

$ H\left({x}_{i}\right)=\frac{1}{2}\mathrm{l}\mathrm{o}{\mathrm{g}}_{a}\left({\left(2\mathrm{\pi }e\right)}^{k}f\left({x}_{i}\right)\right) $ (2)

可变阈值$ \mathrm{\Delta }\omega =f\left(H\right({x}_{i}\left)\right) $,当计算得到的动态视差$ {d}_{i} > \mathrm{\Delta }\omega $时,则被认定为实际产生运动的动态物体,将相对应的潜在运动物体类$ \mathrm{B}\mathrm{o}{\mathrm{x}}_{i} $中所有的特征点添加运动状态$ {\zeta }_{i}=0 $,表示该特征点在运动中,非潜在运动物体类$ \mathrm{B}\mathrm{o}{\mathrm{x}}_{i} $的特征点和动态视差$ {d}_{i} > \mathrm{\Delta }\omega $的静态物体添加运动状态$ {\zeta }_{i}=1 $

2.4 静态语义数据关联与相机位姿优化

关键点相应运动状态添加完成后,并在相机位姿优化过程中剔除被标记为运动中的关键点,不参与到相机位姿优化光束平差法计算中。

输入到跟踪线程中的图像,经过运动物体检测后利用相邻两帧进行三角量测恢复出地图点,因为其对参考帧$ {F}_{r} $中的特征点和当前帧$ {F}_{c} $特征点完成了特征匹配。

跟踪线程计算出本质矩阵和单应矩阵,如果当前场景为平面情况,则采用单应矩阵计算当前帧的相机位姿;如果当前场景为非平面情况,则采用基础矩阵计算当前帧的相机位姿。

当系统初始化成功后,当前帧$ {F}_{c} $利用恒速模型进行位姿跟踪,如果初始化失败,则重置当前参考帧$ {F}_{r} $与相邻关键帧进行重定位恢复相机位姿。本文利用运动状态为静态的关键点,即运动状态$ {\zeta }_{i}\ne 0 $的特征点进行相机位姿恢复以及优化。因为根据ICP[24]算法已经得到了$ N $对相互匹配的3D点的三维坐标$ {P}_{i} $和对应投影点的二维坐标$ {p}_{i} $,则对应$ R $$ t $的当前帧相机位姿坐标$ \xi $相机位姿李代数的形式为:

$ \xi =\left[\begin{array}{ll}\phi & \varphi \\ {\boldsymbol{0}}^{\mathrm{T}}& 0\end{array}\right]\in {i}^{4\times 4} $ (3)

其中:$ \phi \in {\mathbb{R}}^{3} $为相机旋转坐标;$ \varphi \in so\left(3\right) $为相机平移坐标。

通过最小化重投影误差找到最佳相机位姿$ {\widehat{\xi }}_{i} $定义为:

$ {\widehat{\xi }}_{i}=\underset{{T}_{i}}{\mathrm{a}\mathrm{r}\mathrm{g}\mathrm{m}\mathrm{i}\mathrm{n}}\frac{1}{2}\sum\limits_{i=1}^{N}{\zeta }_{{p}_{i}}H\left({\left\| {{p_i} - \frac{1}{{{\sigma _i}}}K{\rm{exp}}\left( {{\xi _i}} \right){P_i}} \right\|}_{2}^{2}\right) $ (4)

其中:$ {\widehat{\xi }}_{i} $为最优化相机位姿;$ {\zeta }_{{p}_{i}} $为对应运动状态;$ {\xi }_{i} $为待优化相机位姿;$ H $为鲁棒核函数;$ K $为相机内参;$ {\sigma }_{i} $表示相机尺度缩放参数。

2.5 关键帧选择策略

关键帧的选择策略影响整个系统的运行精度,同时局部地图的质量也与关键帧的选择有密切的关系,本文关键帧选择遵循以下规则:

1)当前帧至少跟踪20个以上空间中的三维地图点,同时当前帧内特征点数量不少于相邻关键帧的90%。

2)当前关键帧需要在跟踪线程中被跟踪20次以上,才能够在局部建图线程空闲时插入。

3)当前帧相机位姿与相邻关键帧的相机位姿间的旋转姿态角度不大于设定阈值。

关键帧选择条件如下:

1)保证所选择的候选关键帧跟踪到空间中数量足够多的地图点,并且候选关键帧中提取到的环境信息足够丰富。

2)保证所选取的关键帧与相邻帧有足够的共视关系,能够通过共视关键帧获取到尽可能多的环境信息,并且保证候选关键帧相对稳定提高系统精度。

3)防止相机在俯仰或转动等纯旋转情况下,相机视差发生较大的变化导致跟踪失败,确保选取的候选关键帧稳定并且连贯。

2.6 算法复杂度分析

在未知环境中,SLAM问题主要解决机器人自身定位和地图构建问题,将此过程利用数学表达式进行描述,可以抽象为状态估计问题。假设移动机器人在未知环境中连续运动,在$ t=\mathrm{0, 1}, \cdot \cdot \cdot , N $的时间段内,有对应运动机器人位姿$ {x}_{0}, {x}_{1}, \cdots , {x}_{N} $,机器人观测到的路标点$ {y}_{0}, {y}_{1}, \cdot \cdot \cdot , {y}_{N} $以及在$ {x}_{i} $点观测到路标$ {y}_{j} $对应的信息$ {z}_{i, j} $。利用以上信息能够列出SLAM运动状态估计过程中的运动方程式与观测方程式:

$ \left\{\begin{array}{c}{x}_{i}=f\left({x}_{i-1}, {u}_{i}\right)+{w}_{i}\\ {z}_{i, j}=h\left({y}_{j}, {x}_{i}\right)+{v}_{i, j}\end{array}\right., i=\mathrm{ }\mathrm{1, 2}, \cdots , N, j=\mathrm{ }\mathrm{1, 2}, \cdots , N $ (5)

其中:$ {u}_{i} $表示在传感器读入数据;$ {w}_{i} $$ {v}_{i, j} $均为噪声误差。融合运动检测视觉SLAM算法的运算复杂度和空间复杂度计算可以分为以下2个部分:

1)将视觉里程计中的运动检测算法的时间复杂度作为一个整体进行分析,其总体运算复杂度为$ O\left({n}^{2}\right) $,空间复杂度为$ O\left({n}^{2}\right) $

2)运动方程和观测方程在更新过程中,其运算复杂度为$ O\left({n}^{3}\right) $,空间复杂度为$ O\left({n}^{2}\right) $

因此,融合运动检测视觉SLAM算法的总体运算复杂度为$ O\left({n}^{3}\right) $,空间复杂度为$ O\left({n}^{2}\right) $

3 实验与结果分析

本文选取TUM RGB-D Benchmark[25]数据集,该数据集中的某些序列包含运动对象,如果不考虑这些运动对象,则会影响轨迹估计精度。在本文实验中,使用静态环境序列和属于动态对象类别序列的子集来评估所提出算法的性能。本文算法在这两种情况下进行性能和精度的测试,并与ORB-SLAM2、DynaSLAM进行对比。

3.1 视觉里程计对比评估

本节实验主要对比不同算法之间视觉里程计的漂移量,因此采用相对位姿误差(Relative Pose Error,RPE)作为评价指标。相对轨迹误差通过计算相同时间段间隔真实值与估计值之间变化量的差值进行评估。相对轨迹误差在时间间隔的定义如下:

$ {E}_{i}:={\left({Q}_{i}^{-1}{Q}_{i+\mathrm{\Delta }}\right)}^{-1}\left({P}_{i}^{-1}{P}_{i+\mathrm{\Delta }}\right) $ (6)

在不同序列下的比较结果如表 1所示,表中fr2/desk、fr3/l/house为静态场景序列,fr3/w/half、fr3/w/rpy、fr3/w/static、fr3/w/xyz为动态场景序列,下文同。其中RMSE表示均方根误差,加粗字体为结果最优。它的定义是观测值与真实值之间差的平方和与观测次数比值的平方根。其计算公式定义如下:

$ {R}_{\mathrm{R}\mathrm{M}\mathrm{S}\mathrm{E}}\left({E}_{1:n}, \mathrm{\Delta }\right):={\left(\frac{1}{m}\sum\limits_{i=1}^{m}{\left\| \mathrm{t}\mathrm{r}\mathrm{a}\mathrm{n}\mathrm{s}\left({E}_{i}\right) \right\|}^{2}\right)}^{1/2} $ (7)
下载CSV 表 1 里程计相对位姿误差的RMSE比较 Table 1 RMSE comparison of odometry relative pose error

表 2为相对位姿误差的误差均值(Mean),表 3表示相对位姿误差的残差平方和(Sum of Squares due to Error,SSE),其中加粗字体为结果最优。

下载CSV 表 2 里程计相对位姿误差均值比较 Table 2 Mean comparison of odometry relative pose error
下载CSV 表 3 里程计相对位姿误差SSE比较 Table 3 SSE comparison of odometry relative pose error

表 1~表 3误差信息对比可知,本文算法在静态和动态环境图像序列中均取得较好的结果,在动态环境序列中的性能均优于ORB-SLAM2。

通过在ORB-SLAM2基础上引入运动物体检测算法可以精确删除动态关键点,使得SLAM线程不受移动对象的影响。在所有动态序列中,相对位姿误差RMSE均得到了有效的改善。虽然本文算法主要适用于现实中的动态环境,但是在静态序列中,本文提出的SLAM算法的性能对比ORB-SLAM2同样保持在同一精度水平。

本文算法与ORB-SLAM2的视觉里程计相对位姿误差对比如图 4所示。通过对比相对位姿误差图,可知ORB-SLAM2系统在动态场景fr3/w/static、fr3/w/xyz的误差很大,与同样具有运动物体检测算法的DynaSLAM对比,本文算法也同样具有精度优势。

Download:
图 4 视觉里程计相对位姿误差 Fig. 4 Relative pose error of visual odometry
3.2 SLAM算法对比评估

在评估SLAM算法实验部分,本文采用绝对轨迹误差(Absolute Trajectory Error,ATE)作为评价指标,该指标通过对比真实值与估计值之间的差异来进行评估,适用于估计机器人运动轨迹误差。绝对轨迹误差$ {d}_{j} $计算公式定义如下:

$ {d}_{j}=\left\|\mathrm{t}\mathrm{r}\mathrm{a}\mathrm{n}\mathrm{s}\left({x}_{j}\right)-\mathrm{t}\mathrm{r}\mathrm{a}\mathrm{n}\mathrm{s}\left({x}_{j}^{\mathrm{G}\mathrm{T}}\right)\right\| $ (8)

其中:$ {x}_{j} $表示估计轨迹;$ {x}_{j}^{\mathrm{G}\mathrm{T}} $表示真实轨迹。

表 4为算法绝对轨迹误差的均方根误差对比,表 5为算法绝对轨迹误差的误差均值对比,表 6为算法绝对轨迹误差的残差平方和对比。对比表 4~表 6可知,ORB-SLAM2算法在fr2/desk和fr3/l/house两种静态场景图像序列下,绝对轨迹误差相对较小,但与本文算法相比仍有差距。

下载CSV 表 4 不同算法绝对轨迹误差的RMSE对比 Table 4 RMSE comparison of absolute trajectory errors of different algorithms
下载CSV 表 5 不同算法绝对轨迹误差均值对比 Table 5 Comparison of mean absolute trajectory errors of different algorithms
下载CSV 表 6 不同算法绝对轨迹误差的SSE对比 Table 6 SSE comparison of absolute trajectory errors of different algorithms

对比表 4~表 6可知,本文算法相比DynaSLAM在4种不同相机运动的动态环境图像子序列上的ATE指标也取得了更小的误差值,算法精度更高。

图 5对比了ORB-SLAM2和本文算法在TUM数据集中fr3/w/xyz和fr3/w/static两个动态环相机位姿估计结果发生很大的偏移,最大ATE值达到1.2 m以上。本文算法针对运动物体进行处理后轨迹估计更加精准,误差大幅降低。

Download:
图 5 算法绝对轨迹误差对比 Fig. 5 Comparison of algorithm absolute trajectory errors

图 6表示ORB-SLAM2与本文算法在动态序列下预测值与真实值之间的轨迹误差。其中图 6(a)图 6(b)为ORB_SLAM2算法轨迹误差,图 6(c)图 6(d)为本文算法轨迹误差。通过对比可知,本文针对运动物体剔除后算法更加鲁棒,运行轨迹更加接近真实值。

Download:
图 6 算法轨迹误差 Fig. 6 Algorithms trajectory error

在验证算法鲁棒性方面,本文采用TUM数据集中包含移动物体的fr3/Walking动态序列验证。Walking子序列中包含两个移动的人,在前景和背景中不断运动。该图像序列中包含4种不同相机运动:

1)fr3/w/xyz子序列表示相机沿X-Y-Z轴(XYZ)移动。

2)fr3/w/half子序列表示相机沿半径为0.5 m的半球面(half)轨迹运动。

3)fr3/w/static子序列表示相机保持静止(static)状态。

4)fr3/w/rpy子序列表示相机在俯仰、翻滚和偏航轴上旋转(RPY)运动。

本文算法分别在上述4个不同相机运动的数据集上实验验证,在应对不同相机运动的过程中本文算法运行精度对比ORB-SLAM2、DynaSLAM表现最优。在应对4种不同相机运动的动态场景中,本文平均绝对轨迹误差相对于DynaSLAM有明显提升。

3.3 系统实时性评估

利用TUM数据集中提供的多种不同场景下的连续图像对本文系统实时性进行测试。测试图片分辨率为640×480像素,系统中只有跟踪线程需要对输入的图像进行实时处理。

本文实验采用INTER i5 CPU、内存8 GB、NVIDIA 1060TI GPU、显存6 GB进行实验。测试结果如表 7所示,算法平均耗时0.025 s,本文改进后的视觉SLAM算法的跟踪线程平均处理速度能够达到6 frame/s,基本满足实时性的需求。

下载CSV 表 7 跟踪线程耗时对比 Table 7 Comparison of tracking thread time 

表 7表示本文算法与DynaSLAM跟踪线程中所消耗的时间对比。在与DynaSLAM在相同实验设备运行动态环境序列时,本文算法相较于前者跟踪速度提升了10倍以上,满足室内环境实时跟踪的需求。

由于实际场景中移动机器人搭载的设备计算能力有限,DynaSLAM算法是结合深度学习语义分割与多视图几何完成运动物体剔除。由于计算资源有限,在一些情况下语义分割无法实时完成,采用多视图几何进行运动检测,这样会使一些特征点剔除失败,导致精度降低。本文算法所需计算资源相对较小,同时完成两次运动物体检测,提高了SLAM算法的运行精度。本文算法对比ORB-SLAM2与DynaSLAM算法特征提取结果如图 7所示。

Download:
图 7 算法特征点提取对比 Fig. 7 Comparison of algorithm feature point extraction

通过图 7对比可知,ORB-SLAM2算法虽然运行速度达到实时性的需求,但是算法并未针对动态物体进行处理,算法中一部分特征点提取到动态物体上,导致算法精度降低。DynaSLAM虽然针对运动物体进行处理,但是由于计算资源有限,在部分低动态场景中也产生了特征点的错误提取。本文算法利用两阶段运动物体检测,在计算能力较低的平台,在保证实时性的同时实现了运动物体的精准剔除,提取结果均优于ORB-SLAM2以及DynaSLAM算法。

4 结束语

本文面向室内动态环境,提出一种基于深度学习和多视图几何的视觉SLAM算法。利用两阶段运动物体检测确定实际产生运动的物体,基于语义数据关联算法采用静态特征点优化相机位姿。针对跟踪线程和局部建图线程,提出一种关键帧选取策略,从而减少运动物体对算法精度的影响,提高算法稳定性。实验结果表明,本文算法的绝对轨迹误差相较于改进之前的ORB-SLAM2,平均均方根误差降低40%。在算法实时性方面,与DynaSLAM相比算法实时性提高10倍以上。因此,本文算法能够在室内动态环境下稳定运行,实现准确的位姿估计。由于在动态环境中运动物体的速度、位姿等信息能够有效帮助自身系统完成定位,因此下一步研究如何将动态物体运动位姿估计和静态场景集成到一个视觉SLAM中,提高视觉SLAM在复杂动态环境中相机位姿估计的准确性和鲁棒性。

参考文献
[1]
ENGEL J, SCHÖPS T, CREMERS D. LSD-SLAM: large-scale direct monocular SLAM[C]//Proceedings of European Conference on Computer Vision. Berlin, Germany: Springer, 2014: 834-849.
[2]
ENGEL J, KOLTUN V, CREMERS D. Direct sparse odometry[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2018, 40(3): 611-625. DOI:10.1109/TPAMI.2017.2658577
[3]
MUR-ARTAL R, TARDÓS J D. ORB-SLAM2:an open-source SLAM system for monocular, stereo, and RGB-D cameras[J]. IEEE Transactions on Robotics, 2017, 33(5): 1255-1262. DOI:10.1109/TRO.2017.2705103
[4]
QIN T, LI P L, SHEN S J. VINS-mono: a robust and versatile monocular visual-inertial state estimator[J]. IEEE Transactions on Robotics, 2018, 34(4): 1004-1020. DOI:10.1109/TRO.2018.2853729
[5]
CHENG J Y, SUN Y X, CHI W Z, et al. An accurate localization scheme for mobile robots using optical flow in dynamic environments[C]//Proceedings of 2018 IEEE International Conference on Robotics and Biomimetics. Washington D.C., USA: IEEE Press, 2018: 723-728.
[6]
SUN Y X, LIU M, MENG M Q H. Improving RGB-D SLAM in dynamic environments: a motion removal approach[J]. Robotics and Autonomous Systems, 2017, 89: 110-122. DOI:10.1016/j.robot.2016.11.012
[7]
LI S L, LEE D. RGB-D SLAM in dynamic environments using static point weighting[J]. IEEE Robotics and Automation Letters, 2017, 2(4): 2263-2270. DOI:10.1109/LRA.2017.2724759
[8]
LIU H M, ZHANG G F, BAO H J. Robust keyframe-based monocular SLAM for augmented reality[C]//Proceedings of 2016 IEEE International Symposium on Mixed and Augmented Reality. Washington D.C., USA: IEEE Press, 2016: 340-341.
[9]
WEI T, LIU H M, DONG Z L, et al. Robust monocular SLAM in dynamic environments[C]//Proceedings of 2013 IEEE International Symposium on Mixed and Augmented Reality. Washington D.C., USA: IEEE Press, 2013: 209-218.
[10]
FISCHLER M A, BOLLES R C. A paradigm for model fitting with applications to image analysis and automated cartography[J]. Communications of the ACM, 1981, 24(6): 381-395. DOI:10.1145/358669.358692
[11]
YU C, LIU Z X, LIU X J, et al. DS-SLAM: a semantic visual SLAM towards dynamic environments[C]//Proceedings of 2018 IEEE/RSJ International Conference on Intelligent Robots and Systems. Washington D.C., USA: IEEE Press, 2018: 1168-1174.
[12]
BESCOS B, FÁCIL J M, CIVERA J, et al. DynaSLAM: tracking, mapping, and inpainting in dynamic scenes[J]. IEEE Robotics and Automation Letters, 2018, 3(4): 4076-4083. DOI:10.1109/LRA.2018.2860039
[13]
张金凤, 石朝侠, 王燕清. 动态场景下基于视觉特征的SLAM方法[J]. 计算机工程, 2020, 46(10): 95-102.
ZHANG J F, SHI C X, WANG Y Q. SLAM method based on visual features in dynamic scene[J]. Computer Engineering, 2020, 46(10): 95-102. (in Chinese)
[14]
HENEIN M, ZHANG J, MAHONY R, et al. Dynamic SLAM: the need for speed[C]//Proceedings of 2020 IEEE International Conference on Robotics and Automation. Washington D.C., USA: IEEE Press, 2020: 2123-2129.
[15]
BESCOS B, CAMPOS C, TARDÓS J D, et al. DynaSLAM Ⅱ: tightly-coupled multi-object tracking and SLAM[J]. IEEE Robotics and Automation Letters, 2021, 6(3): 5191-5198. DOI:10.1109/LRA.2021.3068640
[16]
张晨阳, 黄腾, 吴壮壮. 基于K-Means聚类与深度学习的RGB-D SLAM算法[J]. 计算机工程, 2022, 48(1): 236-244, 252.
ZHANG C Y, HUANG T, WU Z Z. RGB-D SLAM algorithm based on K-Means clustering and deep learning[J]. Computer Engineering, 2022, 48(1): 236-244, 252. (in Chinese)
[17]
LIU W, ANGUELOV D, ERHAN D, et al. SSD: single shot MultiBox detector[C]//Proceedings of European Conference on Computer Vision. Berlin, Germany: Springer, 2016: 21-37.
[18]
HOWARD A G, ZHU M L, CHEN B, et al. MobileNets: efficient convolutional neural networks for mobile vision applications[EB/OL]. [2021-02-10]. https://arxiv.org/abs/1704.04861.
[19]
SIMONYAN K, ZISSERMAN A. Very deep convolutional networks for large-scale image recognition[EB/OL]. [2021-02-10]. https://arxiv.org/abs/1409.1556.
[20]
MA J L, CHEN B. Dual refinement feature pyramid networks for object detection[EB/OL]. [2021-02-10]. https://arxiv.org/abs/2012.01733.
[21]
FU C Y, LIU W, RANGA A, et al. DSSD: deconvolutional single shot detector[EB/OL]. [2021-02-10]. https://arxiv.org/abs/1701.06659.
[22]
LIN T Y, MAIRE M, BELONGIE S, et al. Microsoft COCO: common objects in context[C]//Proceedings of European Conference on Computer Vision. Berlin, Germany: Springer, 2014: 740-755.
[23]
COVER T M, THOMAS J A. Elements of information theory[M]. New York, USA: John Wiley & Sons, Inc., 1991.
[24]
BESL P J, MCKAY N D. A method for registration of 3-D shapes[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1992, 14(2): 239-256. DOI:10.1109/34.121791
[25]
HANDA A, WHELAN T, MCDONALD J, et al. A benchmark for RGB-D visual odometry, 3D reconstruction and SLAM[C]//Proceedings of 2014 IEEE International Conference on Robotics and Automation. Washington D.C., USA: IEEE Press, 2014: 1524-1531.