陈 利
(1.西北大学 信息科学与技术学院,陕西 西安 710127;2.铜川职业技术学院 基础部,陕西 铜川 727031)
当今中国经济已进入高速发展的阶段,人民生活水平不断提高,私家车的数量与日俱增,随着机动车数量的增加,一系列社会问题也随之而来,如交通堵塞、交通事故频发、环境污染加剧等。这些问题尤其是交通问题的根治仅仅依靠大规模的道路建设是不够的,智能交通系统(intelligent traffic system,ITS)是解决交通问题的一个重要手段,而车辆牌照识别(license plate recognition,LPR)技术在其中起着至关重要的作用。车辆牌照识别系统能够对获得的车辆图像信息进行分析,识别出车辆牌照的位置,并进一步识别出车牌号码。虽然在高清静止的场景中车牌识别技术已经较为成熟,但在雾霾天、夜晚和视角不正等更广义的场景中,车牌识别问题依然面临挑战,尤其在未来无人车、无人交通中,车牌识别技术更有着非常大的提高空间。
深度学习的发展对计算机视觉和图像处理领域带来了巨大的变化,其在图像物体检测和分类问题中比其他算法具有明显的优势,因此文中基于深度学习进行车牌识别的研究。
深度学习[1-2]的概念源于人工神经网络的研究。人工神经网络的网络层次较浅,一般有一至两层的隐藏层,由于神经网络样本个数和计算单元个数有限,因此处理复杂问题时其泛化能力受到限制。而深度学习网络模型至少有五层以上的隐藏层,可通过学习一种深层的非线性网络结构,把人工神经网络得到的底层特征更进一步地抽象成更加抽象的高层表示属性类别或特征,并用其强大的从少数样本集中学习数据集本质特征的能力,实现对复杂函数的逼近,以发现数据的分布式特征表示。
卷积神经网络[3-5](convolution neural network,CNN)是人工神经网络的一种,它的人工神经元可以响应一部分覆盖范围内的周围单元,在大量图像处理中表现出色。卷积神经网络中较为重要的层次为卷积层、Pooling层、归一化层、损失函数层、激活函数层以及全连层。其中卷积层的表达式为:
(1)
其中,Wi,j为卷积核的第i行第j列的权值;Xr+i,c+j为卷积层输入的第r+i行、第c+j列个元素;b为偏差;fr,c为卷积层第r行、第c列个元素。
Pooling层(Max-Pooling)的计算表达式为:
(2)
其中,Xr+i,c+j表示Pooling层输入的第r+i行、第c+j列个元素;fr,c表示Pooling层输出的第r行、第c列个元素。
Pooling层的作用是从附近多个激活的元素中选择最大的元素,以去除附近其他噪声,同时Pooling可以有效缩减模型规模,将图片的长宽一次次缩小,减少神经网络的计算量。基于深度学习的目标检测方法有R-CNN[6]、Fast R-CNN[7]、Faster R-CNN[8]、Single Shot Multi Box Detector[9](SSD)等。
车牌定位是车牌识别系统的关键环节,提升整个系统的识别率的关键点就是准确地获取车牌区域。车牌定位算法有很多,如边缘检测法[10-11]、纹理特征法[12]、小波变换法[13]和遗传算法[14]等。传统的边缘检测算法检测到的边缘信息存在大量的干扰信息,当光照条件不同时,传统的边缘检测算法很多情况下不能实现车牌定位;纹理特征法对于牌照倾斜以及光照不匀的情况,定位效果较好,但对于噪声大、背景复杂的图像则不能实现较好的定位;小波变换法能很好地解决含有噪声的车牌图像的定位问题,缺点是速度比较慢,并且在噪声比较大时误判率较高;遗传算法在图像质量较差时对目标区域有很好的增强效果,但是在实时系统中,遗传算法中的迭代次数会对车牌定位的速度造成很大的影响,导致运算速度慢,效率不高。由于灰度图像信息较少,计算量相对彩色图像较小,处理时间较短,因此文中使用基于灰度图的目标检测方法来定位车牌。
要准确地识别出车牌上的字符,就要先将定位好的车牌上的字符逐个分割出来,拆分成一个个字符。因此字符分割的是否合理,会直接影响字符的正确识别。文中采用的方法是垂直投影法,其中心思想是综合利用车牌上字符本身具有的诸多特点,把二值化后的车牌字符形成的图像进行垂直方向上的投影,由于车牌上字符不仅对应区域中存在比较多的黑色像素点,而且车牌上每个字符间存在一定的间隔。因此,投影过后就会得到多个相对集中的投影峰值群,再根据得到的这个投影峰值本身的特点,将其分割,最终得到车牌的字符。
(1)模板匹配。
模板匹配的重点就是提取与选择特征值,国内车牌字符是按照一定的顺序依次排布的,第1个字符是汉字,通常是省份简写,第2个字符是大写英文字母,最后5个字符则是阿拉伯数字0到9以及除“O”以外的英文字母的组合。针对这一特征,模板库分成3个模板子库,即数字字库、汉字字库以及英文字母字库。因为角度以及拍摄扭曲程度的原因,同样的字符归一化后所得到的图像会出现多种笔画位置和形状。在识别字符时,如果使用单一模板,会因为部分扭曲字符和标准模板不能准确匹配,影响最后的识别。因此需要为每一个字符配备多个标准模板,这些模板能够最大程度适应常见的变形。尽管选用多个模板能够照顾到更多的情况,但同时也将算法复杂化,因此适当的模板数量以及挑选适合的模板会对最后的识别速度以及识别率产生重要的影响。计算模板匹配度的算法较多,通常采用式3:
(3)
其中,f为模板二值图像,g为对应的车牌二值图像,两幅图像的大小一致,均为M×N;Tf和Tg分别为对应二值图像中值为1的像素个数;∧为与运算。
(2)特征统计优化识别。
多模板匹配比单一模板识别率高,但是依然会出现不少的错误识别,错误一般集中在B和8、L和1、C和6、Z和7以及O和Q等形状相似的字符的识别上。针对这种情况,需要进一步分析这些字符的特征,然后进行识别,该算法主要是为经常出错的字符而设计的。字母B和数字8的区别主要是在左半部分,可以通过只匹配左半部分来放大这种局部差别以实现识别。针对这些易出现识别错误的字符,专门建立一个局部模板库,这个模板库以相似字符为一组建立。例如,Q跟O以右下方为特征,B跟8以左半边为特征建立标准模板库。算法的计算过程如下:
Step1:假如第一次识别的结果是某一个相似的字符,那么进行Step2,如果不是就进行Step5。
Step2:以第一次识别的结果为依据,确定属于哪个局部模板库。
Step3:依据选择的模板库,选择相同的位置,然后依据式3进行计算。
Step4:选用匹配度最高的值作为最后的识别结果。
Step5:输出结果。
(3)基于Hausdorff距离的多模板匹配。
与单一模板匹配比较,多模板匹配算法将车牌字符因扭曲、旋转产生的变形问题也一并考虑,通过为每一个字符添加多个模板来增强识别算法的健壮性,但是增加少量的模板仍然不能顾及所有情况,不能满足识别的需要,如果添加更多的模板,虽然能够提高算法识别率但同时也大大降低了运算速度。
Hausdorff[15]距离又称为最大最小距离,是一种表达两点集的相似度的一种量度,它是两集合之间距离的一种定义方式。Hausdorff距离定义为:H(A,B)=max(h(A,B),h(B,A)),即A到B和B到A两个有向距离的最大值。其中A和B分别表示两个集合,A={a1,a2,…,aM}和B={b1,b2,…,bN},h(A,B)表示集合A中某个任意的点到集合B的所有点的距离的最小值中的最大值,表示为:h(A,B)=max(min(|a-b|)),h(B,A)表示集合B中某个任意的点到集合A所有点的距离的最小值中的最大值,表示为h(B,A)=max(min(|b-a|))。因为存在噪声,这种选择最小值最大值的方式有可能使计算结果出现错误,抗干扰性弱。
采用上述技术,文中提出一种基于深度学习的车牌识别算法,步骤如下:
(1)车牌图像预处理。
通常在车牌识别中用到的图像是通过数码设备在户外拍摄得到的,因此受天气和光照等环境的影响较大,需要在特征提取和模式识别处理之前,将图像中隐含的无用干扰信息去除,并将原图中有用信息增强[16]。图像预处理主要是通过图像灰度化以及利用灰度拉伸、图像平滑等操作对采集到的图像进行处理,以便将干扰信息尽可能多地剔除,有利于后续定位。
算法通过加权平均值法对图像进行灰度化处理,利用中值滤波法平滑图像,如图1所示。
图1预处理过程
(2)基于深度学习的车牌定位。
由于车牌定位中,并不需要定位多个类别的物体,所以使用Faster R-CNN中的RPN(region proposal network)来生成候选框。图2为车牌定位的卷积神经网络模型,其中“conv”代表卷积层,“pool”代表polling层,“norm”代表归一化层,“fc”代表全连接层,“dropout”代表dropout层,“sum of square loss”即回归目标函数;“c96”代表96个通道,“k7”代表卷积核或者polling核为7×7个像素,“s2”代表步长为两个像素,“p1”代表图像周围用宽度为1的0值作为边框,“fc”中的参数为其输出个数,即输出了4096个元素。
图2 车牌定位卷积神经网络模型
(3)车牌字符分割。
算法使用垂直投影法进行车牌字符分割,根据车牌字符间具有间隔相等的特点,对二值图像(见图3)进行垂直投影,计算出字符的宽度及两个字符之间的间距,分别向前、后两个方向进行分割,定位出每个字符的左右边界,然后对每个分割出的字符进行水平投影,进而确定字符的上下边界。由于分割出的车牌字符尺寸大小不同,为进一步提高准确率,需要归一化处理待识别的字符,采用双线性插值法将字符的尺寸统一起来。
图4是归一化后的图像。
图3 二值化图像
图4 车牌字符分割图像
(4)车牌字符识别。
为降低噪声的干扰,可通过计算最小距离和,而不是计算所有点的最小距离的最大值,达到预期效果。如果只求模板点集B到字符点集A的距离h(B,A),因为仅仅计算字符到模板之间的有向距离就会有这种状况:假设一个模板点分布比较集中并且数量不多,导致模板图像与待识别图像之间的距离比较远,这样算法就认为这个模板跟大部分字符都匹配,导致结果不正确,但是反过来计算模板到字符之间的有向距离就能够有效地避免这个问题。
经过改进后的Hausdorff距离计算公式为:
H(B,A)=∑min(‖b-a‖)
(4)
用改进的Hausdorff距离为核心的多模板匹配方法运算步骤与前面介绍的多模板匹配方法基本一样。该算法仍然是给每一个字符设置五个标准模板,初次模板匹配能够将大部分字符分类,特征统计优化识别主要针对非常相似,易出现错误分类的字符,不同点就是利用式4计算Hausdorff距离匹配度。
采用文中设计的算法,在车牌定位模块中,使用开源框架Caffe下的RPN网络结构,其他模块则使用MATLAB进行编程,设计了相应测试平台,具体内容如图5所示。
采集了16217张车牌图片(见图6)作为数据源,数据大小为160×160。随机抽取这些图片的80%(12974)用于训练,20%(3243)用于测试,共循环10次,用交叉验证法得到车牌最终定位准确率(见表1)。
图5 车牌识别系统流程
图6 车牌定位效果图
算法准确定位错误定位准确率%边缘检测算法3 02222193.2纹理特征算法3 07117294.7文中算法3 1657897.6
表2是利用从原始数据集中随机选取的337张图片测试得到的各算法的识别率比较情况。图7为部分定位车牌识别图像。
表2 不同算法对随机选取车牌识别准确率对比
图7 车牌原图和车牌识别结果
由这些表格数据可知,文中算法比传统的模板匹配和神经网络算法具有更高的定位和识别准确率,能够达到准确识别的目的。
针对车牌识别存在的问题,通过对车牌定位、车牌字符分割和车牌字符识别技术进行研究,提出了一种基于深度学习的车牌识别原型系统方案。实验结果表明,设计的基于深度学习的算法的识别正确率优于模板匹配算法和神经网络算法,具有一定的可行性。
参考文献:
[1] KRIZHEVSKY A,SUTSKEVER I,HINTON G E.ImageNet classification with deep convolutional neural networks[J].Communications of the ACM,2017,60(6):84-90.
[2] ZE Heiga,SENIOR A,SCHUSTER M.Statistical parametric speech synthesis using deep neural networks[C]//International conference on acoustics speech and signal processing.Vancouver,BC,Canada:IEEE,2013:7962-7966.
[3] 余 凯,贾 磊,陈雨强,等.深度学习的昨天、今天和明天[J].计算机研究与发展,2013,50(9):1799-1804.
[4] YANN L,KAVUKCUOGLU K,FARABET C.Convolutional networks and applications in vision[C]//Proceedings of2010IEEE international symposium on circuits and systems.Paris,France:IEEE,2010:253-256.
[5] HE Kaiming,ZHANG Xiangyu,REN Shaoqing,et al.Spatial pyramid pooling in deep convolutional networks for visual recognition[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2015,37(9):1904-1906.
[6] GIRSHICK R,DONAHUE J,DARRELL T,et al.Rich feature hierarchies for accurate object detection and semantic segmentation[C]//Proceedings of the2014IEEE conference on computer vision and pattern recognition.Columbus,OH,USA:IEEE,2014:580-587.
[7] GIRSHICK R.Fast r-cnn[C]//Proceedings of the IEEE international conference on computer vision.Piscataway,NJ:IEEE,2015:1440-1448.
[8] REN Shaoqing,HE Kaiming,GIRSHICK R,et al.Faster r-cnn:towards real-time object detection with region proposal networks[J].IEEE Transactions on Pattern Analysis & Machine Intelligence,2017,39(6):1137-1149.
[9] LIU Wei,ANGUELOV D,ERHAN D,et al.SSD:single shot multibox detector[C]//European conference on computer vision.[s.l.]:Springer International Publishing,2016:21-37.
[10] CHEN Rongbao,LUO Yunfei.An improved license plate location method based on edge[J].Physics Procedia,2012,24:1350-1356.
[11] MOUSA A.Canny edge detection based vehicle plate recognition[J].International Journal of Signal Processing Image Processing & Pattern Recognition,2012,5(3):1-7.
[12] YU Shengfeng,XU Zhijiang,ZHANG Biaobiao,et al.A novel algorithm for license plate location based on the RGB features and the texture features[C]//Proceedings of the20125th international conference on biomedical engineering and informatics.Piscataway,NJ: IEEE,2012:156-159.
[13] WANG Y R,LIN W H,HORNG S J.A sliding window technique for efficient license plate localization based on discrete wavelet transform[J].Expert Systems with Applications,2011,38(4):3142-3146.
[14] SMARA G A,KHALEFAH F.Localization of license plate number using dynamic image processing techniques and genetic algorithms[J].IEEE Transactions on Evolutionary Computation,2014,18(2):244-257.
[15] HUTTENLOCHER D P, KLANDERMAN G A, RUCKL-IDGE W J.Comparing image using the Hausdorff distance[J].IEEE Transaction Patterns Analysis and Machine Intelligenee,1993,15(9):850-863.
[16] 史海玲,邱晓晖.运动模糊车辆图像复原方法研究[J].计算机技术与发展,2016,26(8):60-64.