1. 引言
移动机器人在未知环境下利用传感器检测周边数据,完成对周围环境的定位与构建称为即时定位与地图构建(Simultaneous Localization And Mapping, SLAM) [1]。
在传统的SLAM方案中,诸如RANSAC [2] (Random sample consensus)、鲁棒核函数等用于处理外点的算法在应对动态目标时可发挥一定作用,但是此类方法对于当有动态目标占据图像大部分区域时或大部分纹理特征位于动态目标上时效果较差。现有大多数动态场景SLAM算法仅依据视觉信息进行工作,其方案大致可分为基于几何、基于光流和基于语义三种。
(1) 几何约束:Abhijit Kundu [3]等基于多视图几何对特征进行静止或动态判断,该方法定义了两个约束并使用贝叶斯滤波器得出特征为静态或动态的概率,进一步提升判断的鲁棒性。Wang [4]等首先利用对极几何进行匹配外点的排除,再根据深度相机获取深度信息进行聚类,从而对运动目标进行识别。然而,这些方法无法保证实时性的要求。
(2) 光流约束:Y. Fang、Wang 和Sun Y [5]-[7]等人均采用稠稠密光流及其改进方法对场景进行运动分割,再基于静态部分进行相机位姿求解。Xu [8]等人提出的MID-Fusion可以实现多实例分割,通过对图像的每一帧用Mask R-CNN进行实例分割和边框的精修,最后完成相机的位姿估计。Long [9]等人提出的PSPNet-SLAM使用一个金字塔结构的PSPNet和误差补偿矩阵来实现动态点的检测。Ji [10]等人提出的系统能够检测已知和未知的移动物体,此外还提出了一个有效几何模块,通过将深度图像聚类到几个区域并通过它们的重投影误差识别动态区域来检测未知的运动对象。Zhang [11]等人提出了一种基于学习的快速的人体对象检测器,用于隔离动态人体对象的同时并实现稠密建图。Zhang [12]等人提出了一种新的视听融合方法,将声源方向融合到RGB-D图像中,从而消除动态障碍物对多机器人SLAM系统的影响。Hu [13]等人提出了一种称为DYP-SLAM的视觉SLAM算法,该算法使用目标检测框架检测环境中的移动对象,并给予一定的概率来判断是否为动态目标,同时结合语义约束和几何约束计算物体、关键点和地图点的静态概率,并将它们作为权重参与相机位姿估计。虽然上述方法提高了SLAM精度,但是由于光流法基于光度不变性假设过于严格,在现实中无法保证。
(3) 语义约束:随着深度学习的研究不断深入,部分学者开始考虑通过利用语义信息来提升SLAM算法在动态场景下的表现。Xiao [14]提出一种结合语义信息的单目视觉SLAM算法Dynamic-SLAM,该方法基于ORB-SLAM2框架,利用SSD (Single Shot Multi Box Detector) [15]得出目标的类型与位置,使用基于相邻帧速度不变性的漏检补偿算法及选择跟踪算法,改善了原有框架在动态环境下的表现。Ruidong Zhang [16]利用几何约束融合改进的YOLOv5提高了精度,Mseddi [17]通过改进YOLO5的网格来提高检测精度。
由于YOLOv7目标网络检测模块使用了更快的卷积操作和更小的模型[18],因此在相同的计算资源下可以达到更高的检测速度,此外,YOLOv7还提供了较高的识别精度,能够检测更多的细粒度对象。因此本文选择YOLOv7目标检测网络融合到ORB_SLAM3 [19]中,以满足对动态场景下的动态物体检测及剔除,提高其在动态场景下定位与建图的性能。
本文针对动态场景中进行研究,通过在ORB-SLAM3的跟踪线程上加入YOLOv7目标检测模块进行检测,并提取图像的语义信息与ORB特征相结合,通过目标检测算法预测动态区域并剔除动态特征点,保留的特征点用于跟踪匹配,以获得更准确的相机位姿估计。
2. YOLOv7目标检测算法
YOLOv7是一种目标检测算法,用于对象识别和定位,其模型处理速度和精度相较于其他算法有明显的优势(如图1(a)所示)。它由Input、Backbone、Head和Neck组成(如图1(b)所示)。Input部分对输入的图片使用Mosaic数据增强、自适应锚框计算等方法,选取4张图片通过缩放、裁减、随机排布的方式对图片进行拼接、缩放等操作组合成新的图片,以达到增加图片中小目标数量、丰富目标检测数据集的目的,使网络鲁棒性更好;Backbone部分是由CSB模块、ELAN模块、MP模块组合而成,其中CBS模块由Conv层、BN层、与SLU激活函数构成。其目的主要是对图片进行特征提取;ELAN模块由多个CBS模块分支堆暨构成,通过分支得到的特征层堆叠之后会再经过CBS模块进行特征整合,以便充分提取图片的特征信息;MP模块由CBS模块与Maxpool块构成,它分为两个分支:左分支是一个步长为2 × 2的Maxpool和一个卷积大小为1 × 1的CBS模块,右分支是一个卷积大小为1 × 1的CBS模块和一个卷积大小为3.3,步长为2 × 2的CBS模块,两个分支的结果输出后再进行一次堆叠,对提取的特征进行特征融合;Neck模块由特征金字塔网络构成,将具有丰富物体信息的浅层特征与具有丰富语义信息的深层特征进行双向特征融合;Head部分由REP块和CBS模块构成,将通过特征金字塔网格输出的特征图迸行通道数调整,输出三个不同尺寸的结果。
(a) YOLOv7模型处理速度与精度对比图
(b) YOLOv7检测算法框架
Figure 1. YOLOv7 target detection algorithm
图1. YOLOv7目标检测算法
3. 动态特征点剔除算法设计
在计算机视觉中,语义信息指的是对图像中对象的高级理解,如类别、位置、姿态和形状等,它有助于理解场景和动态目标。在动态场景下,SLAM可以利用语义信息提高系统的稳定性和建图定位的精度。SLAM系统通过提取和匹配特征点来初始化位姿,然后使用RANSAC方法来排除误匹配和动态点。但是在动态目标过多的情况下,位姿初始化的精度会降低。
3.1. ORB特征提取原理
ORB-SLAM3算法[19]由提取特征点和计算描述子两部分组成,分别是FAST角点检测法和BRIEF二进制特征描述子法。
如图2所示,FAST角点检测法是基于像素灰度差原理完成的。取一像素点p为圆心,半径为R的圆上按顺时针顺序选择16个像素点,并计算p与这些像素点的像素灰度差。如果存在N个连续像素点与p的像素灰度值的差值都大于阈值t,则确定p为一个角点。一般地,N取值为9,阈值t为p点灰度值的20%。
由于FAST检测法提取的角点会因为图像旋转和尺度不一致而导致后续特征点提取无法正确匹配,为解决旋转不变性和尺度不变性的问题,ORB算法采用灰度质心法和构建图像金字塔法来解决上述问题。
Figure 2. FAST corner extraction map
图2. FAST角点提取图
灰度质心法是通过计算图像的质心与形心之间的向量作为FAST特征点的主方向,其步骤为:
(1) 定义特征点局部图像块的矩为:
(1)
其中,
取0或者1;
表示在该点图像灰度值;
表示图像的矩。在半径为R的范围内,沿x,y坐标轴方向的图像矩分别为:
(2)
(3)
整个圆形范围内灰度值总和为:
(4)
(2) 图像的质心C为:
(5)
(3) 图像形心O指向质心C的方向向量
表示关键点的“主方向”,且旋转角度记为:
(6)
然后利用二进制描述子快速找到角点。
3.2. 动态特征点剔除策略
利用上述特征点投影得到像素点,利用特征点法获得基础矩阵F后,得到每对特征点对应的极线关系,通过对极几何约束计算每个特征点到其对应极线的距离,判断该点是否为动态特征点。假设两时刻的两个像素特征点
、
是匹配的特征点对,其齐次坐标表示如下式:
(7)
则
对应的极线
为:
(8)
进一步计算
到极线的距离D为:
(9)
理想状态下点到极线的距离
,然而,由于相机获取的图像受周围环境噪声、光线等的影响会产生畸变,故距离
。因此可通过设置阈值
来进行辅助判断,若
时,则认为该像素点是动态特征点,需进行剔除;反之则认为其是静止的点,予以保留。
4. 仿真结果分析
本研究的仿真基于Linux平台,其中系统版本为Ubuntu18.04,CPU为i5-12490F的处理器、内存为16GB。在TUM-VI数据集上分别进行ORB_SLAM3和ORB_SLAM3_YOLOv7仿真测试,并以绝对轨迹误差(Absolute Trajectory Error, ATE)和相对误差轨迹(Relative Pose Error, RPE) [20]作为评价两者精度的标准,分别针对大、小场景进行仿真分析。
4.1. 动态物体特征点识别
为确保定位与建图效果,剔除动态特征点的过程中需保留静态特征点。因此,只有当检测到的动态特征点位于高动态物体检测框时,才会进行剔除。在waiking_rpy、walking_xyz和室外动态数据集outdoor4下的仿真结果显示,图3(a)展示动态特征点识别前的效果,而图3(b)展示了识别动态目标点后的效果。由图可知,ORB_SLAM3在存在大量动态物体的场景中表现受限,因为工作人员的持续行走导致动态特征点对SLAM系统的定位效果产生持续影响。引入了ORB_SLAM3_YOLOv7后,通过结合YOLOv7目标检测算法,系统更有效地应对动态物体的干扰。ORB_SLAM3_YOLOv7在处理动态场景时能准确识别多个动态目标的特征点,如person和chair,并同时保留一些静态特征点如tv、mouse、keyboard等。当在室外动态数据集outdoor4下仿真中,在室外场景下多纹理的动态场景下,且由于本次数据集天气阴暗,光线不足导致画面较暗,但是由图观察得到,在室外动态场景且光线不足的情况下,本章提出的ORB_SLAM3_YOLOv7依旧能高效的识别动态物体并剔除,同时对于场景中的静态物体提起效果也不错(绿色点为静态特征点,红色框为动态剔除特征),可见ORB_SLAM3_YOLOv7显著提升了SLAM系统在动态场景下的定位效果。
waiking_rpy数据集对比
walking_xyz数据集对比
outdoor4数据集对比
(a) 动态特征点识别前 (b) 动态特征点识别后
Figure 3. Dynamic feature point recognition effect
图3. 动态特征点识别效果
4.2. 轨迹误差测试
为了进行针对动态场景的识别的仿真测试,选择使用融合YOLOv7的ORB_SLAM3_YOLOv7算法,并与ORB_SLAM3算法进行比较。为保证仿真的通用性,本文采用TUM-VI数据集作为测试序列,并使用ATE和RPE作为评价标准来衡量算法性能。为了评估精度,通过时间戳将真实值和估计值进行对齐,计算图像位姿之间的误差值。最终,ATE和RPE以图表形式输出,以便更加直观地呈现评估结果。
(1) 对其真实轨迹与估计轨迹,得到两者轨迹之间的最小二乘解变换矩阵
。绝对轨迹误差定义如下:
(10)
其中
表示SLAM系统估计位姿,
表示轨迹真实位姿。
(2) 完整时间戳内位姿的均方根误差RMSE为:
(11)
其中trans为SLAM系统得到的平移误差。
(3) 相对位姿误差指的是相隔固定时间差
两帧位姿差的精度,意在直接测量里程计的误差。因此第i帧的RPE定义如下:
(12)
(4) 完整时间戳内位姿的均方根误差RMSE为:
(13)
面对当前主流ORB_SLAM3_YOLOv5算法未针对大场景地形融合IMU数据,以及大场景中视觉SLAM算法在存在动态物体时建图鲁棒性不足的问题,本研究在ORB_SLAM3的IMU模式基础上融合YOLOv7,旨在确保大场景下视觉SLAM的鲁棒性,同时有效识别动态目标,从而提升定位与建图精度。研究通过对Mono-IMU和Stereo-IMU两种模式在TUM-VI大场景数据集下的仿真分析。
4.2.1. Mono-IMU模式仿真
由于单目相机会缺乏尺度信息,因此在整个SLAM工作过程中,单目模式下的SLAM会受到环境的较大影响,尤其是当面对动态物体时这种劣势会被放大,导致整个定位与建图效果明显变差;利用单目相机和IMU融合数据虽然可以改善在大场景下受到的影响,但是面对动态物体时依旧没办法很好的完成定位与建图效果。以slides2数据集为例,对ORB_SLAM3和ORB_SLAM3_YOLOv7在Mono-IMU模式下分别进行仿真测试得到轨迹误差曲线如图4所示,由图观察可得在Mono-IMU模式下ORB_SLAM3在x、y、z三轴方向的误差偏离明显,整体未出现与真实轨迹吻合的部分,且在750~920 s时间段x轴方向上出现约1.2 m的平均偏差,y轴上出现约1.1 m的平均偏差,而ORB_SLAM3_YOLOv7整个SLAM工作过程中更加靠近真实值,且在750~920 s时间段出现约0.3 m的平均偏差,相较于ORB_SLAM3精度提高了75%,在y轴上出现了约0.4 m的平均偏差,相较于ORB_SLAM3精度提高了64%。
Figure 4. Trajectory error curve
图4. 轨迹误差曲线
将两种方法的算法对大场景slides2动态数据集进行全局仿真得到轨迹曲线图如图5所示,图5(a)为ORB_SLAM3算法的轨迹曲线图,图中可以观察出在整个SLAM工作过程由于无法剔除动态特征点导致整体的定位精度受到这些动态特征点的严重影响,轨迹曲线与真实值偏离较大,出现较大的误差,最大达到1.994 m;图5(b)为ORB_SLAM3_YOLOv7算法的轨迹曲线图,整个SLAM工作过程中紧跟真实轨迹,且最大偏差为0.718 m,相较于ORB_SLAM3算法精度提高64%,并且由于单目且动态特征点造成缺乏尺度影响了ORB_SLAM3算法轨迹的尺度信息,但是ORB_SLAM3_YOLOv7算法利用剔除动态特征点的优势,保留静态特征点信息,使其具备与真实值近似的尺度信息。
(a) (b)
Figure 5. Trajectory curve graph
图5. 轨迹曲线图
在图6中,本章节对比了两种算法在整个SLAM工作过程中的相对误差分布情况,图6(a)为ORB_SLAM3算法的全局误差分布情况,整体的误差波动区间为0.00~2.00 m,且误差分布出现明显的波动,因此其定位精度较差;图6(b)为ORB_SLAM3_YOLOv7算法的全局误差分布情况,整体误差波动区间为0.0~0.7 m,相对于ORB_SLAM3算法误差分布更小且密集,rmse用于衡量预测模型在连续性数据上的预测精度的指标,其面积越小说明SLAM的定位精度越高,由图观察得ORB_SLAM3_YOLOv7算法的rmse相较于ORB_SLAM3算法约提高60%,说明ORB_SLAM3_YOLOv7算法的定位精度相较于ORB_SLAM3算法提高了60%。
(a) (b)
Figure 6. Error distribution graph
图6. 误差分布图
为了减少仿真随机性引发的误差,对三组数据集room1、slide2和corridor4进行了10次的Mono-IMU模式仿真测试,并取得平均值作为最终的仿真结果。同时对比了ORB-SLAM3和ORB-SLAM3_YOLOv7算法在Mono-IMU模式下的定位与建图效果,将结果整理在表1 (绝对轨迹误差结果对比)和表2 (相对轨迹误差结果对比)。从表中提升效率的数据来看,在APE这两种误差对比中,可以明显观察到,在Mono-IMU模式下,ORB_SLAM3_YOLOv7算法在RMSE和STD的精度方面均取得了显著的提升,尤其在场景变化时,精度提高幅度超过55%;在RPE这两种误差对比中,可以明显观察到,在Mono-IMU模式下,ORB_SLAM3_YOLOv7算法在RMSE和STD的精度方面均取得了显著的提升,精度提高幅度均超过55%,当在多个场景变化下如corridor4数据集下,精度更是提高了87%。这结果明确表明,ORB_SLAM3_YOLOv7算法在大场景下具有更高的精度,提供更卓越的建图与定位效果,更加符合实际应用的需求。
Table 1. Comparison of Mono-IMU absolute trajectory error (ATE) results (mm)
表1. Mono-IMU绝对轨迹误差(ATE)结果对比(mm)
数据集 |
ORB_SLAM3 |
ORB_SLAM3_YOLOv7 |
提升效率(%) |
RMSE |
STD |
RMSE |
STD |
RMSE |
STD |
room1 |
29.860 |
28.269 |
11.573 |
9.118 |
61.24 |
67.75 |
slide2 |
586.603 |
278.475 |
261.933 |
100.360 |
55.35 |
63.96 |
corridor4 |
100.607 |
68.857 |
72.750 |
18.378 |
27.69 |
73.31 |
Table 2. Comparison of Mono-IMU relative trajectory error (RTE) results (mm)
表2. Mono-IMU相对轨迹误差(RTE)结果对比(mm)
数据集 |
ORB_SLAM3 |
ORB_SLAM3_YOLOv7 |
提升效率(%) |
RMSE |
STD |
RMSE |
STD |
RMSE |
STD |
room1 |
21.761 |
21.252 |
9.688 |
8.988 |
55.48 |
57.71 |
slide2 |
40.275 |
33.404 |
16.653 |
15.250 |
68.65 |
54.35 |
corridor4 |
87.659 |
86.886 |
11.256 |
10.797 |
87.19 |
87.57 |
4.2.2. Stereo-IMU模式仿真评估
由于双目相机可以通过左右两幅图像得到尺度信息,因此在面对大多数静态场景时定位与建图精度可以得到保证,但是面对动态场景时,依旧会被动态特征点影响定位的问题,而且大场景下缺乏鲁棒性,在SLAM工作中容易丢失前期建立的地图信息导致后续建图效果下降,因此利用双目相机和IMU融合的信息可以提高在大场景下的鲁棒性。
以corridor4数据集为例,对ORB_SLAM3和ORB_SLAM3_YOLOv7在Stereo-IMU模式下分别进行仿真测试得到轨迹误差曲线如图7所示,由图观察可得Stereo-IMU模式下ORB_SLAM3在x、y、z三轴方向的误差偏离明显,整体基本与真实轨迹吻合程度较差,在210~250 s时间段x轴方向上出现约0.3 m的平均偏差,y轴上基本与真实值偏离,且在同一时间段出现约0.1 m的平均偏差,z轴上更是达到约0.4 m的平均偏差,而ORB_SLAM3_YOLOv7整个SLAM工作过程中更加靠近真实值,在任何时间段几乎无偏差,相较于ORB_SLAM3精度提高了20%;在210~250 s时间段pitch航向角ORB_SLAM3出现约8度的偏差,而ORB_SLAM3_YOLOv7在r、p、y三种航向角几乎与真实值一致。
将两种方法的算法对大场景corridor4动态数据集进行全局仿真得到轨迹曲线图如图8所示,图8(a)为ORB_SLAM3算法的轨迹曲线图,图中可以观察出在整个SLAM工作过程由于无法剔除动态特征点导致整体的定位精度受到这些动态特征点的严重影响,轨迹曲线与真实值偏离较大,出现较大的误差,最大达到0.212 m;图8(b)为ORB_SLAM3_YOLOv7算法的轨迹曲线图,整个SLAM工作过程中紧跟真实轨迹,且最大偏差为0.094 m,相较于ORB_SLAM3算法精度提高56%。
Figure 7. Trajectory error curve
图7. 轨迹误差曲线
(a) (b)
Figure 8. Trajectory curve graph
图8. 轨迹曲线图
在图9中,本章节对比了两种算法在整个SLAM工作过程中的绝对误差分布情况,图9(a)为ORB_SLAM3算法的全局误差分布情况,整体的误差波动区间为0.04~0.2 m,图9(b)为ORB_SLAM3_YOLOv7算法的全局误差分布情况,整体误差波动区间为0.02~0.09 m,相对于ORB_SLAM3算法误差分布更小且密集;rmse用于衡量预测模型在连续性数据上的预测精度的指标,其面积越小说明SLAM的定位精度越高,由图观察得ORB_SLAM3_YOLOv7算法的rmse相较于ORB_SLAM3算法约提高90%,说明ORB_SLAM3_YOLOv7算法的定位精度相较于ORB_SLAM3算法提高了90%。
(a) (b)
Figure 9. Error distribution graph
图9. 误差分布图
为了减少仿真随机性引发的误差,对三组数据集room1、slide2和corridor4进行了10次的Stereo-IMU模式仿真测试,并取得平均值作为最终的仿真结果。同时对比了ORB-SLAM3和ORB-SLAM3_YOLOv7算法在Stereo-IMU模式下的定位与建图效果,将结果整理在表3 (绝对轨迹误差结果对比)和表4 (相对轨迹误差结果对比。表中提升效率的数据来看,在APE,明显可以观察到,Stereo-IMU模式下,ORB-SLAM3-YOLOv7算法在RMSE和STD的精度方面都取得了显著提升,尤其在室外场景(corridor4)时,
Table 3. Comparison of Stereo-IMU absolute trajectory error (ATE) results (mm)
表3. Stereo-IMU绝对轨迹误差(ATE)结果对比(mm)
数据集 |
ORB_SLAM3 |
ORB_SLAM3_YOLOv7 |
提升效率(%) |
RMSE |
STD |
RMSE |
STD |
RMSE |
STD |
room1 |
7.331 |
3.615 |
6.702 |
3.063 |
8.58 |
15.23 |
slide2 |
269.299 |
60.971 |
178.406 |
59.174 |
33.75 |
2.95 |
corridor4 |
122.559 |
23.109 |
57.928 |
11.089 |
52.73 |
52.01 |
Table 4. Comparison of Stereo-IMU relative trajectory error (RTE) results (mm)
表4. Stereo-IMU相对轨迹误差(RTE)结果对比(mm)
数据集 |
ORB_SLAM3 |
ORB_SLAM3_YOLOv7 |
提升效率(%) |
RMSE |
STD |
RMSE |
STD |
RMSE |
STD |
room1 |
3.666 |
2.908 |
3.119 |
2.353 |
14.92 |
19.09 |
slide2 |
14.949 |
14.613 |
12.218 |
11.434 |
18.27 |
21.75 |
corridor4 |
7.217 |
6.936 |
3.838 |
3.299 |
46.82 |
52.44 |
精度提高幅度超过50%;在RPE明显可以观察到,Stereo-IMU模式下,ORB-SLAM3-YOLOv7算法在RMSE和STD的精度方面都取得了显著提升,尤其在室外场景(corridor4)时,精度提高幅度超过46%。表明Stereo-IMU模式下的ORB-SLAM3-YOLOv7算法在大场景中具有更高的精度,提供更好的建图与定位效果,更符合实际应用的需求。
5. 结论与分析
针对视觉SLAM算法在动态场景下定位与建图效果较差的情况,本研究选择YOLOv7网络检测算法融合得到的ORB_SLAM3_YOLOv7算法可提高视觉SLAM在动态场景下的定位与地图构建效果以及大场景下的鲁棒性,在TUM和TUM-VI数据集上进行仿真分析,得到以下结论:
(1) 在动态而小尺度的场景中,ORB_SLAM3_YOLOv7算法在处理动态物体方面表现突出,明显减少了特征点受动态物体干扰的情况。相对于当前主流的ORB_SLAM3_YOLOv5算法,其精度提高超过25%,与ORB_SLAM3算法相比,精度提高超过80%,并且生成的轨迹更接近真实轨迹。
(2) 在具有动态目标的场景中,本本提出的ORB_SLAM3_YOLOv7算法融合imu数据,表现出更强大的鲁棒性。相对于传统ORB_SLAM3算法,它实现了显著的定位精度提升,特别是在开放室外环境中,其精度改善可超过50%。
基金项目
国家自然科学基金(52262044),黔科合支撑[2023]一般400。
NOTES
*通讯作者。