桂方燚,武文星,任维康
(华北科技学院 计算机学院,北京 东燕郊 065201)
车牌作为车辆信息的标识,相当于车辆的身份证。车牌识别技术作为可以促进智能交通信息化、自动化的重要手段,基于图像识别技术,其在车辆追踪、智慧停车场、交通违法行为的监测、高速公路自动收费等领域起着重要的作用。国外车牌识别技术发展较为成熟,我国的车牌由于含有中文字符以及面临的复杂场景,为了提高车牌识别的正确率,文献[1]提出了结合HOG特征的车牌识别方法,提取字符的HOG特征,并设计了一个SVM特征的字符分类器,提高了检测效率。文献[2]提出了基于SCG-BP神经网络的车牌识别,利用主成分分析法对车牌字符特征进行提取,利用成比例共轭梯度下降法提高了车牌的识别正确率。文献[3]提出了一种基于字符特征和灰狼优化算法的字符识别方法提高了车牌识别的效率问题。文献[4]提出了针对BP神经网络在车牌识别经常陷入局部最优,提出了基于粒子群算法的BP神经网络的车牌识别技术。文献[5]提出了基于颜色特征和边缘检测结合的算法解决传统算法易受噪声干扰导致识别率受影响。
本文针对我国的车牌的实际情况,设计了一种基于卷积神经网络的智能车牌识别系统,系统分为车牌图片的预处理、提取车牌的特征区域以及基于粒子群算法的卷积神经网络的训练三个部分组成,可以针对我国的车牌进行快速、准确的自动识别。
车牌识别系统主要分为三部分:车牌图像的预处理、特征的提取以及基于卷积神经网络对数据集进行训练得到一般模型。本文实现车牌识别的结构示意图如图1所示。
图1 系统结构示意图
由于经过摄像头与车牌之间的角度问题,采集到的图片存在倾斜、噪声等因素的干扰,需要通过图像的预处理达到将在车子和环境周围的照片中将车牌区域的照片准确提取出来,本文采用的车牌检测采用的是基于阈值检测[6]和软K段主曲线算法[7]的字符特征提取方法。我国的车牌颜色分为蓝牌、黄牌以及绿牌,首先统计图片中各种像素点的多少来确定大致车牌区域。然后再将定位到的图片利用软K段主曲线算法得到车牌图片,并按照我国车牌的设计的特点,将其分为7个字符组成的区域,方便后面的特征提取以及相应的识别过程。本文采集到车牌如图2所示。
图2 采集到的车牌图片
1.1.1 彩色图转灰度图
由于原图是彩色图片导致后续的计算不方便。通过将彩色位图中的RGB通道转换为单通道的灰度图,图3为转换结果。
1.1.2 高斯滤波和均值滤波平滑图像
高斯滤波是一种线性平滑滤波,可以消除高斯噪声。由于图片中有高亮区域,采用均值滤波平滑图像,图4是灰度图经过高斯滤波产生的图像。
1.1.3 边缘化检测
边缘检测算法是指利用灰度值的不连续性质,以灰度突变为基础分割出目标区域。常见的边缘检测算子有Prewitt算子[8]、Sobel算子以及Canny算子等,本文采用的Canny算子进行边缘检测[9]。Canny算子边缘检测结果如图5所示。
图5 边缘检测
1.2.1 图像形态学操作
对于预处理的图像进行开运算,进行先腐蚀后膨胀的过程[10]。可以将车牌的边框消除,同时消除图像中细小的噪点,且在不改变物体面积的同时平滑物体边界,如图6所示。
图6 腐蚀后的图像
1.2.2 定位车牌的位置
根据车牌的面积、长宽比等对所得到的矩形进行匹配[11],定位得到的车牌的确定区域,如图7所示。
图7 定位后的车牌图片
车牌的字符分割是对提取到的车牌照片进行分割,标记筛选后的得到的单个汉字、英文字符以及数字字符[12]。在字符分割阶段,本文利用提取出目标图像的垂直直方图波峰,用来确定车牌主区域的每个字符,每个字符都有确定的波峰。根据查找的波峰,提取每个字符的图像。结果如图8所示。
图8 字符分割的图片
现有的卷积神经网络识别车牌模型,一般基于复杂的深层网络结构模型,通过增加卷积层和池化层的规模达到很好的效果,并且需要经过复杂的调参过程,达到最佳的训练效果,这样导致时间复杂度上升。本文采用的是将粒子群算法和卷积神经网络结合起来的方法,和单一的神经网络相比,优点是避免了之后重复的调参过程。并且粒子群算法收敛速度快,可以更快的得到最优解,适用于实时检测的环境中。下面选择了现有的一些神经网络结构和本文设计的基于PSO-CNN的神经网络模型进行时间上的对比,见表1。
表1 各种神经网络运行时间
从表1可以看到本文采用的PSO-CNN的算法比之前的算法在时间效率方面得到了提升。
随着过去几年神经网络的发展,卷积神经网络在人脸识别、语言识别以及模型分类领域取得了不错的成果。卷积神经网络改变了传统的神经网络不共享的权值和偏置项,通过对图像特征信息的提取,并将其用在模型的训练,对于发生位移和形变的图像可以起到不错的识别效果。同时在面对多尺度和复杂背景下的图像卷积神经网络表现出了更强大的泛化能力,卷积层、池化层、全连接层构成了卷积神经网络基本结构[13,14]。同时由于神经网络的参数容易陷入局部最优,无法对图像进行正确识别,所以本文加入了粒子群算法对卷积神经网络权值进行寻优,提高图片识别的成功率。本文提出的基于PSO的卷积神经网络的车牌识别方法,系统主要由两部分组成:第一部分,将PSO结合CNN后的神经网络通过训练找到合适的参数,形成模型;第二部分,将待识别的车牌图像输入训练好的模型中进行识别。
粒子群优化算法[15](PSO:Particle Swarm Optimization)是一种生物进化计算技术。源于对鸟群捕食的行为研究。通过群体中个体之间的协作和信息共享来寻找最优解。
PSO初始化为一群随机粒子,然后通过迭代寻找种群最优解,在每一次的迭代过程中,粒子通过跟踪两个极值来更新自己。在找到这两个最优值后,粒子通过下面的公式来更新自己的速度和位置。
vi=vi+di+ei
(1)
di=c1×rand()×(pbesti-xi)
(2)
ei=c2×rand()×(gbesti-xi)
(3)
xi=xi+vi
(4)
式中,vi是粒子速度;rand()介于(0,1)之间的随机数;xi是粒子当前的位置;c1和c2是学习因子,通常取值为2。公式(2)和公式(3)分别代表局部最优值和全局最优值。通过不断更新得到最终的神经网络的权值。粒子群算法的基本流程如下:
① 初始化粒子群相关参数,比如速度及位置;把位置参数转换成网络参数形式,并把均方误差作为适应度值。
② 对所有粒子执行以下操作:
a. 根据式(1)和式(4)更新粒子的速度和位置。
b. 计算粒子的适应度,如果得到的适应度小于个体极值,则不更新;当得到的值大于当前位置的适应度值,则更新。
c. 若粒子适应度优于全局最优值,就把当前位置设置为全局最优位置。
d. 如果满足精度要求时,算法不在更新,则此时的全局最优位置就是所求的变量值,并停止粒子搜索;否则返回步骤②继续搜索。
卷积神经网络是一种多层前馈神经网络,它的结构包括卷积层、池化层(采样层)和全连接层,它可以直接对二维图像直接进行处理,具有局部感知和参数共享的特点,能够有效的从大量样本中学习到相应的特征,避免了复杂的特征提取过程。
本文根据我国车牌是由7个字符组成的特点,设计了基于MATLAB平台的卷积神经网络[16]的通用模型。首先将训练集的照片归一化设置为20×20×1,然后创建一个2D的卷积层,设置8个大小为3×3的过滤器填充。在训练时,计算并设置零填充的大小,使得输入层和输出层具有相同的大小。之后建立一个池大小为2×2和步幅为3的最大池化层。训练的神经网络全部使用最大池化,可以避免平均池化的模糊化效果,并且让步长比池化核的尺寸小,这样池化的输出之间会有重叠和覆盖,提升了特征的丰富性。本文采用的激活函数为ReLU函数,它相比Sigmoid和Tanh函数的求导更为快捷,导致训练过程可以更快,并且本身为非线性函数,增强了网络的非线性。图9为卷积神经网络的关系连接图。
图9 卷积神经网络关系连接图
3.2.1 卷积层
卷积层,卷积神经网络中每层由若干卷积单元组成,是构建卷积神经网络的核心层,产生了网络中大部分的计算量。每个卷积单元的参数都是由反向传播算法优化得到的,卷积运算的目的是提取输入的不同特征。
3.2.2 池化层
池化层的作用是减少每个输入特征的大小。由于图片是由像素点构成,而一张图片提取到的特征信息过于庞大,不利于后面的计算过程,所以采用池化层降低特征大小。
3.2.3 全连接层
全连接层的计算跟常规神经网络一样,利用矩阵乘法再加上偏差。全连接层可以整合卷积层和池化层中具有类别区分性的局部信息。图10为卷积神经网络结构图。
图10 卷积神经网络结构图
使用PSO算法优化的CNN网络时,解决单一的卷积神经网络调整参数难以调节到满意的结果,将卷积神经网络的训练损失设定为PSO算法的目标函数,每一组的权重系数设为PSO算法的一个粒子,通过寻找使得损失函数最小的粒子,得到最优的卷积神经网络权重参数。
粒子的搜索过程中使得下面公式(5)所示的均方误差达到最小值。
(5)
本文采用由一个输入层,两个卷积层,两个最大池化层再接一个卷积层,一个全连接层,一个softmax层以及分类层组成。训练过程如下。
(1) 选定训练组,从样本集中分别随机的寻找Ν个样本作为训练集。
(2) 将各阈值、权值初始化为接近0的随机数。并通过PSO算法进行寻优,不断迭代得到最终的控制参数和学习率。
(3) 从训练组中取一个输入模式加到网络,并给出目标向量同时计算出中间层的输出向量。
(4) 将输出向量中的元素和目标向量中的元素进行对比,计算出输出误差。
(5) 依次计算出各权值和阈值的调整量,并调整对应的值。
(6) 当经历m次迭代之后,判断指标满足精度要求,如果不满足,返回步骤(3)。
(7) 训练结束后,将权值和阈值保存在文件中,此时的权重达到要求,分类器已经形成。PSO优化CNN神经网络的流程如图11所示。
图11 PSO-CNN流程图
本文的硬件平台是联想Y700,其配置是英特尔Core i5-7300HQ,四核,Nvidia GeForce GTX 1050Ti独立显卡、8GB DDR4内存、1TB+128GB 存储,使用的软件平台是MATLAB R2018b。
本文首先将总共10000张车牌照片(包括省份、字符和数字)作为训练集,其中7000张作为训练集,其余3000张作为测试集。经过训练得到一个通用的卷积神经网络模型,然后构建了一个基于MATLAB的可视化平台。通过测试发现系统的汉字识别率为97.05%,英文字符识别正确率为98.2%,数字字符识别成功率为97.6%,达到了预期目标。统计结果见表2。
表2 识别统计结果
本文开发的基于PSO的卷积神经网络的车牌识别系统识别效果如图12所示。
图12 识别车牌结果
(1) 本文在充分利用我国的车牌特点,提出了一种基于CNN卷积神经网络和粒子群算法结合的车牌识别方法。
(2) 实验表明这种方法比传统的BP神经网络具有更高的识别正确率。但是对于国外的车牌以及最近的新能源车牌不具有识别能力。同时对于车牌所处的复杂环境下,识别正确率无法保证,这将是下一阶段研究的重点。