基于深度学习的多模态多任务端到端自动驾驶研究

2021-05-17 11:15:00冯宇鹏张裕天
西华大学学报(自然科学版) 2021年3期
关键词:方向盘转角神经网络

田 晟,冯宇鹏,张裕天,黄 伟,王 蕾

(1. 华南理工大学土木与交通学院,广东 广州 510640;2. 广州市交通设计研究院有限公司,广东 广州 511430)

目前,比较传统的自动驾驶方案是间接感知方法,又称为基于规则的系统[1 − 3]。主要思路是将自动驾驶问题划分为多个子任务来解决,根据人为设定规则做出决策,其优点是较易获取数据,有严谨规则,系统可解释性强,缺点是系统复杂、计算量大和对硬件要求高[4 − 6]。

基于深度学习的端到端方法,通过采用监督学习的方法学习人类驾驶动作,建立传感器与驾驶动作之间的直接映射关系[7 − 9]。2005 年,Lecun等[10]基于端到端学习利用智能车进行了野外避障研究,构建了具有6 层卷积神经网络的端到端模型。2016 年,NVIDIA 通过采集实车数据训练了一个卷积神经网络模型,该模型能够根据前置摄像头传输的图像得出转向命令,经实车路测,证明了端到端控制方法的可行性[11]。

Xu 等[12]进一步提出了 FCN-LSTM(Fully Convolutional Network-Long Short Term Memory,全卷积网络长短时记忆)的网络架构,增强了模型对场景的理解能力,实现了对离散或连续的车辆动作进行预测。Chi 等[13]采用ConvLSTM(Convolutional Long Short Term Memory,卷积长短时记忆)神经网络进一步提高了端到端模型对自动驾驶车辆方向盘转角的预测精度。Dosovitskiy 等[14]在Carla 上通过模仿学习训练端到端自动驾驶模型。

端到端方法与间接感知方法相比,能够有效减少系统复杂度。当前端到端自动驾驶系统的研究方法主要是使用卷积神经网络直接预测方向盘转角,存在着自动驾驶控制的局限性。本文主要提出一种基于端到端学习的CNN-LSTM(Convolutional Neural Network-Long Short Term Memory,卷积神经网络-长短时记忆)多模态多任务神经网络模型,同时预测方向盘转角和速度,实现自动驾驶的横纵向控制。

1 方法

1.1 神经网络模型架构

基于端到端学习的CNN-LSTM 多模态多任务神经网络模型主要由CNN 分支网络、LSTM 分支网络、横向控制网络和纵向控制网络组成,网络输入为单帧图像、速度序列和方向盘转角序列等模态信息。2 个LSTM 分支网络的输入分别为包含之前10 个时间戳的速度序列和方向盘转角序列,先经过1 层维度为128 维的LSTM 层,再通过2 个全连接层进一步提取特征后,输出均为128 维的时间序列特征,最后分别流向横向控制网络和纵向控制网络。CNN 分支网络的输入图像尺寸为224×224×3,采用的卷积神经网络为ResNet50[15]。首先,第1 个卷积层采用64 个大小为7×7、步长为2 的卷积核,输出尺寸为112×112,然后进行大小为3×3、步长为2 的最大池化操作后紧接4 种不同的残差模块,每个残差模块均由大小为1×1 和3×3 卷积核组合而成,ResNet50 提取特征之后输出1000 维的特征向量,最后通过3 层全连接层降维成128 维后分别流向两个分支网络。一个流向横向控制网络,另一个流向纵向控制网络,与LSTM 分支网络提取到的时间序列特征相融合,最后输出方向盘转角和速度的预测值,完成车辆的横纵向控制任务。图1为CNN-LSTM 多模态多任务神经网络模型架构图。其中,多模态指网络输入的单帧图像、速度序列和方向盘转角序列信号,多任务指横向控制和纵向控制任务。

1.2 神经网络作用层

本文所构建的CNN-LSTM 神经网络模型主要由卷积层、池化层、LSTM 层、特征融合层、激活层、全连接层和Dropout 层组成。卷积层用于提取图像特征。池化层的作用是有效缩小节点矩阵的尺寸,降低特征维数,压缩数据和参数的数量。LSTM 层的作用是提取序列数据之间的时间上下文特征。特征融合层的作用主要是融合两个或多个特征向量,并生成新的语义特征。激活层的主要作用是通过非线性变换来增强神经网络的表示能力和学习能力。本文采用的激活函数为ELU[16](Exponential Linear Unit,指数线性单元)函数,函数定义如式(1)所示。

图 1 CNN-LSTM 神经网络模型架构

式中:x为 输入的加权和;γ为可调整的超参数,定义为当输入x是一个较大的负数时,ELU 函数接近的值,通常设置为1。

全连接层的作用有两点:一是维度变换,将高维的特征向量降到低维;二是整合提取到的图像特征,获取图像特征具有的高层含义。Dropout 层的主要作用是解决深层网络训练过程中产生的过拟合问题。

1.3 损失函数和训练算法

本文构建的CNN-LSTM 神经网络模型输出的决策值是连续值,属于回归问题,因此采用的是回归模型中使用最广泛的均方误差(Mean Squared Error Loss,MSE)损失函数,其定义如式(2)所示。

式中:n为 样本量;为第i个样本的输出预测值;yi为对应的真实值。

训练算法采用的是 Nadam[17](Nesterovaccelerated Adaptive Moment Estimation)算法。该算法能计算出每个参数的自适应学习率,对学习率的约束更强,学习速度更快,拥有更好的优化效果,具体公式为:

式中:θ为网络权重;gt为梯度,下标t表示第t步迭代过程;mt为一阶矩,即梯度的期望值,表示一阶矩的Nesterov 加速值;vt为二阶矩,即梯度平方的期望值;表示纠正一阶矩;表示纠正二阶矩;β1、β2表示衰减率;η表示学习率;ε表示微小量。β1、β2、η、ε为训练开始前人为设置的超参数,不需要 通过训练进行学习。

2 数据

2.1 GTAV 数据集

本文选择GTAV 搭建自动驾驶仿真平台。GTAV是由Rockstar Games 公司开发的一款开放世界游戏,里面场景充分模拟了现实世界中的洛杉矶,能够自由采集游戏内场景的数据。图2 为基于GTAV的自动驾驶仿真平台架构图。仿真平台主要由环境端和代理端组成,环境端的ScriptHookV 是一个dll 插件,提供超过5000 个C++的APIs 接口,通过修改脚本实现对GTAV 中多种环境因素的控制,有利于采集不同场景下的数据。当GTAV 主程序启动时,它的控制插件DeepGTAV 开始工作,通过TCP 协议连接的方式实现消息的发送和接收。代理端能够使用Python 语言编写代码通过DeepGTAV 实现与环境端的通信。虚拟环境启动后,DeepGTAV 开始从游戏中采集数据并以JSON格式发送回代理端的Dataset 模块,经由Python pickle 模块序列化后生成数据集,输入到深度学习模型进行训练。DeepGTAV 最终能将模型生成的控制命令发送回环境端,实现GTAV 游戏世界车辆的控制以测试模型效果。

图 2 基于GTAV 的自动驾驶仿真平台架构图

通过基于GTAV 自动驾驶仿真平台采集的数据集进行模型的训练和测试,共采集了30 万张图像,场景包括高速公路和城市街道,同时记录下图像所对应的方向盘转角、速度、刹车和油门等数据。图3 为采集到的GTAV 场景图像示例。

图 3 GTAV 数据集图像示例

2.2 真实场景数据集

本文所用的实车采集和道路测试平台的硬件核心为NVIDIA Drive PX2 计算平台。本文自动驾驶平台硬件连接如图4 所示,PX2 的ParkerA 连接有1 路前向摄像头,ParkerB 连接有7 路GMSL 摄像头,1 个前向激光雷达,通过4 路USB 转CAN卡连接4 个侧向毫米波雷达、1 个前向毫米波雷达以及整车。

图 4 自动驾驶平台硬件连接

自动驾驶实车软件平台架构为模块化框架,包含有端到端模块、感知模块、决策模块、控制模块、导航模块等。基于ROS[18](Robot Operating System,机器人操作系统)的自动驾驶实车软件平台架构如图5 所示。为了加快自动驾驶技术开发的速度,在ROS 下,将传感器驱动、控制策略、通信和底层执行机构控制等任务分成若干节点,节点间可以通过发布/订阅消息话题的形式进行通信。本文所讨论的是端到端模块,在ParkerA 上运行,只使用1 路前向摄像头。首先传感器驱动节点采集传感器数据后通过话题的形式发布特定类型的数据,接着控制策略节点订阅来自各传感器的数据话题,经端到端深度学习算法得出方向盘转角和速度信号2 个控制量,然后将这2 个控制量以话题形式发布到串口驱动和CAN 驱动,最后将这些控制信号发送到车内总线,使底层执行机构完成控制。

图 5 基于ROS 的自动驾驶实车软件平台架构图

通过该平台采集真实场景数据。图6 为采集到的真实场景图像示例,采集地点为广州市国际生物岛区域。生物岛的道路交通环境良好,车流量和人流量都比较少,车辆行驶速度低,车道线明显,采集到的数据质量较高,适合进行自动驾驶数据采集和道路测试工作。选择在晴朗天气下进行数据采集,场景中的车道线、车辆等比较清晰,有利于神经网络模型的训练,共采集图像数据10 万张。

图 6 真实场景图像示例

3 实验

3.1 实验环境与评判标准

训练模型所用的GPU 为NVIDIA Titan X 显卡,软件环境为Keras2.1 深度学习框架,后端为Tensorflow-gpu 1.4。

本文采用均方根误差(Root Mean Square Error,RMSE)作为评价CNN-LSTM 神经网络模型好坏的客观标准,衡量预测值和真实值之间的偏差如式(9)所示。采用对神经网络模型预测曲线与实际曲线的相似性度量作为主观评价标准。

式中:n为 样本量;为第i个样本的输出预测值;yi为对 应的真实值。

3.2 基于仿真平台的实验与分析

对采集到的GTAV 数据集进行分析和预处理,方向盘转角数据分布如图7 所示,数据集分布不平衡,大部分样本的转向角标签集中分布在0 的附近。为解决这一问题,采用图像增强及采样的方式,对图像进行随机偏转,即给方向盘转角标签值设置随机偏移量,同时调整相应图像的像素,从而使得图像向左或向右偏转。另外对转向角接近0 的图像进行欠采样,对转向角大的图像进行过采样,经过图像增强和数据采样之后的数据分布如图8所示。

图 7 调整前的方向盘转角数据分布图

图 8 调整后的方向盘转角数据分布图

模型训练的超参数设置如下:训练算法为Nadam 算法,学习率η设为0.002,β1设为0.9,β2设为0.999,ε设为1e-8,Dropout 的概率值设为0.5。当验证集的误差不再下降时,模型训练完成。为了对比分析引入长短时记忆神经网络对方向盘转角预测的影响,将LSTM 分支网络移除后,使用相同的训练集对CNN 模型进行训练。

如表1 所示,表中CNN-LSTM 的MSE 损失函数值为方向盘转角、速度两个损失函数误差之和,方向盘转角和速度损失函数的比重为1∶1。从表中可以看出CNN-LSTM 模型在训练集、验证集和测试集上的MSE 损失值都低于CNN 模型,能够更好地收敛。

表 1 模型误差值

对方向盘转角预测性能进行评估,表2 为模型方向盘转角均方根误差值,CNN 模型的均方根误差值为0.302,CNN-LSTM 模型的均方根误差值为0.092,CNN-LSTM 模型的均方根误差值更小,其方向盘转角预测值更接近真实值。这说明加入LSTM分支网络能够改善模型对方向盘转角的预测效果,使得预测精度更进一步地提升。

表 2 模型方向盘转角均方根误差值

图9 和图10 为方向盘转角预测曲线和实际曲线的对比图,其中橙色曲线表示实际曲线,蓝色曲线表示预测曲线。通过对比两个图可以发现,CNN 模型的预测曲线从整体上来看能够拟合实际曲线,但抖动幅度比较大,出现高频震荡的现象。而CNN-LSTM 模型的预测曲线能够更好地拟合实际曲线,预测曲线更为平滑,抖动幅度更小,能够更准确地预测方向盘转角值。

图 9 CNN 模型的方向盘转角预测曲线

图 10 CNN-LSTM 模型的方向盘转角预测曲线

图 12 城市路况下CNN 分支网络的可视化图

接下来对速度预测性能进行评估,计算出CNN-LSTM 模型对速度的均方根误差值为0.194,选用测试集上的2 000 帧图像做出如图11 所示的速度预测曲线和实际曲线的对比图。从图中可以看到预测曲线能够很好地拟合实际曲线,LSTM 分支网络的加入能够更好地促进纵向控制网络的学习,提高了模型的预测精度。

图 11 CNN-LSTM 模型的速度预测曲线

为了更好地理解CNN-LSTM 多模态多任务神经网络模型做出决策的依据,对模型的关注点进行可视化分析。图12 为城市路况下CNN 分支网络的关注点,可以清晰地看到网络对于地面道路边界、车道线和前方车辆以及部分建筑物有明显关注。模型决策过程中所重点关注的点与人类驾驶员开车过程中所关注的点相同,推测神经网络模型是通过这些关注点来预测决策量。

3.3 基于真实场景数据的实验与分析

通过在GTAV 数据集上完成端到端自动驾驶模型的训练后,把表现良好的模型固化下来,接下来采用真实场景数据进行迁移学习[19]再训练。神经网络的前几层学习到的特征通常为通用特征,后面更深层次的网络学习到的特征为特定任务场景下的特定特征,对学习到通用特征的网络层进行迁移,同时对学习到特定特征的层进行微调(finetune)。微调是指针对新的学习任务将他人已经训练完成的神经网络模型进行权重参数调整的方法,采用微调能够更好地解决数据之间的差异导致模型效果下降的问题。

采用微调对在GTAV 数据集上训练好的CNN-LSTM 模型进行再训练,使用的数据集为生物岛真实场景数据集。生物岛真实场景数据集与GTAV 数据集相比,包括车道线、车辆等对影响自动驾驶车辆的决策控制量的因素虽然有差异,但具有很高的相似性。有较大差异的是桥梁、建筑物及交通标志,这些对于使用本文神经网络模型进行横纵向控制来讲没有车道线和车辆等的影响程度大,并且生物岛的场景中路边的建筑物较少,与GTAV 场景中郊区的道路状况更为类似,GTAV 中的场景与国内部分道路的真实场景的相似度高。因此本文进行迁移学习时的微调策略为将ResNet50 和LSTM 层的权重固定,初始化全连接层进行训练,利用反向传播机制来对网络权重进行再训练。学习率设为0.0001,训练算法为Nadam算法,当误差不再下降时,模型训练完成。图13为CNN-LSTM 网络在生物岛真实场景数据集上训练的损失函数曲线,神经网络在训练过程中收敛较快,最终误差值趋近于0,误差值很小。

图 13 CNN-LSTM 网络损失函数曲线图

对模型的预测性能进行评估,计算出CNNLSTM 模型对方向盘转角和速度的预测值与真实值的均方根误差值分别为0.146 和0.347,RMSE 值比较小。这说明CNN-LSTM 网络模型在真实场景数据集上通过迁移学习再训练后的方向盘转角和速度预测效果好,有着良好的泛化性,对方向盘转角和速度的预测比较准确。

图14 示出可视化预测的方向盘转角。在测试集上选取1 组连续5 帧的图像,将模型的方向盘转角预测值和真实值叠加显示在图像上,其中蓝色线代表方向盘转角预测值,黄色线代表真实值,可以看出蓝色线与黄色线基本重合,在连续过弯时预测值与真实值的偏差很小。

图 14 可视化预测的方向盘转角图

图15 和图16 分别为方向盘转角和速度的预测曲线与实际曲线的对比图。从整体上看,CNNLSTM 模型预测的方向盘转角与人类驾驶员的方向盘转角的整体变化趋势一致,能够很好地拟合实际曲线,偏差较小,能够较为准确地预测方向盘转角值。从图16 中可以看到速度预测曲线与实际曲线能够很好地拟合,表明CNN-LSTM 神经网络模型能够较为准确地预测速度值。

3.4 实车测试

通过在测试集上进行的离线测试结果表明CNN-LSTM 神经网络模型的效果较好。为进一步验证神经网络模型的有效性,将端到端模型部署到车上的自动驾驶平台上以验证模型的效果。测试地点为广州市国际生物岛部分路段,为保证测试过程中的安全,选择行人和车辆较少的路段进行测试,分别对端到端模型的车道保持和避障功能进行了测试。

图 15 真实方向盘转角与预测方向盘转角对比曲线

图 16 真实速度值与预测速度值对比

车道保持测试过程如图17 所示。在实际测试过程中车辆的车道保持效果令人满意,能够跟随车道线行驶,且运动轨迹基本处于道路中间,只有在过十字路口后发生偏离车道线的情况,之后车辆逐渐修正回到道路中间,在行驶过程中方向盘和车速均保持稳定。

图 17 车道保持实车测试

自动驾驶车辆避障测试如图18 所示。图中车辆障碍物用红色圆圈标出,在测试过程中车辆能够在遇到障碍物时减速并绕开,证明神经网络模型能够有效地完成车辆的横纵向控制,基本实现避障的功能,在10 次测试过程中有7 次能完成避障。分析避障成功率未接近完美的原因是训练数据中车道保持的数据量远多于避障的数据量,因此神经网络模型的学习带有一定的偏向性,更多地学会了车道保持,未来工作可以考虑采集更多的避障数据对模型进行训练。

4 结论

本文构建了一个基于端到端学习的CNNLSTM 多模态多任务神经网络模型来解决自动驾驶的控制难题,搭建了基于GTAV 的自动驾驶仿真平台,在自动驾驶仿真平台上训练出性能较好的模型,采用深度迁移学习的方法解决了仿真场景与真实场景的差异问题,将预训练网络模型在真实场景数据集上进行了再训练,并搭载在实车上进行了道路测试。测试结果表明,神经网络模型能够较为准确地预测方向盘转角和速度,在真实环境中能够完成车道保持任务和基本实现自动驾驶避障测试,但仍然存在着不足之处,还有提升空间。本文认为未来的研究工作可以从以下几个方面进行:

1)解决模型存在的累计误差问题,累计误差的存在会导致车辆出现偏离车道等问题;

2)传感器融合技术,将激光雷达和毫米波雷达的数据融合进来有助于提高模型的性能;

3)辅助驾驶任务,加入语义分割作为辅助驾驶任务,为模型提供可行驶域。

猜你喜欢
方向盘转角神经网络
玩转角的平分线
六旬老人因抢夺公交车方向盘获刑
今日农业(2020年16期)2020-12-14 15:04:59
神经网络抑制无线通信干扰探究
电子制作(2019年19期)2019-11-23 08:42:00
把握好直销的方向盘
把准方向盘 握紧指向灯 走好创新路
传媒评论(2017年8期)2017-11-08 01:47:36
三次“转角”遇到爱
解放军健康(2017年5期)2017-08-01 06:27:42
永春堂赢在转角
基于神经网络的拉矫机控制模型建立
重型机械(2016年1期)2016-03-01 03:42:04
复数神经网络在基于WiFi的室内LBS应用
下一个转角:迈出去 开启“智”造时代