APP下载

基于深度学习的交通标志识别智能车的设计与实现

2018-06-29熊旋锦潘小琴

自动化与仪表 2018年6期
关键词:交通标志树莓直方图

熊旋锦 ,潘小琴 ,唐 楷 ,康 勇

(1.西南科技大学 智能机器人创新实践班,绵阳 621010;2.西南科技大学 工程技术中心,绵阳 621010)

随着社会经济愈加发展,现代交通已经非常便利,其中道路交通仍占主导地位[1]。滞后的道路交通安全基础设施建设、严重不足的交警警力、相对薄弱的道路交通安全管理水平和交通参与者安全意识之间的矛盾日益突出,加之环境污染和能源短缺,交通安全和交通阻塞造成了惊人的经济损失,成为日益严重的社会问题。

现在,道路交通问题的解决,需求助于智能车技术。智能车集中地运用了计算机、传感、信息、通信及自动控制等技术,是集决策规划、周边环境感知、道路自动识别等功能于一体的综合系统[2]。智能车自动行驶的首要任务是交通标志自动检测与识别,道路交通标志提供警告、指示信息,规范着驾驶员的行为,为便利、安全的驾驶提供可靠保障[3]。

在此提出基于深度学习的交通标志自动检测与识别的算法,并应用于小型智能车进行模拟测试。该智能车采用树莓派采集和处理交通标志,以STM32为主控制器对智能车进行运动控制。试验结果表明,该智能车可以识别43种交通标志,能够在模拟的十字路口根据交通标志规划路线,实现主动避障和自动前行。

1 系统总体设计

该智能车需要在模拟的道路中识别出各种交通标志并自动前行。在检测到有其余车辆的情况下,要判断出与之相差的距离,并结合路面情况做出等待或前行的处理。为了实现这些功能,该智能车采用双控制器:树莓派控制端进行图像处理,将摄像头采集到的交通标志和障碍物信息进行分类识别,得到识别结果,将结果传到STM32控制端,STM32根据信息内容执行相应程序。

2 系统的硬件设计

交通识别自动前行机器人采用四轮结构,以树莓派和STM32为双控制器,外接摄像头和超声波传感器,其硬件结构如图1所示。

图1 硬件结构Fig.1 Hardware structure

使用树莓派作为图像处理平台,可以直接控制执行结构并与之结合成为一个整体,兼具处理效率性与系统的整体性,使用500万像素彩色摄像头采集图像标识,将目标信号和干扰信号进行处理,把处理结果传输至STM32[4]。

运动控制以STM32F103系列芯片为主控制器,外接电机、编码器、超声波传感器等。STM32与树莓派之间采用CH340串口模块传输图像处理信息。根据图像处理信息和编码器获取的当前速度,产生相应的控制信号,向电机输出PWM波,实现双路电机正反转,最终控制小车前进、停止、后退、左转及右转[5]。

3 系统的软件设计

将摄像头采集到的彩色图像转化为灰度图像,用帧差法可将背景与目标分离,再进行图像阈值分割,应用OpenCV的对比度限制自适应直方图均衡来提高图片的可视性。

3.1 图像处理算法设计

传统的机器学习算法流程分为数据预处理、特征工程、模型建立及训练、模型效果评估。其中,特征工程需要大量的专家知识,且针对图片等复杂的数据源,很难人为从中提取能够全面反映数据间不同特性的特征。为此,可采用卷积网络,利用卷积提取局部特征的性质,特征工程融入模型中,让模型去“学习特征”。同时,为了能够准确识别交通标识,图像处理任务将从数据预处理、数据扩增、算法模型3个角度着手,具体程序流程如图2所示。

图2 程序流程Fig.2 Program flow chart

由图可见,首先对原始图片应用去噪、大小统一等数据预处理的方法处理图片;为解决数据不平衡和增加样本多样性,采用数据扩增的技巧;采用设计模型和处理后的数据进行模型训练,并对其结果进行评估、验证分析来改进模型。

3.1.1 ConvNets网络结构

应用卷积网络ConvNets解决交通标志的分类任务。ConvNets是一种受生物启发的多级结构,能自动学习到不由平移旋转等操作而变化的具有一定层次结构的特征。虽然许多流行的计算机视觉方法通过人工提取特征,如HOG或SIFT特征,但是ConvNets能从原始数据中学习到不同特征级别的特征,所以ConvNet能够提取出更加复杂和具有一定针对性的特征,能为后期分类处理提供更加有用的特征。

网络结构在LeCun等人的工作[6]上进行延伸改进,如图3所示,通过加入Batch Normalization以提高网络的泛用性。同时,通过在网络上增加一次卷积采样提取更加复杂的特征信息,然后通过降采样来减少平移等行为,保证结构的不变性。

图3 ConvNets的网络结构Fig.3 ConvNets network structure

3.1.2 核心算法设计

实际模型在训练中,存在着以下问题:样本采样不平衡,部分图片由于亮度原因难以识别,模型参数过多且层数过深导致的样本需求量较大、梯度弥散、梯度爆炸等问题。在此通过直方图均衡化、数据扩增、Batch Normalization加以解决。

(1)直方图均衡化

由于一些图像受到了低对比度(模糊、黑暗)的影响,图像无法识别,原始图片如图4a所示。通过数据探索,在算法中可以应用OpenCV的对比度限制自适应直方图均衡,以提高图片的可视性。直方图均衡化是一种计算机视觉技术,用于增强图像的对比度,直方图均衡化效果如图4b所示。

图4 直方图均衡化效果Fig.4 Histogram equalization effect

(2)解决数据不平衡问题

图5中每个直方柱为该类样本数量,由此可见,数据不同则样本分布差距较大,而大多数机器学习算法的基本假设均为数据分布是均匀的[7]。如果将机器学习算法直接应用于当前数据,则无法取得理想的结果。

图5 不平衡的数据分布Fig.5 Unbalanced data distribution

针对这类不平衡数据集,从数据的角度出发,常见解决方法为抽样,既然样本是不平衡的,通过某种策略抽样,将不平衡的样本数据转变为相对均衡数据。但是,仅通过采样会使样本量减少,模型得到的数据量不足以用作训练。此时可通过数据扩增(data augmentation)[8]的方法在原始的数据分布上增加数据。通过随机移动、旋转、裁切数据得到的图片可以增加样本的多样性,同时可以解决数据不平衡的问题。

(3)Batch Normalization

随着深度学习的发展,神经网络越来越深。由于深度的增加,网络中权重的根据梯度进行的微小变化将会对后面的网络层有很大的影响,造成“梯度弥散”(由于当前神经元的梯度和前面的梯度相乘后,缩小了梯度对当前节点的影响,甚至导致当前的梯度为0)或者“梯度爆炸”(放大了梯度对当前节点的影响,甚至导致当前的梯度为无穷大)。为避免影响网络的效果和训练时间,不仅采用了改进优化方法,还采用Batch Normalization[9]进行归一化预理。

采用Batch Normalization进行归一化预理,可以选择比较大的初始学习率,加快速度。同时,因为它本身就是一个归一化网络层,所以具有提高网络泛化能力的特性。

3.2 控制程序设计

3.2.1 串口通信

树莓派与STM32之间的通信采用CH340串口模块。CH340模块是一种USB转TTL的串口模块[10]。Linux对所有设备的访问是通过设备文件进行的,串口也是如此。要使用串口,只需打开相应的设备文件即可操作串口设备。在Linux系统下,设备文件位于系统/dev目录之下。在操作串口前,需在树莓派上查看串口型号,Linux下/ttyS0和/ttyS1分别表示串口1和串口2,智能车所使用的串口为/ttyUSB0[11]。

树莓派与STM32之间的通信流程如图6所示,将USB转TTL接入树莓派,进入python编译环境,安装serial,用于串口通信及USB通信:

Sudo apt-get install python-serial

调用serial库:

Import serial

将串口实体化:

ser=serial.Serial('/dev/ttyUSB0',9600,timeout=1)

STM32先进行系统时钟、NVIC,GPIO等一系列初始化,然后进行串口配置,将树莓派的串口与STM32的串口设备连接起来,再将STM32与树莓派串口波特率进行匹配,便可实现通信。

图6 通信软件流程Fig.6 Communication software flow chart

3.2.2 PID 算法

智能车控制系统包括控制小车电机速度的PID算法和小车位置移动。交通识别机器人的控制程序由Keil For ARM编写完成,机器人结合PID控制技术,基于反馈的概念来减少不确定性,消除稳态误差,加快惯性系统响应速度,其控制流程如图7所示[12]。

图7 PID程序流程Fig.7 PID program flow chart

PID控制器给定一个需求转速,将实际测得的转速与需求转速相比较后,经计算得到一个输出信号;将此信号转化为PWM波的占空比,再反馈在电机的驱动电路上,即可按所需控制电机的转动,调节小车速度。该系统采用增量式PID算法,增量式数字PID为

式中:TP为比例系数;TI为积分项积分时间常数;TD为微分时间常数[13]。

4 试验结果

在 Intel i7(3.5 GHz)处理器,8 GB 内存,Mac OS 10.10(64 bit)平台上,对原型系统进行仿真试验。 采用GTSRB无人驾驶数据集。其中,有39209个训练集,12630个测试集,包括43种交通标识,如图8所示。试验结果见表1。

图8 交通标志Fig.8 Traffic signs

表1 测试结果对比Tab.1 Comparison of test results

基于正确分类率对测试集进行评价。由表可知,通过与原有的方法Multi-scale CNN相比较,CNN with BatchNorm在该任务上有较为显著的提升,网络能很好地区分正确分类与非正确分类。同时,通过可视化最后一个卷积层,可见网络很好地捕捉到标志的特征信息,仿真结果比较理想。

随后,将图像处理部分与控制部分结合,用于智能车的自动驾驶,测试过程如图9所示。在模拟的十字路口,智能车可根据交通标志规划路线,自动前行、停止、左转或右转,完成任务。

图9 十字路口测试Fig.9 Test at intersections

5 结语

随着社会经济的发展,现代交通已经非常发达,交通识别技术作为未来交通系统的发展方向,将信息技术、数据通讯传输技术、控制、电子传感技术及计算机技术等集成应用,交通识别技术必将受到越来越广泛的关注。交通标志识别智能车便是将此种技术初步运用的实验,提高了机器人的智能型与可控性,取得了良好的效果。

[1] 朱双东,陆晓峰.道路交通标志识别的研究现状及展望[J].计算机工程与科学,2006,28(12):50-52,102.

[2] 陈晖,张军国,李默涵,等.基于STC89C52和nRF24L01的智能小车设计[J].现代电子技术,2012,35(17):12-15.

[3] 王芳.交通禁止标志的检测和识别[D].西安:长安大学,2014.

[4] 郭亮,叶爱民,林涛,等.基于树莓派和Java语言的温湿度远程实时测量系统的设计 [J].计算机测量与控制,2017,25(6):4-8,20.

[5] 李森,潘小琴,钦盼琛,等.基于远程控制的双轮安防机器人系统设计[J].自动化与仪表,2017,32(5):30-34.

[6] Sermanet Pierre,Lecun Y.Traffic sign recognition with multiscale convolutional networks[J].International Joint Conference on Neural Networks,2011,42(4):2809-2813.

[7] He H,Garcia E A.Learning from imbalanced data[J].IEEE Transactions on Knowledge and Data Engineering,2009,21(9):1263-1284.

[8] Perez Luis,Wang Jason.The effectiveness of data augmentation in image classification using deep learning[EB/OL].2017-12-13.arXiv:1712.04621.

[9] Ioffe S,Szegedy C.Batch normalization:Accelerating deep network training by reducing internal covariate shift[C]//International Conference on Machine Learning,2015:448-456.

[10] 张俊才.嵌入式信息家电平台中的红外通信研究与实现[D].昆明:昆明理工大学,2007.

[11] 郭勇,何军.STM32单片机多串口通信仿真测试技术研究[J].无线电工程,2015,45(8):6-9,42.

[12] 李晓旭,周焕银.基于STM32智能小车视觉控制导航的设计[J].电子设计工程,2017,25(9):105-107,112.

[13] 雷慧杰.基于STM32的直流电机PID调速系统设计[J].现代电子技术,2016,39(8):165-167,170.■

猜你喜欢

交通标志树莓直方图
统计频率分布直方图的备考全攻略
交通标志认得清
符合差分隐私的流数据统计直方图发布
基于双向特征融合的交通标志识别
基于树莓派的骑行智能头盔设计
用直方图控制画面影调
基于树莓派的远程家居控制系统的设计
交通标志小课堂
响应面法优化红树莓酒发酵工艺
基于直方图平移和互补嵌入的可逆水印方案