APP下载

结合道路结构化特征的语义SLAM算法

2021-01-26李琳辉张溪桐周雅夫郑伟娜

哈尔滨工业大学学报 2021年2期
关键词:视差位姿结构化

李琳辉,张溪桐,连 静,周雅夫,郑伟娜

(工业装备结构分析国家重点实验室(大连理工大学),辽宁 大连 116024)

SLAM(simultaneous localization and mapping,同时定位及地图构建)是实现智能车辆自主导航的关键,受到国内外学者的广泛重视[1].根据传感器的不同,SLAM可分为基于激光传感器的LSLAM[2]和基于视觉传感器的VSLAM[3].其中,基于视觉传感器的SLAM具有成本低、获得的环境信息丰富等优点,是当前智能驾驶领域的研究热点.

VSLAM可分为以SVO[4]和LSD-SLAM[5]为代表的直接法SLAM,以及以SOFT-SLAM[6]和ORB-SLAM2[7]为代表的特征点法SLAM.其中,特征点法SLAM适用于光照条件较差和相机发生大尺度位移或旋转的场景,具有更强的鲁棒性.该方法首先提取图像中的显著特征,计算特征的描述子,再根据两帧图像中特征的描述子距离进行匹配,最后根据匹配关系用对极约束、PnP或ICP算法求解出两帧之间的位姿.

特征点法SLAM根据图像中包含的世界模型点来反推相机位姿,处于运动状态的特征点会使计算的准确性受到影响,因此不能解决动态场景中位姿计算和地图构建的精度下降问题.如何区分特征点的动静状态是消除运动物体对位姿计算带来不利影响的重点.针对动态场景中缓慢运动的非刚性物体,Agudo等[8]使用物理先验算法在动态场景中实现了姿态估计;Ahuja等[9]利用SfM算法对场景中的运动对象进行实时3D重建.针对动态场景中存在快速运动的物体(如自行车、汽车等),Yu等[10]提出一种光流跟踪帧间图像的一致性检验方法来找到运动的像素点,能检测到场景中快速运动的物体.从地图构建和方便智能车环境理解的角度而言,如果单纯从动静点区分的角度改善建图精度,一方面很难适应动点多于静点的场景,另一方面会将暂时静止的车辆、行人等可移动目标囊括到地图中.所以,在SLAM过程中结合场景的语义信息[11-12]显得尤为必要.

目前,以DeepLab[13]、FastFCN[14]、SDCnet[15]以及PSPNet[16]为代表的基于深度学习的语义分割方法具有较高的准确性和鲁棒性.其中,Zhao等[16]提出的PSPNet(pyramid scene parsing network)利用带有空洞卷积的特征提取和金字塔池化模块,有效提取图像的上下文信息,能够进一步提高语义分割的精度.

然而,针对某些近景特征不足、光照条件恶劣或存在大量运动目标的场景,在剔除运动目标后,特征点数量不足会导致位姿计算失效.针对该问题,研究者利用场景中线特征[17]、角特征[18]等其他特征与特征点结合,共同参与位姿计算.然而这些特征只有在特殊环境下才比较常见,在一些开阔的大型场景下仍存在特征不足的问题.Jeong等[19]就大型室外场景提出了Road-SLAM,该算法利用路面结构化特征对SLAM的回环检测部分进行了优化.这些特征在光照条件差的场景下也容易被检测,并且分布在路面这一单一平面上,易于通过立体匹配计算其准确深度,可以用于解决位姿计算过程中近景有效特征不足的问题.除此之外,路面结构化特征还可以应用于车辆车道保持、路径规划等驾驶任务.

基于以上分析,本文提出了一种结合场景语义信息和路面结构化特征的SLAM算法.针对复杂交通场景,设计带有改进金字塔池化模块的语义分割网络,得到图像中各像素对应的目标类别,作为运动点剔除的依据,从而避免运动点参与特征匹配而导致的位姿计算准确性下降问题;针对包含大量运动物体、近景特征点不足、光照条件差等恶劣场景,基于V视差确定图像中的路面区域并拟合出精确的视差值,提出一种基于路面结构化特征的位姿计算方法;最后,通过场景实验验证所提出方法的有效性,并建立包含语义信息的稠密点云地图,为复杂的驾驶任务提供尽可能全面的环境信息.

1 算法架构

如图1所示,本文设计的SLAM算法整体架构参考ORB-SLAM算法,共包含4个主要模块:位姿计算、稀疏地图构建、回环检测和语义重建.其中稀疏地图构建模块、回环检测模块沿用ORB-SLAM的基础框架.在此基础上,针对该SLAM算法在包含动态物体以及近景特征不足场景下的精度下降问题,对其位姿计算模块进行改进.同时,为给自动驾驶任务提供更丰富的环境信息,增加了语义重建模块.主要研究工作如下.

1.1 位姿计算模块改进

1)动态特征点剔除:为消除场景中动态物体对位姿计算精度的影响,本文通过设计的带有改进的带孔金字塔池化模块[20](advanced atrous spatial pyramid pooling,ad-ASPP)的神经网络对输入的图片进行语义分割,目标类别包括天空、建筑物、机动车、行人、自行车等.同时,对图像进行ORB特征点检测.若场景中某目标包含运动的可能性,则将其定义为动态目标(机动车、行人和自行车),属于动态目标类别的像素点为动态点.本文根据语义分割的结果,将动态点从特征点检测结果中剔除.

2)立体匹配有效范围外特征点剔除:根据立体匹配原理,场景中与相机光心距离过远的点的计算结果会失效,需要对候选点进行筛选,剔除不在立体匹配有效范围内的特征点.

3)道路结构化特征检测与匹配:进行过两次筛选后,剩余特征点的数量如果达到计算位姿所需点数量的阈值,则直接进行位姿计算过程;若特征点数量未达到阈值,则利用本文提出的基于路面结构化信息的方法进行帧间位姿计算.该方法对图像中的道路结构化特征进行检测与匹配,通过增加路面结构化特征点解决参与SLAM位姿计算的有效近景特征不足的问题.

1.2 增加语义重建模块

ORB-SLAM原本的稀疏地图构建模块构建的点云地图是稀疏的,缺失了大部分的环境信息.因此,本文增加了一个语义重建模块.在系统完成位姿计算和回环检测模块之后得到最终的位姿估计结果.根据稀疏地图构建模块筛选添加后得到的关键帧结果,以及回环检测模块优化后的位姿计算结果,将当前关键帧图像中的所有像素三维重构成世界坐标系下的点云;同时根据卷积神经网络获取到的语义分割结果,对点云进行类别属性的定义,从而构建出3D稠密语义点云地图.该地图同时包含了环境的几何信息和语义信息.

图1 算法整体流程

2 语义分割网络

2.1 主网络结构设计

本文语义分割网络的总体结构见图2.网络主要分为编码器和解码器两个部分.其中编码器部分采用残差神经网络(ResNet)作为特征提取基础网络[21],解密码器部分采用改进的带孔金字塔池化模块(ad-ASPP).输入的图像经过ResNet50特征提取模块的卷积操作后,得到相较于原图大小1/8的特征图,然后与本文所提出的改进的带孔金字塔池化模块(ad-ASPP)相连,最后得到原图大小的语义分割结果图.将ad-ASPP模块置于残差网络之后,可以利用深度网络提取得到更加抽象的语义信息,扩大高级特征信息感受野,这些特征比低级的轮廓、纹理信息更加有用.

图2 语义分割主网络结构

2.2 特征提取模块

本文使用的语义分割网络选用允许网络拓展深度而不会产生梯度爆炸和梯度消失的ResNet50作为特征提取的主体.ResNet50主要由5个模块组成,其中各个模块的参数构造见表1.其中包括每个模块的输出特征图像大小,以及每一个模块中各个卷积层的卷积核参数.特征提取模块的输入是大小为512×1 024的RGB图片,输出得到大小为32×64的特征图像.

表1 ResNet-50模型结构

2.3 改进的带孔金字塔池化模块(ad-ASPP)

在卷积神经网络中,空洞卷积[22]通过对卷积核进行插零来扩大每一次卷积的感受野,能够提取到原本非近邻像素的特征信息,从而获取图像的上下文信息,这一信息在语义分割任务中能够起到重要的作用.本文根据相关研究提出了一种改进的空洞卷积金字塔池化模型,其主体结构见图3.

图3 改进的带孔金字塔池化(ad-ASPP)模块

1)受经典网络ResNet的启发,加入了一个直连支路,将该模块的输入直接传递给输出,可以有效保证图片的原始信息不因卷积过程而丢失.

2)不合理地设置空洞卷积的扩张率会造成各种问题,当扩张率过大时,感受野的过大会造成提取到的信息关联性较差,不利于图像中细小物体的特征提取.为合理设置空洞卷积的扩张率,保证信息之间的关联性,本文还增加了一个级联空洞卷积的神

经网络支路.该结构在原始的空洞卷积基础上增加了感受野的尺寸,同时消除了不合理的扩张率设置对特征信息关联性的不良影响.假设未被级联前的两个空洞卷积层的感受野大小分别为N1和N2,则将二者级联后其感受野尺寸变为N=N1+N2-1.本文设计的级联空洞卷积扩张率分别设置为6、12、18、24.

3)受DeepLab[23]网络和PSPNet[16]启发,将该模块设计成多支路并联的形式,每条支路提取不同尺寸感受野内图像的特征,利用concat模块将这些支路的特征提取结果合并.不同感受野的融合使网络在关注图像局部细节的同时把握全局的结构特征.

4)空洞卷积层的串并联共存结构可以使图像中的每一个像素都更积极地参与计算,在一定程度上对于“棋盘格效应[24]”起到了削弱的作用.

3 基于路面结构化特征的位姿计算

若行驶过程中相机拍摄到的运动物体过多,特征点匹配过程中根据语义分割结果筛选掉大部分近处的运动特征点,只剩下远处的匹配特征点,在双目立体匹配过程中这些点可能会由于超出其有效距离范围而无法正确进行准确的立体匹配,这会导致相机位姿计算结果失效,所以本文提出了一种基于路面结构化特征检测与匹配的相机位姿计算方法.算法整体流程见图4.

图4 路面结构化特征位姿求解算法

首先,对输入的双目视图进行立体匹配,求解出该帧图像的视差图,然后利用视差图获得V视差图;根据世界坐标中某一平面在V视差图的表现,对V视差图进行霍夫变换,检测出表示地面的直线;根据这条直线能够准确地找到地面在图像中的区域,并将该区域设为感兴趣(range of interest,ROI)区域;在ROI区域中利用边缘检测和霍夫变换检测路面结构化特征线条,然后对线条上的特征点进行帧间匹配,最后根据匹配结果利用PnP算法求解出相机位姿.

3.1 基于V视差的地面检测

在世界坐标系下,设某点P的坐标为Pw=[xw,yw,zw],其投影到相机成像平面的像素坐标为Pp=[u,v]T.对于世界坐标系中的某一平面,其数学模型为:yw=h,h代表该平面的水平高度.则该平面视差值满足

(1)

式中:ddisp代表平面某点视差值,f代表相机焦距,b代表双目相机的基线长度,θ为相机主光轴方向与道路平面夹角.可知,地面上点的像素纵坐标与其视差值成线性关系.

V视差[25]是基于双目立体匹配获得的视差图得到的,包含3个维度的信息.其图像的纵轴表示原视差图的行坐标,横轴表示0~255的视差值,强度轴表示原视差图中视差值为某个值的像素点数量,见图5.根据上述推论,水平路面在V视差图中表现为一条斜率为负的倾斜直线.对V视差图进行霍夫检测,可以求出代表地面的直线(图5中的红色斜线),即地面的视差方程为ddisp=k·v+b.

图5 通过V视差图获取地面点视差

3.2 道路结构化特征检测

找到地面在图像中的位置后,在属于地平面邻近平面的图像范围内检测道路上的结构化特征.首先对图像进行二值化和Canny边缘检测,结果见图7(a);利用本文求解得到的地面视差方程将属于地面的区域保留,结果见图6(b),基本滤除了非地面的部分;利用霍夫变换检测出路面上的结构化特征线条,检测结果见图6(c).

图6 道路结构化特征检测

3.3 PnP位姿求解

检测到道路结构特征线条后,对前后两帧线条上的特征点进行描述子计算和匹配,得到用于位姿计算的特征点对,用于位姿求解.本文采取RANSAC-PnP[26]方法中的3D-2D模型求解相机位姿.该求解模型需要输入控制点,即匹配点对的3D世界坐标和待求帧该点的2D像素坐标.该特征点在世界坐标系中的坐标求解过程如下.

(2)

式中:fx,fy,cx,xy为相机内参;(u,v)为图像坐标;(x,y,z)为相机坐标系坐标,其中z为该点深度值.根据本文中对地面视差的求解结果,通过其映射关系可以得到地面上的像素点较为准确的视差值ddisp,进而通过下式求出该点深度值

(3)

2)相机坐标系-世界坐标系.相机坐标系到世界坐标系的转换关系为

(4)

基于上述公式,根据特征点的像素坐标及深度值求出其相机坐标系坐标,然后再根据前一帧的相机位姿计算得到特征点的3D世界坐标,结合这些特征点在当前帧上的2D像素坐标,就可以利用PnP方法求解出当前帧的位姿.

c)得到这些点群的世界坐标后,结合本文的语义分割结果,得到包含语义信息的点群.对每一个关键帧进行上述操作,建立稠密语义点云地图.

4 实验分析

4.1 语义分割网络

4.1.1 数据集

1) 针对改进的语义分割网络进行训练,训练的框架基于TensorFlow软件平台.选择Cityscapes[27]数据集作为语义分割网络的研究对象.

2) 数据集进入神经网络之前需进行预处理.首先,为了减小训练时长和降低计算机内存消耗,将图像尺寸转化为256×512;其次,本文使用pixel-mean方法取均值,使得神经网络在不会产生梯度过大的基础上节省反复试验最佳学习率过程的时间.

3)由于数据集的图片数量较小,为防止网络训练过程中过拟合现象的发生,对图片进行数据增强.主要操作为对图片进行一定的旋转、平移、缩放、镜像,这种样本的增加可以提高网络训练结果的泛化性.

4.1.2 测试结果及分析

在Cityscapes数据集上,将本文设计的神经网络与使用同样基础网络的PSPNet进行比较.训练网络所用的计算机软、硬件配置及深度学习框架见表2.

表2 训练软、硬件条件

根据硬件的计算能力,将图片输入的大小设为512×1 024,bach_size的大小设为3,当损失值稳定收敛后停止训练,共计16万次,得到表3的结果.可知,本文所设计的网络结构在运行时间基本相同的条件下,精度上相较于PSPNet有明显的提高,证明了语义分割网络改进的有效性.

图7(b)、(c)分别为表中两个网络的语义分割结果.可以看出,图(c)与图(b)相比,分割的噪声更少,道路与车辆边界的区域分割更加准确.所以,本文采用的改进的金字塔模块能够更好地提取图像上下文的信息,实现更加准确的图像像素级语义分割.

表3 网络性能定量比较

图7 基于RGB图像的分割效果对比

4.2 道路结构化特征位姿求解

1)数据集.本文选取Kitti_odometry数据集[28]作为位姿计算模块的数据集.该数据集包含22个不同交通场景的双目图像数据,配套提供了11个带有地面真实轨迹,便于SLAM结果的评估.本文所设计的SLAM方法需要使用到图像的语义信息,所以在输入SLAM系统之前需要对图像进行语义分割.

2)算法结果比较.如图8所示,在该场景下,相机视野左侧存在运动车辆,正以与相机所在车辆近乎相对静止的速度行进.在特征点检测与匹配的过程中,特征点法SLAM特征点检测以及匹配过程会将其列为特征点并参与匹配,匹配结果见图8.

图8 未去除运动物体特征点的匹配结果

经过计算,未去除动态特征点的匹配得出的位姿结果中,图8两帧之间在车辆前进方向上的相对位移为0.294 8 m,但其真实位移值为2.14 m,可见动态特征点参与匹配会使相机位姿计算的准确率降低.并且在此类场景中,若去除属于车辆的特征点和过远处的特征点,则用于计算位姿的特征点数量是不足的.

本实验节选了4段包含动态物体且有效近景特征不足的连续帧场景(见图9),分别利用本文提出的算法和纯特征点匹配求解相机位姿,比较结果见表4.从表中可知,分别从误差最大值、平均值、中值、最小值和均方根误差值分析,在场景中存在运动物体并且其他特征点质量不满足要求的情况下,本文提出的结合道路结构化特征的位姿计算方法具有更高的精度.此外,表4中还给出了2种算法的单帧平均运行时间.由于本文增加了道路结构化特征点检测与匹配的过程,算法的平均耗时约为未增加该过程算法的1.5~1.7倍.

图9 包含运动物体的场景

表4 绝对轨迹误差结果比较

5.3 3D稠密语义点云地图构建

场景整体的地图见图10.其中,图10(a)为原ORB-SLAM构建出的整体场景稀疏点云地图,可见虽然该地图包含了环境的整体架构信息,但是缺少很多局部场景细节.而本文加入语义重建模块后,构建出的3D稠密语义点云地图如图10(b)所示,实现了场景细节的补充.图10(c)是其中某一场景的稠密语义地图局部展示.场景中包含的车辆、树木、道路、建筑物都以点云的形式构建在地图中,点的颜色代表了它们所属的目标类别.可见,该地图在包含环境几何信息的基础上,还加入了局部场景的细节与环境的语义信息.本文构建的3D稠密语义地图模拟了驾驶员驾驶车辆时对环境信息的感知,可以为智能驾驶提供更丰富的环境信息.

图10 3D稠密语义点云地图

5 结 论

本文设计了一套在动态环境下对SLAM算法位姿计算模块的改进方法.提出了一种带有级联金字塔空洞卷积池化模块的语义分割网络,提取了图像中更加丰富的上下文信息,提高了交通场景下像素级语义分割的精度.利用语义分割的结果,本文在SLAM特征点检测过程中剔除了属于包含动态可能性类别的物体,防止运动物体使相机位姿计算产生误差.同时,针对剔除掉动态物体特征点后有效近景特征不足的场景,提出了一种通过检测道路结构化特征并进行帧间匹配进行相机位姿计算的方法.经过实验证明,该方法能够有效提高动态场景下相机位姿计算的准确性.最后,将SLAM位姿计算结果与语义分割结果进行融合,建立了包含语义信息的稠密点云地图,为自动驾驶任务提供更加丰富的环境信息,对实现更加复杂的驾驶任务具有重要意义.

猜你喜欢

视差位姿结构化
基于自适应窗的立体相机视差图优化方法研究
改进的非结构化对等网络动态搜索算法
深度学习的单元结构化教学实践与思考
视差边缘优化的SGM 密集深度估计算法∗
结构化面试方法在研究生复试中的应用
Kobe—one of the greatest basketball players
基于位置依赖的密集融合的6D位姿估计方法
左顾右盼 瞻前顾后 融会贯通——基于数学结构化的深度学习
曲柄摇杆机构的动力学仿真
优化ORB 特征的视觉SLAM