APP下载

基于微控制器改进SqueezeNet交通标志识别的研究

2020-06-06李晓琳庞保孟曹银杰田存伟冯文文耿相珍

计算机测量与控制 2020年5期
关键词:开发板交通标志微控制器

李晓琳,庞保孟,曹银杰,田存伟,冯文文,刘 明,耿相珍

(1.聊城大学 物理科学与信息工程学院,山东 聊城 252059;2.山东省光通信科学与技术重点实验室,山东 聊城 252059;3.山东高速物流供应链有限公司,山东 青岛 266000)

0 引言

交通标志作为智慧交通重要的组成部分,交通标志识别在车辆驾驶和交通安全起着重要的作用[1]。近年来,交通标志识别也是国内外学者研究的热点[2-3],机器学习的相关理论与应用发展迅速,尤其是卷积神经网络(convolutional neural network,CNN)取得了相对较高的成就,在图像识别[4]、语音识别[5]、物体检测[6]等机器学习领域受到广泛应用,基于神经网络的交通标志识别方法具有检测速度快、识别精度高以及成本低廉等特点是现在机器学习领域的重点研究方向。

基于CNN的图像识别研究[3,7-8]及消费类的电子芯片产品,大部分基于操作系统之上[9],无法做到自主可控性、数据稳定可靠,并且基于微控制器芯片上做的相对较少;2019年3月国防科大与旷视的研究团队(孙剑老师在列)提出在移动端ARM芯片实时运行的两阶段通用目标检测算法ThunderNet,为图像的识别可以实现在芯片[10]上提供了重要的参考价值。2018年ARM-NN针对Cortex-M系列芯片研究了CMSIS-NN库;CMSIS-NN库搭建网络模型结构不受光照等过多自然环境影响,避免手工制作特征的设计难度,能够在训练中能够自动完成特征的提取、抽象和分类,此方法基于微控制器采用CMSIS-NN库搭建网络识别程序框架实现对各类图像的识别,数据安全可靠。2016年F.N.Iandola,S.Han等人提出SqueezeNet网络模型,此结构不仅可以保证精度不损失,相比原来的AlexNet网络,其网络结构可以将训练的权值压缩50倍左右;为提高标志识别的准确度,提出采用改进SqueezeNet网络模型为在Cortex-M开发板上实现图像识别奠定了基础[11-12]。

本文提出一种基于微控制器改进SqueezeNet交通标志识别的方法,采用改进SqueezeNet网络模型结构,降低权值大小,成功移植到前端,前端应用CMSIS-NN卷积神经网络库搭建与训练机相同的网络模型结构进行对交通标志的识别,提高了图像识别的速度,并且只将识别结果发送给后端服务器,可降低后端计算数据量。此研究能为智能交通提供了一种可选择的方案同时,也可以为交通管理部门提供了便利。

1 基于微控制器的交通标志识别的设计

1.1 CMSIS-NN库

CMSIS(Cortex Microcontroller Software Interface Standard)是Cortex微控制器软件接口标准,CMSIS-NN作为2018年CMSIS加入的重要的成员,大大缓解了微控制器神经网络相关软件优化压力。CMSIS-NN通过对神经网络中所需要的重要的关键函数进行优化而达到加速的目的,由NNFunction(各种实用函数)和NNSupportFunctions(实现神经网络层类型相关函数)两部分组成,内核API简单,对在开发板上搭建与PC训练机相同的改进的SqueezeNe网络模型结构重定位起到关键作用。

1.2 交通标志识别的整体设计

系统PC训练机的网络是采用基于TensorFlow架构,python语言编程,利用改进SqueezeNet网络模型结构对交通标志图像数据库进行训练,使得权值文件大小缩小了50倍,并将训练好的权重矩阵以.h文件方式保存;前端利用Cortex-M系列芯片内嵌的CMSIS-NN库,搭建与训练机相同网络模型结构;并将训练好的权值矩阵.h文件成功移植到前端STM32F767开发板程序中,同时摄像头采集到的图像利用自定义的图像处理库函数进行预处理,提高了在微控制器Cortex-M开发板上的识别速度,数据安全可靠,如图1所示为系统整体功能结构图。

图1 整体功能结构图

2 改进SqueezeNet网络模型

从AlexNet模型到Deep Residual Learning模型,其网络模型经过参数化的,训练的权值矩阵参数存在大量的冗余,由于后期要将其权值矩阵参数移植到嵌入式开发板上,考虑到开发板的运算速度与栈空间,降低冗余的参数以及提高识别准确率的问题,在SqueezeNet网络模型结构的基础上提出采用改进SqueezeNet网络结构[12],其参数设置如表1所示。

表1 改进的 Squeezenet 模型参数

原有的 SqueezeNet提出fire module核心模块[15],fire module模块由squeeze层和expand层两部分组成。squeeze层有1*1滤波器的压缩卷积层;expand层包含1*1和3*3卷积滤波器,系统把1*1 和3*3得到的feature map 进行Concat,并满足S

图2 Fire module 功能结构图

在原有SqueezeNet模型基础上,为了提高识别的准确度,因此对SqueezeNet网络模型结构[12-13]进行了改进,在保持池化层特征大小与将融合Fire model输入输出特征大小保持一致基础上,进行两个方面的改进。

将池化层融合引入到后续的卷积层:融合的算法是池化层提取上一级t个特征图,下一层的卷积层t个特征图输出提取的a个特征图,将a和t个特征图进行融合得到s个特征图,式(1)为融合算法。

xs=f「wtdown(x)t+bt⎤f(waxa)(t+a=s)

(1)

采用L2正则化来实现约束Softmax:Softmax 函数是归一化的基于概率进行多分类的指数函数,式(2)为分类概率的计算式,式(3)为训练集损失函数的计算式;改进的SqueezeNet网络模型结构中采用的L2约束Softmax分类函数,式(4)为其计算公式,此函数增加对f(xi)的L2范数约束,采用最佳g值来确定特征f(xi)的约束值,从而做到对交通标志的明确分类,加快标志分类的收敛速度。

(2)

(3)

∀i=1,2,…,M

(4)

改进SqueezeNet网络模型结构在CNN的基础上,通过前向传播获取计算输出结果,利用反向传播计算误差结果,采用反向计算出误差对权值进行更新。

3 基于微控制器Cortex-M交通标志图像预处理

3.1 图像的采集处理

采用Cortex-M系列的STM32F767开发板作为系统前端,使用DCMI接口,OV5640摄像头[14]选择支持数字视频接口(DVP)连接前端,采集图像输出格式为分辨率为 1280*800,RGB565(16位),为了获得网络可识别的图片格式,通过ARM公司提供的CMSIS-DSP库加快对拍摄到的交通标志图像进行处理[1314],程序中CMSIS-DSP库调用DSP指令对所要标志的图像进行处理得到网络可识别的图像格式, DCMI接口支持DMA传输,系统采用对芯片用程序扩展32M的SDRAM得到一部分空间,用DMA直接上传图片数据,不经CPU直接到内存,加快图片上传的速度,对交通标志的快速识别起到了关键性作用。

3.2 图像的预处理

在微控制器上进行图像识别的过程中,主要在于卷积的图像数据的矩阵运算,利用CMSIS-DSP库中具有的向量运算、矩阵运算、滤波器、统计功能和高级数学等功能,程序中用结构体arm_matrix_instance_f32表示矩阵(软件程序如下):结构体的元素Rows表示矩阵的行,Cols表示矩阵的列,rData指向矩阵数组,矩阵元素为32位无符号float类型,满足数据精度要求。

typedef struct

{ uint16_t Rows;

uint16_t Cols;

float32_t *rData;

} arm_matrix_instance_f32;

除了矩阵运算,对于摄像头采集到图像,要做到对获取图像的滤波、去噪及快速定位,提出了自定义的图像处理库,对于前端实现对交通标志快速识别,起到重要的作用。相比在PC端的图像处理及识别,基于微处理器图像识别功耗较低,稳定可靠及自主可控的优点。

3.3 前端标志的识别

在前端进行标志图像识别前考虑到神经网络运算调用栈区空间大小,微控制器芯片在初始化时扩展了栈区的空间大小,提高神经网络的计算空间。采用改进后的SqueezeNet模型结构,在训练机对现有的交通标志集进行训练,并以.h权值矩阵文件形式进行保存,根据.h文件中是float32型数据,微控制器Cortex-M系列开发板需要int8型数据,需要进行数据转换,并将处理好的权值矩阵.h文件移植到Cortex-M系列STM32F767IGTX开发板,在软件程序中利用程序对摄像头,对于一张图相片上多个标志图像的,利用相关的软件程序对交通标志的标注定位,利用图像处理库会对识别的交通标志进行灰度、去噪[14]等预处理,利用搭建与训练机相同模型结构进行识别,并将识别出的交通标志信息上传。交通标志识别流程如图3所示。

图3 交通标志识别整体流程

4 实验

4.1 GTSDB数据集

系统采用德国交通标志检测数据集(GTSDB),此数据集包含43类真实车辆驾驶环境下的高清交通标志场景图像,数据集包含大量分辨率低、光照不良、遮挡及运动模糊等不利条件下的交通标志样本图像[14]。为了扩充以及增强数据集的质量,在交通部门允许的情况下,自行拍摄晴天、阴天、雨天、光照不足等不同条件的车辆真实驾驶图像来补充数据集,最终自定义数据集包含102类主交通标志的图像。实验采用对102类自定的数据库由不同亮度下的各个交通标志的标准样本标志图像进行训练,通过数据扩增的方法将所有图像按照正方向、反方向各旋转20°,每隔 5°采集一次,根据四种天气环境(晴朗,光照合适、阴,光照不足、雨天、部分被阴影遮挡),定义大约一幅图像形成320幅样本图像,自定义数据库标志图像库图片已达到35840张,为了便于训练,将所有的数据集每幅图像分辨率都处理成尺寸为224*224像素[8],标志图像部分样本如图 4 所示。

图4 部分标交通标志样本

4.2 实验验证与结果分析

在公路交通管理部门的许可监督下,实验采用一辆正在行驶的车辆为例, 利用PC训练机采用改进SqueezeNe网络模型结构将对102类指示交通标志进行训练,并将训练好的权值矩阵文件成功移植到Cortex-M系列STM32F767IGTX开发板上,在开发板上搭建与训练机相同的网络结构,首先利用自定义的图像处理库进行对摄像头采集到的图像进行预处理,然后调用权值矩阵文件,实现对预处理图像的识别。实验采取在开发板上测试完后结果进行记录,再对相同的标志图像在计算机上面进行测试识别验证,并将获得的结果进行比对的方法。

表2是针对不同测试环境下,对指示标志、禁令标志、警告标志和旅游区标志等4类共102种主标志交通标志图像识别,并将准确率进行比较;表3对不同标志(圆形指示标志、圆形禁令标志、三角形警告标志 、方形旅游区标志)类型进行识别;表4是利用训练机所得到的权值矩阵成功移植到开发板上,随意抓取六次六种车型在原始AlexNet、SqueezeNet、改进SqueezeNet及利用改进SqueezeNe网络模型结构在Cortex-M 实现的准确率以及模型参数大小的比较。

表2 在不同环境下各个特征识别准确率(%)

表3 不同类型标志识别精确度(%)

表4 针对不同网络模型在计算机与Cortex-M系列开发板交通标志识别结果比较(%)

根据表2结果分析,通过采取对102种的4类部分主交通标志在不同环境下识别结果统计,实验结果表明标志识别精度比较稳定,标志平均识别率也达到了较高的精确度;表3根据识别数目不同,按相同的规则分配识别数目多少,针对不同类型标志识别,发现圆形标志与方形要比三角形标志识别准确度度要高;由表4分析在原有模型AlexNet,原SqueezeNet及修改的SqueezeNet网络模型结构三者相比较,在计算机与开发板上结果对比发现识别准确率基本相同,并且改进模型结构权值矩阵大小相比AlexNet模型缩小了将近50倍,提高Cortex-M核对标志图像识别的处理,明显看出再识别率有了明显的改善,在识别速率上,在前端将交通标志识别与在计算机上直接识别基本一致,说明此方法可行。

实验结果验证,利用Cortex-M系列芯片推出的CMSIS-NN库搭建网络可以进行交通标志图像识别是可行的,并且通过改进的SqueezeNet网络模型结构训练好的权值参数的大小有了明显的减少,对于将模型参数移植到Cortex-M嵌入式开发板上奠定了基础,同时利用自定的图像处理库,提高图像识别及预处理的速度。针对目前交通标志的识别都是基于操作系统之上,此研究方法提出不依赖操作系统,在微控制器芯片上实现神经网络识别的方法,为车辆驾驶和交通安全管理提供极大便利。给未来机器学习能在芯片上学习提供可选择的方案,同时提高了交通标志识别效率。

5 结语

基于交通标志识别研究的基础上,提出基于微控制器Cortex-M系列开发板对交通标志识别,考虑到Cortex-M开发板栈区空间大小的调整以及内存的分配问题,采用改进 SqueezeNet 卷积神经网络模型结构,有效的缩小了权值文件的大小,便于成功移植到开发板上,提高了图像训练识别的速度;同时采用自定义的图像处理库,实现对摄像头采集到的图像快速定位与滤波、去噪等预处理,而且基于Cortex-M系列芯片图像识别,不依赖于操作系统,稳定可靠,而且通过实验证明,对于102类交通标志识别平均准确度达到了97.4% 以上,而且识别速度也有了明显的提高。但是由于数据集有限,目前只能对交通部分的102类主标志进行识别,争取实现对更多交通标志的识别,为车辆驾驶和交通安全管理提供可参考的价值。

猜你喜欢

开发板交通标志微控制器
基于双向特征融合的交通标志识别
基于STM32H7的FDCAN通信系统设计与实现∗
TASKING针对英飞凌第三代AURIX微控制器推出多核开发环境
开发板在单片机原理及接口技术课程教学中的应用
交通标志小课堂
ARM宣布mbed Enabled Freescale FRDM—K64F开发板通过微软认证
电磁导向智能车设计探讨
我们欢迎你!
基于MC9S08QG8低端微控制器的无线控制器设计
MiniGUI在基于OMAP5912开发板上的移植