随着我国经济的发展,汽车,特别是小轿车的数量越来越多,智能交通管理系统应运而生。车牌智能自动识别作为智能交通管理系统中的重要组成部分,在智能交通管理中发挥着越来越重要的作用,其应用非常广泛,在高速公路收费管理、超速违章自动拍照、停车场管理、小区进出车辆管理、交通数据采集等许多系统中都需要识别车牌号码。车牌识别系统中主要采用车牌图像进行识别。基于车牌图像的车牌智能自动识别系统主要由3部分组成:车牌定位、字符分割、字符识别,其中字符识别是最后最关键的步骤。车牌字符的正确识别率直接关系到车牌识别系统的性能,车牌字符识别技术已成为完善智能交通管理系统的关键。
1959年Hubel等[1]发现猫的视觉皮层细胞负责检测光信号,受此启发,1980年Fukushima[2]提出了神经感知机(neocognitron),神经感知机被认为是卷积神经网络(Convolutional Neural Network,CNN)的前身。1989年,LeCun等[3]提出了一种名叫LeNet-5的多层神经网络,并成功用于识别10个数字手写字符。LeNet-5网络可以通过反向传播(Back Propagation,BP)算法进行学习,被认为建立起了CNN的现代结构,是CNN的最早基本结构[4]。CNN类似于生物神经网络的权值共享结构,可产生生物视觉中局部感受野效应,不仅降低了网络的模型复杂度、减少了权值数量,且对图像平移、比例缩放、倾斜等具有不变性。虽然CNN有很好的性能,但是由于缺乏大数据,以及硬件性能低,因此早期的CNN不能处理复杂问题。随着大规模图像数据库的出现和硬件技术的发展,CNN成为研究热点,得到了快速发展,许多快速计算方法和新CNN结构被提出。近年比较有名的CNN结构有AlexNet[5]、ZFNet[6]、VGGNet[7]、GoogleNet[8]和ResNet[9]。应用上,CNN在图像分类[5-6]、目标检测[10]、目标跟踪[11]、文本识别[12]、动作识别[13]等方面都取得了巨大成功。由于CNN具有很好的特征提取性能,因此本文拟将采用CNN识别车牌字符。目前研究者提出了许多车牌字符识别方法,如:基于结构特征和灰度特征的方法[14]、基于模板匹配和神经网络的方法[15]、基于深度信念网络的方法[16],但将卷积神经网络用于车牌字符识别的研究鲜见报道。文献[17]中提出一种改进LeNet-5的车牌字符识别方法,通过增加LeNet-5中C5层特征图数量和增加输出层神经元的个数来识别车牌的76个字符(包括汉字、数字和字母字符)。文献[17]没有改变LeNet-5的层数,由于LeNet-5的层数多,训练时间和识别时间较长,同时将汉字、数字和字母一起识别,影响了识别率。文献[18]提出将BP神经网络与CNN相结合的分阶车牌字符识别算法,该方法将汉字、数字和字母分别进行识别,但其主要采用BP神经网络进行识别,对BP不能识别的字符则采用CNN识别;由于增加了CNN层数,因此增加了训练时间和识别时间。本文针对字符图像经预处理后形状结构变简单的特点,提出一种新的基于简单卷积神经网络的车牌字符识别方法,CNN网络只包括2个卷积层和2个采样层,并且每层的特征图少,网络结构简单。实验结果表明,不仅识别时间短,而且正确识别率高。
1 卷积神经网络介绍CNN是一种多层非全连接的神经网络,主要包括卷积层和采样层,LeNet-5是CNN的经典例子,用于手写体数字字符识别,其网络结构如图 1所示。
LeNet-5卷积神经网络共包含7层(不包括输入层),每一层都包含可训练的参数,网络的输入是大小为32×32的图像。C1层是由6个特征图组成的卷积层,每个神经元与输入图像的一个大小为5×5的邻域连接,因此每个特征图的大小是(32-5+1)×(32-5+1) 即28×28。S2层是由6个大小为(28×1/2)×(28×1/2) 即14×14的特征图组成的采样层,由C1层下采样得到。特征图的每个神经元与C1层的一个大小为2×2的邻域相连接。C3层是由16个大小为(14-5+1)×(14-5+1) 即10×10的特征图组成的卷积层。特征图的每个神经元与S2层的若干个特征图的大小为5×5的邻域相连接。S4层是由16个大小为(10×1/2)×(10×1/2) 即5×5的特征图组成的采样层。特征图的每个神经元与C3层的大小为2×2的邻域连接。C5层是由120个特征图组成的卷积层,每个特征图只有1个神经元,每个神经元与S4层所有特征图的大小为5×5的邻域相连。F6层是隐藏层,包含84个神经元,与C5进行全连接。最后,输出层有10个神经元,是由径向基函数(Radial Basis Function, RBF)单元组成,与F6层进行全连接,每个神经元对应一个数字字符类别。
LeNet-5的训练算法请参阅文献[3]。
2 基于CNN的车牌字符识别 2.1 基于CNN的车牌字符识别流程本文提出的基于CNN的车牌字符识别方法(方法流程如图 2所示)由两部分构成:第一部分,输入训练图像集训练CNN分类模型;第二部分,将待识别的车牌字符图像输入训练好的模型进行识别。
本文所用汽车图像均来自于某大门汽车门禁监控系统,该系统收集了每天进出大门的汽车正面图像。车牌字符则是通过人工方式从汽车图像中裁剪得到。由于拍摄汽车图像时存在天气、光照等外部环境影响,同时存在拍摄距离和角度不同,车牌污损程度不同,因此裁剪得到的字符图像存在大小不统一、颜色变化大、部分字符不清晰等情况,部分原始字符图像如图 3(a)所示。原始字符图像不能直接用于CNN的训练识别,需要对原始彩色图像作预处理,去除不必要的背景和噪声,得到字符的本质形状结构,使其更容易被识别。字符原始图像预处理流程如下:
步骤1 将字符彩色图像图 3(a)统一转化为灰度图像(图 3(b));
步骤2 统一图像大小为36×28的二值图像(图 3(c));
步骤3 去除二值图中的噪声点(图 3(d));
步骤4 对二值图进行水平和垂直投影切分,去除边界部分,保留字符部分区域(图 3(e));
步骤5 由于字符“1”的结构特殊性,所以将“1”的图大小调整为28×4,其他字符图像调整为28×20(图 3(f));
步骤6 添加边界,使字符区域居中, 并细化字符。最后得到有边界且字符居中的大小为36×28细化图(图 3(g))。
2.3 识别车牌字符的CNN模型结构将LeNet-5用于10个手写数字字符识别具有很好的识别性能。车牌字符中除去汉字字符,共有34(10个数字字符,24个字母字符,不含字母O与I)个字符。相比手写数字字符,经过预处理后的车牌字符虽种类更多,但其字符形状结构更简单,同个字符的不同图像样本间差别小。针对车牌字符图像的特点,可以简化LeNet-5的结构,使其既能满足正确识别率要求,又能减少识别时间,因此本文提出一种改进的CNN模型用于识别车牌字符。改进的CNN模型结构如图 4所示。
各层介绍:1) 输入层为字符图像,图像大小为36×28;2) C1层为卷积层,得到4个大小为32×24的特征图,每个卷积核大小为5×5,共用了4个卷积核;3) S2层是采样层,每个C1层的特征图经过下采样变成大小为16×12的特征图,每个采样窗口大小为2×2;4) C3层是卷积层,得到12个大小为12×8的特征图,每个特征图都是S2层4个特征图卷积的累加,每个卷积核大小为5×5,共12×4个卷积核;5) S4层是采样层,分别对C3层的每个特征图进行下采样,得到12个大小为6×4的特征图,每个采样窗口大小为2×2;6) F5层将S4层12个特征图变形转换连接成一个向量,向量包含12×6×4即288个神经元,反向传播计算时又将向量转换成12个特征图;7) 输出层是由34个神经元构成的向量,对应34个字符的输出,F5层和输出层构成一个Softmax分类器。
3 实验实验环境为:CPU为Intel i5-4570,主频3.2 GHz、四核,4 GB内存;64位Microsoft Windows 10操作系统,Matlab R2014a编程语言。CNN程序采用DeepLearnToolbox-master深度学习算法软件包,没有使用GPU计算。共裁剪收集10200张字符图像,每个字符300张,共34个字符(10类数字字符,24类字母字符,除去字母O和I)。首先将10200张字符图像按照本文2.2节介绍的预处理方法进行预处理,得到10200张大小为36×28的字符图。
3.1 实验步骤实验步骤如下:
步骤1 将10200张图分成10份字符图像集,每份包含1020张图像,其中每个字符30张。设i=1。
步骤2 取第i份图像集作为测试集(包含1020张),其余9份图像集作为训练集(包含9180张)。用训练集训练CNN模型,用测试集进行识别测试,得到正确识别率和识别时间。
步骤3 i=i+1, 如果i≤10,转到步骤2;否则转步骤4。
步骤4 得到平均正确识别率和单个字符平均识别时间。
3.2 实验结果实验中epoch设为200,学习率为1,每次迭代学习图像90张。每个epoch需要迭代102次,总迭代次数为20400。总共识别错误4个字符,得平均正确识别率为99.96%,单个字符平均识别时间为0.00041 s, 能满足实际应用需求。识别错误的4个车牌字符如图 5所示,其中,字符“4”“K”“V”和“C”分别被识别成“A”“H”“K”和“O”。
实验表明如果epoch太小,学习训练不够,造成模型正确识别率低;如果epoch太大,不仅不能提高正确识别率,而且增加了训练时间;epoch=200使模型能充分学习训练集并收敛,训练时间在无GPU运算情况下约需要8 h。学习速率和每次学习图像数在一定的范围内对识别率没有影响,学习速率太大会降低正确识别率。图 6是当epoch=200,学习速率为1,每次迭代学习图像90张时的损失函数变化情况,训练已得到充分收敛。
同时作者还实验了C1和C3层设置不同数量特征图的CNN,得到对应的正确识别率和识别时间(见表 1)。
从表 1看,C1层和C3层的特征图个数对车牌字符正确识别率有直接影响。特征图个数多时,正确识别率会逐渐提高,识别时间则相应增加。特征图个数增加到一定后,正确识别率不会再继续提高,甚至有时会变低。总的来看,当特征图个数增加到一定后,正确识别率不会低于99.94%。在正确识别率为99.96%的7种网络结构组合中,C1层为4、C3层为12的CNN结构最简单,识别时间最短,因此本文选择C1层为4、C3层为12的CNN结构作为识别模型。
3.3 对比实验为了比较本文所提的CNN识别车牌字符的性能,本文实验测试了其他几种方法对同样车牌字符集的识别性能,这些方法包括LeNet-5[3]、支持向量机(Support Vector Machine,SVM)[19]、深度信念网络(Deep Belief Network,DBN)[20]、BP神经网络[21],识别结果如表 2所示。实验中同样将10200张预处理后的字符图像分成10份,每次取1份作为测试集,其他9份作为训练集,共进行10次,求得平均正确识别率。
从表 2可以看到,本文所提的CNN模型适合识别车牌字符,正确识别率能够达到99.96%,超过对比测试的其他4种方法。实验时,对于LeNet-5网络需要将图像大小改为32×32,其他对比方法则直接将预处理后的字符图像作为输入。
3.4 结果分析本文提出的CNN模型虽然结构简单,却能取得99.96%的正确识别率,这主要得益于CNN良好的特征提取能力;另外也得益于车牌字符本身字体工整清晰。虽然原始字符图像存在大小不统一、颜色变化大、部分字符不清晰等情况,但是经过预处理后的字符图像清晰可辨,字符形状结构简单,没有手写字符的形状结构复杂,因此只需要简单的CNN就能充分提取车牌字符特征,不必采取复杂的CNN结构。实验表明,如果不进行预处理,识别效果差,当采用C1层为4、C3层为12的CNN直接训练识别字符灰度图像时,其正确识别率只有70.58%。
本文收集的车牌图像来自于某大门汽车门禁系统,进出该大门的车辆主要是四川省车辆,因此无法收集齐代表不同省份的车牌汉字字符图像。基于这样的原因本文只提出了识别字母和数字字符的CNN模型。考虑到车牌汉字字符不多,作者提出以下完整车牌字符识别流程:
步骤1 获得分割好的车牌字符;
步骤2 利用本文提出的卷积神经网络(称作A网络)训练并识别字母和数字字符;
步骤3 构建新的卷积神经网络(称作B网络)训练并识别车牌汉字字符;
步骤4 得最终识别结果。
汉字字符是车牌的第一个字符,因此在对一张车牌进行识别时,将车牌的第一个字符交给B网络识别,其余字符交给A网络识别。
4 结语本文在充分分析车牌字符特征的基础上,针对字母和数字字符提出了一种基于CNN的车牌字符识别方法。实验表明,此方法对字母和数字字符的正确识别率高,识别时间短。由于目前缺乏汉字字符图像,因此无法验证本文提出的CNN模型是否适合汉字字符识别。今后将继续收集车牌汉字字符图像,研究车牌汉字字符的识别。
[1] | HUBEL D H, WIESEL T N. Receptive fields and functional architecture of monkey striate cortex[J]. Journal of Physiology, 1968, 195(1): 215-243. DOI:10.1113/jphysiol.1968.sp008455 |
[2] | FUKUSHIMA K. Neocognitron:a self-organizing neural network model for a mechanism of pattern recognition unaffected by shift in position[J]. Biological Cybernetics, 1980, 36(4): 193-202. DOI:10.1007/BF00344251 |
[3] | LECUN Y, BOTTOU L, BENGIO Y, et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998, 86(11): 2278-2324. DOI:10.1109/5.726791 |
[4] | GU J, WANG Z, KUEN J, et al. Recent advances in convolutional neural networks[EB/OL].[2017-01-01]. https://arxiv.org/pdf/1512.07108.pdf. |
[5] | KRIZHEVSKY A, SUTSKEVER I, HINTON G E. ImageNet classification with deep convolutional neural networks[C]//Proceedings of the 2012 International Conference on Neural Information Processing Systems. Lake Tahoe, Nevada. NIPS Foundation, 2012:1097-1105. |
[6] | ZEILER M D, FERGUS R. Visualizing and understanding convolutional networks[C]//Proceedings of the 2014 European Conference on Computer Vision. Berlin:Springer, 2014:818-833. |
[7] | SIMONYAN K, ZISSERMAN A. Very deep convolutional networks for large-scale image recognition[EB/OL]. (2015-04-10)[2016-12-10]. https://arxiv.org/abs/1409.1556. |
[8] | SZEGEDY C, LIU W, JIA Y, et al. Going deeper with convolutions[EB/OL]. (2014-07-17)[2016-12-10]. https://arxiv.org/abs/1409.4842. |
[9] | HE K, ZHANG X, REN S, et al. Deep residual learning for image recognition[EB/OL]. (2015-12-10)[2016-12-10]. https://arxiv.org/abs/1512.03385. |
[10] | GIRSHICK R, DONAHUE J, DARRELL T, et al. Rich feature hierarchies for accurate object detection and semantic segmentation[EB/OL]. (2014-10-22)[2016-12-10]. https://arxiv.org/abs/1311.2524. |
[11] | LI H, LI Y, PORIKLI F. DeepTrack:learning discriminative feature representations by convolutional neural networks for visual tracking[EB/OL].[2016-12-10]. http://www.bmva.org/bmvc/2014/files/paper028.pdf. |
[12] | GOODFELLOW I J, IBARZ J, ARNOUD S, et al. Multi-digit number recognition from street view imagery using deep convolutional neural networks[EB/OL]. (2014-04-14)[2016-12-10]. https://arxiv.org/abs/1312.6082. |
[13] | JI S, XU W, YANG M, et al. 3D convolutional neural networks for human action recognition[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2013, 35(1): 221-31. |
[14] | 罗辉武, 唐远炎, 王翊, 等. 基于结构特征和灰度特征的车牌字符识别方法[J]. 计算机科学, 2011, 38(11): 267-270. (LUO H W, TANG Y Y, WANG Y, et al. License plate character recognition based on structural features and grayscale pixel features algorithm[J]. Computer Science, 2011, 38(11): 267-270. DOI:10.3969/j.issn.1002-137X.2011.11.062) |
[15] | 魏武, 黄心汉, 张起森, 等. 基于模板匹配和神经网络的车牌字符识别方法[J]. 模式识别与人工智能, 2001, 12(1): 123-127. (WEI W, HUANG X H, ZHANG Q S, et al. A method of recognizing characters in vehicle license-plates using pattern match and neural networks[J]. Pattern Recognition and Artificial Intelligence, 2001, 12(1): 123-127.) |
[16] |
朱宏吉. 基于深度信念网络的车牌字符识别算法研究与实现[D]. 杭州: 浙江大学, 2015: 1-77. ZHU H J. Deep belief nets based LPR algorithm research and development[D]. Hangzhou:Zhejiang University, 2015:1-77. |
[17] | 赵志宏, 杨绍普, 马增强. 基于卷积神经网络LeNet-5的车牌字符识别研究[J]. 系统仿真学报, 2010, 22(3): 638-641. (ZHAO Z H, YANG S P, MA Z Q. License plate character recognition based on convolutional neural network LeNet-5[J]. Journal of System Simulation, 2010, 22(3): 638-641.) |
[18] | 李珊珊, 李一民, 郭真真. 基于神经网络的分阶车牌字符识别算法研究[J]. 工业仪表与自动化装置, 2016, 46(2): 7-10. (LI S S, LI Y M, GUO Z Z. Research on the algorithm of license plate character recognition based on neural network[J]. Industrial Instrumentation and Automation, 2016, 46(2): 7-10.) |
[19] | LI H, QI F, WANG S. A comparison of model selection methods for multi-class support vector machines[C]//Proceedings of the 2005 International Conference on Computational Science and Its Applications. Berlin:Springer, 2005:1140-1148. |
[20] | HINTON G E. Deep belief networks[J]. Scholarpedia, 2009, 4(5): 5947. DOI:10.4249/scholarpedia.5947 |
[21] | RUMELHART D E, HINTON G E, WILLIAMS R J. Learning representations by back-propagating errors[J]. Nature, 2010, 323(6088): 533-536. |