基于深度学习端到端的车道保持系统实验设计

2022-03-22 08:04肖雄子彦楚朋志梁晓妮薛万坤任桐鑫
实验室研究与探索 2022年12期
关键词:无人驾驶车道小车

肖雄子彦, 楚朋志, 梁晓妮, 薛万坤, 任桐鑫

(上海交通大学学生创新中心,上海 200240)

0 引 言

因驾驶员注意力不集中、操作失误等因素是造成道路交通意外事故的主要因素之一,美国接近50%的交通事故与驾驶员发生无意识的偏离车道有关[1],利用自动驾驶技术的车道保持稳定系统可一定程度上提高道路行驶的安全性[2]。随着人工智能、机器视觉、雷达技术等协同发展,自动驾驶技术呈现出接近实用化的趋势,也逐渐进入了越来越多的高校课堂。而保持车道稳定行驶自动驾驶的关键技术,因此在自动驾驶类课程教学中,对车道保持稳定性的研究与实验设计对学生掌握自动驾驶技术有着重要意义。

目前,国内外对于车道保持稳定性的研究大多聚焦于车道线检测,大致可分为:基于图像特征的方法和基于模型的方法以及基于深度学习的方法。刘源等[3]提出了一种基于边缘特征点聚类的车道线检测方法。Upendra等[4]采用自适应阈值法,结合像素强度与边界信息提取车道线标记。Hao等[5]建立一种高斯统计颜色模型在感兴趣区域提取车道线颜色,这种方法对于车道线被遮挡、路面存在干扰的情况具有较好的鲁棒性。徐美华等[6]提出了一种基于投影统计量和双曲模型的车道线识别算法,利用近场信息对曲线车道线进行优化,然而在复杂环境中的适应性还有待提升。近年来深度学习的发展为解决不同场景下的车道线检测提供了新方向[7],Fabio 等[8]设计了一种车道线检测算法,基于ROS 框架在多任务CNN 的训练过程中使用均方差不确定性估计获得了更好的性能。Mohsen等[9]采用生成式对抗网络对车道线进行检测,其中生成器用于生成车道线的预测值,而判别器判别生成器的输出与真实标签的差异,最终网络能够直接生成车道线标记位置。而现有的自动驾驶类课程多以理论授课、虚拟仿真为主,缺少适用于教学的硬件实验平台以及充足的计算资源,基于软硬件相结合的实验案例更为缺乏。而工程性缺失和实践教学薄弱正是我国高等工程教育长期存在的问题,因此提升实践教学质量至关重要。现有无人驾驶平台体积庞大、结构与实验环境复杂,所使用的车道线检测算法稳定性较差。同时,学生本地计算资源的不足也极大降低了实验开发效率。

针对上述问题,本文引入轻量级无人驾驶小车硬件平台与华为云人工智能软件计算平台,从基于深度学习神经网络端到端模型;结合课程内容,创新性地设计开发了一套适用于教学实验场景、流程完整、实验环境易于配置且稳定性较强的车道保持系统实验。满足“新工科”建设中对人才培养提出的新要求[10-11]有助于加强学生对理论知识的巩固,并在产教融合背景下促进学生工程能力的提升[12]。

1 深度学习端到端算法

深度学习端到端算法[13]近年来逐渐被广泛应用于自动驾驶领域,该模型基于神经网络原理,表现出更强的鲁棒性。同时具有网络结构清晰直观、数据标签易于处理等优点,因此非常适合用于自动驾驶课程实验的开发与教学。

本文设计的实验从教学实际出发,对端到端模型进行轻量设计。算法总体思路是将复杂的车道线检测任务转换成为图像分类任务,寻求拍摄场景与底盘角度的映射关系。模型的输入为当前摄像头拍摄的图像,输出为该图像此刻对应的底盘车轮转向“程度值”。

如图1 所示,本文通过自动驾驶小车搭载的摄像头对数据进行采集,经过剪裁与数据增强处理,将图像大小为66 ×200、RGB 三通道的彩色图片输入网络。模型架构基于卷积神经网络(Convolutional Neural Network,CNN)搭建,通过5 层卷积运算(Conv-1 ~Conv-5)完成了从低层次到高层次的特征提取。

图1 实验中搭建的端到端模型示意

由于教学场景较为固定,课程采集数据量相对较小,因此模型中使用了3*3 的卷积核代替原模型中5*5 的卷积核,以节省模型参数、提升计算效率,并优化了每层卷积核数量,分别为24、36、48、64、64。模型利用增加步长的方式代替池化层,去除冗余信息、达到降维和减少计算量的作用,本模型中,在前3 层卷积运算中统一使用步长为2*2 的卷积运算。并使用ELU激活函数[14]增加模型复杂度,提升非线性表达能力,激活函数计算公式为

式中:x 表示经过卷积计算后的值;α 为超参数,一般为经验值。ELU 函数具有在所有点上都连续可微的特点,与其他激活函数相比,它具有更高的准确性。由于ELU的梯度对于所有负值都是非零的,因此与整流线性单元(Rectified Linear Unit,ReLU)函数相比,不存在“神经元死亡”的问题。

通过卷积层的多轮特征提取与降维后,最后通过全联接层完成分类任务,本模型设置了4 层全联接层(FC-1 ~FC-3 和输出层),神经元个数分别为100、50、10 和1,全连接层的计算式为

式 中:xi为该层神经元的输 入;wi为该层网络的权重;bi为该层网络的偏置量;yi为该层计算后的输出。

最后1 层为输出层,神经元数量为1,即用于计算标签(label),对应了车轮转向“程度值”。为适配底盘转向性能,在实验中,设定该数值区间为0 ~90,分别代表从最左(数值0)至最右(数值90)的转向程度,数值45 则表示当前为直行状态(既不偏左也不偏右)。实际计算时将此范围进行归一化至区间(0,1),使用非线性函数Sigmoid[15]进行激活,计算式为

式中:z为最后1 层神经元的输入;f(z)表示z 经过激活后的输出。

本实验在训练过程中,每层全联接层后都进行了随机丢弃一定比例的神经元(Dropout)操作,来防止模型过拟合。

2 系统总体设计与实验平台

本文设计的系统总体框架如图2 所示,其基于轻量级无人驾驶小车硬件平台与华为云人工智能软件平台进行设计与开发的车道线保持实验,开发过程的基本思路:①搭建无人驾驶小车硬件系统环境、上位机与下位机及底盘顺利通信调试、完成实地教学场景的数据采集;②经过本地初步数据筛选,准备模型并一同上载到华为云ModelArts开发平台,根据模型参数要求,对现有数据集进行扩充与增强处理;③依托云平台进行环境创建与算力资源配置,在云端完成模型的训练、调试与优化测试;④将训练成功的模型进行转化,部署于无人驾驶小车硬件平台,在教学场地中进行实地测试,根据性能表现进行优化,必要时可进行数据重采与补充。

本实验所应用的端云平台主要有:

(1)无人驾驶小车硬件平台。本文实验用无人驾驶小车硬件平台由2 块嵌入式开发板组成,分别置于小车上位与下位区。①上位搭载了1 块NVIDIA Jetson Nano 嵌入式开发板卡,该板卡具有体积较小(尺寸仅100 mm×80 mm)、功耗较低(仅5 ~10 W)、硬件接口与GPIO扩展接口较多等优点,采用四核64 Bit ARM CPU和128 核集成NVIDIA GPU,可提供472 GFLOPS的计算性能,适配当前流行的各类深度学习框架(如TensorFlow、PyTorch、Caffe/Caffe2、Keras 等),配备了深度学习所需的加速器库,在模型边缘计算场景中具有较好的实时性;②下位开发板采用的是SoC系统级主控芯片ESP32-D0WD,由Xtensa 双核32-bit LX6 CPU组成,主频高达240 MHz;板载1 颗BOSH的高精度高可靠性的IMU 芯片,支持以太网通信、USB通信;下位机系统可对舵机角度,电机参数进行配置,同时可驱动1 路舵机和两路电机,并集成软件级差速器,将Jetson Nano 推理传递过来的方向角度进行处理,对车轮进行有效控制。

图2 实验总体设计框架示意

(2)华为云人工智能软件平台ModelArts。该软件平台集成了人工智能开发所需的一站式全流程,为深度学习提供数据预处理的交互式智能标注、大规模分布式训练、自动化模型生成及端-边-云模型按需部署等功能。因此,对开发新手与学生来说较为友好,帮助学生快速创建环境、进行训练调试,并在线部署模型测试。同时,该平台集成了常用的人工智能框架与训练环境(如TensorFlow2.1),并提供了GPU 计算资源提升模型训练速度,有效解决了教学场景里学生本地计算资源不足与环境搭建困难等问题。

3 实验过程与分析

3.1 数据采集与处理

本文设计的无人驾驶小车平台搭载了视觉传感模块,采用120°广角摄像头在教学场地中进行实时采集图像。采集方式为编写程序代码通过键盘对小车电机转速与转向程度进行控制,程序中定义车轮转向“程度值”(即每张图片对应的标签)变化区间为0 ~90,数值45 表示当前车轮为直行状态,数值0 表示车轮转向最左状态,数值90 表示车轮转向最右状态,单位变化间隔为5。拍摄每秒帧率为20 fps,采集数据时,每张图片对应的车轮转向“程度值”将存储于该图片的命名中,以方便后续标签提取工作。绕圈数据采集过程中保持小车位于车道中匀速行驶,小车压线与驶出赛道等低质量图像数据需要舍弃。图3 为采集的一组数据与其对应的转向“程度值”。

图3 一组采集数据与对应的转向“程度值”示例

(1)扩充数据量。由于在实验场地中直线跑道比弯道更多,因此所采集的数据中标签为45 的图片数据量较大,而其他标签值的数量较少,整体分布较不平衡。为了让各角度场景的数据都得到充分训练,需要对数据量不足的图片进行补充采集与扩充,数据扩充前后数据量对比如图4 所示。

图4 数据扩充前后数据量对比

(2)数据增强。为扩展数据分布的多样性,以提升模型的泛化能力,本文实验中,在开启训练时定义了数据增强器,对每张训练样本采取随机数据增强,处理方式包括:剪裁、缩放、镜像翻转、光线调整与高斯模糊等。数据增强前后的效果对比如图5 所示,图中左列为数据增强前的原图,右列为随机数据增强后的处理效果。

(3)图像剪裁。由于拍摄图片上方背景较杂乱,且模型对图像的关注点在于车道线部分,因此本案例中也对原尺寸为720 ×1280的图片进行剪裁,剪裁后图像大小为图5 中所示的400 ×1280,这样在后续训练中,让模型可以更好地关注下半部分车道线的变化。

图5 数据增强前后效果对比

3.2 模型训练

为方便教学、简化环境搭建的复杂流程,本实验将基于华为云ModelArts开发平台进行资源配置与模型训练。

(1)开发环境。如图6 所示,在ModelArts控制台中创建本实验所需的Jupyter Notebook开发环境:训练环境选择TensorFlow2.1-CUDA10.1-cudnn10-Ubuntu 18.04 的公共镜像;计算资源选择NVIDIA V100 GPU单卡规格(32GB 显存);同时具有8 核64GB 的CPU算力。云上训练大大缓解了学生本地计算资源不足的问题,也提升了学生模型开发的效率。

图6 华为云实验环境创建

(2)端到端算法。本实验模型基于前文所述的端到端算法,使用TensorFlow2.1 框架进行搭建。将开发代码与初步处理的数据集上传至华为云,在实验过程中,模型输入尺寸为66 ×200,因此需要对原数据集尺寸进行缩放与剪裁;模型输出尺寸为1 ×1,为图片对应的转向“程度值”,该值域为0 ~90,为方便训练,将该值域归一化至0 ~1。

(3)模型训练。本文的模型训练采用小批量(Mini-batch)形式进行,设置批处理大小为256,并对每批抽取的图片数据进行数据增强。划分训练集与验证集比例为0.8 ∶0.2,全连接层中随机丢弃神经元Dropout比例设置为0.5,初始化学习率为0.000 1,使用NVDIA V100 进行CUDA 加速训练。①训练过程中,首先训练50 个Epoch 的训练集损失(Train_loss)和验证集损失(Val_loss)变化趋势如图7 所示。图7(a)中,由于随机初始化的缘故,在最初的10 个Epoch中,训练集损失较高,数值跨度较大。②为了更好展示后续训练的变化,单独截取了第10 ~50 个Epoch的训练效果,由图7(b)可知,第50 个Epoch的损失值在训练集上约为0.017,在验证集上约为0.005,下降速度已明显放缓,但尚不能判定模型已完全收敛。③随后,对模型重新初始化,进行200 个Epoch的训练,将其在第10 个Epoch之后的训练集损失(Train_loss)和验证集损失(Val_loss)变化趋势进行绘制,如图8 所示。由图8 可知,50 个Epoch的训练次数尚未达到该模型的最优性能,模型损失值在随后的训练中保持着明显的波动下降趋势。

图7 不超过50个Epoch训练对应的损失变化

图8 不超过200个Epoch训练对应的损失变化

分析模型训练过程可知,模型在约第160 个Epoch 开始收敛,如图9(a)所示,第160 ~168 个Epoch 的模型效果,训练集损失已降至0.009 6 ~0.009 9,验证集损失已降至0.001 6 ~0.001 8;如图9(b)所示,在第193 ~199 个Epoch 的模型效果,训练集损失约0.009 3 ~0.009 8,验证集损失约0.001 6-0.001 7,与图9(a)相比,在这近40 个Epoch 的训练中,损失值无法再继续明显降低,并维持在较稳定水平,证明模型已经收敛,性能无继续提升,因此触发了算法中所设定的早停(Early Stop)策略,在第199 个Epoch结束时停止了训练,并存储为当前最优模型。

图9 160 ~199个训练Epoch对应的损失变化程序运行过程示意

3.3 部署测试与分析

模型的准确率与稳定性会受到小车硬件底盘传输的误差影响,因此本文模型的性能测试与分析将部署在自动驾驶小车上,通过实际的道路行驶状态来进行评估。在实际路测之前对模型进行了初步测试,本文选择了如图10 所示随机拍摄的几张不同角度图片,模型的推理预测结果展示于图片上方,该数值为当前转向程度值,将其与原标签进行对比发现,模型预测准确率为91.67%,转向“程度值”误差在5%以内。

图10 模型预测的转向程度从5 ~80的云端在线测试结果

在实际车道保持测试中,由于速度不同或进入跑道的位置不同,小车面对相同图片场景的预测值可能产生波动。因此,在允许偏差范围内,行驶过程中实现不压线、不冲出赛道、保持在车道中稳定行驶即视为方案稳定、任务成功。

本文分别将训练了50 个Epoch 和200 个Epoch的模型部署于小车,并在高速(小车极限速度的85%)与低速(小车极限速度的60%)模式下各测试24 次,重点观测易出现不稳定情况的弯道路段,分别为:U型弯、直道转弯与S型弯,测试结果数据如表1 所示。

表1 实验场地测试结果数据 %

本文建立的系统平台的实验结果表明,在3 类弯道场景中:

(1)模型Epoch-50 不压线严格居中行驶(高速与低速)的准确率均值分别为81.94%与91.67%;而模型Epoch-200 不压线严格居中行驶(高速与低速)的准确率均值分别为93.05%与97.22%。因此,无论在高速还是低速模型中,模型Epoch-200 在实测准确度与稳定性能上都优于模型Epoch-50。

(2)模型Epoch-50 出现极不稳定(出赛道)(高速与低速)的概率均值分别为5.56%与1.39%;而模型Epoch-200 无论在高速还是低速模式中均未出现冲出赛道的情况。因此,无论是模型Epoch-50 还是模型Epoch-200,小车在大多数情况下都能顺利完成稳定的车道线保持,表现出了良好的鲁棒性。

(3)模型在直道转弯处的表现最为稳定,仅在Epoch-50 高速模式下出现了冲出赛道的情况(实测比率为4.17%);而在Epoch-200 模型中无论高、低速,在直道转弯处都保持了严格居中稳定行驶(实测比率为100%)。而在U型弯与S型弯处,对模型准确率要求较严格,尤其是U型弯,在Epoch-50 模型中,无论高速还是低速模式均有冲出赛道现象,实测(高速与低速)比率分别为8.33%与4.17%。

该系统实验设计流程完整,总体展现出了良好的鲁棒性,案例中模型表现的不足之处可作为教学考核任务供学生后续优化提升。

4 结 语

本文设计并搭建适用于教学实验场景的车道保持系统实验,通过神经网络端到端模型的深度学习,经轻量级无人驾驶小车硬件平台与华为云人工智能软件计算平台的训练与实验,结果表明:①无论在高速还是低速模型中,模型Epoch-200 在实测准确度与稳定性能上都优于模型Epoch-50;②无论是模型Epoch-50 还是模型Epoch-200,小车在大多数情况下都能顺利完成稳定的车道线保持,表现出了良好的鲁棒性;③模型在直道转弯处的表现最为稳定该设计不仅具有较高准确率与稳定性,而且实验流程结构清晰、实验环境易于搭建。

同时,在“新工科”建设内涵的指导下,解决了现有无人驾驶课程实践案例不足,缺乏软硬件相结合、稳定性强且易于开发的车道线检测系统实验等问题,同时也弥补了学生计算资源不足的现状。也丰富了无人驾驶课程的实践案例,帮助学生巩固了理论知识原理,有效提升了工程能力与综合技能。随着技术的发展模型需要不断更新与优化,而小车硬件的传输速率在未来也仍有提升的空间。

猜你喜欢
无人驾驶车道小车
我们村的无人驾驶公交
北斗+手机实现车道级导航应用
避免跟车闯红灯的地面车道线
浅谈MTC车道改造
大车拉小车
无人驾驶车辆
自制小车来比赛
无人驾驶公园
刘老师想开小车
两轮自平衡小车的设计与实现