基于RNN-LSTM神经网络深度学习的无人驾驶小车使用环境与数据处理
2022-01-20范俊宇徐中林高畅
范俊宇,徐中林,高畅
(沧州师范学院,河北沧州,061001)
1 整体设计
■1.1 机械组成架构
采用DAVE智能车系统启发,系统硬件由主控板、PWM转换板、电机、舵机、电池、轮胎。从上到下依次为控制层、电机驱动层。控制层以树莓派微处理器为主控电路,PWM芯片选型PCA9685,电机驱动层主要以电机驱动电路、电源组成,为四轮车提供动力。
■1.2 硬件电路设计
硬件电路主要包含树莓派微处理器、PWM模块、电机模块、舵机模块连接构成。树莓派微处理器连接电机驱动电路采用I2C通信与PWM模块连接实现的,电机控制利用芯片MP1584与PWM模块连接实现的。硬件原理图如图1所示。
图1 硬件原理图
■1.3 小车组合
设计实现小车属于微缩模型小车,便于携带、数据集采集迅速、调试方便,主要用于数据采集和模型测试,小车采用阿克曼转向原理,前端装有摄像机,在数据采集过程中作为神经网络的输入,在模型测试时可作为神经网络的感知系统。
由于受到DAVE智能车设计影响,通过机械结构和硬件设计可充分体现出小车的轻巧与变携带性,利用图像处理技术可以增强小车决策能力。智能车实物图如图2所示。
图2 智能车实物图
2 实验环境
基于深度学习的无人驾驶小车系统,是由上位机PC电脑和下位机树莓派系统共同构成,在Keras框架下配置深度学习环境,使用英伟达公司开发的专门针对深度学习加速GPU运算速度技术的cuDNN,显著的加快了神经网络训练的速度,提高了实验效率。
实验环境上位机配置如表1所示。
表1 上位机
实验环境下位机配置如表2所示。
表2 下位机
从系统上来分析小车通过模型部署后,在无人驾驶方式中,仅仅依靠无人小车系统其自身算力,即可实现小车预测直行、左转、右转等动作具有较强的可行性,从应用角度来说,由于采用端到端控制型无人驾驶技术,降低了系统对实时性的要求。
■2.1 数据集采集
数据集中每条数据均为小车在行驶时第一视角拍摄照片和采集站选择的转弯路线,构成一条数据样本,小车行走路线为环形路线图,文中不再描述。在数据采集过程中,采用监督学习办法,监督者为人类驾驶员,转弯路线由人工选择,转弯路线确定后无人小车按照该路线行驶连续拍摄照片数据,经过一段距离行驶后,再次选择合适直线路线和入弯路线。经过多圈数据采集,最终达到训练数据集要求。为了保证数据集的语义明确,故选择限定场景,同时保证无人小车行驶地图地面环镜在照明亮好房间内且无过多杂物情况下进行。本文中采用地图标志线模拟交通环境,共采集数据20000幅。小车在行驶过程中停止,采用两种方式,第一种以遥控方式的远程命令使小车停止运行,第二种为无法识别出的障碍物停止,主要以麻袋为障碍物。
■2.2 采集策略
在正常行驶时,无人小车应保持与道路中央位置行驶;在遇到弯路时,小车应贴向与一侧转弯,尽量保持车速,避免急转弯情况;由于采取限定场景下无人驾驶,在数据采集时利用OpenCV图像处理技术进行的,室内应保持光照条件充足的情况下进行;在极端行为下,例如交通场景地面塌陷等,能够实现停止。数据采集策略流程图如图3所示。采集数据如图4所示。
图3 数据采集策略流程图
图4 采集数据
3 实验过程及结果分析
■3.1 实验过程
数据集采集完成后,将下位机中数据,利用FileZilla传输至上位机中,当文件上传于上位机之后,先对采集数据进行测试,再利用miniconda集成开发软件,输入训练命令,样本通过预处理后进行数据增强,再输入至预先设计好的RNN网络中进行训练,由卷积核进行运算,采样层负责特征提取,全链接层负责分类,在训练结束时利用DropOut层,防止训练模型过拟合。每一次迭代训练后都会计算验证数据的损失,当数据集损失率下降到不在丢失时,即5次相近迭代损失相差0.005以内时,训练过程停止。
3.1.1 数据样本测试
数据样本测试采用Canny边缘检测方法。通过设置高低阈值,将图像边缘变成轮廓。未经处理过数据边缘检测的效果图如图5所示。经过处理后数据边缘检测效果图如图6所示。
图5 未经处理过数据边缘检测的效果图
图6 经过处理后数据边缘检测效果图
3.1.2 图像增强
图像增强方式是采用的是python的第三方图像处理库PIL(Python Image Library),整个过程分为滤波、剪裁、腐蚀、锐化、反转、组合。图像增强示意图如图7所示。
图7 图像增强示意图
3.1.3 卷积核与特征提取
神经网络中卷积层负责特征提取。卷积核与特征提取示意图如图8所示。
图8 卷积核与特征提取示意图
3.1.4 训练结果
整个训练过程消耗12个小时,经过轮迭代后,验证数据集损失率不在下降,最终损失率保持在了0.175,由于误差是不可避免的,训练数据集人工选择入弯转向角度存在误差,通过换算后预测误差保持在了6°以内。训练数据流程图如图9所示。训练损失率和验证数据集损失率如图10所示。
图9 训练数据流程图
图10 训练损失率和验证数据集损失率
■3.2 无人小车行驶过程
小车在正常行驶时,输入神经网络视觉信息利用OpenCV图像处理技术进行增强,来提升预测未来行驶决策准确度。行驶过程测试主要分为正常行驶与障碍物测试。输入小车神经网络视觉信息如图11无人小车第一视角图像。
图11 无人小车第一视角图像
如图12无人小车行驶示意图所示。无人小车行驶测试结果如图13所示。
图12 无人小车行驶示意图
图13 无人小车行驶测试结果
■3.3 结果分析
经模型部署于无人小车后,测试流程图如图14所示。
图14 测试流程图
经实测,无人小车表现如下:
(1)使用OpenCV图像处理技术后,小车感觉环境相比未利用图像处理技术时,感知能力增强较多。
(2)无人小车在限定场景的直线行驶中,运动轨迹基本上可以保证处于道路中央。
(3)无人小车在限定场景进行转弯时表现性能相对较弱,但能在转弯结束后重新实现直线行驶,并随机改变自身位置,根据自身行驶线路进行调整。模型实现效果如表3所示。
表3 模型实现效果
(4)无人小车在遇到限定障碍物时,可以成功的停止行驶。障碍物密度变率如表4所示。
表4 障碍物密度变率
从表中分析,发现当障碍物密度较大时,直线行驶的无人小车,会停止行驶。
从实际应用角度来分析,无人小车在行驶过程中对行驶路径进行了提前规划,降低了系统对实时性的要求。
从实验结果中发现,课题设计任务设计无人驾驶小车系统,利用小车采集大量实验数据构成数据集,通过远程软件传输至PC电脑中,经过图像增强的方式,输入至神经网络当中进行运算,生成跑道模型,再部署至小车中,即可实现限定场景的无人驾驶任务。而端到端控制系统,仅需采集小车在驾驶时,现场记录的图片、转弯路径和转向角度作为数据集样本。结果表明在部署模型测试时,只需要无人小车现场行驶,感知周围环境,利用图像增强技术后神经网络预测行驶路径,实现决策功能准确率提升显著,即可实现限定场景中良好的无人驾驶率。相对于直接型感知方法降低了设计难度与设计成本。
4 总结与展望
基于深度学习的无人驾驶小车属于微缩智能车。在无人驾驶技术中,微缩智能车是真实车辆的简化版,携带传感器较少,数据分析较容易,可以在有限的场地中模拟更高级别的无人驾驶技术。课题设计任务中无人驾驶系统采用端到端控制方式,在上位机中通过Keras框架设计了循环神经网络,在下位机中经有效的验证。
■4.1 主要工作与成果
(1)课题设计任务通过以离线深度学习为目的,建立的无人驾驶小车系统是端到端控制的无人驾驶系统,通过利用图像处理技术,验证算法的有效性,模型部署,最终在人工模拟交通环境中,无人小车利用广角摄像头,能够成功的预测行驶路线及转向角度。
(2)从实验结过中发现,课题任务设计的无人驾驶小车,经过采集大量数据集,添加更多道路标志可以实现更加复杂场景的无人驾驶任务。
(3)采用循环神经网络在与LSTM网络结合使用时网络性能更强大。
(4)采用图像处理技术后小车在测试时,能够显著提升神经网络预测能力。
■4.2 发现问题以及需要改进措施
无人驾驶是一个庞大的系统,课题设计任务仅对其端对端控制方式进行了初步的探索,受于局限性限制和今后努力的方向有以下几点:
(1)实验场景采用限定场景,是相对简单、理想的交通场景下完成的驾驶任务,数据集的建立缺少复杂交通场景的情况,接下来可寻求更加庞大、复杂的交通模拟场地。
(2)无人小车由于车辆本身转弯角度限制,在弯路较为急的交通场景下,转弯预测与车辆速度存在差异,具有较大改善方法。
(3)由于神经网络中,引入RELU函数,在回归时,容易导致神经元死亡,至使收敛下降,有引发过拟合现象,后期将通过更换激活函数更加良好的抑制过拟合。