基于卷积神经网络的中国车牌自动识别方法设计与实现毕业论文.docx
《基于卷积神经网络的中国车牌自动识别方法设计与实现毕业论文.docx》由会员分享,可在线阅读,更多相关《基于卷积神经网络的中国车牌自动识别方法设计与实现毕业论文.docx(28页珍藏版)》请在冰豆网上搜索。
基于卷积神经网络的中国车牌自动识别方法设计与实现毕业论文
摘要
本论文主要是基于卷积神经网络的中国车牌自动识别算法的设计与实现。
构建卷积神经网络来进行识别是一种稳定可靠的方法,能够有很高的识别精准度,因此得到了较为广泛的应用。
本论文用边缘检测的定位方法大致定位出车辆车牌的位置,再用蓝点扫描截取图像的方式定位出车牌,然后将车牌的固定位置分割,截取出车牌中的七个字符,最后将七个字符输入到训练好的卷积神经网络当中进行识别。
本论文按照这样的方法,用了三个章节分别表达了定位、分割以及识别。
在测试过程中,定位算法测试的100张车牌均能准确定位,识别算法在50张车牌测试中,350个字符能够准确识别302个字符。
最后,本论文做出了一些总结和期望。
关键词:
中国车牌识别,卷积神经网络,图像定位与分割
Abstract
ThisthesisisdesignedandachievedbasedonconvolutionalneuralnetworkinChina'slicenseplaterecognitionalgorithm.Convolutionalneuralnetworkforidentificationhasbeenwidelyappliedowingtoitsstable,reliableandhighrecognitionaccuracy.
Inthisthesis,thelocationofvehiclelicenseplateisroughlylocatedusingthelocationmethodofedgedetectionfirstly.Secondly,thelicenseplateislocatedbyinterceptingtheimageusingbluepointscanning.Thirdly,thefixedpositionofthelicenseplateissegmentedandsevencharactersinthelicenseplateareintercepted.Finally,thesevencharactersareinputintothetrainedvolumeneuralnetworktorecognize.
Accordingtothismethod,thisstudyusesthreechapterstodemonstratelocation,segmentationandrecognition,respectively.Intheprocessoftesting,the100licenseplatesinthelocationalgorithmcanbeaccuratelylocated.In50licenseplatetestsoftherecognitionalgorithm,350characterscanidentify302charactersaccurately.Attheendofthispaper,wemakeasummaryandprospect.
Keywords:
Chineselicenseplaterecognition,Convolutionalneuralnetwork,Imagepositioningandsegmentation
第一章绪论
1.1研究意义
伴随中国经济的飞速发展,人民的生活水平日益提高。
现如今的城市机动车数量已经是一个非常庞大的数字,并且仍然在高速上涨。
这样的情况也给城市机动车管理增加了不小的压力。
不管是小区停车场还是车辆违章监控,其中所需要的处理事件规模已经远远大于人力负荷,所以,车辆智能管理系统的研究发展势在必行。
车辆牌照作为每个车辆独一无二的“身份证”,随着模式识别技术的发展,车牌字符识别已成为智能交通系统的重要组成部分,它可以从复杂的背景中准确地提取、识别汽车牌照、车辆类型等信息,在交通控制和监视中占有很重要的地位,具有广泛的应用前景【1】。
本论文在车牌识别部分主要应用了卷积神经网络来进行字符识别,卷积神经网络领域目前已经取得了许多令人瞩目的研究成果,其研究意义主要体现在三个方面:
理论研究挑战、特征表达研究、应用价值【2】。
在本论文中,意义主要体现在这三者中的应用价值,将卷积神经网络应用于车牌识别系统能够为社会带来管理上的便利。
1.2国内外研究现状
1.2.1卷积神经网络研究现状
卷积神经网络作为一种深度学领域,如:
行人检测、行为识别、人体姿势识别等。
近期,卷积神经网络的应用进一步向更深层次的人工智能发展,如:
自然语言处理、语音识别等。
最近,由Google开发的人工智能围棋程序Alphago成功利用了卷积神经网络分析围棋盘面信息,并且在挑战赛中接连战胜了围棋欧洲冠军和世界冠军,引起了广泛的关注。
从当前的研究趋势来看,卷积神经网络的应用前景充满了可能性【2】。
1.2.2定位算法研究现状
车牌定位算法是车辆智能管理系统的热门研究课题。
早在20世纪90年代,国外就开始了对定位算法的深入研究。
考虑到车牌的形状一般为矩形且宽高比值已知,车牌定位问题可以被转化为用边缘检测算法寻找图像中可能的矩形【3】。
由于一些国家对车牌的颜色有所规定,一些发表的工作是通过处理颜色来定位车牌的,如ERLee等人将图像从RGB空间转化到HLS空间,用神经网络输出每个像素值的颜色,利用车牌的宽高比和颜色密度来确定车牌区域【3】。
我国智能化车辆管理系统起步比较晚,但发展得很快。
上海交通大学的郭捷等提出了一种基于颜色和纹理分析相结合的车牌定位算法。
用该算法对60张不同复杂背景的彩色车牌照片进行定位实验,成功率达到95%以上【4】。
1.2.3识别算法研究现状
车牌识别一般分为基于灰度图像识别方法和基于彩色图像识别方法这两类方法。
基于灰度图像的车牌识别方法是将采集到的彩色图形进行灰度处理,然后再进行车牌定位、字符分割和字符识别等步骤;基于彩色图像的车牌识别方法是利用采集得到的彩色图像直接进行车牌定位、字符分割和字符识别等【5】。
我们国家车牌的识别因为有汉字的关系,所以不能直接使用国外的车牌识别方法。
同时因为汉字较为复杂、车牌的颜色和样式都有很多种,给很多应用于国外的识别技术增添了障碍,需要我们国家自主研发。
查阅了很多的国内车牌识别文献,其中已经有了很多成熟高效的方法。
曾泉使用BP神经网络的方法选取了260张不同环境下的车牌来进行字符识别,结果表明在结果整体识别率上到达了95.2%【6】;陈玮,曹志广等人使用模块匹配的方法,同时又在基于欧拉数的模板匹配上做了一定程度上的改进,让识别准确率到达了96.67%,并且识别时间只有0.559s【7】;彭清,季桂树等人用CNN提取隐层特征后,进行SVM分类,将800个测试样本进行识别,其准确率达到了97.00%【8】。
1.3研究内容和结构安排
本论文在整个程序的设计编写上分为三个章节,一般来说,车牌的识别与一般的图像识别还是有较大的区别。
车牌的形状方正,易于检测定位,但又因为拍摄角度的不同,所定位的车牌又会有扭曲变化的难度。
所以我将车牌识别分为了三步,也就是车牌的定位、定位后车牌当中的字符块的分割以及当字符块分割后作为独立个体的字符块识别。
本论文第二章会用边缘检测后,再用蓝点扫描记录横纵坐标定位车牌位置;第三章会用固定位置分割截取车牌内的七个字符,同时进行归一化处理;第四章会基于卷积神经网络构建识别模块,其中涉及网络的构建、参数的选择以及最后车牌识别的结果统计。
1.4人工神经网络
1.4.1人工神经网络简介
1943年,美国的心理学家W.S.McCulloch和数学家W.A.Pitts在论文《神经活动中所蕴含思想的逻辑活动》中,提出了一个非常简单的神经元模型,即M-P模型。
该模型将神经元当作一个功能逻辑器件来对待,从而开创了神经网络模型的理论研究【9】。
以比较形象的角度上看,其原理就像现实中生物身体内的一个神经系统--通过建立无数个神经元,再通过神经互相进行感知交流传递“信息”,其中就包括了传递信息和反馈调整两个方面。
不同的神经元,不同的连接方式构成了许多用途多样的网络。
在工程和学术界,将其定义为人工神经网络或者类神经网络。
图1.1人工神经网络
(1.1)
(1.2)
如图1.1所示,其中x代表各个输入量;w为各个神经元的权值;f为传输(传递)函数;t为输出。
通过公式(1.1),(1.2)可知,单个输入神经元的作用是在求出输入向量,然后经过权值向量的内积计算之后,通过传递函数得到一个标量输出t。
1.5卷积神经网络
卷积神经网络【2】是近年来发展起来的,一种高效准确的识别方法。
卷积神经网络是深度学习的其中一个分支,他作为一种深度前馈的人工神经网络,已经得到了广泛的应用。
在20世纪60年代,Hubel和Wiesel在研究动物脑皮层的部分神经元时发现了其独特的网络连接结构,并且这样的结构可以很大程度的降低网络反馈的多样复杂性,从而他们提出了卷积神经网络的概念。
在现如今的识别系统中,卷积神经网络凭借其出色的高效识别功能,已经得到了广泛的认可。
目前,很多的国内外学者都致力于研究卷积神经网络的参数优化,比方说激活函数、卷积核等等。
图1.2卷积神经网络结构图
在卷积神经网络中,如图1.2所示,我们一般将其分为输入层、卷积层、池化层、全连接层以及输出层。
与BP网络不同的是,在卷积神经网络当中最主要的是特征提取层,即由卷积层和他的子采样层构成了一个特征提取器。
也就是说,在卷积神经网络的卷积层中,通常情况下一个神经元只与部分神经元连接,这样就避免了类似BP网络每一层都是全连接,大大的降低了训练的难度。
1.5.1卷积神经网络的优点
卷积神经网络的与其他网络比较起来,它的每个神经元因为有卷积池化层的构建,所以有着很独特的优越性,即权值的共享大大减少了神经网络需要训练的参数个数,很大程度上降低了训练的难度以及网络的复杂性;网络结构也与图像结构更加搭配,在图像的特征提取和图像识别上有着不错的效果。
1.6车牌识别系统
伴随着经济的发展,中国的车辆数量在近几十年来已经上涨到了一个非常庞大的数量,面对这样的情况,政府相关部门已经对车辆的管理采取了很多方法,非常重视这一问题。
在经历了上个世纪末的起步阶段之后,车牌识别技术已日趋走向成熟,并开始在交通、公安、路政、停车场、安防、门禁、智能小区等许多领域得到了广泛的应用。
车牌识别系统简单地说是一种以特定目标为对象的专用视觉系统
,它能够从一幅图像中提取分割并识别出车辆牌照,运用先进的图像处理、模式识别和人工智能技术,通过对图像的采集和处理完成车辆牌照的自动识别,识别结果可按需求分别包括车牌的字符、数字、牌照图像,以至牌照颜色、坐标、字体颜色等【1】。
一般地,生活当中的车牌常见的有小型汽车号牌蓝底白字和大型汽车牌号黄底黑字。
本论文主要研究的是小型汽车号牌,查阅相关文献后得知,小型汽车是蓝底白字,大小为
的车牌【10】。
第二章定位算法
2.1车牌的采集和预处理
一般来说,中国车牌的字符颜色与背景颜色搭配有:
白底红字、黄底黑字、蓝底白字等等。
本文主要研究的是对于生活中最常见的小型汽车牌照,也就是蓝底白字的车牌。
因为车牌的色彩特征与其背景的色彩特征有很大的差别,所以当我们使用不同的色彩通道,就能够让我们的牌照和其他的背景区分出来。
对本文研究的蓝底车牌来说,当我们使用蓝色的B通道时,牌照的区域就是一个亮矩形。
就个人经验来说,虽然颜色扫描区分能够简单方便的得到一个较为准确的车牌图像,但是我们在拍摄车辆的时候会发现——图像当中会有很多蓝色或者相近颜色的“噪声”干扰我们的扫描定位,甚至当车辆本身是蓝色或者相近颜色的时候,这个扫描颜色的程序就会出现重大失败。
通过观察与分析,我将定位的方法设计为:
预先的对图像进行处理和筛选去噪,将车牌的位置先大致作出划分,之后再进行我们的色彩特征区分工作。
图2-1车牌定位结构图
我们采集到的图片是一个包括车牌的车辆前端或者车辆尾部的彩色照片,在预处理中,首先是将整个彩色图片灰度化。
将彩色图片灰度化,我用到了以下的几个公式:
(2.1)
(2.2)
将公式(2.1)、(2.2)带入程序中,并用MATLAB的figure函数将图片展示出来:
图2.2采集的车牌彩色原图
图2.3彩色原图灰度化
图2.4灰度图灰度直方图
2.2车牌特征以及位置选定
2.2.1Roberts算子边缘检测
在本文的预处理当中,以及将原图像转化为灰度图表示。
不同图像因为灰度的不同,这些图像的边界处一般就会有明显的边缘,然后我们可以利用这个特点来分割图像。
在实际的图像处理的应用当中,我们有很多的算子来对图像进行边缘检测。
在本文的应用中,我选择了Roberts算子。
Roberts边缘检测算子是一种利用局部差分算子寻找边缘的算子,Robert算子图像处理后结果边缘不是很平滑。
经分析,由于Robert算子通常会在图像边缘附近的区域内产生较宽的响应,故采用上述算子检测的边缘图像常需做细化处理[11]。
表2.1Roberts交叉算子模板
Roberts交叉算子模板
1
0
0
1
0
-1
-1
0
(2.3)
(2.4)
(2.5)
(2.6)
设图像
的梯度幅度为公式(2.3),然后根据Robert交叉算子模板去计算,可以得到运算结果(2.4)、(2.5)以及(2.6)。
当最后(2.6)的结果大于某一个阈值时,那我们就可以判定
即为边缘点。
选择Roberts算子在于其计算简单高效,因为我所应用的方面在于车牌检测,车牌的形状方正,而Roberts算子在检测垂直边缘时效果较好,定位精确度高。
图2.5Roberts算子边缘检测
图2.5是我用MATLAB对车牌灰度化图像进行边缘检测的结果,从结果可以看出,能够显示车辆轮廓以及能够检测出车牌位置,但同时其中也有一些场景的噪声轮廓边缘。
接下来将进行去噪处理来定位出车牌位置。
2.2.2定位车牌大致位置
2.2.2.1图像腐蚀
在边缘检测后,我对图像2.5进行分析,图像当中有很多干扰信息。
所以我对图像做了腐蚀处理。
腐蚀主要用于形态学中除去图像的某些部分。
腐蚀的本质就是用结构算子覆盖的所有像素点的最小值代替中心位置的像素值【12】。
图2.6腐蚀处理后的图像
腐蚀处理的作用【13】有三:
1.边缘检测,将形态骨架进行提取;
2.对原图像进行了滤波,出去了一部分的噪声;
3.从图2.6中我们可以观察到,除了车牌和车标之外,其余部分的车辆轮廓已经变得很微小,为接下来的筛选工作做了一些准备。
2.2.2.2图像平滑
图像平滑的主要目的是减少图像噪声【14】。
图像在采集的过程中,可能会出现在某些地方亮度过大,而在另外一处地方亮度又过小的情况,这种明暗变化较大的区域,会出现一些亮点,也就是噪声。
而为了抑制或过滤这样的噪声,让图像的亮度变化变得比较平稳,这种方法就是图像平滑。
图2.7平滑处理后的图像
实际上,对图像作平滑处理,相当于是用一个低通滤波器过滤了图像,虽然能抑制一部分的噪声,但会对图像的边缘造成模糊化。
不同的平滑算法适应于特定类型的噪声模型,实际应用中应该根据实际图像中包含的噪声情况灵活地选取适当的平滑算法【15】。
在本文的应用中,考虑了边缘模糊化这一点,在之后的扫描处理中,会让模糊化变成一种优点,让车牌图像信息不丢失。
2.2.2.3图像去除较小对象
通过对图2.7的分析观察,我们可以清楚的看到,在图像当中的信息已经只剩下车牌、车标以及一些较小的干扰噪声。
对比图像信息的大小,我们可以得出当前图像中车牌所占的比例是最大的。
当我们对图像当中的白点面积进行判定,当其面积大于某一个阈值的时候,我们就可以将其视作车牌。
图2.8图像去除较小对象流程图
在MATLAB中,利用函数
可以实现去除图像当中的较小对象,其中的面积2000像素是我选定的一个参考值,可以根据自己所应用的环境条件来进行调整。
图2.9图像经过去除较小对象处理后得到的车牌图像
经过去除较小对象处理后,得到图2.9。
从中我们已经能够得到车牌的一个大致位置信息。
因为在之前的边缘检测、腐蚀以及平滑处理当中,信息会有一定的缺失和模糊,所以在图2.9当中所显示的车牌并不能够精确的代表车牌的真实位置。
2.2.3精确定位车牌
在本文章节2.1当中本论文就论述了扫描蓝色车牌的基本思路,但在实际的操作当中,现实场景会有蓝色的噪声干扰以及车辆本身就有可能会是蓝色的,直接对图像进行蓝点扫描的话,会有很多的错误率,更不适合实际应用。
所以我对图像做了很多的处理,以此来分析出车牌的大致位置,缩小图像的扫描范围。
用这样的办法,我们就可以在车牌大致的范围当中,进行蓝点扫描,精确的定位车牌位置,同时大幅度地降低错误概率。
图2.10蓝点扫描定位车牌
通过分别对车牌x轴和y轴的确定,以此来确定车牌的准确位置。
在实际操作中,考虑到会有一些误差,所以对扫描的结果做出了一些校正,即分别对扫描出的x轴和y轴的数值做出加减2到6的调整,以此来减少实际遇到的误差。
图2.11定位后截取的彩色车牌图片
通过对坐标的确定和一定调整,将所得到的坐标带入到原图像当中,即可得到车牌的信息。
在用来测试的100张车牌图片中,所有图片均能够准确定位。
第三章分割算法
3.1预处理
在分割这一步当中,很大程度上是在为之后的识别模块在做准备工作。
在第二章的定位算法当中,本论文通过的是蓝点扫描来进行定位截取车牌图片,也即最后获取的是一张彩色的,易于人眼观察的车牌图片。
但对于计算机识别来说,我只需要获取字符的轮廓来进行识别就行,彩色会增加我们的误差。
所以,我在分割这一步中,先对车牌做了二值化处理。
图3.1车牌二值化图片
如图3.1所示,这是将图2.11的原车牌图像进行了二值化处理。
从两幅图的对比中,我们不难看出,二值化后的车牌信息变得更加明显,凸显了每一个字符块的轮廓,同时也简化了我们车牌所表达的矩阵信息,即其中只含有1和0的表达。
3.2固定分割
一般地,对车牌的分割有很多种算法,比方说垂直投影法、模块匹配法等等。
每种方法都很实用,有其各自的优点。
但对于本论文来说,获取的图片信息清晰且位置明确,所以没有用到这些分割方法。
本论文根据定位到的车牌信息,采用的是固定分割的办法来对每个字符进行分割。
图3.2车牌字符分割
如图3.2所示,这是对图3.1二值化后的车牌进行固定分割的结果。
其中不难看出,如果我们获取的车牌有一定的扭曲变形,那对分割这一步的影响是非常大的。
所以在应用到实际生活时,需要根据面对的环境条件作出算法调整。
在本论文中,获取的车牌无扭曲变形,所以用固定位置分割能快速有效的得出所需要的字符块。
3.3字符归一化
在本论文第二章节的研究中,在对车牌的处理中,都是对输入的车牌图片进行直接处理。
在2.2.3小节中,对于每一个车牌图片来说,其最后扫描出的车牌其实也是有所区别的,即并不是统一标准的矩阵表达。
本论文将分割这一部分也视作是对车牌识别之前所做的预处理工作。
定位和分割并不需要很严格的统一标准,但识别不同,它需要严谨的图像表达才能提升图像识别的精准度。
所以在分割环节的末尾,本论文将每一个分割出的字符块都统一归一化为
的标准图形。
第四章基于卷积神经网络的车牌识别算法
4.1卷积神经网络
4.1.1卷积神经网络的前向传播
图4.1卷积神经网络
如图4.1所示,这是一个简单的卷积神经网络示意图。
其中的
、
代表卷积层,
、
代表池化层。
卷积层和池化层的一般含义在本论文第一章1.2节卷积神经网络简介中有定义表达,这里就不再继续赘述。
在卷积层当中,输入的图像表达为一个二维矩阵,经过一个可训练的大小可定义的矩阵来对输入矩阵进行卷积计算。
一般地,我们会在卷积计算过程中加入一个偏置量
。
这样就得到了我们的卷积层。
不过在
当中的输入是原图像矩阵,而在之后的卷积层
的输入是经过池化的特征映射图矩阵【16】。
在池化层当中,卷积层的图像将输入池化层。
在卷积神经网络当中,池化层的处理方式有很多种,一般地思路是通过
大小的池化矩阵将输入矩阵的值做池化处理,将对应的4个像素通过池化矩阵进行加权,再加入一个偏置量
,然后将4个像素化为一个像素的值放入激活函数
计算得到池化层
和
。
在本论文中,用到的常用的最大池化,即输出一个最大的像素。
在全连接层当中,按照一般人工神经网络当中的思路去计算,参照第一章公式(1.1)、(1.2)计算得出。
4.1.2卷积神经网络的反向传播
在训练卷积神经网络时,反向传播是一个很关键的步骤,很多参数的调整更新都是在反向传播当中实现。
图4.2神经网络训练
如图4.2所示,这是一个卷积神经网络的基本流程。
在本论文4.1.1小节中讲述了前向传播的一些简单流程,当神经网络在训练的时候,我们会对输出的参数进行判别,在根据其误差进行反向传播,调整各层的各个参数。
不断的迭代最后达到一个比较理想的效果。
4.2网络训练与测试
4.2.1网络结构
图4.3卷积池化层
本论文在网络构建时,如图4.3所示,在输入层之后,分别加了两层卷积层和池化层,卷积层在先,池化层在后,分别用
、
和
、
表示。
其中
、
皆为
大小的卷积核,
设了两个输出通道,
设了四个输出通道。
图4.4全连接层和输出层
在图4.3的基础上,网络将输入的车牌进行特征提取之后,设立三个全连接层,输出层也包括在其中,分别用
、
、
表示。
其中
设了120个输出节点,
设了85个输出节点,
输出层设了45个输出节点,也即将训练数据分为了45类。
4.2.2网络参数调整
4.2.2.1迭代次数、学习率调整
在设定网络参数时,首先将学习率调整为1,惯性系数设定为0.5,同时因为要观察误差与迭代次数之间的大致关系,所以将迭代周期设定为比较大的值300方便观察。
图4.5迭代次数和均方误差关系
如图4.5所示,其中x轴net.epochs代表的是迭代次数,y轴net.err代表的是均方误差。
比对后发现:
误差越低越好,且随着迭代次数的增大,误差会越来越快的减小。
其中在迭代次数到100次左右时,均方误差已经是小于0.1了。
图4.6学习率为0.5时的均方误差变化
图4.7学习率为1时的均方误差变化
图4.6和图4.7是在其他参数不变,调整了学习率后的对比。
我将迭代次数设为150,当完成训练时,学习率为0.5的网络错误率为7.63%。
学习率为1的网络错误率为5.58%。
在均方差相差不大时,学习率的变化对错误率还是会起到一定的影响。
经过对比后,本论文将学习率设置为1、迭代次数设置为300,这样可以大大加快均方误差的收敛,同时也能降低我们的错误率。
但在比对参数影响时,本论文会将迭代次数设置为150加快训练速度,方便比对。
4.2.2.2网络结构调整
图4.8将全连接层F2输出通道由85减少到60
如图4.8所示,这是在其他参数不变的情况下,将
的输出通道由85减少到60时的均方误差变化,其