闫春香 陈林昱 王玉龙 刘文如
摘 要:基于深度学习的端到端自动驾驶有着简洁高效的优势,尤其在车道保持上有着良好表现,但是面临路况复杂时存在极大的不稳定性,表现为车辆偏离车道现象。针对此问题,文章首先在虚拟环境下利用神经网络可视化方法分析了车道偏离的原因,然后在方法上将方向盘转角序列作为神经网络输入,同时根据车道线检测的方法求出车辆所在车道的面积作为辅助任务。文末分析对比了文章方法和递归神经网络(RNN,LSTM)方法在平稳性上的差异,最后通过虚拟实验和实车实验验证文章中的方法的有效性。结果表明,本文中的方法能有效改善车辆行驶平稳性问题,和LSTM方法相比稳定性效果相近,但本方法操作应用简单,节省计算资源。
关键词:端到端;神经网络;自动驾驶;序列;车道线检测
Abstract: End to end self-driving has drawn increasing attention due to its simplicity and efficiency. Especially, this approach has achieved good performance in lane following. But its safety is still a concern with existing problem like sudden lane departure under complex road conditions. In view of this problem, firstly, we analyze the example accounted for such decision making problem by visualizing attention. Secondly, advocate sequences of steering angles as the input to Convolutional Neural Network(CNN), then, calculate the road area of the car in its lanes using lane detection as auxiliary task.Meanwhile,the contrast difference of stability is analyzed compared to the recurrent neural network in deep learning(RNN,LSTM). Finally, the results show that this method enhances the stability closed to LSTM and computation -ally efficient verified by virtual and real vehicle test.
1 背景
车辆在行驶中面临的环境场景非常庞大且复杂,自动驾驶算法通常根据人为编写规则,建立一套复杂规则系统来应对多变复杂的环境。相对于此,端到端自动驾驶算法有着结构简单、成本低廉的优势,用深度学习网络[1]模仿人类驾驶行为来替代复杂的规则系统,是近几年的新兴技术。
英伟达在2016年提出应用CNN网络,由车辆实时拍摄的图片输入直接映射到方向盘转角输出[2],利用端到端的方式实现了车道保持任务。端到端的技术实际上在数十年前已经有所应用[11],但是可以实现的功能较为单一,对于复杂场景难以处理。长短时记忆网络LSTM[3,4,5]可以存储过去的部分记忆,改善CNN在时序问题上的表现,在自动驾驶上也开始广泛应用。论文[3](BDD)建立一个300小时的视频数据集,提出了FCN+LSTM[4]方法,该网络先通过全卷积网络提取图像的特征,然后通过长短时记忆网络(LSTM)将当期的特征和之前的特征融合,共同预测车辆下一个行为动作,比如左转右转直行等等,但是网络输出只包含车辆的方向盘控制,没有对于车辆速度的控制。论文[6]把车辆周边360度的信息进行融合,该方法的缺点是需要同步多个传感器间的信息,并且整个网络计算耗时较长。论文[7]用CNN和LSTM并行处理图像输入,两个网络分别负责独立的任务,CNN负责预测方向盘转角,LSTM负责预测速度,实现了对车辆的横纵向控制。
除了上述加入LSTM的方法外,许多论文提出了不同的CNN网络结构创新,比如引进辅助任务。辅助任务是为了使网络模型可以关注车辆行驶过程中人为认为需要额外关注的要素,以此来改善自动驾驶表现。通过在训练方法上做改变,例如把语义分割[3],物体检测[8]等作为辅助任务,这样的多任务学习方式可以提升神经网络的学习能力[9,10]。辅助任务的引入,使得模型强化了对于指定交通场景特征的关注,其缺点是需要大量的人工来标注场景元素。
经过上述分析,在提高自动驾驶技能方面,在CNN架构及CNN+LSTM架构上都有各种不同架构及应用,由于LSTM比CNN可解释性差,且其网络结构复杂,数据处理繁琐。对此,本文提出辅助车道线检测的端到端自动驾驶,最后实车上进行了测试。
2 方法介绍
2.1 卷积神经网络结构
端到端自动驾驶模型训练的数据集只需要采集人类驾驶行为的数据,将原始数据输入神经网络直接映射输出驾驶控制指令数据(目标方向盘转角、油门、刹车)。本文首先采用CNN架构测试了车道保持的情况。
本文利用resnet50作为基模型,通过回归计算方式输出预测方向盘转角值及速度值。在行驶时预测仅使用中间摄像头作为输入。
在测试中发现,车辆在行驶过程有预测方向盘转角值的突变导致驶离正常车道后现象,在GTAV模拟环境下重现该现象,并进行分析,见2.2。
2.2 可视化
在GTAV的虚拟环境下,采用resnet50模型重现了车辆突然驶出路面现象,得出车辆冲出路面时的方向盘预测转角和上一幀相比,出现较大的突变。本文对该时刻神经网络模型的关注点进行了可视化分析[5,12],具体方法如下图2。输入图像3通道大小为224*224,经过卷积层CONV1的处理后输出64通道大小为112*112 map图,CONV2_x到CONV5_x是带有残差结构的卷积block。从最后一层逆向计算,使用平均池化的方法对输出特征图每个通道进行加权并反卷积点乘上一层的map值,最后获取到的结果转化为热力图的形式叠加到原始图像上。
图3是可视化结果,a(1)是正常行驶场景图,a(2)是其对应的神经网络关注点热力图,可以看出a(2)能正确的关注到车道线;b(1)是车辆冲出正常车道的场景图,b(2)是对应的关注点热力图,从可视化效果的热力图看,神经网络把红框内的木头错认为车道线。
2.3 网络架构
网络设计基于数据输入及损失函数两个方面,将历史数据作为输入解决序列问题,在损失函数上将车辆驶出车道线的情况给以惩罚。
2.3.1 方向盘转角序列
驾驶行为是一个时间上连续的序列行为,下一时刻的车辆驾驶控制通常是基于上一次的状态结果微调。神经网络在处理时间序列问题上,目前多是采用CNN+LSTM的方法,但是该方法的训练和预测均比单独的CNN网络复杂,同时在预测时LSTM网络的运算资源消耗也较大,在序列长的情况下,预测耗时较长,而在序列短时虽然计算耗时较短,又难以保证效果。本文在序列行为问题上采用历史序列帧的状态作为模型输入来解决。
本文所述模型架构如图4所示,输入为摄像头拍摄的图像,经过CNN(Resnet50)网络提取图像特征,输出全连接层FCi,FCi层输出为1024个神经元。前5帧的历史方向盘转角值首先转换为one-hot形式,然后与FCi连接起来构成一维数组,经过一次全连接变换FCs输出的大小为256,将FCi和FCs连接,共1280个神经元,并在后方增加三层全连接层,全连接层输出的神经元个数分别设定为512、256、50。根据实验结果,作为输入的历史帧数设置5帧是比较合适的选择。
2.3.2 惩罚函数
为了降低神經网络预测难度,在训练回归预测中引入车辆偏离车道的惩罚损失函数。
首先利用已知的车道线检测模型识别出当前车辆所在车道线,车身左右两边的车道线在远方形成交叉点,构成图4中OnRoad所示的黄色区域。若无形成交叉点,则取车道线的线端两个坐标点,根据直接方程式y=kx+b构成直线,如此,和图像底部构成封闭区域。在直行路面,当前车道线所构成的区域通常呈锐角三角形,若在道路弯曲路面,则通常呈现图4虚线框内效果图。
其次求出黄色封闭区域在整个图像面积中占比,见公式(1),w×h表示图像宽和高,σ (i,j)表示在二值图中非0的值。由此,当车辆冲出正常车道时,车道面积和背景图的重叠率几乎为0。
最后偏离车道时的损失函数定义为lOnRoad=1-lRoad,当lRoad值越小时说明车辆已偏离当前车道,反正lRoad值较大是说明车辆在正常车道行驶。
大多的车道线辅助任务的方法是在训练时使得训练模型同时关注车道线信息,需要大量人工标注车道线的信息。本文所述的辅助车道线检测的方法,将车道线检测任务和模型预测任务分开进行,车道线的识别方法可以使用机器视觉的方法或深度学习的方法,不需要对所有参与预测模型训练的大规模数据集标注车道线,从而避免了大量人工标注。
2.3.3 损失函数
本文的损失函数由方向盘转角损失函数、速度损失函数和2.3.3章节所述的惩罚函数三部分构成,见公式2,其中给以方向盘转角损失函数系数配比为2。
θt表示当前t时刻预测的方向盘角度,θlt表示t时刻的方向盘转角真值。St表示当前t时刻预测的速度,和方向盘转角不同的是,速度的label是取5帧后的值,即Sl(t+5)表示t时刻向后5帧图像对应的速度真值,具体设定需根据本车的整体系统响应周期进行设定。
方向盘转角和速度的预测采用均方误差MSE损失函数作为回归预测,见公式3,MSE越小表示预测值和真值越接近。
yi为训练时batch中第i个数据真值,yi'为神经网络预测的值,在本案例中,y对应为方向盘转角θ和速度s。
2.3.4 模型输入输出
图像输入处理:模型输入的图像数据为前向3个摄像头所采集的数据,每个摄像头的图像数据都是单独作为神经网络的输入。将它们都缩放到同样的尺寸224x224,并按照image/127.5-1的方法归一化预处理。
Label处理:方向盘转角label按照steer/steermax的方式归一为(-1,1)之间的浮点数,速度label按照speed/speedmax的方式处理为(0-1)之间浮点数。
方向盘转角序列输入处理:FCs处输入的方向盘转角值用one-hot编码形式输入,one-hot编码分类设定为200,将5个编码值形成数组大小为1000(200*5)的一维数组。
输出:采用均方误差回归预测输出方向盘转角值和速度值。
3 实验验证
使用广汽GE3车型进行实车改造,在广州生物岛进行实车测试,多次测试结果表现,绕行一周(7KM),人工干预次数一般在2次以内甚至无需人工干预,干预次数表现基本上和CNN+LSTM方案相当,而仅仅采用resnet50基础模型测试时,很难做到无人工干预。
图5是完全没有参与训练的广州大学城部分路段的离线测试结果,测试对象为方向盘转角,其中蓝色线是模型预测的方向盘转角值,橙色线是测试车辆行驶实际转角值。
图5(a)是2.1所述的CNN结构离线测试结果,图中红圈2之前的路段存在大量连环弯道,全路段有路边停车,及来往车辆数量高于5。红圈1、2、4、5为三岔口,由于CNN预测为离散信息,所以在三岔口有不同的表现,红圈3是提前转弯,转弯半径较小。图5中(b)是cnn+SeqRoad的方法离线测试图,整个趋势吻合。图5中(c)是CNN+LSTM离线测试图,趋势和(b)接近,但是在转弯半径较大的大弯处表现的力度有所不足,如图(c)中所圈出的1、2、3处。
(a) cnn结构离线图 (b) cnn +SeqRoad结构离线图 (c)cnn+lstm结构离线图 (d)实车测试车外视角 (e)实车测试车内视角
表2為对应的均方根误差对比表,同一批数据集下RMSE值越小其效果越为理想,本文方法明显优于单纯的CNN的表现,而LSTM在大弯道处理表现转弯力度不足。
4 结论
针对端到端自动驾驶中可能出现的车辆突然偏离正常车道这种极其危险的行为,本文提出了辅助车道线检测的端到端自动驾驶,能够较为有效的解决上述问题。车道线检测辅助任务不是在训练中同步完成,而是作为独立任务,避免了大量的人工标注,省时节力。和CNN+LSTM方法相比,本方法结构简单,训练和测试迭代速度快,且测试效果较优。目前本方法能在开放道路的车道保持上有着较好的效果,但仍存在部分问题需要进一步研究,比如动态绕障、换道并线表现不佳等问题。
参考文献
[1] Deep learning. Y.LeCun, Y.Bengio, and G.Hinton, 2015.
[2] End to end learning for self-driving cars. M.Bojarski, D.D.Testa,D. Dworakow ski,B.Flepp,P.Goysl,etc,2016.
[3] End-to-end learning of Driving Models from Large-scale Video Datasets.H.Xu,Y.Gao,F.Yu,and T.Darrell,2017.
[4] Long short-term memory recurrent neural network architectures for large scale acoustic modeling. H.Sak, A.Senior, and F.Beaufays, 2014.
[5] Deep steering:Learning end-to-end driving model from spatial and temporal visual cues. L.Chi, Y.Mu,etc. 2017.
[6] End-to-End Learning of Driving Models with Surround-view Camers and Route Planners. S.Hecher, D.Dai, L.VanGool,etc. 2018.
[7] End-to-end Multi-modal multi-task Vehicle Control for self-Driving Cars with Visual Perceptions. Z.Yang, Y.Zhang, J.Yu, J.Cai, J.Luo, 2018.
[8] Object detection networks on convolutional feature maps. S.Ren, K.He, R.B.Girshick,X.Zhang,and J.Sun, 2017.
[9] Learning affordance for direct perception in autonomous driving. C.Chen, A.Seff, A.Kornhauser, and J.Xiao, 2015.
[10] Learning End-to-end Autonomous Driving using Guided Auxiliary Supervision. A. Mehta, A. Subramanian, 2018.
[11] Off-road obstacle avoidance through end-to-end learning. U.Muller, J.Ben, E.Cosatto, B.Flepp, and Y.LeCun,2006.
[12] VisualBackProp:visualizing CNNs for autonomous driving. M. Bojarski, A.Choromanska, K.Choromanski,B.Firner,etc, 2016.