基于深度学习和颜色边缘特征的车牌定位算法
2020-11-02刘晓瑶邱建林吴湘君
刘晓瑶,邱建林,吴湘君
(1.南通大学 电气工程学院,江苏 南通 226019; 2.南通大学 信息科学技术学院,江苏 南通 226019)
0 引 言
传统的车牌定位方法包括边缘检测[1]、小波变换[2]、纹理特征提取[3]、颜色特征提取[4-6]、角点检测[7]等。这些方法通过人工提取车牌特征来完成车牌的定位,提取的车牌特征单一,且受环境影响较大,在复杂环境下的定位效果并不理想。多特征融合的车牌定位算法[8,9]虽然能避免单一特征所带来的环境适应性差的问题,但在背景复杂的环境下,这些方法仍然有很高的误检测率。支持向量机(support vector machine,SVM)等机器学习算法的引入使背景中的噪声能进一步被抑制[10,11],但由于传统机器学习算法鲁棒性较差,在复杂环境下的效果仍然不理想。罗斌等采用全卷积神经网络进行特征提取,通过对车牌进行角点回归来完成车牌定位[12]。YOLO目标检测卷积神经网络能够通过回归车牌的位置和大小来完成车牌定位[13]。这些算法都通过卷积神经网络对全图进行特征提取,处理的对象较复杂,因此需要更复杂的网络结构才能完成任务,检测速度较慢。
针对已有车牌定位算法鲁棒性差和检测速度慢的问题,本文将颜色边缘特征提取和卷积神经网络相结合,简单提取车牌的颜色边缘特征后分割出感兴趣区域(region of interest,ROI),然后通过深度卷积神经网络提取ROI的深层特征,去除ROI中的伪车牌,标记出检测到的车牌,大大降低了卷积神经网络的运算量,提升了车牌检测算法在复杂环境下检测的准确率和检测速度。实验结果表明,相较已有的车牌定位算法,该算法在复杂环境下具有更好的鲁棒性,在保证检测速度的同时仍然能够达到很高的准确率。
1 算法设计
本文提出一种结合颜色边缘特征和卷积神经网络的车牌定位算法,该算法包括ROI的提取和ROI的识别两部分。首先根据颜色边缘特征从原图中分割出ROI,再通过深度卷积神经网络对ROI进行识别分类,去除伪车牌并标记车牌区域。算法流程如图1所示。
(1)将待检测图像从RGB颜色空间转化到HSV颜色空间,根据车牌的颜色特征设置H、S、V这3个通道分量值的阈值范围,分割出符合约束条件的图像。
(2)对分割出的子区域进行高斯滤波去除噪声,然后通过Sobel边缘检测提取边缘特征并进行二值化,最后通过形态学操作获取ROI。
(3)将获得的ROI通过卷积神经网络来提取深层特征并进行分类,去除其中的伪车牌,同时将检测出的车牌进行标记。
图1 算法流程
2 颜色边缘特征提取
我国的机动车牌在颜色和纹理上都具有明显的特征,通过颜色分割和边缘检测能够快速提取图像中的ROI。对这些ROI进行深层特征提取,这样既能保留高分辨率图像中感兴趣的特征,防止因为缩放图像导致的细节丢失,又能提高车牌定位算法的检测速度。
2.1 颜色分割
自然环境下,光线的明暗变化将导致车辆牌照颜色的变化,从数字摄像设备采集到的图像为RGB颜色模型,但R、G、B这3个分量对光线的强弱较敏感,因此不适合用来对车牌图像进行颜色的分割[6]。而HSV色彩空间采用色相(Hue)、饱和度(Saturation)和亮度(Value)来描述颜色,更符合人类的视觉特性,因此采用HSV色彩模型能够更好的对车牌图像进行颜色分割。RGB色彩模型和HSV色彩模型的转换如式(1)~式(3)所示
v=max(r,g,b)
(1)
(2)
(3)
中国的车牌类型分为蓝底白字、黄底黑字、白底黑字和黑底白字4种,本文以蓝底白字车牌为研究对象,通过对不同环境和光照下蓝底白字车牌的图像进行颜色统计,发现车牌底色H值分布在87~125之间,S值分布在43~255之间,V值分布在32~255之间。
待检测图像如图2(a)所示,f(x,y)(0≤x≤xmax,0≤y≤ymax)为待检测图像I位于坐标(x,y)的像素值。将待检测图像I转换到HSV色彩空间进行阈值分割,生成一幅二值图像IMASK如图2(b)所示。g(x,y)(0≤x≤xmax,0≤y≤ymax)为图像IMASK位于坐标(x,y)的像素值。如果图像I在坐标(x,y)上3条通道的分量值都在指定的阈值范围内,则令g(x,y)=255,否则令g(x,y)=0。集合C={f(x,y)|g(x,y)=255}表示颜色分割的结果。
图2 颜色特征提取
2.2 边缘检测及连通域分析
部分车牌受车身颜色的影响,仅通过颜色特征很难将车牌从背景中分割出来。我国车牌区域由多个水平排列的字符构成,并且字符颜色和车牌底色存在较大差异[6],呈现出明显的边缘特征,采用边缘检测算法能够有效的对车牌的边缘特征进行提取。钟伟钊等对几种常用于车牌检测的边缘检测算子进行了分析和比较[14],综合考虑各边缘检测算子的特性,本文采用Sobel算子提取车牌的边缘特征。水平方向Sobel算子如式(4)所示,用来检测图像的垂直边缘。垂直方向Sobel算子如式(5)所示,用来检测图像的水平边缘
(4)
(5)
对颜色分割结果进行边缘检测之前需要进行灰度化处理,使Gray(x,y)=0.299R(x,y)+0.587G(x,y)+0.114B(x,y),其中R(x,y)、G(x,y)、B(x,y)分别表示集合C中元素在R、G、B通道的分量值,集合G={Gray(x,y)|g(x,y)=255}表示对集合C进行灰度化处理的结果。当g(x,y)=255时,令IMASK中g(x,y)=Gray(x,y),从而获得灰度图像IGRAY,完成对颜色分割结果的灰度化处理。对IGRAY采用高斯滤波去除噪声,然后采用Sobel算子进行边缘检测并对结果进行二值化,获得边缘特征图ISOBEL,用集合S={a(x,y)|a(x,y)=255}表示提取出的边缘信息,a(x,y)是ISOBEL位于坐标(x,y)处的像素值,边缘特征图如图3所示。
图3 边缘特征图ISOBEL
对边缘检测结果ISOBEL采用数学形态学操作来获取ROI。数学形态学操作是基于集合论基础上形态学数学的一系列图像处理操作的合集,主要包括4个操作:膨胀操作、腐蚀操作、开运算和闭运算。其中膨胀操作如式(6)所示,腐蚀操作如式(7)所示。B为形态学操作所需的结构元素,集合S为需要被处理的对象,Ba表示结构元素B平移a(x,y)后构成的新的像素点集合
S⊕B={a|Ba∩S≠∅}
(6)
SB={a|Ba⊆S}
(7)
首先对ISOBEL进行一次闭运算,这样既有助于车牌区域的融合和连通域的形成,同时还能滤除一些较小的噪声区域。闭运算需要先进行一次膨胀操作然后进行一次腐蚀操作,因此采用5×5的结构元素对集合S进行一次膨胀操作和一次腐蚀操作。然后采用12×5的结构元素对闭运算结果连续进行3次膨胀操作,获得ROI的连通域,形态学处理结果如图4所示。
图4 形态学处理结果
对获取的ROI连通域进行简单的筛选,去除其中面积过大和过小的连通域,对筛选出的连通域求取最小外接矩形并在原图I中进行标记,该最小外接矩形所标定的区域即为颜色边缘特征提取所获得的ROI,ROI提取结果如图5所示。
图5 感兴趣区域
3 卷积神经网络设计
相对于传统机器学习算法和BP神经网络,卷积神经网络在车牌检测中拥有更好的性能[15]。经过颜色边缘特征提取产生的ROI中存在部分与车牌特征相似的伪车牌,基于深度学习的车牌检测方法的核心在于设计更有效的二元分类器来检测ROI中的车牌。本文提出一种车牌检测卷积神经网络(license plate recognition convolutional neural network),简称PR Net,能够有效检测ROI中的车牌。
3.1 卷积神经网络结构
PR Net输入大小为96×32的图像,经过六层卷积层、三层下采样层和两层全连接层提取图像的深层特征。第一层卷积层具有64个5×5的卷积核,第二层和第三层卷积层具有128个3×3的卷积核,第四层到第六层卷积层具有256个3×3的卷积核。在第一层、第三层和第六层卷积层后采用步长为2,大小为2×2的窗口进行最大值下采样,最后采用两层全连接层来输出结果。网络结构如图6所示。
图6 PR Net结构
为了提高神经网络对模型的表达能力,需要在每层隐含层和输出层后采用激活函数提升模型的非线性能力。PR Net采用ReLU函数作为隐含层的激活函数,该激活函数在反向传播求取误差梯度时计算量较小,可以加快模型的训练速度,同时会使一部分神经元的输出为0,这样就造成了网络的稀疏性,缓解了过拟合问题的发生。输出层采用Sigmoid激活函数,用来预测该输入可能为车牌的概率。
3.2 卷积神经网络模型的训练
卷积神经网络的结构设计完成后,需要采用训练集对网络进行适当的训练才能获得有效的模型。通过对3000张在不同环境和天气下采集的车辆图像进行颜色边缘特征提取,产生14 577张ROI图像,其中包括5740张正样本和8837张负样本,将样本进行人工标注,样本的标签为1时表示该样本为车牌图像,为0时表示该样本为伪车牌图像。对部分和车牌较相似的负样本进行旋转拉伸变换,将样本扩展至16 000张并以此作为训练集,训练集中部分训练样本如图7所示,其中第一行为负样本,第二行为正样本训练过程分为前向传播和反向传播两部分,PR Net在前向传播初采用一组符合截断正态分布的随机数对权重进行初始化,之后对训练集中样本的类别进行预测并计算误差,然后在反向传播过程中计算损失函数对每个权重的偏导数并通过优化算法更新网络中的权值。前向传播过程中如果第l层为卷积层,则前向传播过程中第l层的输出为M个特征矩阵组成的三维张量,结果如式(8)所示,其中*表示卷积操作,M为卷积核的深度
图7 训练集样本
(8)
如果第l层是下采样层,则前向传播过程中下采样结果如式(9)所示,其中pool表示采用保留区域内最大特征值的方式对特征图进行下采样。如果第l层是全连接层,则前向传播过程中第l层的第j节点的输出如式(10)所示,其中M表示RP Net在第l-1层中节点的个数
al=pool(al-1)
(9)
(10)
前向传播过程中经过隐含层来提取图像的深层特征,最终输出z来预测该输入可能为车牌的分数。通过Sigmoid激活函数将输出z限定在0到1之间,以此来表示该输入可能为车牌的概率p,Sigmoid激活函数如式(11)所示
(11)
当PR Net输出的结果与我们的期望值不相符时,求出预测值与期望值的误差,进行误差的反向传播,将样本的标签y作为模型的观察值,采用交叉熵损失函数计算损失值。损失函数如式(12)所示,其中N为样本数,p为样本的预测值,样本标签y采用One-hot编码来表明概率分布
(12)
将获取的误差值J层层返回并计算出每一层的误差,然后采用Adam优化算法将J进行反向传播,对PR Net中的权值进行更新。将PR Net在训练集上经过多次迭代训练使模型趋于收敛,获得有效的车牌检测模型。
3.3 卷积神经网络模型的测试
将图5中的ROI图像尺寸调整为PR Net模型的输入尺寸,并依次将其输入到PR Net中,通过前向传播算法来预测ROI图像可能为车牌的概率p,当p小于0.5时,判定该ROI为伪车牌,当p大于0.5时,判定该ROI为车牌,对其进行保存并且在原图I中进行标记,车牌定位结果如图8所示。
图8 车牌定位结果
对500张车辆图像进行颜色边缘特征提取,产生2500张ROI图像并将其作为测试集。在该测试集上将部分经典的卷积神经网络模型以及文献[15]提出的车牌分类模型和本设计提出的PR Net模型进行对比测试。其中Alex Net拥有5层卷积层,采用批量随机梯度下降算法进行模型的训练,相对于传统的机器学习分类算法而言具有不错的表现。VGG Net拥有19层卷积层,相对于Alex Net模型中首层采用了尺寸为11×11的卷积核,VGG Net全采用大小为3×3的卷积核。文献[15]所提出的车牌分类算法基于LeNet5卷积神经网络,将图像的输入尺寸缩小到24×24并减少了一层全连接层,结构较简单。将各算法在测试集上进行性能测试,对比结果见表1。
表1 不同CNN模型的性能比较
通过各模型在测试集上的表现可以看出,文献[15]所提出的网络模型检测速度最快,但由于模型结构简单,鲁棒性较差,难以对倾斜、光照不均以及模糊或有污损的车牌进行有效的检测,检测准确率较低。Alex Net模型采用尺寸更大的卷积核进行卷积运算,导致运算量的增加,但网络结构较浅,实际应用中检测效果也一般。由于VGG Net具有更深的网络结构,能够提取车牌图像更深层的特征,对倾斜和光照不均的车牌也能有效进行检测,但更深的网络结构导致该算法的运算量较大,因此检测速度较慢。相较于Alex Net模型,本文提出的PR Net模型拥有更深的网络结构,首层采用尺寸为5×5的卷积核,比VGG Net拥有更大的感受视野,由于结构比VGG Net更精简,因此在保持较高的检测准确率的同时,检测速度更快。
4 实验分析
实验采用型号为i7-7700k,频率为4.2 GHz的CPU,16 GB的内存以及型号为GTX1070Ti的GPU进行测试。对比实验在Pycharm2018集成开发环境下采用Python语言完成。神经网络模型在Google发行的神经网络开源框架Tensorflow上设计与实现,并采用NVIDIA推出的通用并行计算架构CUDA(compute unified device architecture)加速模型的训练。
实验测试数据由测试集A和测试集B两部分组成,其中测试集A包括1795张在不同环境下收集的车辆图像。将图像经过颜色边缘特征提取后,统计每张图像中的ROI数量n,并将n作为衡量该图像背景复杂度的指标。图9(a)为测试集A中背景复杂度较低的样本,图9(b)为测试集A中背景复杂度较高的样本。
图9 测试集A样本
根据n将测试集A分为6组,每组样本中的样本数以及平均ROI数量见表2,其中每组样本中ROI的平均数量依次上升,用于测试算法在不同背景复杂度下的性能。测试集B由1189张在随机环境下采集的车辆图像构成,用于测试算法在自然环境下的平均性能。
表2 测试集A
实验首先基于测试集A,将本文提出的车牌定位算法分别与文献[6]、文献[11]和文献[12]中的算法进行比较,以此来测试算法在不同背景复杂度下的性能。算法的准确率和响应时间的对比结果分别如图10和图11所示。
图10 算法准确率比较
实验结果表明,在背景复杂度较低的环境中,所有算法都能取得较好的效果,这是由于背景中不包含或者包含较少与车牌特征相似的噪声。随着环境中背景复杂度的提升,文献[6]和文献[11]的算法准确度有明显下降。由于采用神经网络提取深层特征,文献[12]和本文的算法仍然能够保持较好的效果。在运行速度方面,无论图像背景复杂度如何,文献[12]都采用对全图进行卷积的方法来完成车牌检测,因此运行速度较慢,而文献[6]、文献[11]和本文的算法都是对ROI进行操作,处理的图像背景复杂度越低,算法的速度越快。基于测试集B对全部算法进行比较,以此来反应自然环境下各算法的平均性能,结果见表3,实验结果表明,与传统车牌定位算法相比,本文算法拥有更高的准确度,与文献[12]所提算法相比,本文算法在保证算法准确度的同时,检测速度大大提升。
表3 平均性能比较
5 结束语
在复杂环境下,特别是在车牌存在倾斜以及背景中包含和车牌具有相似特征的噪声时,传统车牌定位算法难以进行准确的定位,采用卷积神经网络直接对输入图像进行处理又导致计算量大大增加。针对以上问题,本文算法通过颜色边缘特征进行ROI的提取,并设计了一种有效的车牌分类卷积神经网络模型来去除ROI中的伪车牌。实验通过两组测试集对模型进行测试,验证该算法在复杂环境下性能明显优于其它的车牌定位方法,在保证检测速度的同时能达到更高的准确率,算法拥有更好的鲁棒性。