多任务检测网络下车道线宽度测距方法
2022-07-22李汉冰
刘 军,陈 辰,李汉冰,许 多
(江苏大学 汽车与交通工程学院, 江苏 镇江 212013)
0 引言
在智能交通系统中,机器视觉技术具有重要意义,主要应用于:车牌识别、车辆检测、交通标志检测、车道线检测、驾驶员行为检测、3D视觉感知等。其中,车道线检测以及基于车道线对前方车辆的距离估计是自动驾驶系统环境感知部分的关键技术[1-3]。
传统的车道线检测算法通常根据人工选取某个特征进行检测,如方向梯度直方图特征(histogram of oriented gradient,HOG)[1]、加速稳健特征(speeded up robust features,SURF)[2]等。然而在实际场景应用下,由于光照、阴影等因素导致图像的颜色和结构产生变化,从而影响到检测的准确性和鲁棒性。同时,车道线检测必须实时或更快速地执行,以节省其他系统的处理能力。
随着深度学习的快速发展,卷积神经网络广泛用于车辆检测和车道线检测中,考虑到大部分检测方法是将目标检测和车道线检测分开,而在复杂的交通场景中,在计算资源有限的情况下,若搭载在实车系统上的车道检测采用2个独立的检测模型,分别检测目标(车辆/骑行车/行人等)、车道线,不仅会增加硬件需求,而且会降低实时性,如何实现单个模型同时鲁棒地检测车辆和车道线是一个亟需解决的工程问题。
为了使模型具有通用性、低成本、检测的实时性,本文提出了一种新的多任务检测网络,基于YOLOv3[4]结构,采用轻量化模型MobilenNetv2[5]作为backbone,同时在损失函数中应用Focalloss[6],从而减少易分类样本的权重,使训练过程中模型更加关注难分类样本,共享YOLOv3的卷积层,构成编码解码结构,添加车道线分类模块、分割模块、坐标生成模块,将车道线看作点的集合,固定点的纵坐标,根据最小二乘模块生成的车道线拟合参数和点的纵坐标计算得到点的横坐标。与其他方法比,该方法实现了端到端的车辆与车道线检测,实时性和鲁棒性较好,且适用于多种场景。
基于单目视觉的目标测距方法目前主要有2种:基于目标位置信息和基于目标宽度信息。在基于目标位置信息的研究中,Adamshuk等[7]提出一种基于逆透视变换的测距方法,然而逆透视变换存在的固有特性使得误差伴随距离增加而增大,因此适用的测距范围较小。国内外学者从事目标宽度信息方向研究:Han等[8]提出一种基于车辆宽度特征的距离估计方法,然而车辆宽度估计的过程中存在很大的不确定性。Lee[9]提出一种基于车道线宽度的距离估计方法,该方法根据前方车辆底边缘位置处对应的车道线像素宽度进行距离估计,对比文献[8]中基于车辆牌照尺寸特征的测距方法,该方法的测距范围更广,测距精度也相应提高。
考虑到车道宽度是较为容易获得的先验信息,运动情况下测距鲁棒性较好,且距离和相机的姿态角的变化等因素对基于车道线宽度的测距方法影响较小,因此本文提出一种基于车道线等宽度假设、车道线为参考的目标定位模型。通过分析基于车道线斜率的车道线宽度的计算方法在计算过程中产生误差的原因,进而对弯道下前方车辆纵向距离的测距方法进行优化,最终通过对比几何方法获得的估计值与真实值验证模型的测距精度。
1 多任务检测网络的模型结构
1.1 目标检测部分模型
目标检测部分以YOLOv3为核心,用轻量化网络MobileNetv2替换darknet53作为backbone。MobileNetv2网络结合了深度可分离卷积和残差结构。深度可分离卷积相对于标准卷积计算量压缩率为:
(1)
式中:DK·DK·M·N·DF·DF代表标准卷积参数量;DK·DK·M·DF·DF+M·N·DF·DF代表深度可分离卷积参数量;Dk表示卷积核尺寸;DF表示输出的特征图尺寸;M为输入通道数;N为输出通道数。
网络融合特征金字塔[10](FPN)的思想,通过多尺度特征图检测目标,融合高层特征图[11]上采样和底层特征,网络输出为预测的边界框信息[12]、置信度[13]和类别概率。
1.2 车道线检测部分模型
基本框架:车道线检测网络共享YOLOv3的卷积层,在FPN的基础上继续添加上采样,构成编码-解码结构。编码器(MobileNetv2)逐渐降低物体的空间维度,提取语义信息,解码器逐步修复物体的细节和空间维度,生成逐像素的车道线权重图,同时对特征图的值取平方,确保生成的权重为正。
模型包含用于判断该车道线是否存在的车道线分类分支[14],分类分支位于编码器后,编码器提取的特征语义信息十分丰富,分类较为准确。
本文去掉传统的车道线后处理方法,将坐标特征[15]手动添加进特征中。在拟合曲线的过程中,鸟瞰图坐标更适合用于拟合曲线,如图1所示,因此将x坐标和y坐标的特征映射利用透视变换矩阵[16]转换为鸟瞰图坐标[17]再添加进车道线权重图中,为每个坐标配一个权重w,对生成的权重图[18]和2个坐标图进行平坦化,则可以得到特征图中每个像素i的x坐标、y坐标和车道线权重值。
图1 鸟瞰图坐标示意图
最小二乘模块:在鸟瞰图上,每条车道线都可以用二次函数拟合,使用最小二乘法对函数参数进行拟合。
最小二乘的矩阵形式:
min||Yβ-X||2
(2)
β=(YTY)-1YTX
(3)
将车道线权重加入到最小二乘计算中,令X′=WX,Y′=WY得到:
β′=(Y′TY′)-1Y′TX′
(4)
式中:Y∈Rm×n,β′∈Rn×1,X∈Rm×1,W∈Rm×m;W代表网络生成的车道线权重;X,Y代表添加的鸟瞰图横、纵坐标特征;β′代表车道线曲线拟合参数。
(5)
(6)
(7)
1.3 损失函数设计
车道线拟合损失函数:对坐标生成模块生成的点的横坐标进行监督,采用的损失函数为MSE损失:
(8)
车道线分类损失函数:采用二分类交叉熵损失
(9)
车辆检测损失函数:采用YOLOv3网络的损失函数,在损失函数中应用Focalloss,从而在训练过程中,模型更加关注难分类样本。Focalloss主要用在Lnoobj_confidence,为:
(10)
YOLOv3网络的损失函数为:
LYOLOv3=Lcoordinate+Lobj_confidence+
Lnoobj_confidence+Lclass
(11)
总的损失函数为:
L=λYOLOLYOLOv3+λx_coorLlane_xcoor+
λlane_clasLlane_classification
(12)
式中:
λYOLO=4,λx_coor=1,λlane_clas=2
多任务检测网络模型结构如图2所示。
图2 模型结构示意图
2 前方目标测距模型分析
2.1 车道宽度的计算模型
首先分析只存在俯仰角β的情况,如图3所示。其中:h=OO′为摄像机的安装高度,CD为车道宽度,AB=b为车道像素宽度,θ1为相机高度方向上一半的视场角,2θ2是相机方位视场角,β为俯仰角,OE′=f(焦距)。
图3 只存在俯仰角的驾驶场景示意图
根据投影关系可知:
(13)
当只存在俯仰角β时,车道宽度的计算公式为式(13)。
然后分析俯仰角β与偏航角α同时存在的情况如图4所示。其中:α为偏航角,2θ为相机方位视场角,DG为车道宽度,OE′=f(焦距)。
将O点投影到路面上记作O′,如图5所示。由图4可知,俯仰角β与偏航角α同时存在时,车道宽度的计算公式为式(14)。
图4 俯仰角与偏航角同时存在时的驾驶场景示意图
图5 O点投影图
(14)
2.2 基于车道线宽度的目标测距模型
考虑到车道线投影情况类似小孔成像的原理,根据检测到的前方车辆位置处的车道线在图像中的像素宽度,通过几何学知识推导出前方车辆纵向距离的计算式,图6展示了直道下测距模型。由式(14)计算出车道真实宽度Lline,通过相机内外参数可获得相机焦距fx、前方车辆位置处车道像素宽度Lpixel,因此,自车与前方车辆之间的纵向距离计算式为:
图6 直道下测距模型示意图
(15)
如图7所示,在弯道下行驶时,若按照直道下测距模型的计算方法去计算弯道模型,此时前方车辆位置处的车道像素宽度Lpixel对应的是真实世界坐标系中的Ldraw,然而从三维俯视图中可以看出Ldraw并不等于当前车道的实际宽度Lline。若仍然按照直道模型计算前方车距会产生极大的误差,且该误差随着弯道的曲率增大和前车距离变远而增大。
图7 鸟瞰场景下分析示意图
为了得到更准确的车道真实宽度,需要对弯道下前方车辆位置处的车道线宽度计算公式进行修正,减小测距误差,提高测距结果的精度。
已知x=f(y)为车道线方程,通过式(16)计算前方车辆的距离估计值Ydraw,然后根据Ydraw处的车道线切线的斜率k计算世界坐标系中Ldraw与Lline的夹角θ,最终推导出车道线的实际横向宽度的计算模型,计算公式分别为:
(16)
(17)
(18)
最后通过合并式(15)和式(18)得到前方车辆的实际纵向距离,计算公式为:
(19)
如图8所示,该测距方法的计算模型存在两点误差:首先根据式(16)计算斜率的过程中,令Ldraw=Lline并代入式(15)中计算得到纵向距离Ydraw,然而实际情况下,Lline 图8 弯道下测距模型细节图 为了降低上述两点误差对前方车辆测距结果准确性的干扰,以本车前进方向作为Y轴,相机所在位置的横向作为X轴,建立如图8所示的坐标系,L是根据式(18)计算出的横向距离。为了简化模型,车辆平行于车道线行驶且将左右车道线视作一个同心圆模型,为: (x-a)2+y2=(r+Lline)2 (20) (x-a)2+y2=r2 (21) 式中:a代表圆心的横坐标;r代表右车道线的半径。 则目标车辆位置处车道横向宽度Ldraw可表示为: (22) 式中,Yr为真实纵向距离。 将式(22)代入式(15)可以得到关于真实纵向距离Yr的关系式: (23) 文献[8]所用的测距方法根据式(15)整理为: (24) 将式(23)代入式(19)计算出本文所用方法的测距结果: (25) 假设车道宽度Lline是3 m,文献[9]所用测距方法与本文提出的测距方法在不同曲率半径的车道线下的测距结果与真实距离如图9所示。在相同的情况下,本文所使用的方法的测距结果更贴近真实距离,其测距精度随着真实距离的增加而提高;在车道线半径为85 m和105 m的情况下,由于半径较小,进行远距离车辆测距时会存在以下的特殊情况:目标车辆实际上已经驶离了自车的视野中心或驶出了自车的检测范围。然而对比文献[9]所用方法,本文修正后的方法在近距离车辆测距时效果更好,测距精度更高,修正后的测距结果更加接近真实距离。 图9 修正后的方法与文献[9]的测距结果 修正后的方法与文献[9]所用方法的误差如图10所示。车道线半径为85 m,真实距离为40 m的情况下,文献[8]所用方法的测距误差为12.4%,修正后的方法测距误差则为3.5%;真实距离为60 m时,文献[9]所用方法的测距误差为29.2%,修正后的方法测距误差则为17.7%。当车道线半径为225 m,真实距离为40 m的情况下,文献[9]所用方法的测距误差为0.94%,修正后的方法测距误差几乎为0;真实距离为60 m时,文献[9]所用方法的测距误差为7.98%,修正后的方法测距误差则为0.97%。 图10 修正后的方法与文献[8]方法的测距误差 从图10中可以看出,随着真实距离的增加,测距误差越来越大,然而相对而言误差距离较小。此外,测距误差受到车道线曲率半径的影响,具体表现为测距误差随着车道线半径的增大而降低,当半径超过200 m时,在100 m真实距离范围内的测距误差控制在1%以内。因此,综合而言,修正后的测距方法对减小误差效果显著。 训练所用数据为图森的车道线数据集加收集的各种场景图片,对车辆的标注框采用coco训练的YOLOv3进行自动标注,并使用标注工具进行补充。车道线标注采用图森的标注方案,如图11所示,将图片的下半部分等分成N份(固定的纵坐标),然后取车道线与标注线交叉点的横坐标,如果该纵坐标对应的位置处无车道线,则横坐标填充为-2。 图11 车道线标注示意图 实验平台为Ubuntu18.04,GPU型号为NVIDIA GeForce GTX 1080Ti,深度学习框架为pytorch,batchsize为8,所使用优化器为adam,训练时损失曲线如图12所示,其中横坐标表示迭代次数,纵坐标表示loss大小。 图12 损失曲线 模型的检测结果如表1所示,Focal-loss对于mAP提升较大,并且模型添加车道线检测任务也并不会对车辆检测产生较大的影响。部分图片可视化效果如图13所示,其中,第1列所展示的是原图,第2列为解码器生成的车道线权重图,第3列为图片检测结果。可以看出,模型对于车道线的近点拟合都比较好,由于二次函数并不能完全拟合鸟瞰图上的车道线投影曲线,弯曲车道线远处点拟合较差,此外,模型在有遮挡的情况下仍然可以预测出遮挡部分的车道线,鲁棒性较好。表中:mAP为平均类别精度;Acc、TPR和FNR为车道线检测评价指标。 表1 模型检测结果 % 图13 检测结果可视化效果图 1) 车道宽度计算。 实验通过在Prescan软件中搭建仿真环境,获取车道的真实宽度,便于结果验证。实验中所用的相机参数如表2所示。实验结果如表3所示。本文提出的车道宽度计算模型的误差为3.71%,小于4%,考虑到像素宽度的计算误差,计算结果已十分接近真实车道宽度,误差较小。 表2 相机参数 表3 车道宽度计算结果及误差分析 2) 前方目标测距结果。 为了解决文献[9]只针对直道下的测距方法存在的局限性,在实验中选用了89张包含标注数据的图片,共对140个目标车辆进行测距计算,测距结果如图14所示,相关结果如表4所示。误差分析如表5所示:将测距结果和真实距离进行对比,本文所用测距方法的误差均值μ和标准差σ均小于文献[9]所采用的方法且平均误差控制在4%以内,虽然在实际应用中随着真实驾驶场景的距离增加,测距误差也随之增大,但是相对而言误差距离较小,说明本文所用方法提高了测距精度高,可信度高。 图14 本文方法的计算结果 表4 本文所用方法的测距结果与误差分析 表5 实验的误差分析 本文所用方法仍然存在以下几种误差: 1) 车道宽度的准确性。车道线是关键参照物,车道宽度作为先验信息,在实际运用的环境中,考虑到天气因素,以及车道线的磨损情况都会使车道线宽度计算产生较大的误差,从而对后续的目标距离估计精度带来很大的影响。 2) 车道线方程的不准确性。实际应用的过程中,随着相机外参数存在变化,逆透视变换后得到的车道线不平行,使得车道线方程存在不准确性,从而带来距离估计上的误差。 3) 目标检测框底边缘位置的精度。目标的定位是由目标检测框位置决定的,如果检测框底边缘的上下像素发生位移,受到直接影响的是车道像素宽度,最终产生测距误差。 提出了一种可以实现端到端的车辆与车道线检测的多任务检测网络模型,从而获取目标测距所需的车辆检测框宽度与车道线拟合曲线的数学模型。推导出弯道下车道宽度的计算公式,并通过搭建仿真实验场景验证其准确性。通过分析现有的基于车道线测距方法运用于弯道下的目标测距存在的误差及其原因,并基于车道线斜率修正上述测距模型。通过KITTI数据集验证所提出的多任务检测模型与修正后的测距模型,结果表明:多任务检测网络对于近场的车道线拟合效果较好,且即便车道线被遮挡,模型仍能很好地预测出被遮挡部分,鲁棒性较好;在目标测距实验中,修正后的测距模型在误差均值与标准差方面均有显著提高,测距结果的平均误差小于4%,测距效果较好。3 实验结果及分析
3.1 车道线检测实验
3.2 前方目标测距实验
4 结论