基于改进YOLOv3和BGRU的车牌识别系统

2020-09-04 04:58史建伟
计算机工程与设计 2020年8期
关键词:车牌尺度定位

史建伟,章 韵

(南京邮电大学 计算机学院,江苏 南京 210023)

0 引 言

近年来,车牌识别LPR(license plate recognition)技术受到了广泛的关注和研究。商业化方案中,部分车牌识别公司都具有较好的商业化版本,应用也较为广泛,包括成都火眼臻视、北京精英智通科技等。现阶段的一些车牌识别技术,将检测、分割和识别三者进行结合,该方案过程流程较为复杂,对于图像模糊粘连处理有一定难度,另外,车牌识别还容易受天气、颜色、光线等因素的影响。

本文的主要贡献如下:

(1)所提出的轻量级网络模型可以通过一次前向传播过程基本完成车牌端到端的检测与识别的任务,无需对车牌字符预先进行分割,由深度神经网络自身进行学习,并进行精细化的自动提取操作,节约了车牌识别的时间,提升了系统的识别效率,相比于其它模型,训练时间短,收敛速度快。

(2)本文改进YOLOv3网络,扩展多尺度检测的功能,细化定位精度,提升车牌定位效率。

(3)本文利用BGRU+CTC改进识别网络完成对已定位车牌的无字符分割的识别任务,明显缩短训练时间,提升了网络的收敛速度和识别准确率。

1 相关工作

车牌定位的目的主要是在图像中获取车牌的位置,常用的做法是利用边界框bounding box在图像中标出车牌位置,传统的定位算法主要有4个方向[1]:边缘特征、颜色特征、字符特征和纹理特征,一般来说,颜色和边缘特征的应用范围较广,因为车牌的形状较为固定,其边缘的密度相较其它图像更高,故而边缘特征在车牌检测中的使用率也较高。Chen J利用组合颜色特征和边缘信息来提取牌照[2]。在基于颜色分割的定位中,HSV颜色空间模型作用于车牌颜色阈值分割。在去除二进制图像中的噪声之后,使用形态学操作来填充某些断开区域的间隙。然后,利用基于轮廓形状比和满足车牌特征的轮廓区域的尺寸来提取目标区域。然而,传统定位方法的精度和速度有待提高。最近几年,目标检测算法取得了很大的突破,算法主要有两类,一类以区域建议为基础,再进行分类和回归的目标检测算法,如RCNN[3]、Mask RCNN[4],一类是基于回归的端到端的检测算法,如SSD[5]、YOLO[6]等,前者首先产生目标候选框,然后再对候选框进行分类与回归的处理,拥有较高的精度,后者采用回归的方式进行端到端的定位,速度较快,但精度略低。

车牌识别阶段,传统识别技术倾向于先对车牌字符采取分割的操作,然后使用光学字符识别(OCR)技术识别每个被分割的字符。Chen J实现了利用支持向量机(SVM)来识别中国车牌字符[2]。通过在两种类型的字符之间设计SVM,使用可以识别多个字符的多类分类器。结果表明,该方法在字母数字特征上表现良好,但对于汉字识别并不理想。Zherzdev S等提出了LPR-Net的概念[7],它是由轻量级卷积神经网络组成,因此可以端到端的方式进行训练并且不需要预先的字符分割,实验结果表明,该模型的识别准确率可达95%。

然而,大多数现有算法仅在受限条件下或使用复杂的图像捕获系统才能很好地工作。在相对复杂的环境中进行车牌识别的难度依然较大。相关挑战诸光线照明不够、扭曲、遮挡或模糊。传统的车牌定位和识别的方法通常将上述两个模块视为两个独立的任务,并分别通过不同的方法来解决它们。然而,二者其实是高度相关的。因此,本文提出了端到端的车牌定位和识别的方案,优化了车牌识别系统,提高了识别速度和准确。

2 网络模型

2.1 整体架构

系统的网络模型图1所示,由车牌定位,车牌识别两个部分组成。首先利用改进的YOLOv3检测网络对车牌做定位,获取车牌的角点坐标后,进行裁剪,并送入识别网络,再对车牌做特征提取,采用BGRU进行序列标注和译码的操作,最后利用CTC Loss优化目标函数在各个数据点的损失函数值,从而输出识别的车牌结果。

图1 系统模型框架

2.2 YOLOv3算法

YOLO可以获取到图像的整体信息,使用单个网络完成整个检测的方法,大大提升了同类目标检测算法的速度;YOLOv2[8]引入了anchor。同时使用了K-means方法,对anchor数量进行了讨论,在精度和速度之间做出折中。并且修改了网络结构,去掉了全连接层,改成了全卷积结构。在YOLOv2的基础上,YOLOv3[9]改进了不少,比如多标签分类,多尺度检测等,该变化使得检测速度大大加快,同时,在检测精度上也有很大的提升,该模型使用了很多表现良好的3*3和1*1的卷积方案,该网络对于小物体的检测效果也有一定的提升,随着输出的特征图的数量和尺度的变积层,另外,在后续进行多尺度检测时也采用了一些残差网络模块,正是由于采用了多尺度的检化,先验框的尺寸也需要相应的调整。YOLOv2已经开始采用K-means聚类得到先验框的尺寸,YOLOv3引入了Faster R-CNN采用bounding box[10]的思想,为每种下采样尺度设定3种先验框,总共聚类出9种尺寸的先验框,针对COCO数据集和VOC数据集都采用了3个尺度的进行目标检测,尺度小的物体用大的先验框,反之,尺度大的物体则用小的先验框。

相比于YOLOv2使用Softmax预测锚点框中包含物体的概率,YOLOv3则将其替换为了逻辑回归(Logistic Regression),当预测的目标类别很复杂的时候,逻辑回归进行分类则显得更为有效。

YOLOv3在训练的过程中,采用Logistic Regression和交叉熵Cross Entropy对类别进行预测,该方案让YOLOv3能够对单个目标采用多标签分类的策略。

2.3 基于YOLOv3的多尺度检测的改进

YOLOv3中,引入了FPN[11]网络,与此同时,采用高层的细粒度特征和高语义信息和低层的粗粒度特征,再结合上采样的技术,将不同层次的特征进行融合,从而对目标物体进行3个不同尺度特征层次的检测。

然而,在目标检测物的在图像中占比较小时,也会存在如下问题:

(1)其所对应的检测区域的像素所呈现的信息量则是受限的,故而导致了一些较为通用的目标检测算法在某些小物体检测的场景下效果不佳,相比专门为了检测小物体而设计的算法,更易受到本身场景的限制,应用范围有限的,通用性有待提高。

(2)在训练阶段,对于小物体的标注容易存在偏差,在目标物体较小的情况下,标记的误差会对检测效果产生较大的影响。

本文对YOLOv3的原有检测网络进行优化,将其检测深度扩展为4个尺度,该方案使其对较小车牌的检测更为精细,锚点框的选取更为准确,同时,也使得网络本身更好地利用低层和高层的不同级别的细粒度特征实现多尺度检测。

改进算法YOLOv3-LPR的网络结构如图2所示,其中的DBL即为Conv(卷积)+BN(批归一化)+Leaky Relu(带泄露修正线性单元)的组合,BN和Leaky Relu不可分,是网络中的最小组件,resn(n位数字)是残差结构,表示res_block(残差块)中有多少个res_unit(残差单元),其为网络的最大组件,concat则代表张量拼接,其会将中层以及后层的上采样进行拼接,该操作与残差层的add含义不同,拼接操作会增加张量的维度,而残差层的add是直接相加并不会带来张量数量的扩充。

图2 改进的多尺度检测框架YOLOv3-LPR结构

整个网络主要利用上采样的方式来实现多尺度的feature map(特征层),图中concat连接的是两个尺度一样的张量,将52×52尺度与104×104尺度通过(2,2)上采样进行拼接,扩展为网络的第4个尺度,进而扩充张量的维度,增加检测的细粒度,提升对于小物体的检测效果。

2.4 基于序列标注的车牌识别

在传统的LPR框架中,如文献[7]所述,字符分割对车牌识别的成功有很大的影响。如果分割不合适,则牌照将被错误识别,即使我们有一个高性能的识别器,可以处理各种大小,字体和旋转的字符。然而,字符分割过程较为复杂,其分割效果对识别影响很大,且易受到噪声和不良照明的影响。传统的识别方案中通常采用了许多预处理,分割和识别的方法,但未能取得较好的效果。故而,在这一部分中,我们使用一种新的识别技术,将车牌中的字符视为未分段的序列,并从序列标记的角度来解决问题。

2.4.1 LSTM+CTC识别模型的改进

相比传统的车牌识别算法,如模板匹配,SVM,ANN等,普遍存在速度慢,精度不高的问题,尤其在中文车牌的识别上,此类算法对于汉字的识别效果并不理想,近年来,LSTM+CTC的方案成为了端到端车牌识别算法的主流,但本文所采用的BGRU+CTC的识别算法相较于LSTM+CTC在网络训练时间,收敛速度,识别精度上都有所提升。

基于序列标记的车牌识别的整个过程如图3所示。它主要由3个子部分组成。首先,将牌照边界框转换成一系列特征向量, 然后使用Adam和BP算法训练具有GRU(gated recurrent unit)的RNN模型以标记序列特征。最后将CTC(connectionist temporal classification)应用于RNN(recurrent neural network)的输出层,分析RNN的标记结果并生成最终识别结果。

图4则为BGRU序列识别过程对应的参数模型,该方法允许在没有字符级别分割和识别的情况下重新识别整个车牌,明显改善了传统识别模式依赖先分割后识别的方案,减少了识别过程所需的时间。GRU可以帮助捕获序列中的特征之间的相互依赖性,利用待标语素左侧和右侧上下文的信息,通过门限机制实现对长距离依赖的建模,并且在处理低质量图像时依然可以取得不错的效果。因此,本文模型采用BGRU级联的构造结构,很好地利用了GRU本身的特性,同时也增强了其序列识别的性能。另外,精密的CNN模型所学习到的高级特征对于这种方法的成功也至关重要。

图3 序列识别模型

2.4.2 序列特征生成

CNN具有从图像中学习信息表示的强大能力。这里应用预训练的7层CNN模型从裁剪的车牌图像中提取顺序特征表示。受He P等[12]工作的启发,我们用滑动窗口的方式在整个图像中提取相应的特征。首先,对图像做一定的预处理,将每一个检测到的车牌转为灰度图像,然后将车牌的大小调整为164*48,其高度与CNN模型的输入高度相同,中文车牌是由7个字符组成,其中包含1位省份汉字简称和6位字母和数字的混合体,另外中国车牌共有31个省份,混合体中包含10个阿拉伯数字和24个英文字母(O和I不计算在内),故而全连接层共有65个类,而最终根据所需的位数,利用Softmax层做分类。经过序列识别网络的处理,全连接层输出了18*66维(含1位空格符)的特征向量,候选车牌图像上的特征也被从左到右被依次提取,本文中该特征图从左往右依次和7个字符信息网络层相对应,并利用Dropout进行随机(rate=0.25)删除一些隐藏神经元,分类层输出的7位结果对应网络的识别结果。这不仅保存了序列信息,同时还获取了有效的RNN的上下文信息,其特征向量之间的相互关系对字符识别有很大帮助。

图4 BRGU序列识别模型

2.4.3 序列标注

RNN较为特殊,该网络具有对过去的上下文信息进行预测的能力。且相比对每个特征进行单独的处理,该机制使得序列识别操作更加的稳定。考虑到RNN在训练期间容易产生梯度爆炸的可能,我们采用了LSTM(long short-term memory)的变体GRU。它包含一个存储器单元和更新,重置两个乘法门,比LSTM少了一个门函数,在参数规模上也比LSTM少了1/4,所以整体上GRU的训练和网络收敛速度要快于LSTM,可以长时间存储上下文,并获取序列特征之间的长程依赖关系。

序列标识即对特征序列中的每一层特征都用GRU递归处理,每一次都会用一个非线性状态的函数g(·)来对状态ht进行更新,该函数会进一步将当前特征xt和处于邻接状态的ht-1或ht+1作为输入

随后是Softmax层,其将GRU的状态转换为7个类的概率分布

整个特征序列被最终转换为概率估计序列p={p1,p2,…pL},其长度与输入序列相等。

2.4.4 序列译码

最后,本文的网络将概率估计P的序列转换为字符串,其中,CTC专门设计用于序列标记任务,可以解决输入特征和输出标签之间对齐关系不确定的时间序列问题,也无需数据预分割。它能够直接将预读序列解码为输出标签。故而,本文中选择具有反向传播的梯度下降算法Adam算法来训练网络,将它直接连接到GRU的输出,CTC的输入恰好是GRU的输出激活,另外,采取序列译码的策略是为了利用GRU的输出序列进一步获取具有最大概率的近似路径的最优解。

3 实验结果与分析

3.1 平台与数据集

为了验证本文车牌定位算法和识别算法的有效性进行了相应的仿真实验,实验平台为Intel(R) Xeon(R) CPU E5-2643 v4 @ 3.40 GHz,8 GB RAM,NVIDIA GeForce GTX 1080 Ti,采用CUDA8.0 加速,车牌定位,识别的模型的实验数据来源停车场,收费站,CCPD[13]开源数据集和广东省智能交通系统重点实验室的开源数据集Open-ITS,共计14 484张,其中识别部分的数据需先对原图进行车牌检测并裁剪,示例数据如图5所示,此前有采用过利用OPENCV和车牌字体生成的数据,效果并不理想,故而本文采用的数据均为真实数据。

图5 识别模型训练数据样例

3.2 车牌定位模型验证

在车牌定位模型中改进了YOLOv3模型,扩展了多尺度检测的功能,融合了多级细粒度的特征[14],训练时为了避免产生过拟合的现象,同时也为了提升模型训练速度,选用动量常数为0.9,学习率为动态衰减,初始值为0.001,衰减步长为40 000,衰减率为0.0005,批大小为64,最大迭代50 200次,框架为DarkNet。车牌定位的目的主要是为了获得车牌所在的区域,为后续的车牌识别做准备,由于车牌定位的精度直接影响了车牌识别的效果,故而,采用反应定位坐标准确度的平均IOU(intersection over union)指标来衡量车牌定位的有效性,该指标值越大,则定位越准确,效果越好,相关网络训练参数变化散点图如图6所示。

图6 网络训练参数收敛散点图

如表1所示,因检测尺度的深化,改进算法YOLOv3-LPR复杂度有所增加,在检测速度上,尽管比原有算法低了4.4 fps,但是mAP值却提高0.6,综合性能有所提升。

表1 多尺度检测算法效果比较

3.3 车牌识别模型验证

端到端的车牌识别模型训练共使用了14 484张图片,采用分步策略,批大小为128,训练周期为25,每个训练周期数据迭代800次。同时利用Adam算法优化梯度下降,学习率为动态衰减,框架为Keras; 在保证其它参数不变的情况下,与现阶段比较流行,且效果很好的车牌识别方法BLSTM+CTC在训练时间Batch/Time,CTC Loss和识别准确率Accuracy这3个方面进行比较,验证本文识别算法的有效性,结果如图7,图8,图9所示。相较于一些比较传统的算法,如模板匹配,HOG+SVM,BP神经网络等,其本身与BLSTM+CTC和BGRU+CTC的效果有较大差距,故识别模型验证阶段并未做比较。

图7 BLSTM+CTC和BGRU+CTC的训练时间对比

图8 BLSTM+CTC和BGRU+CTC的CTC Loss对比

图9 BLSTM+CTC和BGRU+CTC的识别准确率对比

从图7可以看出,在相同周期内,BLSTM+CTC的训练时间明显高于BGRU+CTC的训练时间,这是因为GRU网络本身包含一个存储器单元和更新,重置两个乘法门,比LSTM少了一个门函数,从而,在矩阵乘法的数量上有所下降,参数规模也比LSTM少了1/4,所以整体上BGRU+CTC的训练和网络收敛速度要快于BLSTM+CTC,在数据量比较大的情况下,BGRU+CTC可以节省很多的训练时间。

为了更完整的显示CTC Loss变化的细节,故将图8中的Epoch=1状态时BLSTM+CTC和BGRU+CTC的值略去了,其分别为6.6563和5.2852,从图上可以清晰地发现,尽管从第5个Epoch开始,两者的CTC Loss值趋近一致,但在训练的初始阶段,BGRU的CTC Loss值下降速度更快,与此同时,CTC Loss的变化速度也直接影响了识别准确率Accuracy的大小。

如图9所示,BGRU+CTC的结构在更短的时间内获得了相对较高的准确率,在Epoch=3时就达到了96.33%,相较之下,BLSTM+CTC却只有94.75%,低了约1.5%;另外,从整个周期来看,BGRU+CTC取得最高准确率为Epoch=18时的98.42%,但BLSTM+CTC取得的最高准确率则为Epoch=21时的97.92%,与前者相比,略低了0.5%,从平均值看,BGRU+CTC准确率为97.08%,BLSTM+CTC为96.28%;故而,综上比较,BGRU+CTC识别模型的效果更好。

如表2所示,本文改进算法YOLOv3-LPR+BGRU+CTC相较其它算法,识别准确率最高,尽管提高了模型复杂度,在时间上有所增加,但是综合性能还是最优的。

从上述实验数据的对比中,不难发现,在定位方法一致时,识别模块采用BGRU+CTC,其车牌的识别的准确率有一定的提升,且由于BGRU的结构相较于BLSTM更加的简洁,故而在识别速度方面也具有一定的优势;另外,在定位模块进行多尺度改进的算法,相较于原算法,其模型复杂度有所提升,故而,识别速度有所减慢,识别时间增加了3.71 ms,但对系统整体性能的影响不大,然而,改进后的模型的识别准确度却提升了0.35%;其次,对比改进后的YOLOv3-LPR和OPENCV两个定位模块,实验结果表明识别速度有显著提升,其识别时间大约减少了39%,综合考虑各项指标,本文模型YOLOv3-LPR+BGRU+CTC表现出的效果最优。

表2 定位+识别算法效果比较(OpenITS)

4 结束语

针对传统车牌识别方法准确率不高,速度慢的问题,本文提出了定位-识别一体化模型,简化了识别流程,实现了车牌的端到端的定位和识别,在定位模型中,改进YOLOv3的多尺度检测,使其对于车牌有更好的定位性能,在识别模型中,改进传统的BLSTM+CTC识别模型的架构,优化识别效果,通过实例验证,本文改进的模型整体效果良好,其在识别率和可靠性方面具有一定的优势。

猜你喜欢
车牌尺度定位
财产的五大尺度和五重应对
《导航定位与授时》征稿简则
Smartrail4.0定位和控制
数字图像处理技术在车牌识别系统中的应用
找准定位 砥砺前行
第一张车牌
基于MATLAB 的车牌识别系统研究
宇宙的尺度
9
“他的车牌是……”