基于卷积神经网络的解扭曲车牌检测识别方法

2021-11-20 01:57王晓峰
计算机工程与设计 2021年11期
关键词:车牌卷积尺寸

王 昆,王晓峰,刘 轩,郝 潇

(1.山西大学 物理电子工程学院,山西 太原 030006;2.国网山西省电力公司检修分公司,山西 太原 030000)

0 引 言

自动车牌识别[1]是检测识别技术的重要应用,该技术一般首先进行车辆和车牌检测,然后通过光学字符识别[2](optical character recognition,OCR)识别出车牌号。虽然该技术已经取得了长足发展,但大部分车牌识别方法主要针对车辆和车牌的正前方视角,很少考虑更宽泛的图像采集场景。研究非理想情况下的车牌识别具有更高意义和价值。

随着前沿科学的发展(如深度学习),越来越多的车牌识别技术采用新技术以获得高精度的快速识别。如Hsu等[3]基于YOLO网络[4],通过轻微改动,扩大网络输出粒度以提升检测数量,并为两种类别(车牌和背景)设定了概率。Zhang等[5]根据车牌形态的结构化特点,改进Yolov2提取不同网络深度的多级细粒度特征,但对于复杂清晰或较为模糊的情况下处理效果不佳,聚类方法有待提高。Xie等[6]对两个基于YOLO的网络进行了训练,以检测旋转后的车牌。但该方法仅考虑平面上的旋转,未考虑由于相机视角倾斜而造成的更复杂的形变。

另外,卷积神经网络[7](convolution neural network,CNN)应用较为广泛,如Dong等[8]提出了一个基于CNN的车牌字符识别。通过感兴趣区域池化层对候选车牌区域所对应的特征图进行裁剪。Selmi等[9]基于形态算子、高斯滤波、边缘检测等预处理方法,寻找车牌区域和字符。

为了适应更多不同类型和不同拍摄情况下的车牌检测,本文提出了一种检测解扭曲-卷积神经网络(detection untwist-convolution neural network,DU-CNN),其主要工作总结如下:①采用了来自YOLOv3空间变换网络理念,通过SPP模块将不同分辨率的特征图转换为设计好的和全连接层相同维度的特征向量,避免了图像的尺寸对于所提DU-CNN网络的限制;②通过对仿射变化的系数进行回归,将发生形变的车牌重新“解扭曲”为接近正前方视角的矩形,使车牌识别的适应性更好;③为了增强训练数据集,由真实数据和人工合成数据组成混合数据集。实验结果验证了所提方法具有较好的鲁棒性和识别精度。

1 提出的方法

本文提出的方法包括3个主要步骤:车辆检测、车牌检测和OCR。给定一张输入图像,第一个模块检测场景中的车辆。在每个检测区域内,利用提出的检测解扭曲-卷积神经网络(DU-CNN),搜索车牌并对每个检测进行一次仿射变换回归,由此将车牌区域修正为接近正面视图的矩形。将这些修正后的检测输入到OCR网络中,以进行最终的字符识别。

1.1 车辆检测

车辆检测是很多经典检测和识别的基础,例如PASCAL-VOC[10]、ImageNet[11]等,因此,本文并未从头进行检测器的训练,而是根据一些标准,选择一个已知模型来进行车辆检测。首先,要求具备较高的查全率,因为对任何一辆包含可见车牌车辆的漏检,都会直接造成一次车牌完全漏检。其次,还需要具备较高的查准率,以使运行时间较低。基于这些考量,本文使用YOLOv3网络,其执行速度快(帧率约70 FPS),且在查准率和查全率之间有着较好的平衡。

YOLOv3是YOLO家族的第3个版本,在执行效率和检测准确率方面都有所提升,对于一般YOLO系列的目标检测方法,或者其它较为复杂的网络等,检测的准确性取决于最终的分类,而分类层由全连接层组成,由提取特征的数量确定。原始YOLOv3网络的一个重要缺点是图片尺寸必须是固定的,输入到网络的图像尺寸必须是416×416像素,这在实际情况中很少遇到。

针对上述情况,很多时候将输入的图片(或视频)进行一些预处理操作,例如图像剪裁、拉伸和缩放等,这会造成图像的有效信息的丢失,最终会导致图像的检测精度下降。因此,本文在原始YOLOv3网络中添加空间金字塔池化(spatial pyramid pooling,SPP)模块,SPP模块结构如图1所示,其由何恺明等[12]提出。引入SPP的原因就是为了避免图像剪切、旋转、缩放等操作造成的图像信息失真,同时解决图像特征的重复提取的问题,能在一定程度上降低计算成本,提高计算效率。使用SPP后,不同尺寸的图片得到的池化特征是一样长度,通过SPP模块将任意分辨率的特征图转换为设计好的和全连接层相同维度的特征向量。这是因为SPP使用了多个池化窗口,对特征图进行池化,将得到的结果合并之后作为输出结果,保证了固定长度的输出。因此,图像的尺寸对于添加了SPP模块的YOLOv3并没有限制。

图1 SPP的模块结构

在输入DU-CNN前,重新调整阳性检测的尺寸。一般来说,较大的输入图像有助于较小目标的检测,但会造成计算成本上升。在接近正前方(后方)的视图中,车牌尺寸和车辆包围框之间的比率较高。但该比率在倾斜(侧面)视图中会变得小得多,因为车辆的包围框会变得更大和更长。因此,为保持车牌区域的可识别性,需要将倾斜视图调整到比正面视图更大的尺寸。虽然可以利用3D姿势估计方法决定尺寸调整范围,但为了高效快速,本文提出了一种基于车辆包围框纵横比的方法。当车辆尺寸与其包围框之间的比率接近1时,可以使用较小的尺寸,随着该比率变大则需要增加输入图像尺寸。具体来说,尺寸调整因子fsc给出如下

(1)

式中:Wv和Hv分别为车辆包围框的宽度和高度。Dmin≤fscmin(Wv,Hv)≤Dmax, 因此Dmin和Dmax限定了重新调整后最小尺寸的包围框的范围。基于实验并尽量在准确度和运行时间之间保持较好的平衡,选择Dmin=288,Dmax=608。

1.2 车牌检测和解扭曲

车牌本身是矩形的平面目标,附着在车辆上作为身份标识。为充分利用其形状,本文提出了一种变型的卷积神经网络DU-CNN。该网络学习对发生各种不同形变的车牌进行检测,并通过对仿射变化的系数进行回归,将发生形变的车牌重新“解扭曲”为接近正前方视角的矩形。虽然在仿射变换之外也可使用平面透视投影,但透视变换中涉及到的触发可能会生成很小的分母值,由此产生数值不稳定性。

本文在开发DU-CNN时采用了来自YOLOv3空间变换网络[13]理念。DU-CNN的检测过程如图2所示。首先,将重新调整大小后的车辆检测模块的输出馈送到该网络。由此生成一个8信道特征图,其对目标/非目标概率和仿射变化参数进行编码。为提取扭曲车牌,首先考虑围绕cell(m,n)中心的一个固定尺寸的虚构正方形。如果该单元格的目标概率超过某个给定的检测阈值,则部分回归参数用于构建仿射矩阵,将虚拟正方形转换为车牌区域。由此可以轻易地将车牌解扭曲为水平对齐和垂直对齐的目标。

图2 DU-CNN的检测过程

1.2.1 网络架构

提出的架构共包含17个卷积层,其中10层位于残差区块内,其架构如图3所示。所有卷积滤波器的尺寸均固定为3×3。在除检测区块之外的整个网络中均使用线性修正单元(rectified linear unit,ReLU)激活函数。网络中包含4个尺寸为2×2的最大池化层,步长为2,以将输入尺寸降低到原来的1/16。最后,检测区块包含两个并行的卷积层:①一个卷积层用于推断概率,由softmax函数激活;②另一个卷积层用于仿射参数的回归,没有激活函数(或等效地使用恒等式F(x)=x作为激活函数)。

图3 提出的DU-CNN网络架构

1.2.2 损失函数

设pi=[xi,yi]T,i=1,…,4, 表示带注释的车牌的4个角点,以顺时针从左上角开始。同样,设q1=[-0.5,-0.5]T,q2=[0.5,-0.5]T,q3=[0.5,0.5]T,q4=[-0.5,0.5]T表示以原点为中心的标准单位正方形的对应顶点。

对于一张高度为H,宽度为W的输入图像,网络步长为Ns=24(4个最大池化层),则网络输出特征图的大小为M×N×8,其中M=H/Ns,N=W/Ns。 对于特征图中的每个点cell(m,n),均需要估计8个数值:前两个数值(v1和v2)为目标/非目标的概率,后6个数值(v3至v8)被用于构建局部仿射变换Tmn

(2)

式中:采用v3和v6的最大值函数以确保对角为正(避免不必要的镜像或过度旋转)。

为匹配网络输出分辨率,通过网络步长的倒数重新标定点pi, 并根据特征图中的每个点(m,n)重新确定中心点。通过应用正则化函数来实现这一点

(3)

式中:α为度量常数,代表虚构正方形的边。设α=7.75, 即增强训练数据集内最大和最小车牌尺寸之间的中点除以网络步长。

假定一个目标(车牌)位于cell(m,n)位置,损失函数首先考虑标准正方形的扭曲版本,和车牌的正则化注释点之间的误差,定义如下

(4)

其次,损失函数要估计目标是否位于(m,n)的概率。与SSD(single shot Multiplebox detector)检测的置信损失[14]相似,损失函数基本上为两个对数损失函数之和

fpr(m,n)=logloss(∏obj,v1)+logloss(1-∏obj,v2)

(5)

式中: ∏obj为目标指示函数,如果在点(m,n)存在一个目标,则返回1;如果在该点不存在目标,则返回0。 logloss(y,p)=-ylog(p)。 如果目标的矩形包围框与以(m,n)为中心的另一个相同尺寸的包围框之间的交并比(IoU)大于阈值γobj(根据经验将该阈值设为0.3),则考虑该目标在点(m,n)内。

合并式(4)和式(5)中定义的项,最终的损失函数如下

(6)

1.2.3 训练

为训练提出的DU-CNN,本文创建了一个包含196张图像的数据集,其中105张图像来自于Cars数据集,40张图像来自SSIG数据集(训练子集),51张图像来自AOLP数据集(学习子集)。由于减少了训练数据集内注释图像的数量,因此数据增强的使用是至关重要的。本文使用了如下增强转换:

(1)纠正:基于车牌注释对整个图像进行纠正,假定车牌位于一个平面上;

(2)纵横比:在区间[2,4]内随机设定车牌的纵横比,以适应来自不同地区的车牌尺寸;

(3)居中:车牌的中心成为图像中心;

(4)缩放:对车牌进行缩放,使其宽度匹配40像素至208像素之间的一个数值(基于车牌的可读性,根据经验设定)。使用这一范围定义式(3)中α的数值;

(5)旋转:以随机选择的角度执行3D旋转,以涵盖较大的相机范围设置;

(6)镜像:50%的几率;

(7)平移:从图像中心对车牌进行随机平移,仅限于移动中心周围208×208像素的一个正方形;

(8)裁剪:在平移之前考虑车牌中心,并围绕该中心裁剪出一个208×208的区域;

(9)颜色空间:对HSV颜色空间进行较小修改;

(10)注释:使用与增大输入图像时应用的相同空间变换来调整车牌4个角的位置。

通过以上选择的转换处理,可以从单个手动标注的样本中得到具有非常明显视觉特征的各种增强测试图像。本文使用ADAM优化器,以mini-batch(批尺寸32)对网络进行100 000次迭代训练。学习率设为0.001,参数β1=0.9,β2=0.999。 通过从训练集中随机选择并增广样本,生成mini-batches,由此在每次迭代后,可得到尺寸为32×208×208×3的新输入张量。

1.3 光学字符识别

提出的系统使用修改后的YOLOv3网络在经过校正的车牌上执行字符分割和识别,即,光学字符识别(optical character recognition,OCR),利用电子的方式从图片中提取出文字信息,然后用于其它领域,如文字编辑、搜索和识别等。该网络架构与文献[15]相同。但本文研究利用合成和增强数据,极大扩展了训练数据集。

人工创建的数据包括将一个字符串(7个字符)粘贴到有纹理的背景上,然后执行不同操作,例如旋转、平移、噪声和模糊等随机变换。图4描述了合成数据生成的流程,合成数据的使用能够显著提升网络通用性,从而实现使用完全相同的网络处理来自世界不同地区的车牌。

图4 合成数据的流程

2 实验与分析

实验使用的硬件配置为一个Intel i7处理器,8 Gb RAM和一个NVIDIA Titan X GPU。上述配置能够以8 FPS 的均值(针对到所有数据集)运行完整的ALPR系统。运行时间取决于输入图像中检测到的车辆数量。因此,提高车辆检测阈值将得到更高的FPS,但会降低查全率。开发环境为Python 3.5语言的PyCharm集成开发工具,原始YOLOv3由Keras框架提供。

2.1 数据集

本文的目标之一是开发在各种非约束场景下均性能良好的识别技术,因此,本文选择了4个可用的在线数据集,即OpenALPR[16]、SSIG[17]和AOLP[17](路面巡逻),这些数据集覆盖了大量不同的环境,见表1。本文考虑了3个不同的变量:车牌角度(正面和倾斜)、车辆与相机的距离(近、中、远),以及图片拍摄的地区。

表1 数据集介绍

在车牌失真方面,AOLP-RP子集是难度较大的数据集,其试图模拟相机安装在巡逻车辆上(或手持)时的情况。在车辆与相机距离这一方面,SSIG数据集的难度最大。该数据集由高分辨率图像组成,即使车辆距离较远,车牌依然具备可读性。这些数据集均不包括同时展示多个车牌的情况。

这些数据集已经覆盖了大量场景,但数据集依然缺少挑战性图像。因此,本文还手动注释了包含120张图像集合,该集合包含近、中、远距离,车牌角度有很多是倾斜的,且车牌具有一定模糊,有国内和国外的车牌。一些示例图像如图5所示。

图5 本文数据集示例图像

2.2 结果分析

提出的方法的实施流程中包括3个网络,根据经验设定以下可接受阈值:车辆(YOLOv3)和车牌(DU-CNN)检测的可接受阈值为0.50,字符检测和识别的可接受阈值为0.45。实验中,如果车牌的所有字符均被正确识别,且未检测到额外字符,则视为一次正确识别。对所有数据集均应用了完全相同的网络:对于给定类别的车牌(例如欧洲或中国),未使用任何特定训练程序对网络进行调整。仅针对数据集在系统流程中做出了微小改动。

图6给出了使用本文方法获得部分具有代表性的识别案例。由图6可以看出,对于倾斜,甚至一定的遮挡等情况,本文方法依然可以准确识别出车牌的重要标识。

图6 部分识别案例结果

为了进一步分析讨论,本文使用了两组训练数据对提出的系统进行评价,以展示在训练程序中纳入全合成数据的收益:①第一组训练数据包括真实增强数据,以及人工生成的增强数据;②第二组仅包括真实增强数据。两者分别表示为“真实+合成”和“无合成”,见表2。从表2中可以观察到,添加全合成数据提升了准确度(AOLP数据集的增益约为5%)。此外,为凸显对检测包围盒进行校正的收益,还给出了使用普通未校正包围盒的实验结果,见表2“未校正”。与预期相符,当使用未校正包围盒时,大部分正面视图的数据集的结果变化较小(处理OpenALPR数据集时的性能甚至出现微小提升),但在包含难度较大的倾斜车牌数据集(AOLP和本文数据集)中,使用未校正包围盒会显著降低准确度。表2还给出了商用和学术系统的实验结果比较,“/”表示没有采用对应数据集。结果表明提出的系统在受控场景数据集(车牌大部分在正前方,包括OpenALPR和SSIG)中的识别率与商用系统大致相当或更优。

表2 不同数据集的准确率结果/%

值得一提,文献[5,6,8]仅着眼于单个地区或数据集。性能比较验证了所提方法具有很好的通用性。值得一提,在大部分较难的数据集(AOLP和本文数据集)中,使用所提方法的车牌识别率,大大高于直接对注释后的矩形车牌包围盒应用OCR模块的识别率。该增益源自于DU-CNN所支持的解扭曲操作,该操作能够极大提升车牌扭曲程度较强时的OCR性能。简单来说,通过为每个检测单元生成一个仿射变换矩阵,实现对扭曲车牌的检测和解扭曲。这一步骤降低了OCR网络的工作量,减少了后者需要处理的失真情况,增强了总体识别性能。

为了进行较差拍摄情况下的识别比较,本文遴选30幅较大倾斜或模糊情况下的所获图像,本文方法采用校准后的方式,与商用“森诺”车牌识别进行比较。由图7可以看出基本上,在字符检测和识别的可接受阈值在0.45左右,两种方法均能差不多达到各自最佳准确率,但对于较差情况下的识别,本文方法更胜一筹,商用系统“森诺”的检测识别算法较少考虑极端情况,因为商用系统的CCD相机拍摄角度固定,要求的车道也是固定的,基本不考虑极端情况。若遇到不按规矩行车的司机或新手司机,可能会造成无法识别的情况,LED显示牌显示“临时车”,司机则不得不重新倒车再检测。这间接验证了所提方法的解扭曲操作的确可以提高OCR性能,增强系统的适应性。

图7 与商用系统在较差情况下识别性能比较

3 结束语

本文提出了一个用于非约束场景基于深度学习的车牌检测识别系统。通过为每个检测单元生成一个仿射变换矩阵,实现对扭曲车牌的检测和解扭曲,这一步骤降低了OCR网络的工作量,减少了后者需要处理的失真情况。通过在网络中添加SPP模块,避免了不同分辨率特征图对识别结果的影响。结果表明,所提方法在困难数据集(其中车牌以较大倾斜角度拍摄)中的性能优于当前其它方法,且在受控数据集中也能够取得较好结果。

未来,本文可能将解决方案扩展至摩托车的车牌检测,其主要挑战是摩托车或电瓶车车牌与汽车车牌有着不同的纵横比和布局。

猜你喜欢
车牌卷积尺寸
CIIE Shows Positive Energy of Chinese Economy
基于3D-Winograd的快速卷积算法设计及FPGA实现
数字图像处理技术在车牌识别系统中的应用
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法
D90:全尺寸硬派SUV
第一张车牌
基于MATLAB 的车牌识别系统研究
佳石选赏
一种基于卷积神经网络的性别识别方法