CN109740603B - 基于cnn卷积神经网络下的车辆字符识别方法 - Google Patents
基于cnn卷积神经网络下的车辆字符识别方法 Download PDFInfo
- Publication number
- CN109740603B CN109740603B CN201910053899.6A CN201910053899A CN109740603B CN 109740603 B CN109740603 B CN 109740603B CN 201910053899 A CN201910053899 A CN 201910053899A CN 109740603 B CN109740603 B CN 109740603B
- Authority
- CN
- China
- Prior art keywords
- image
- information
- convolution
- size
- license plate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000013527 convolutional neural network Methods 0.000 title claims abstract description 71
- 238000000034 method Methods 0.000 title claims abstract description 65
- 230000007797 corrosion Effects 0.000 claims abstract description 10
- 238000005260 corrosion Methods 0.000 claims abstract description 10
- 230000009466 transformation Effects 0.000 claims abstract description 4
- 238000013528 artificial neural network Methods 0.000 claims description 46
- 230000008569 process Effects 0.000 claims description 46
- 239000011159 matrix material Substances 0.000 claims description 39
- 210000002569 neuron Anatomy 0.000 claims description 36
- 238000011176 pooling Methods 0.000 claims description 27
- 230000004913 activation Effects 0.000 claims description 21
- 238000012549 training Methods 0.000 claims description 19
- 238000012545 processing Methods 0.000 claims description 14
- 238000004364 calculation method Methods 0.000 claims description 13
- 230000008859 change Effects 0.000 claims description 12
- 238000012360 testing method Methods 0.000 claims description 12
- 238000013507 mapping Methods 0.000 claims description 6
- 230000003628 erosive effect Effects 0.000 claims description 5
- 230000011218 segmentation Effects 0.000 claims description 4
- 210000005036 nerve Anatomy 0.000 claims description 3
- 238000002360 preparation method Methods 0.000 claims description 2
- 238000001514 detection method Methods 0.000 abstract description 6
- 238000005516 engineering process Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000005530 etching Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000010339 dilation Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Landscapes
- Image Analysis (AREA)
Abstract
本发明提供了一种基于CNN卷积神经网络下的车辆字符识别方法,包括如下步骤:步骤S1、建立HAAR级联分类器,根据HAAR级联分类器来锁定车牌的位置,提取出车牌的图像;步骤S2、对车牌的图像进行灰度变换形成灰度图;步骤S3、对灰度图进行图像二值化操作;步骤S4、灰度图像二值化后进行图像腐蚀和图像膨胀操作得到最终图像;步骤S5、将最终图像通过图像最小轮廓发现找到车牌中字符的信息,将字符传入到建立好的CNN卷积神经网络中,对字符进行识别操作,最终得到车牌信息。本发明提升字符检测的效率,减小车牌识别的时间。
Description
技术领域
本发明涉及机器视觉和CNN卷积神经网络技术领域,特别是基于CNN卷积神经网络下的车辆字符识别方法。
背景技术
机器视觉下的车辆字符智能识别技术,有助于解决必须花费大量的劳动力在交通管理上的问题,解决交通所面临的越来越多车辆管理难题。该技术可以将它应用到高速公路、城区重要路口、小区门口、停车场等重要场合。因此,车辆字符智能识别技术成了交通管理的重要环节之一。
在传统的车牌字符识别的方案中,除了人工读取外,大部分都采用模板匹配和色彩空间匹配的方式来识别车牌的字符。但是模板匹配和色彩空间的准确率往往会收到环境变化的影响,如光线变化导致的像素值发生变化,车辆歪斜所导致的的字符扭曲等诸多因素都会造成模板匹配的结果不准确。而在采用了CNN神经网路后它的可适应性得到了很好的提升。
为此本车牌识别技术的最关键部分在CNN神经网络的搭建。为了解决传统模板匹配方法得不足,在CNN神经网络的初始阶段最重要的一步就是数据集的收集。在训练神经网络的数据集中应包含大量的样本图片,其中包括不同大小、不同角度、不同像素值的样本。这样建立起来的神经网络它的可适应能力较强。
在神经网络中一次性可预测的多个待检测图像,它可以大大的提升字符检测的效率,减小车牌识别的时间。
发明内容
为克服上述问题,本发明的目的是提供一种基于CNN卷积神经网络下的车辆字符识别方法,解决传统的传统车牌识别检测场景的单一性问题,神经网络的应用大大提升了在不同环境下的适应性,提升字符检测的效率。
本发明采用以下方案实现:一种基于CNN卷积神经网络下的车辆字符识别方法,包括如下步骤:
步骤S1、建立HAAR级联分类器,根据HAAR级联分类器来锁定车牌的位置,提取出车牌的图像;
步骤S2、对车牌的图像进行灰度变换形成灰度图;
步骤S3、对灰度图进行图像二值化操作;
步骤S4、灰度图像二值化后进行图像腐蚀和图像膨胀操作得到最终图像;
步骤S5、将最终图像通过图像最小轮廓发现找到车牌中字符的信息,将字符传入到建立好的CNN卷积神经网络中,对字符进行识别操作,最终得到车牌信息。
进一步的,所述步骤S2具体为:创建一同车牌的图像一样尺寸大小的黑色图像,通过循环遍历车牌的图像的每个像素点,在遍历过程中,将三个通道R、G、B的像素值通过运算公式计算出灰度值,所述运算公式为:Gray(i,j)=0.299*R(i,j)+0.587*G(i,j)+0.144*B(i,j),图像的每个像素点的位置用(i,j)表示;将计算出的灰度值赋值给黑色图像相应行列的位置形成灰度图。
进一步的,所述步骤S3具体为:通过循环依次遍历灰度图的像素值,比较所在位置的像素值与一设定阈值的大小来进行分割操作,如果该像素点的像素值大于等于阈值,则把该像素点的像素值重新赋值为255,相反,如果该像素点的像素值小于阈值,则把该像素点的像素值重新赋值为0,从而进行图像二值化。
进一步的,所述图像腐蚀是去掉车牌的图像干扰信息,所述图像膨胀是对车牌的图像中字符的边缘做填充;所述图像腐蚀具体为:定义一个2x3的卷积核,让卷积核在进行图像二值化的灰度图中进行滑移操作,在滑移的过程中计算卷积核覆盖下的图像像素值最小值,将该区域内所有的图像像素值都赋值为0,滑移的过程中是按卷积核的尺寸在进行图像二值化的灰度图中进行移动,在列的方向滑动的次数为图像的列数col除以2,;在行的方向滑动的次数为图像的行数row除以3,在跨平台计算机视觉库opencv中用CONSTANT的方式填充边界信息;当卷积核遍历完所有次数以后,能够将除了字符以外的边界信息提取出来,所述图像膨胀具体为:定义一个2x2的卷积核,让卷积核在图像腐蚀处理后的图像中进行滑移操作,在滑移的过程中计算卷积核覆盖下的图像像素值的最大值,将该区域内所有的图像像素值都赋值为1,滑移的过程中按卷积核的尺寸在图像腐蚀处理后的图像进行移动,在列的反向滑动的次数col除以2;在行的方向滑动的次数row除以2,采用CONSTANT的方式填充边界信息,当卷积核遍历完所有的次数以后,就能够将图像中字符信息提取出来。
进一步的,所述步骤S5具体为:在跨平台计算机视觉库opencv下通过图像最小轮廓发现利用findcount函数将车牌的字符单独的寻找出来,建立CNN卷积神经网络进一步具体为:(1)训练数据集的收集:收集有关31个省份的字符数据集、0到9的数字数据集、以及包含A到Z的字母数据集;将收集的数据集的样本分为两份,一份是只含车牌省份的字符数据集,另一份是数字样本和字母样本数据集,分别用两个子文件夹保存这些图片,把只含车牌省份字符信息的文件夹里第一个省份到最后一个省份依次重命名为0到30;把另一个文件夹中的0到9和A到Z的数据集文件依次重命名为0到33;分别建立两个CNN卷积神经网络用来识别省份信息和数字、字母信息;
(2)测试集数据集的收集,跟训练数据集的处理过程一样,收集每个字符的样本数量为100~200;
(3)列表label以及图片数据集的制作:创建两个列表分别用来储存图片信息和类的信息,所述类为0~30个类;依次遍历省份路径下的0到30个子文件夹下的31个文件,分别读取每个子文件夹下的每张图片,把每张图片重新定义为24x24的大小,把图片数据和类的信息分别保存到对应的列表中;
(4)搭建CNN卷积神经网络:是以一个样本模板所经过两次CNN卷积神经网络的过程中其形状的变化过程,先是由一次卷积操作后,再经过一次池化层缩小了样本的形状大小,再后面是经过一次扁平化操作后依次的通过4次全连接操作,最后经过softmax分类输出;
卷积操作,定义卷积核filter的大小为3X3X3;长为3,宽为3,深度为3,用正太分布的方式来定义卷积核W权重参数初始值,卷积核的操作过程和机器视觉中的卷积操作一样,通过在车牌的图像上进行滑移操作,提取特征的过程;
公式(5)为卷积的计算的公式,其中w为卷积核的权重参数,i为卷积位置的节点信息;a表示为车牌的图像的像素值,x、y、z是图像所卷积到的位置信息,n和m为图像的大小信息;每一张图像都拥有RGB的3个通道信息;让卷积在24x24大小的图像上进行滑移操作,每次滑移的过程中计算卷积核与所覆盖下的像素值的内积;
公式(6)为图像经过一次卷积后加上偏置项参数b;用常量初始化的方式来对b赋值;
(7)步长stride和填充padding
outlength=(intlength-filterlength+1)/stridelength (8)
公式8为图像经过一次卷积后所得到的图像像素值的变化,outlength表示为经过卷积后所得的图像大小,intlength表示为输入图像的大小,filterlength表示为卷积核的大小,stridelength为一次卷积滑移的步长大小;在训练数据和测试数据中图像的大小都是24x24的像素大小;经过一次卷积变化后图像的大小变为输入图像的长度减去卷积核的长度大小加上1除以步长,其中,定义卷积核在水平方向和竖直方向的滑移大小都为1,得到的结果为22;
为了让卷积核能够提取到图像的边缘特征,采用“same”的填充方式,让卷积后的图像大小保持不变;
outlength=(intlength-filterlength+2padding)/stridelength+1 (9)
公式变化为(9),这样得到卷积后的图像大小为原来图像的大小;计算可以取得padding的值为1;
(10)RELU激活函数
定义卷积后所连接神经时使用的激活函数为RELU;
f(x)=max(0,g(x)) (11)
利用公式(11)来对公式(6)所输出的值作判断,判断g(x)的值是否大于0,如果大于0那么在RELU激活函数后输出仍为g(x),若g(x)输出的值小于0,那么将激活函数的输出赋值为0;
(11)池化层操作:
定义[1,2,2,1]的卷积核,不对卷积核里面的参数进行赋值权重操作;卷积核矩阵中第一个参数和最后一个参数分别表示在跨越输入样本的数量和跨越不同深度的尺寸,第二个参数和第三个参数的作用是卷积核在二维平面的大小;定义卷积核的滑动步长为[1,2,2,1],第一个参数和第四个参数表示含义和卷积的意义相同,第三个参数和第四个参数表示的含义为在水平滑移的步长为2和在竖直方向上滑移的步长为2;经过池化操作后的图像大小缩小为原来的一半为12x12;
(12)经过两次卷积加池化操作后图片的大小因为池化层的过滤之后,大小变为原来的十六分之一
[None,24,24,3]→[None,12,12,32]→[None,6,6,64]
在卷积过程中为了解决图像由于后续要经过池化层而减小尺寸造成的信息丢失现象,通过增加filter的数量来解决这个问题;在第一次卷积的过程中添加filter的数量为32,所以经过一次卷积加池化操作后图像的深度变成了32;再经过一次卷积加池化后,图像的深度又增加了一倍;但是图像的大小也随之变成了原来的十六分之一;None为一次性传入CNN卷积神经网络的图片数量;
(13)全连接层操作
得到经过两次卷积池化操作后,对图像进行扁平化操作,将图像展开成只有一个行和列的矩阵形式,方便对每个像素和全连接层进行全连接操作;
扁平化后的矩阵形式为x=[None,6*6*64];
(14)第一层神经网络
创建一个[6x6x64,4096]的二维矩阵和[4096]的一维矩阵,二维矩阵为连接第一层神经元的权重连接参数,一维矩阵为偏置参数;用正太分布的方式定义二维矩阵的初始权重参数;用常数初始化的方式给一维矩阵赋值;
[ai]=x wi+bi (15)
用公式15计算出第一层神经元的输出值,神经元个数为4096;
[None,6x6x64][6x6x64,4096]+[4096,4096]
经过矩阵运算后所得到的是一个[None,4096]的二维向量,在神经元之间采用RELU激活函数提高神经网络的非线性;在接下的所有神经网络层中都采用RELU激活函数;
(16)第二层神经网络
创建一个[4096,4096]的二维矩阵用来连接第一层神经元和第三层神经元;输出为[None,4096]的二维矩阵;激活函数与第一层网络一样;
(17)再接下的第三次层神经网络中输出依次为[None,2068],[None,500],[None,31];将最后一层的输出定义为31,为了输出31个类别的判别值,在车牌的0-10和A-Z的数据集中输出的位34个类别;
(18)在输出层的最后采用softmax函数对输出做处理;
用公式19分别对神经元输出的31个值作处理,将输出的值归一化为零到一之间,得到概率值;公式19中表示为对第三层神经网络的31输出做e的指数后进行求和计算,e表示为自然对数的底数,表示为单个输出除以总体输出的概率值;
(20)均方误差损失函数
将经过归一化后的概率值与label值进行损失计算;
公式(21)中yi’为label值信息,n表示为第三层神经元的输出总数;公式中yi为表示为神经元的输出,y1到y31分别为第一个神经元到最后一个神经元的输出的概率值,yi-y’i表示为将对应神经元输出的概率值减去对应label值,公式21中对31个输出分别进行求差平方后求和除以31,最后得到损失值;即在图像一次前向传播的过程中输出的概率值减去label信息值;计算出loss损失值;
(22)神经网络优化,采用随机梯度下降的方式对loss损失值进行迭代,寻找损失的最小值,不断地对神经网络中的权重参数进行更新;让神经网络能够更好的拟合数据集;定义步长为0.0001,精确率为0.98;
在神经网络训练的过程中每经过1000次训练对测试样本进行一次预测,只有当模型测试样本的精确率达到0.98才能保存模型;
(23)模型的应用
在获得模型后,将步骤S5中获得的车牌字符信息传入神经网络,在省份字符的CNN模型中,将车牌的第一个字符传入CNN模型,获取31个输出值的最大值所在的列的位置信息;
将列值映射到相对应的省份信息中,获取省份;把后字符图片信息一起传入字母和数字训练集所训练好的CNN网络中得到6行31列的矩阵信息,依次获取相对应的行的最大值所在列的位置信息,将字母和数字分别映射到相应的字符信息中;最后获得车牌信息。
本发明的有益效果在于:本发明根据haar级联分类器锁定车牌的位置,提取出车牌的图像,对车牌图像进行灰度操作、阈值操作后,进行膨胀和腐蚀操作去除边框操作;最后通过最小轮廓发现找到车牌中七个字符的信息;将车辆七个字符传入到建立好的CNN神经网络中,对字符进行识别操作,解决传统的传统车牌识别检测场景的单一性问题,神经网络的应用大大提升了在不同环境下的适应性,提升字符检测的效率,减小车牌识别的时间,具有很高的使用价值。
附图说明
图1是本发明的方法流程示意图。
图2是本发明的CNN神经网络的结构图
图3为现有技术中haar特征的四种形式的特征示意图。
图4为本发明中haar级联分类器所提取出的车牌图片。
图5为本发明中车牌经过灰度化后的图片。
图6为本发明中车牌经过阈值操作的图像。
图7为本发明中车牌经过腐蚀膨胀后的图像。
图8为本发明中车牌经过车牌字符查找后的结果。
具体实施方式
下面结合附图对本发明做进一步说明。
请参阅图1至图8所示,本发明的一种基于CNN卷积神经网络下的车辆字符识别方法,包括如下步骤:
步骤S1、建立HAAR级联分类器,根据HAAR级联分类器来锁定车牌的位置,提取出车牌的图像;
步骤S2、对车牌的图像进行灰度变换形成灰度图;
步骤S3、对灰度图进行图像二值化操作;
步骤S4、灰度图像二值化后进行图像腐蚀和图像膨胀操作得到最终图像;
步骤S5、将最终图像通过图像最小轮廓发现找到车牌中字符的信息,将字符传入到建立好的CNN卷积神经网络中,对字符进行识别操作,最终得到车牌信息。
下面结合一具体实施对本发明作进一步说明:
第一步,通过收集车牌样本图片和不包含车牌的样本图片,去建立HAAR级联分类器。为了提高分类器的分类精度,收集了5000张只包含车牌的图片数据集,不包含车牌的图片收据集15000张。在这里称车牌图片为正例样本,将正例样本的行列比例修改为3:1。这一步操作方便haar级联分类器在分类的过程中指定3:1的窗口在待检图像中对车牌区域作出更好的检索。
在Haar-like特征中有最早的四种形式的特征如图3所示,(1)和(2)特征它们被用来检测边缘,(3)特征被用来检测线条,而最后一种(4)则被用来检测斜线。将指定特定大小的特征块分别在待检测的图像上进行滑移,计算白色区域块下图像的像素和减去黑色区域块下图像像素和,得到整体图像的特征值。
训练好的haar级联分类器是由多个弱的分类器连接而成的,只有当所要检测的车牌目标区域被这些弱分类器所完全匹配,才算检测出目标区域。图4为haar级联分类器所获取到的车牌图像。
第二步,车牌图像灰度转化
将第一步所提取到的车牌图片进行灰度处理
Gray(i,j)=0.299*R(i,j)+0.587*G(i,j)+0.144*B(i,j) (2)
先创建出同原图像一样尺寸大小的黑色图像,通过循环语句遍历图像的每个像素点,在遍历的过程中,将三个通道R、G、B的像素值通过(2)运算关系式计算出灰度值。将计算出的灰度值赋值给黑色图像相应行列的位置。
第三步,将灰度图像二值化;
对第二步所获得的图像进行图像二值化操作,这方便后续提取车牌的字符位置非常有利,在图像阈值的化操作根据基于图像中物体与背景之间的灰度差异来分割图像,属于像素级的分割。
因为在第二步中已经获取到了车牌的图像,在车牌灰度图像中得出字符的像素值远远的大于其它部位的像素值。为此定义了一个200的阈值来很好的对图像中的字符部分做提取。
通过循环语句依次遍历灰度图像的像素值,比较所在位置的像素值与阈值的大小来进行分割操作,如果该像素点的像素值大于200,则把该点的像素值重新赋值为255,。相反,如果该点的像素值低于200,则把它重新赋值为0。图b为车牌图像经过二值化后的图片
第四步,图像腐蚀操作
第三步操作后得到灰度图像二值化后的结果C;虽然得到了字符信息,但是还是要去掉干扰信息。
首先,定义一个2x3的卷积核,让卷积核在原图中进行滑移操作,在滑移的过程中计算卷积核覆盖下的图像像素值最小值,将该区域内所有的图像像素值都赋值为0。滑移的过程中是按卷积核的尺寸在原图中进行移动,在列的方向滑动的次数col(图像的列数)除以2。在行的方向滑动的次数row除以3,采用CONSTANT方式填充边缘。
当卷积核遍历完所有次数以后,就能够将除了字符以外的边界信息提取出来。
第五步,图像膨胀操作
在第四步中,得到了经过一次腐蚀后所得到的字符图像信息。因为腐蚀操作会腐蚀掉字符的一些边缘信息,所以还要对字符的边缘做些填充。
首先,定义一个2x2的卷积核,让卷积核在原图中进行滑移操作,在滑移的过程中计算卷积核覆盖下的图像像素值的最大值,将该区域内所有的图像像素值都赋值为1。滑移的过程中按卷积核的尺寸在原图进行移动,在列的反向滑动的次数col除以2,在行的方向滑动的次数row除以2,采用CONSTANT的方式填充边界信息,当卷积核遍历完所有的次数以后,就能够将字符信息提取出来。
第六步,图像最小轮廓发现
在第五步中得到了中包含车牌字符信息的图像。
这一步通过最小轮廓发现将车牌的字符单独的提取出来。
通过opencv下利用findcount函数将车牌的字符单独的寻找出来。
findContours(Mat image,List<MatOfPoint>contours,Mat hierarchy,intmode,int method)(2)
函数(2)为轮廓寻找所用到的API信息将Mat image为所需传入的待检图像,在寻找轮廓先创建出二维数组来储存被寻找出来的字符位置信息。
将函数findContours所返回的四个值参数x,y,w,h表示为轮廓所在的图像中的行和列以及宽、高。将四个信息值重新映射到车牌图像中的图片。
在寻找到的车牌字符中的7个字符轮廓后还要对字符信息进行判断。定义循环函数判断7组轮廓信息的中的w与h的比值,如果h/w>3那么就说明字符图像中有1字符的存在,因为在所有字符中1这个字符比较特殊它所包含仅仅只是字符信息而不含背景信息,为了方便CNN网络对字符能够更好的识别重新定义字符1的位置参数。
X=int(x+w/2)-h;W=h (4)
在公式4中,对参数x和w的信息做调整,其中,公式含义为:将1字符的x轴方向参数X加上宽度的二分之一后减去高度的值,并把高度的值赋值给宽度的值,在调整参数之前轮廓所包围的是完完全全的1字符,在调整位置完参数之后图片中包含的是除了1字符还包含黑色的背景区域。图e为车牌字符提取后的图片信息。
第七步,CNN网络建立
(1)训练数据集的收集,收集有关31个省份的字符数据集、0到9的数字数据集、以及包含A到Z的字母数据集。每一个字符样本都含有10000份的模板图片。将样本分为两份,一份是只含车牌省份的字符数据集,另一份是数字样本和字母样本数据集。分别用两个子文件夹保存这些图片,把只含车牌省份字符信息的文件夹里第一个省份到最后一个省份依次重命名为0到30;把另一个文件夹中的0到9和A到Z的数据集文件依次重命名为0到33;分别建立两个CNN网络用来识别省份信息和数字、字母信息。
(2)测试集数据集的收集,跟训练集的处理过程一样,收集每个字符的样本数量为100;
(3)Label以及图片数据集的制作。创建两个列表分别用来储存图片信息和类的信息。依次遍历省份路径下的0到30个子文件夹下的31个文件,分别读取每个子文件夹下的每张图片,把每张图片重新定义为24x24的大小,把图片数据和类(0到31个类)的信息分别保存到它们的列表中。
(4)搭建CNN网络
是发明所采用的CNN网络,是以一个样本模板所经过两次CNN网络的过程中其形状的变化过程,它先是由一次卷积操作后,再经过一次池化层缩小了样本的形状大小。再后面是经过一次扁平化操作后依次的通过4次全连接操作,最后经过softmax分类输出。
卷积操作,定义卷积核(filter)的大小为3X3X3(长为3,宽为3,深度为3),用正太分布的方式来定义卷积核W权重参数初始值,卷积核的操作过程和机器视觉中的卷积操作一样,通过在原始图像上进行滑移操作,提取特征的过程。
公式(5)为卷积的计算的公式,其中w为卷积核的权重参数,i为卷积位置的节点信息;a表示为原图像的像素值,x、y、z是图像所卷积到的位置信息,n和m为图像的大小信息(如图像大小为宽*高=20*80;则n=20,m=80);每一张图像都拥有RGB的3个通道信息;让卷积在24x24大小的图像上进行滑移操作,每次滑移的过程中计算卷积核与所覆盖下的像素值的内积;
公式(6)为图像经过一次卷积后加上偏置项参数b。用常量初始化的方式来对b赋值。
(7)步长(stride)和填充(padding)
outlength=(intlength-filterlength+1)/stridelength (8)
公式8为图像经过一次卷积后所得到的图像像素值的变化,outlength表示为经过卷积后所得的图像大小,intlength表示为输入图像的大小,filterlength表示为卷积核的大小,stridelength为一次卷积滑移的步长大小;在训练数据和测试数据中图像的大小都是24x24的像素大小。经过一次卷积变化后图像的大小变为为输入图像的长度减去卷积核的长度大小加上1除以步长(定义卷积核在水平方向和竖直方向的滑移大小都为1),得到的结果为22。
为了让卷积核能够提取到图像的边缘特征,采用“same”的填充方式,让卷积后的图像大小保持不变。
outlength=(intlength-filterlength+2padding)/stridelength+1 (9)
公式变化为(9),这样得到卷积后的图像大小为原来图像的大小。计算可以取得padding的值为1。
(10)RELU激活函数
定义卷积后所连接神经时使用的激活函数为RELU。
f(x)=max(0,g(x))(11)
利用公式(11)来对公式(6)所输出的值作判断判断g(x)的值是否大于0,如果大于0那么在relu激活行数后输出仍未g(x),若g(x)输出的值小于0,那么将激活函数的输出赋值为0;
(11)池化层操作
定义[1,2,2,1]的卷积核,不对它里面的参数进行赋值权重操作。卷积核矩阵中第一个参数和最后一个参数分别表示在跨越输入样本的数量和跨越不同深度的尺寸,第二个参数和第三个参数的作用是卷积核在二维平面的大小。定义卷积核的滑动步长为[1,2,2,1],第一个参数和第4个参数表示含义和卷积的意义相同,第三个参数和第四个参数表示的含义为在水平滑移的步长为2和在竖直方向上滑移的步长为2。经过池化操作后的图像大小缩小为原来的一半12x12。
(12)经过两次卷积加池化操作后图片的大小因为池化层的过滤之后,大小变为原来的十六分之一
[None,24,24,3]→[None,12,12,32]→[None,6,6,64]
在卷积过程中为了解决图像因为后续要经过池化层而减小尺寸造成的信息丢失现象,通过增加filter的数量来解决这个问题。在第一次卷积的过程中添加filter的数量为32,所以经过一次卷积加池化操作后图像的深度变成了32,。再经过一次卷积加池化后,图像的深度又增加了一倍。但是图像的大小也随之变成了原来的十六分之一。None为一次性传入CNN网络的图片数量
(13)全连接层操作
得到经过两次卷积池化操作后,对图像进行扁平化操作,将图像展开成只有一行.列的矩阵形式,方便对每个像素和全连接层进行全连接操作。
扁平化后的矩阵形式为x=[None,6*6*64]。
(14)第一层神经网络
创建一个[6x6x64,4096]的二维矩阵和[4096]的一维矩阵,二维矩阵为连接第一层神经元的权重连接参数,一维矩阵为偏置参数。用正太分布的方式定义二维矩阵的初始权重参数。用常数初始化的方式给一维矩阵赋值。
[ai]=x wi+bi (15)
用公式15计算出第一层神经元的输出值,神经元个数为4096。
[None,6x6x64][6x6x64,4096]+[4096,4096]
经过矩阵运算后所得到的是一个[None,4096]的二维向量,在神经元之间采用Relu激活函数提高神经网络的非线性。在接下的所有神经网络层中都采用Relu激活函数。
(16)第二层神经网络
创建一个[4096,4096]的二维矩阵用来连接第一层神经元和第三层神经元。输出为[None,4096]的二维矩阵。激活函数与第一层神经网络一样。
(17)再接下的3层神经网络中输出依次为[None,2068],[None,500],[None,31]。将最后一层的输出定义为31,为了输出31个类别的判别值,在车牌的0-10和A-Z的数据集中输出的位34个类别。
(18)在输出层的最后采用softmax函数对输出做处理。
用公式19分别对神经元输出的31个值作处理,将输出的值归一化为零到一之间,得到概率值;公式19中表示为对第三层神经网络的31输出做e的指数后进行求和计算,e表示为自然对数的底数,表示为单个输出除以总体输出的概率值;
(20)均方误差损失函数
将经过归一化后的概率值与label值进行损失计算;
公式(21)中yi’为label值信息,n表示为第三层神经元的输出总数;公式中yi为表示为神经元的输出,y1到y31分别为第一个神经元到最后一个神经元的输出的概率值,yi-y’i表示为将对应神经元输出的概率值减去对应label值,公式21中对31个输出分别进行求差平方后求和除以31,最后得到损失值;在图像一次前向传播的过程中输出的概率值减去label信息值;计算出loss损失值;。
(22)神经网络优化,采用随机梯度下降的方式对loss损失值进行迭代,寻找损失的最小值,不断地对神经网络中的权重参数进行更新。让神经网络能够更好的拟合的数据集。定义步长为0.0001,精确率为0.98。
在神经网络训练的过程中每经过1000次训练对测试样本进行一次预测,只有当模型测试样本的精确率达到0.98才能保存模型。
(23)模型的应用
在获得模型后,将第六步所获得的的车牌字符信息传入神经网络,在省份字符的CNN模型中,将车牌的第一个字符传入CNN模型,获取31个输出值的最大值所在的列的位置信息。
将列值映射到相对应的省份信息中,获取省份。把后六个字符图片信息一起传入字母和数字训练集所训练好的CNN网络中得到六行31列的矩阵信息,依次获取相对应的行的最大值所在列的位置信息,将它们分别映射到相应的字符信息中;最后获得车牌信息。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
Claims (4)
1.一种基于CNN卷积神经网络下的车辆字符识别方法,其特征在于:包括如下步骤:
步骤S1、建立HAAR级联分类器,根据HAAR级联分类器来锁定车牌的位置,提取出车牌的图像;
步骤S2、对车牌的图像进行灰度变换形成灰度图;
步骤S3、对灰度图进行图像二值化操作;
步骤S4、灰度图像二值化后进行图像腐蚀和图像膨胀操作得到最终图像;
步骤S5、将最终图像通过图像最小轮廓发现找到车牌中字符的信息,将字符传入到建立好的CNN卷积神经网络中,对字符进行识别操作,最终得到车牌信息;
所述步骤S5具体为:在跨平台计算机视觉库opencv下通过图像最小轮廓发现利用findcount函数将车牌的字符单独的寻找出来,建立CNN卷积神经网络进一步具体为:(1)训练数据集的收集:收集有关31个省份的字符数据集、0到9的数字数据集、以及包含A到Z的字母数据集;将收集的数据集的样本分为两份,一份是只含车牌省份的字符数据集,另一份是数字样本和字母样本数据集,分别用两个子文件夹保存这些图片,把只含车牌省份字符信息的文件夹里第一个省份到最后一个省份依次重命名为0到30;把另一个文件夹中的0到9和A到Z的数据集文件依次重命名为0到33;分别建立两个CNN卷积神经网络用来识别省份信息和数字、字母信息;
(2)测试集数据集的收集,跟训练数据集的处理过程一样,收集每个字符的样本数量为100~200;
(3)列表label以及图片数据集的制作:创建两个列表分别用来储存图片信息和类的信息,所述类为0~30个类,总共的类别数为31,代表了31个省份;依次遍历省份路径下的0到30个子文件夹下的31个文件,分别读取每个子文件夹下的每张图片,把每张图片重新定义为24x24的大小,把图片数据和类的信息分别保存到对应的列表中;
(4)搭建CNN卷积神经网络:是以一个样本模板所经过两次CNN卷积神经网络的过程中其形状的变化过程,先是由一次卷积操作后,再经过一次池化层缩小了样本的形状大小,接着经过一次扁平化操作后依次的通过4次全连接操作,最后经过softmax分类输出;
卷积操作,定义卷积核filter的大小为3X3X3;长为3,宽为3,深度为3,用正太分布的方式来定义卷积核W权重参数初始值,卷积核的操作过程和机器视觉中的卷积操作一样,通过在车牌的图像上进行滑移操作,提取特征的过程;
公式(5)为卷积的计算的公式,其中W为卷积核的权重参数,i为卷积位置的节点信息;a表示为车牌的图像的像素值,x、y、z是图像所卷积到的位置信息,n和m为图像的大小信息;车牌字符x轴方向位置参数X,X=int(x+w/2)-h,其中x,w,h表示为轮廓所在的图像中的行、宽、高;每一张图像都拥有RGB的3个通道信息;让卷积在24x24大小的图像上进行滑移操作,每次滑移的过程中计算卷积核与所覆盖下的像素值的内积;
公式(6)为图像经过一次卷积后加上偏置项参数b;用常量初始化的方式来对b赋值;
(7)步长stride和填充padding
outlength=(intlength-filterlength+1)/stridelength (8)
公式(8)为图像经过一次卷积后所得到的图像像素值的变化,outlength表示为经过卷积后所得的图像大小,intlength表示为输入图像的大小,filterlength表示为卷积核的大小,stridelength为一次卷积滑移的步长大小;在训练数据和测试数据中图像的大小都是24x24的像素大小;经过一次卷积变化后图像的大小变为输入图像的长度减去卷积核的长度大小加上1除以步长,其中,定义卷积核在水平方向和竖直方向的滑移的步长大小都为1,得到的结果为22;
为了让卷积核能够提取到图像的边缘特征,采用same的填充方式,让卷积后的图像大小保持不变;
outlength=(intlength-filterlength+2padding)/stridelength+1 (9)
公式变化为(9),这样得到卷积后的图像大小为原来图像的大小;计算取得padding的值为1;
(10)RELU激活函数
定义卷积后所连接神经时使用的激活函数为RELU;
f(x)=max(0,g(x)) (11)
利用公式(11)来对公式(6)所输出的值作判断,判断g(x)的值是否大于0,如果大于0那么在RELU激活函数后输出仍为g(x),若g(x)输出的值小于0,那么将激活函数的输出赋值为0;
(11)池化层操作:
定义[1,2,2,1]的卷积核,不对卷积核里面的参数进行赋值权重操作;卷积核矩阵中第一个参数和最后一个参数分别表示在跨越输入样本的数量和跨越不同深度的尺寸,第二个参数和第三个参数的作用是卷积核在二维平面的大小;定义卷积核的滑动步长为[1,2,2,1],第一个参数和第四个参数表示含义和卷积的意义相同,第三个参数和第四个参数表示的含义为在水平滑移的步长为2和在竖直方向上滑移的步长为2;经过池化操作后的图像大小缩小为原来的一半为12x12;
(12)经过两次卷积加池化操作后图片的大小因为池化层的过滤之后,大小变为原来的十六分之一
[None,24,24,3]→[None,12,12,32]→[None,6,6,64]
在卷积过程中为了解决图像由于后续要经过池化层而减小尺寸造成的信息丢失现象,通过增加filter的数量来解决这个问题;在第一次卷积的过程中添加filter的数量为32,所以经过一次卷积加池化操作后图像的深度变成了32;再经过一次卷积加池化后,图像的深度又增加了一倍;但是图像的大小也随之变成了原来的十六分之一;None为一次性传入CNN卷积神经网络的图片数量;
(13)全连接层操作
得到经过两次卷积池化操作后,对图像进行扁平化操作,将图像展开成只有一个行和列的矩阵形式,方便对每个像素和全连接层进行全连接操作;
扁平化后的矩阵形式为x=[None,6*6*64];
(14)第一层神经网络
创建一个[6x6x64,4096]的二维矩阵和[4096]的一维矩阵,二维矩阵为连接第一层神经元的权重连接参数,一维矩阵为偏置参数;用正太分布的方式定义二维矩阵的初始权重参数;用常数初始化的方式给一维矩阵赋值;
[ai]=x wi+bi (15)
用公式(15)计算出第一层神经元的输出值,神经元个数为4096;
[None,6x6x64][6x6x64,4096]+[4096,4096]
经过矩阵运算后所得到的是一个[None,4096]的二维向量,在神经元之间采用RELU激活函数提高神经网络的非线性;在接下的所有神经网络层中都采用RELU激活函数;
(16)第二层神经网络
创建一个[4096,4096]的二维矩阵用来连接第一层神经元和第三层神经元;输出为[None,4096]的二维矩阵;激活函数与第一层神经网络一样;
(17)再接下的第三层神经网络中输出三个二维矩阵,该三个二维矩阵依次为[None,2068],[None,500],[None,31];将最后一层的输出定义为31,为了输出31个类别的判别值,在车牌的0-10和A-Z的数据集中输出的位34个类别;
(18)在输出层的最后采用softmax函数对输出做处理;
用公式(19)分别对神经元输出的31个值作处理,将输出的值归一化为零到一之间,得到概率值;公式(19)中表示为对第三层神经网络的31输出做e的指数后进行求和计算,e表示为自然对数的底数,表示为单个输出除以总体输出的概率值;
(20)均方误差损失函数
将经过归一化后的概率值与label值进行损失计算;
公式(21)中yi’为label值信息,n表示为第三层神经元的输出总数;公式中yi为表示为神经元的输出,y1到y31分别为第一个神经元到最后一个神经元的输出的概率值,yi-y’i表示为将对应神经元输出的概率值减去对应label值,公式(21)中对31个输出分别进行求差平方后求和除以31,最后得到损失值;在图像一次前向传播的过程中输出的概率值减去label信息值;计算出loss损失值;
(22)神经网络优化,采用随机梯度下降的方式对loss损失值进行迭代,寻找损失的最小值,不断地对神经网络中的权重参数进行更新;让神经网络能够更好的拟合数据集;定义步长为0.0001,精确率为0.98;
在神经网络训练的过程中每经过1000次训练对测试样本进行一次预测,只有当模型测试样本的精确率达到0.98才能保存模型;
(23)模型的应用
在获得模型后,将步骤S5中获得的车牌字符信息传入神经网络,在省份字符的CNN模型中,将车牌的第一个字符传入CNN模型,获取31个输出值的最大值所在的列的位置信息;
将列值映射到相对应的省份信息中,获取省份;把后字符图片信息一起传入字母和数字训练集所训练好的CNN网络中得到6行31列的矩阵信息,依次获取相对应的行的最大值所在列的位置信息,将字母和数字分别映射到相应的字符信息中;最后获得车牌信息。
2.根据权利要求1所述的一种基于CNN卷积神经网络下的车辆字符识别方法,其特征在于:所述步骤S2具体为:创建一同车牌的图像一样尺寸大小的黑色图像,通过循环遍历车牌的图像的每个像素点,在遍历过程中,将三个通道R、G、B的像素值通过运算公式计算出灰度值,所述运算公式为:Gray(i,j)=0.299*R(i,j)+0.587*G(i,j)+0.144*B(i,j),图像的每个像素点的位置用(i,j)表示;将计算出的灰度值赋值给黑色图像相应行列的位置形成灰度图。
3.根据权利要求1所述的一种基于CNN卷积神经网络下的车辆字符识别方法,其特征在于:所述步骤S3具体为:通过循环依次遍历灰度图的像素值,比较所在位置的像素值与一设定阈值的大小来进行分割操作,如果该像素点的像素值大于等于阈值,则把该像素点的像素值重新赋值为255,相反,如果该像素点的像素值小于阈值,则把该像素点的像素值重新赋值为0,从而进行图像二值化。
4.根据权利要求1所述的一种基于CNN卷积神经网络下的车辆字符识别方法,其特征在于:所述图像腐蚀是去掉车牌的图像干扰信息,所述图像膨胀是对车牌的图像中字符的边缘做填充;所述图像腐蚀具体为:定义一个2x3的卷积核,让卷积核在进行图像二值化的灰度图中进行滑移操作,在滑移的过程中计算卷积核覆盖下的图像像素值最小值,将该区域内所有的图像像素值都赋值为0,滑移的过程中是按卷积核的尺寸在进行图像二值化的灰度图中进行移动,在列的方向滑动的次数为图像的列数col除以2;在行的方向滑动的次数为图像的行数row除以3,在跨平台计算机视觉库opencv中用CONSTANT的方式填充边界信息;当卷积核遍历完所有次数以后,能够将除了字符以外的边界信息提取出来,所述图像膨胀具体为:定义一个2x2的卷积核,让卷积核在图像腐蚀处理后的图像中进行滑移操作,在滑移的过程中计算卷积核覆盖下的图像像素值的最大值,将该区域内所有的图像像素值都赋值为1,滑移的过程中按卷积核的尺寸在图像腐蚀处理后的图像进行移动,在列的反向滑动的次数col除以2;在行的方向滑动的次数row除以2,采用CONSTANT的方式填充边界信息,当卷积核遍历完所有的次数以后,就能够将图像中字符信息提取出来。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910053899.6A CN109740603B (zh) | 2019-01-21 | 2019-01-21 | 基于cnn卷积神经网络下的车辆字符识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910053899.6A CN109740603B (zh) | 2019-01-21 | 2019-01-21 | 基于cnn卷积神经网络下的车辆字符识别方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109740603A CN109740603A (zh) | 2019-05-10 |
CN109740603B true CN109740603B (zh) | 2020-12-01 |
Family
ID=66365456
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910053899.6A Active CN109740603B (zh) | 2019-01-21 | 2019-01-21 | 基于cnn卷积神经网络下的车辆字符识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109740603B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110097044B (zh) * | 2019-05-13 | 2020-12-01 | 苏州大学 | 基于深度学习的一阶段车牌检测识别方法 |
CN110261437B (zh) * | 2019-07-01 | 2021-10-29 | 重庆科技学院 | 一种基于红外热像的天然气站场压力设备缺陷普查方法 |
CN110781901B (zh) * | 2019-10-29 | 2023-04-28 | 湖北工业大学 | 基于bp神经网络预测阈值的仪表重影字符识别方法 |
CN112801098B (zh) * | 2019-11-14 | 2023-01-10 | 临沂市拓普网络股份有限公司 | 一种基于轮廓技术的数学符号识别方法 |
CN113223039B (zh) * | 2020-01-21 | 2023-04-07 | 海信集团有限公司 | 显示设备、服装图像提取方法和存储介质 |
CN111401139B (zh) * | 2020-02-25 | 2024-03-29 | 云南昆钢电子信息科技有限公司 | 基于字符图像智能识别获得矿山井下设备位置的方法 |
CN111461128A (zh) * | 2020-03-31 | 2020-07-28 | 北京爱笔科技有限公司 | 一种车牌的识别方法及装置 |
CN111488876B (zh) * | 2020-06-28 | 2020-10-23 | 平安国际智慧城市科技股份有限公司 | 基于人工智能的车牌识别方法、装置、设备及介质 |
CN111767928B (zh) * | 2020-06-28 | 2023-08-08 | 中国矿业大学 | 基于卷积神经网络提取图像特征信息的方法及装置 |
CN112733851B (zh) * | 2021-01-14 | 2023-08-18 | 福建江夏学院 | 一种基于卷积神经网络优化粮食仓库货车的车牌识别方法 |
CN112950954B (zh) * | 2021-02-24 | 2022-05-20 | 电子科技大学 | 一种基于高位摄像头的智能停车车牌识别方法 |
CN113096407B (zh) * | 2021-02-27 | 2022-10-11 | 惠州华阳通用电子有限公司 | 一种限高通道车辆防撞方法及装置 |
CN113095327B (zh) * | 2021-03-16 | 2022-10-14 | 深圳市雄帝科技股份有限公司 | 光学字符识别区域的定位方法、系统及其存储介质 |
CN113989791A (zh) * | 2021-10-21 | 2022-01-28 | 中船动力镇江有限公司 | 基于深度学习的船用低速机传感器铭牌识别方法 |
CN115116047A (zh) * | 2022-08-29 | 2022-09-27 | 松立控股集团股份有限公司 | 一种基于车牌字符区域热力图的车牌检测方法 |
CN117292381B (zh) * | 2023-11-24 | 2024-02-27 | 杭州速腾电路科技有限公司 | 一种印刷电路板的序列号读取方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104298976A (zh) * | 2014-10-16 | 2015-01-21 | 电子科技大学 | 基于卷积神经网络的车牌检测方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180239969A1 (en) * | 2017-02-23 | 2018-08-23 | Ford Global Technologies, Llc | Free Space Detection Using Monocular Camera and Deep Learning |
-
2019
- 2019-01-21 CN CN201910053899.6A patent/CN109740603B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104298976A (zh) * | 2014-10-16 | 2015-01-21 | 电子科技大学 | 基于卷积神经网络的车牌检测方法 |
Non-Patent Citations (2)
Title |
---|
"卷积神经网络与全连接神经网络";仲夏199603;《https://blog.csdn.net/qq_32458499/article/details/80167099》;20180502;全文 * |
"复杂自然环境下车牌识别算法研究";赵成龙;《中国优秀硕士学位论文全文数据库(电子期刊) 信息科技辑》;20180115;期刊第3.2节 * |
Also Published As
Publication number | Publication date |
---|---|
CN109740603A (zh) | 2019-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109740603B (zh) | 基于cnn卷积神经网络下的车辆字符识别方法 | |
CN109190752B (zh) | 基于深度学习的全局特征和局部特征的图像语义分割方法 | |
CN110929607B (zh) | 一种城市建筑物施工进度的遥感识别方法和系统 | |
Alidoost et al. | A CNN-based approach for automatic building detection and recognition of roof types using a single aerial image | |
CN107103317A (zh) | 基于图像融合和盲反卷积的模糊车牌图像识别算法 | |
CN113674334B (zh) | 基于深度自注意力网络和局部特征编码的纹理识别方法 | |
CN111652273B (zh) | 一种基于深度学习的rgb-d图像分类方法 | |
CN107944459A (zh) | 一种rgb‑d物体识别方法 | |
CN110414616B (zh) | 一种利用空间关系的遥感图像字典学习分类方法 | |
CN108932518B (zh) | 一种基于视觉词袋模型的鞋印图像特征提取及检索方法 | |
CN111242046B (zh) | 一种基于图像检索的地面交通标志识别方法 | |
CN108230330B (zh) | 一种快速的高速公路路面分割和摄像机定位的方法 | |
CN111738367B (zh) | 一种基于图像识别的零件分类方法 | |
CN113920516B (zh) | 一种基于孪生神经网络的书法字骨架匹配方法及系统 | |
CN111401434A (zh) | 一种基于无监督特征学习的图像分类方法 | |
Senthilnath et al. | Automatic road extraction using high resolution satellite image based on texture progressive analysis and normalized cut method | |
Dewan et al. | Using Ant's Colony Algorithm for improved segmentation for number plate recognition | |
CN109829511B (zh) | 基于纹理分类的下视红外图像中云层区域检测方法 | |
CN112101283A (zh) | 一种交通标志智能识别方法及系统 | |
Jafrasteh et al. | Generative adversarial networks as a novel approach for tectonic fault and fracture extraction in high resolution satellite and airborne optical images | |
CN116311391A (zh) | 一种高低精度混合的多维度特征融合指纹检索方法 | |
CN105844299A (zh) | 一种基于词袋模型的图像分类方法 | |
Xiang et al. | The study of Chinese calligraphy font style based on edge-guided filter and convolutional neural network | |
Singh et al. | A comprehensive survey on Bangla handwritten numeral recognition | |
CN112070116B (zh) | 一种基于支持向量机的艺术画作自动分类系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240129 Address after: 230000 floor 1, building 2, phase I, e-commerce Park, Jinggang Road, Shushan Economic Development Zone, Hefei City, Anhui Province Patentee after: Dragon totem Technology (Hefei) Co.,Ltd. Country or region after: China Address before: 350000 No.1 Wenxian Road, Shangjie Town, Minhou County, Fuzhou City, Fujian Province Patentee before: MINJIANG University Country or region before: China |
|
TR01 | Transfer of patent right |