基于TensorFlow深度学习自动驾驶小车的设计

2020-08-21 09:09曾啸川邓红卫莫岚淋陈一楠贺迪
数字技术与应用 2020年7期
关键词:自动驾驶卷积神经网络深度学习

曾啸川 邓红卫 莫岚淋 陈一楠 贺迪

摘要:本文以自动驾驶小车为例,将深度学习技术运用于自动驾驶小车,在模拟的道路上,实现对交通标志识别的自动驾驶。本文采用TensorFlow深度学习框架,编写CNN结构模型,训练卷积神经网络,运用OpenCV图像处理技术,使用摄像头采集模拟道路与交通信号标志数据,通过处理器计算和处理,面对相应的交通信号标志,自动驾驶小车自动采取应对措施。测试结果表明,小车具有一定程度的自动驾驶与交通标志识别能力。

关键词:TensorFlow;深度学习;卷积神经网络;自动驾驶;交通标志识别

中图分类号:TP18 文献标识码:A 文章编号:1007-9416(2020)07-0131-04

0 引言

TensorFlow[7]是一個采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让开发者可以在多种平台上展开计算,例如计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。无人驾驶技术是传感器、计算机、人工智能、通信、导航定位、模式识别、机器视觉、智能控制等多门前沿学科的综合体。无人驾驶汽车的关键技术包括环境感知、导航定位、路径规划、决策控制等。环境感知模块相当于无人驾驶汽车的眼和耳,无人驾驶汽车通过环境感知模块来辨别自身周围的环境信息,为其行为决策[8]提供信息支持。无人驾驶汽车的导航模块用于确定无人驾驶汽车其自身的地理位置,是无人驾驶汽车的路径规划和任务规划的之支撑。路径规划是无人驾驶汽车信息感知和智能控制的桥梁,是实现自主驾驶的基础。决策控制模块相当于无人驾驶汽车的大脑,其主要功能是依据感知系统获取的信息来进行决策判断,进而对下一步的行为进行决策,然后对车辆进行控制。正因人工智能与无人驾驶汽车拥有好的前景需求,本文基于TensorFlow深度学习和计算机视觉[9],研究深度学习中的图像识别[10]技术的问题。并将实时视频通过图像识别之后的结果,与自动驾驶小车[11-13]的控制相结合,从而实现无人驾驶。自动驾驶小车除了能实现自动驾驶与避障外,还能实现对交通标志[1]的识别[14-16]。

1 系统构成与功能

自动驾驶小车可以分为感知和决策两个部分,树莓派发送指令给Arduino控制直流减速电机实现小车的决策部分;通过摄像头采集的道路和交通标志数据对小车进行训练,让其具有感知功能,并通过测试,实现其感知部分。

1.1 硬件系统构成

自动驾驶小车的实物图如图1所示,系统硬件框图如图2所示。本文的自动驾驶小车是组装的小车底盘,由一个伺服电机和一个直流减速电机组成。硬件系统由树莓派4B、Arduino uno r3、L293D驱动模块、L298N驱动模块、HC-05蓝牙模块与HC-SR04超声波模块构成。树莓派4B作为上位机,进行数据采集与图像预测,Arduino uno r3作为下位机,通过HC-05蓝牙模块与树莓派4B通讯,并发送指令控制自动驾驶小车的运行。L293D驱动伺服电机实现自动驾驶小车的转向,L298N驱动直流减速电机控制自动驾驶小车的速度。自动驾驶小车上方安装了一个800万像素的摄像头,用于数据采集。

1.2 系统运行流程

该系统的整体流程图如图3所示。将训练好的模拟道路模型装载到树莓派4B中,将训练好的交通标志模型装载到PC中。PC与树莓派4B通过局域网进行通讯,树莓派4B通过实时采集到的视频流数据发送到PC,PC将发送过来的实时视频拆分为一帧一帧的图片,并进行处理与预测,将预测的交通标志的对应标签,发送信号流给树莓派4B,树莓派4B再发送对应指令给Arduino,自动驾驶小车从而自动采取应对的措施。

2 系统算法设计

网络模型算法基于TensorFlow框架进行设计,图片处理算法基于OpenCV进行设计,如图4所示。模型设计方面,在不影响特征提取的情况下,加入最大池化层,还加入Dropout层防止过拟合。图片处理方面,将摄像头采集到的实时视频拆分为一帧一帧的图片,通过HSV颜色空间[2]的转换、二值化处理和目标区域的提取[3]等预处理操作,再进行交通标志的预测。

2.1 网络结构

如图5所示,为模拟道路自动驾驶的网络结构。本算法设计的卷积神经网络[4]以小车采集的图像作为输入,主要由5个卷积层以及3个全连接层所构成。使用的损失函数为交叉熵;激活函数为ReLU;分类器使用Softmax;优化器为ADAM。采集的道路的图像大小为320*160个像素,每张图片都有对应的标签值,经过OpenCV的处理变成灰度图片,再将每一张图片输入到网络结构中进行训练。每张图片经过5个卷积层的特征提取,加入了Dropout层防止过拟合,flatten层是卷积层到全连接层的过渡层,将多维的数据变成一维,最终输出为三个标签对应的值。

如图6所示,为交通标志分类识别的网络结构。本算法设计的卷积神经网络以32*32*3的彩色图像作为输入,主要由3个卷积层,3个池化层,以及3个全连接层所构成。使用的损失函数为交叉熵;激活函数为ReLU;分类器使用Softmax;优化器为ADAM。采集的交通标志的图片为大小不等的彩色图片,经过OpenCV的处理将图片统一变成32*32大小,通过python的pickle模块将图片数据序列化后转变成二进制文件保存,再将该文件输入到网络结构中进行训练,使图片数据更易于读取与处理。

2.2 HSV颜色空间的转换和二值化处理

HSV是把H(色调),S(饱和度),V(明度)当做色值来定位颜色的空间。相对于RGB空间,HSV空间能够非常直观的表达色彩的明暗,色调,以及鲜艳程度,方便进行颜色之间的对比。将采集到的图片进行HSV颜色空间的转换,并将红色、蓝色和绿色三种颜色阈值分割[5-6],对目标区域进行阈值化与膨胀处理,最终生成一张合并的mask图。如下图所示,为本系统在模拟道路上所收集到的五类模拟交通标志mask图。图7为人行横道标志mask图;图8、图9分别为红绿灯标志mask图;图10为50_kmh限速标志mask图;图11为“stop”停车标志mask图。

2.3 滑动窗口技术

滑动窗口技术,首先固定一个卷积区域,然后将卷积核在图像上按照指定步长进行滑动,对于每一次的滑动得到区域进行预测,判断该区域中存在目标的概率。滑动窗口目标检测算法有很明显的缺点,就是计算成本,因为如果在图片中剪切出太多小方块,卷积网络要一个个地处理。如果选用的步幅很大,显然会减少输入卷积网络的窗口个数,但是粗糙间隔尺寸可能会影响性能。反之,如果采用小粒度或小步幅,传递给卷积网络的小窗口会特别多,这意味着超高的计算成本。为此,对这些问题做了一些改进。在生成的mask图中,白色区域代表目标区域,黑色区域则代表非目标区域。在进行滑动窗口采用小步幅进行滑动,如果遇到黑色区域或者低像素值区域就直接跳过,遇到目标区域才进行预测。这样处理不仅不会影响其性能,也不会拥有超高的计算成本。

3 实验与分析

数据采集结束后,通过构建的卷积神经网络来训练样本数据。将所有数据集拆分80%为训练集,其他的20%为验证集。如图12所示,自动驾驶训练,训练数据集包含8167个图片样本,输入到卷积神经网络进行训练,经过20次迭代,训练集正确率为0.9836,loss值为0.0434,验证集正确率为0.9639,loss值为0.1035。如图13所示,交通标志训练,训练数据集包含10222个图片样本,输入到卷积神经网络进行训练,经过10次迭代,训练集正确率为0.9825,loss值为0.0610,验证集正确率为0.9941,loss值为0.0543。

4 结语

本文的主要贡献和结论如下。

(1)本文将深度学习中的图像识别技术与无人驾驶小车相拟合,两者之间能够流畅的运行。(2)实验结果表明,本系统设计的基于TensorFlow深度学习的自动驾驶系统具有一定的自动驾驶与交通标志识别能力。(3)本实验树莓派与Arduino之间采用蓝牙模块通讯,存在一定的时间延迟,总体表现还好,应该考虑使用更好的通讯方式,以减小通讯的延迟时间。(4)采用提取感兴趣区域的方法,运用滑动窗口技术,并进行略微的改进,能够使图像识别能力比较准确,处理速度更快。(5)由于硬件计算能力有限,导致整个系统发送指令时有一定的延迟时间,无人驾驶小车行驶过程中有一定的误差。

参考文献

[1] Saadna Y,Behloul A.An overview of traffic sign detection and classification methods[J].International Journal of Multimedia Information Retrieval,2017(6):193-210.

[2] Qin Y Y,Cui W,Li Q,et al.Traffic Sign Image Enhancement in Low Light Environment[J].Procedia Computer Science,2019(154):596-602.

[3] Salti S,Petrelli A,Tombari F,et al.Traffic sign detection via interest region extraction[J].Pattern Recognition,2015,48(4):1039-1049.

[4] Alexander Shustanov,Pavel Yakimov.CNN Design for Real-Time Traffic Sign Recognition[J].Procedia Engineering,2017(201):718-725.

[5] Cao Jingwei,Song Chuanxue,Peng Silun,Xiao Feng,Song Shixin. Improved Traffic Sign Detection and Recognition Algorithm for Intelligent Vehicles[J].Sensors(SENSORS-BASEL),2019,19(18):4021.

[6] Selcan Kaplan Berkaya,Huseyin Gunduz,Ozgur Ozsen,Cuneyt Akinlar,Serkan Gunal.On circular traffic sign detection and recognition[J].Expert Systems with Applications,2016(48):67-75.

[7] 章敏敏,徐和平,王晓洁,等.谷歌TensorFlow机器学习框架及应用[J].微型机与应用,2017,36(10):58-60.

[8] 武歷颖.无人驾驶汽车环境信息提取及运动决策方法研究[D].西安:长安大学,2016.

[9] 白辰甲.基于计算机视觉和深度学习的自动驾驶方法研究[D].哈尔滨:哈尔滨工业大学,2017.

[10] 孙洪萍.图像识别——交通标志的检测与识别[J].科技创新与应用,2018(11):130-131.

[11] 吕威.电动助力转向系统稳定性和电流控制方法研究[D].长春:吉林大学,2010.

[12] 刘刚.基于智能车的后轮双电机差速的研究与应用[J].电子制作,2015(13):88-89.

[13] 陈孟元,孙书诚,王虎.基于图像识别的寻迹智能车设计[J].重庆理工大学学报(自然科学),2013,27(3):80-84+103.

[14] 仲崇豪,宋斌,徐方明,等.基于TensorFlow的交通标志识别系统研究[J].信息与电脑(理论版),2019,31(22):101-102.

[15] 王全,梁敬文.基于TensorFlow的交通标志识别方法研究[J].价值工程,2019,38(27):204-206.

[16] 郑挥,郭唐仪,王建博,等.自然背景下交通标志牌的检测方法研究[J].现代交通技术,2017,14(3):79-81+110.

猜你喜欢
自动驾驶卷积神经网络深度学习
基于深度卷积神经网络的物体识别算法
MOOC与翻转课堂融合的深度学习场域建构
大数据技术在反恐怖主义中的应用展望
特斯拉中国官网不再提“自动驾驶”