APP下载

基于TensorFlow的车牌字符识别方法

2021-01-10孟祥环罗素云张玉祖陈思涛

上海工程技术大学学报 2020年3期
关键词:字符识别车牌字符

孟祥环, 罗素云, 张玉祖, 陈 亚, 陈思涛

(上海工程技术大学 机械与汽车工程学院, 上海 201620)

传统的车牌字符识别方法主要有3种,分别为基于模板匹配的字符识别、基于特征分析的字符识别和基于神经网络的字符识别[1-3].模板匹配法的关键是判断待识别字符矩阵和模板库中标准字符矩阵的相似程度,得到的图像矩阵即两个字符矩阵图像的相似度,也是字符识别的判别依据.实际应用中因采集到的字符图像容易受角度和噪声的影响,该方法的识别准确率并不高[4].基于特征分析的车牌字符识别方法首先对待识别图像提取统计特征,特征提取以汉字的笔画特征结构为依据,然后按照一定标准所确定的决策函数进行决策分类,最终将识别的偏旁部首整合到一起组成汉字[5].

深度学习技术的快速发展为解决目标检测和识别提供了新思路.在车牌字符识别方面,卷积神经网络(CNN)可以有效地从大量样本中学习到相应的特征,相比其他算法可避免复杂的特征提取过程,越来越多地被相关研究人员关注.

鲁扬[6]通过搭建8层卷积神经网络模型,采用线性整流函数(Rectified Linear Unit,ReLU)作为激活函数来提高模型收敛速度,把采集到的全国的原始车牌图片进行预处理后投入卷积神经模型进行训练,得到比较好的训练效果.李兵等[7]提出一种基于Gabor滤波特征提取的反向传播(Back Propagation,BP)神经网络字符识别算法,采用Gabor滤波提取特征,利用BP神经网络良好的学习机制、快速的分类方式和较强的容错能力进行数据训练.使用BP神经网络能明显提高复杂环境下车牌识别的准确性、实时性及鲁棒性[8].高攀[9]结合高阶循环神经网络深入研究ResNet和DenseNet网络拓扑结构,进而提出一个简单、高效和模块化的网络拓扑结构,并基于此拓扑结构提出基于深度卷积神经网络的车牌识别方案.张佑贤[10]在对车牌字符识别的过程中,分别对支持向量机(SVM)结合梯度方向直方图(HOG)、CNN结合SVM、CNN结合门控制单元(GRU)等3种算法试验研究.结果表明,CNN-GRN算法对常规车牌字符识别具有很好的鲁棒性.王晶[11]将CNN应用于车牌字符识别,相比BP神经网络,CNN的识别率提高5%.

本文基于TensorFlow深度学习框架[12],搭建卷积神经网络模型.使用卷积核提取特征,通过卷积和池化操作,使参数数量极大减少,提高算法的准确度和泛化能力.

1 卷积神经网络

1.1 卷积神经网络原理

人脑是由860多亿个神经元组成,所有的思维意识都是以它为基本单元,连接成网络实现的[7].

1943年,心理学家McCulloch和数学家Pitts从生物神经元中得到启发,通过计算机训练得到神经元模型(MP),如图1所示.该模型包含输入、输出与计算功能.输入可以类比为神经元的树突,输出可以类比为神经元的轴突,计算可以类比为细胞核[13].

图1 MP模型Fig.1 MP model

由多个神经元模型相连接构成的神经网络发展迅速.在各种深度神经网络中,卷积神经网络是应用范围最为广泛的一种多层人工神经网络,它由Yann LeCun教授在1989年提出,被成功应用于各类图像的识别[14-19].

1.1.1 卷积层

式中,Mj为选择的输入特征图的集合.

1.1.2 池化层

卷积网络中经常使用池化层(Pooling Layers)来缩减模型大小,提高计算速度和所提取特征的鲁棒性.池化层计算式为

式中,down(.)为下采样函数.

1.1.3 前向传播

本文在后续推导中采用平方误差代价函数.对于多类问题,共c类,N个训练样本,EN为代价函数,表示为

第n个样本的误差可表示为

式中,l为当前层.当前层的代价函数可以表示为

xl=f(ul)

ul=Wl-1Xl-1+bl

式中:f(.)为输出激活函数,可以有很多种,一般为Sigmoid函数或者双曲线正切函数.

1.1.4 反向传播

反向传播回来的误差可以看作是每个神经元的基的灵敏度(sensitivities).定义为(第2个等号根据求导的链式法则得到)

第l层灵敏度表示为

δl=(Wl+1)Tδl+1∘f′(ul)

式中,“∘”为每个元素相乘,即

δl=f′(ul)∘(yn-tn)

对于第l层,误差等于该层每一个权值的导数是该层的输入(等于上一层的输出)与该层的灵敏度的叉乘.然后得到的偏导数乘以一个负学习率就是该层的神经元的权值的更新,即

每一个权值(W)ij都对应一个特定的学习率ηij.

1.2 卷积神经网络结构图

一个简单的卷积神经网络模型如图2所示.它主要分两大部分:由多重卷积和池化操作构成的特征提取网络和基于提取特征的分类神经网络.特征提取神经网络接收输入图像,经过卷积层(c1,…,cn)的卷积操作后得到特征映射图[20].通过池化层(P1,…,Pn)对卷积后的特征图进行降维,将降维后的特征值输入分类神经网络的全连接层,最后输出判别结果,如图3所示.

图2 一个简单的卷积神经网络Fig.2 A simple convolutional neural network

图3 卷积神经网络连接关系图Fig.3 Connection diagram of convolutional neural network

2 数据集制作

车牌字符数据通过实景拍摄和网络收集获得.数据集包括30个省市简写汉字(不包括港澳台)、英文字母和阿拉伯数字字符,共6 000个字符数据.首先对采集到的车牌完成字符分割;然后进行图片裁剪,使所有图片大小一致;最后将所有图片进行二值化处理.试验发现,当阈值设为160左右时,二值化图像有较好的效果.将数据放入指定文件夹,运行程序,即可完成数据集制作,过程如图4所示.

图4 数据集制作流程图Fig.4 Flow chart of making data set

具体算法过程如下:

String savedfilename;

cv::glob(pattern_jpg,image_files);

for(int ii=0;ii

{ Mat dd=imread(image_files[ii]);

Mat grayImage,res,bin;

cvtColor(dd,grayImage,

COLOR_BGR2GRAY);

threshold(grayImage,bin,160,255,

THRESH_BINARY);

cv::resize(bin,res,cv::Size(32,40),(0,0),(0,0),cv::INTER_LINEAR);

savedfilename=image_files[ii];

imwrite(savedfilename,res);

}

3 字符识别

3.1 全连接网络的搭建

神经网络可以分为前向传播过程、反向传播过程和测试过程[21].本文样本集为40×32像素点的二值化图片,将数据集输入神经网络时,需先将数据集中每张图片变为长度为1 280的一维数组,然后将该数组作为输入特征输入到神经网络.

3.2 卷积神经网络的搭建

卷积神经网络是在全连接网络的基础上加入卷积层和池化层,其在图像处理方面有独特的优势.卷积神经网络通过卷积和池化的多次组合来自动学习图像在各个尺度上的特征,这与人类理解图像的过程相同.人在认知图像时是分层进行的,首先理解颜色和亮度,然后是边缘、角点、直线等局部信息,最后形成整个物体的概念[22-23].为得到比较好的训练结果,本文设计并训练一个拥有两个卷积和两个池化层的神经网络模型,网络结构如图5所示.

图5 卷积神经网络结构图Fig.5 Structure diagram of convolutional neural network

该网络以灰度化处理后的40×32像素点图像为输入.16个卷积核得到的特征图构成神经网络的第1层,这一层的目的是粗略提取不同车牌字符数据的特征,以便进一步学习.卷积核大小为8×8,最终得到16个大小为20×16像素点的特征图像.第2层为由16个卷积图像构成的池化层,首先进行补零填充补充边缘,然后使用大小为2×2的卷积核进行卷积操作,由于使用的步长为1,所以输出16个特征图.第3层为第2个卷积层,这一层使用大小为5×5的卷积核,最终得到32个20×16像素点的特征图.第4层再将第3层得到的特征图通过取最大值方法合并为1个20×16像素点的、具有像素最大值的精确特征图.第5层以后都属于全连接神经网络部分,是对上一层得到的精确特征图进行矩阵变换,得到1个一维向量输入到全连接神经网络中,这一层共设置512个隐藏节点.考虑到过拟合问题,加入dropout算法处理.卷积神经网络的具体参数设置见表1.

表1 网络结构设置Table 1 Network structure setting

3.3 训练结果

中文字符是车牌字符中笔画连接最复杂的字符,针对中文字符的特殊性,本文在卷积神经网络中使用两次卷积和池化操作,充分提取特征.本文设定当训练满足准确率>99.66%且训练次数>250次时终止训练.在全连接网络中使用含有两个隐藏层的网络,考虑到全连接神经网络训练的输入数据集参数比较多,适当降低训练终止时刻的准确率,设定当训练满足准确率>99.22%且训练次数>250次时终止训练.

实际训练过程证明,这两个模型都具有比较好的收敛性,如图6和图7所示.利用全连接网络搭建的车牌号码中文识别模型的初始准确率为5.22%,在第25次迭代时准确率已经达到91.79%,之后呈缓慢上升趋势,在第75次训练时,准确率突破99.22%,随后虽有一定程度的波动,但最终趋于平稳,达到99.25%,最终的训练耗时为74 s,训练结果证明模型设置是合理的.搭建的卷积神经网络中文字符识别模型的初始准确率为7.46%,在第15次训练时准确率已经达到94.03%,之后的训练过程中准确率在小范围内波动,在第75次训练时准确率达到99.25%,最终达到99.99%,用时696 s.符合反向传播中学习率的函数设定,可实现较好的训练结果.

图6 全连接网络迭代过程Fig.6 Iteration process of fully connected network

图7 卷积神经网络迭代过程Fig.7 Iterative process of convolutional neural network

从训练用时的对比可以看出,由于全连接网络相比卷积神经网络有更简单的网络结构,其在训练时间成本上明显小于卷积神经网络.但从训练的质量来看,卷积神经网络的训练结果的质量明显好于全连接网络,全连接网络在迭代过程中出现较大程度的准确率下降问题,而卷积神经网络迭代曲线比较平滑,对数据的吸收和处理能力更强,提取特征的方式更加有效,在训练过程中波动幅度明显小于全连接网络.

3.4 识别结果

在实际车牌检测中,由于汽车行驶环境的复杂性导致车牌字符被障碍物遮挡,造成车牌分割后得到的字符模糊.本文重点分析京、闽等中文和B、8、Q、0等相似字符的识别结果,见表2.从不同字符的识别结果可以看出,卷积神经网络能够有效地提取车牌字符的特征,在中文的识别上都能得到较好的识别效果.全连接神经网络的识别效果对训练库的训练样本数量要求较高,“京”“闽”训练库中分别有180张图片,字符识别效果较好.“吉”训练库有40张图片,较少的训练样本无法让全连接网络充分地学习,不能达到很好地识别效果.

表2 汉字识别结果Table 2 Recognition results of Chinese character

将制作好的字母数据集和数字数据集带入上述模型进行训练.将卷积神经网络和全连接神经网络对字母和数字的识别结果进行对比,结果见表3.从“B”字符的识别结果可以看出,面对高度模糊字符时,卷积神经网络仍能够准确地提取特征并完成字符的识别,相比之下,全连接神经网络的识别准确率严重下降.

表3 字母、数字识别结果Table 3 Recognition results of letters and numbers

3.5 识别算法比较分析

为更好地说明卷积神经网络对车牌字符识别的效果.将本文方法与基于模板匹配的字符识别方法、HOG特征匹配识别方法和k最邻近(KNN)分类识别方法进行对比,见表4.

表4 不同识别方法结果比较Table 4 Results comparison of different recognition methods

通过上表可以看出,利用卷积神经网络进行车牌字符识别的准确率达到99.40%,远超过其他几种方法.传统模板匹配方法和HOG特征匹配方法对一些形状相近的字符识别效果不佳,如,O和Q、B和8、D和0等.KNN分类识别方法的优点是不需要训练,每次进行识别操作时,可直接调用数据文件,然后进行距离运算;其缺点是识别的结果与k值的选择有很大关系,因此如何合理地选择k值是该算法主要面临的问题.而全连接神经网络识别方法和卷积神经网络对字符0和D的识别都匹配错误.

4 结 语

通过对比研究可以发现,本文构建的卷积神经网络在字符识别方面比传统的全连接神经网络有更高的准确率.与其他算法相比,运用卷积神经网络训练的网络结构有更强的应用范围,其在中文、英文和数字字符的识别方面均有很好表现.卷积神经网络通过卷积核提取特征,极大降低了训练网络对数据集数量的要求,相比全连接神经网络,其在字符识别方面有明显优势.运用本文的数据集制作方法,在现有硬件设备基础上更大范围地采集数据,进行网络参数优化,将会使车牌字符识别的准确度大幅提高.虽然卷积神经网络的网络结构比较复杂,网络训练时间较长,但一次训练得到的参数是可以移植的,且不需要对字符识别硬件设备持续更新,因此,其将逐渐取代传统算法.

猜你喜欢

字符识别车牌字符
车牌颜色里的秘密
论高级用字阶段汉字系统选择字符的几个原则
字符代表几
一种USB接口字符液晶控制器设计
图片轻松变身ASCⅡ艺术画
第一张车牌
一种侧向插装型车牌架
融合字符及字符排列特征的铭牌识别方法
一种基于OpenCV的车牌识别方法
基于MATLAB的图片中字符的分割与识别