基于改进PilotNet的端到端无人车控制
2022-07-22王树磊赵景波刘逍遥张大炜
王树磊,赵景波,赵 杰,刘逍遥,张大炜
(常州工学院 汽车工程学院, 江苏 常州 213032)
0 引言
端到端无人驾驶决策目前主要采用深度学习(或称为行为克隆,behavior cloning)和强化学习两种研究方法[7]。深度学习方法依赖预先采集的数据集。Somda等[8]最早提出端到端驾驶模型,采用的是3层全连接网络。Chen等[9]搭建了一个6层的卷积网络,通过安装在机器人小车前的2个无线相机获取的图像进行预测,得到小车的转向角,从而实现野外环境下的避障。Chen等[6,10]通过卷积神经网络建立端到端控制模型PilotNet,并用于预测车辆在自动驾驶时的转向角。Wang等[11]利用长短期记忆(long shor-term memory,LSTM)神经网络提高了跟车模型的精度。田晟等[12]提出一种基于端到端学习的卷积神经网络-长短时记忆(convolutional neural network-long short term memory,CNN-LSTM)多模态神经网络模型,采用ResNet50完成方向盘转向角的预测,采用LSTM完成车辆速度的预测,从而实现自动驾驶的横纵向控制。
近年来,基于强化学习的方法也得到了较为广泛的研究[13-14],该方法的出发点是通过不断的探索和改进来学习相应的策略[15-16]。这种方式不需要预先采集数据集,但是高度依赖自动驾驶仿真工具[16],如CARLA,车辆在这种仿真环境中不断地“进化”。黄志清等[3]基于DDPG(deep deterministic policy gradient)的深度强化学习算法对连续型动作输出的端到端驾驶决策展开研究,在建立端到端决策控制模型的基础上,根据连续获取的车辆转向角、车辆速度、道路距离等信息,输出驾驶动作(加速、刹车、专项)的连续控制量。陈鑫等[17]将改进深度强化学习用于汽车的自动泊车过程中的路径规划,所设计的网络具有较强的规划能力和健壮性。
本文针对一款人工智能小车,受He等[18]所设计的ResNet-v2启发,对PilotNet网络进行改进,通过手动遥控小车完成图像数据的采集,并将此时对应的速度和横摆角速度记录下来作为标签。接下来对网络进行训练,从而预测出小车在特定场景下的运动速度和转向角,最终通过实验证明所设计的网络能够较好地保证小车沿着地图上的车道线运动。
1 数据采集与处理
使用小车为RobotCAR,如图1所示。该小车的底盘使用基于Arduino的ATmage2560微控制器,配合4个电机驱动器、超声波传感器、红外传感器、角加速度传感器和电子罗盘等多种传感器,其硬件系统组成如图2所示。
图1 RobotCAR小车
图2 小车硬件系统组成
该小车以深度学习开源框架百度飞桨(PaddlePaddle)为基础,采用分布式、结构化软件设计框架,实现数据深度学习中的采集、训练和部署全过程。小车配有2个摄像头,摄像头1获取的图片用于预测小车的运动速度和转向角;摄像头2获取的图片用于识别交通标志。本文重点针对摄像头1获取的数据进行处理,以便完成小车沿车道行驶时的纵向和横向控制。
小车的跑道如图3所示。
图3 跑道示意图
获取数据时,用手柄控制小车在跑道内移动,通过摄像头1采集跑道图像,摄像头的分辨率为424×240,并将手柄发出的小车速度信号和转向角速度信号记录下来,作为训练时的标签。小车沿跑道运动1圈,可以采集到2 000多幅图像和相应的标签。之后,从其中抽出90%作为训练集,10%作为测试集。
采用SPSS 23.0统计学软件对数据进行处理,计量资料以“±s”表示,不同性别心肺耐力比较采用独立样本t检验,不同年龄段、体重指数和体力活动水平的心肺耐力比较采用单因素方差分析。以P<0.05为差异有统计学意义。
从图3中可以看出,跑道是由明显的色块组成,因此,对采集到的图像进行二值化处理,以便于提取对训练有用的跑道信息。二值化之后的图像如图4所示。
图4 二值化处理后得到的图像
2 算法设计
PilotNet是英伟达和谷歌的工程师们共同构建的一个网络,旨在让神经网络通过学习人类的操作方式来驾驶汽车。通过对有道路分割线和无道路分割线、乡间小路和高速公路以及不同光照和天气下的道路进行采集,最终,经过训练的神经网络能够在没有驾驶员干预的情况下驾驶实验用车。PilotNet的网络模型架构如图5所示。
图5 PilotNet网络架构
将该网络的输入设置为分辨率为120×120的图片,此时,PilotNet的网络结构和参数信息如表1所示。
表1 PilotNet网络结构和参数信息
该网络需要优化的参数共计239 419个,使用均方误差作为损失函数进行训练。使用该模型时,得到的训练结果如图6所示。
图6 PilotNet网络的均方误差
被控对象的车载主控电脑通过USB接口与底层的单片机进行通讯,单片机使用PWM信号控制4个电机的运动。对于RobotCAR使用Pilot时,其输出仅作为转向角信号,信号的范围为1 000~2 000,当PWM的值为1 500时,车辆直行;1 000和2 000分别表示以最大的转向角向左转弯和向右转弯。对于速度信号,其数据的范围也为1 000~2 000,当PWM的值为1 500时,车辆速度为0; 1 000 和 2 000分别表示以最大的速度前进或后退。
将图6中测试误差和训练误差较小的epoch进行局部放大,得到的曲线如图7所示。
图7 PilotNet网络的均方误差(局部放大)
从图7可以看出,对于PilotNet,在测试集上的最小误差为18 000左右,如果换算成转向角的指令,平均误差约为±134。从实际部署的效果来看,该网络虽然能够控制RobotCAR沿着跑道运动,但是有时会出现压到车道线边沿的情况。
另外,从整体的图像上来看,虽然网络在训练集上的误差随着迭代减小,但是测试集的误差变化较大,说明网络存在过拟合的现象。虽然本文在 PilotNet的基础上引入了2层的dropout层,但是仍然存在过拟合的现象,整体的测试误差不够理想。另外,原始的PilotNet仅能对小车的转向角进行预测,不能够预测小车的运动速度,在实际部署时,车辆一直保持一个恒定的速度运动,当运动在较为平直的路线上时,车的运动速度较慢;而当运动在弯道时,运动速度又过快,也是导致被控RobotCAR在转弯时压到车道线的原因之一。
针对本文中的控制对象,对PilotNet进行改进,总的思路为:在网络中引入批量归一化(batch normalization,BN)可以减轻网络中的过拟合;同时,适当减小网络的深度;在此基础上,根据文献[19]中的结论,将BN和ReLU激活函数放到卷积操作之前,可以有效解决梯度消失的问题;并且将RobotCAR的运动速度也作为网络的输出之一,使所设计的网络具备同时控制RobotCAR纵向和横向运动的能力。最终,得到图8中所示网络。
图8 本文所设计网络架构
同样,将该网络的输入设置为分辨率120×120的图片,此时,本文所设计的网络结构和参数信息如表2所示。
表2 本文所设计网络结构和参数信息
续表(表2)
模型的预测输出由1维变成了2维,但是模型的深度较PilotNet有所减小。
3 实验验证
使用改进过后的模型时,需要优化的参数数量为187 686个,约为PilotNet的78%,因此训练的速度较PilotNet快,且部署时所需要的计算量减小。同样使用均方误差作为损失函数进行训练,所设计的网络在训练数据集和测试数据集中的均方误差如图9所示。
图9 所设计网络的均方误差
将图9中转向角曲线进行局部放大,得出的曲线如图10所示。
从图10中可以看出,对于转向角数据,其均方误差约为12 780,对应的转向角误差约为113,所以转向角的预测精度较PilotNet高。
图10 所设计网络的转向角均方误差
从图11中可以看出,对于速度数据,本文所设计网络的均方误差约为1 712,对应的速度误差约为41。
图11 所设计网络的速度均方误差
可以看出,使用本文中设计的网络结构,相比PilotNet网络,在训练集和测试集中均有较好的表现,能够较为正确地预测出小车的速度和转向角。在训练和测试过程中,在速度误差和转向角误差之和为最小的轮次对模型进行保存,对应的轮次为第36轮,误差之和为131。
将上述网络部署到车载电脑后,记录RobotCAR在运动过程中不同网络的输出,以便进行比较,得出的结果如图12所示。
图12 实物实验时的转向角
从图12中可以看出,使用本文中的网络时,小车跑完整个赛道的时间约为55.1 s,相比PilotNet所需的60.1 s减少了5 s,本文所设计的网络能够有效地减少跑完全程所需的时间。在转弯时,改进网络生成的转向角速度更为超前,基本杜绝了压车道线的情况,说明改进网络能够较好地完成小车的纵向和横向控制。
4 结论
1) 针对RobotCAR小车,测试了谷歌和英伟达所设计的PilotNet网络,通过测试发现,PilotNet仅能完成RobotCAR的横向运动控制,且预测的精度不高,车辆在转弯时存在压车道边沿的情况。
2) 对PilotNet的结构进行改进,引入BN操作,调整BN、ReLU和卷积的顺序,并且减少网络深度,建立新的网络框架。通过网络在训练数据集和测试数据集上的表现可以看出,相比PilotNet,所设计的网络具有更高的横向预测精度,能够完成RobotCAR的纵向运动控制。
3) 将所设计的网络部署在RobotCAR小车上,通过最后的物理实验发现,所设计的网络具有较强的泛化能力,能够控制被控对象较好地沿着地图中车道的位置行驶。
使用深度学习的技术去提高小车的自主性,理论上和实践上都是可行的。对于不同的车辆、不同的应用环境,需要设计相应的网络结构,才能得到较好的训练结果,并不是模型越复杂越好。
对于大型的载人车辆,对于安全性有很高的要求,需要对网络的可解释性和可预测性进行深入的研究,本文的被控对象和运行环境构成了一个灵活、方便并高度接近车辆真实的应用环境,下一步,将重点研究相关深度学习网络的可解释性,让深度学习在车辆自主驾驶的课题上变得更加“透明”。