吴 静,王智文*,1b,2,王康权,孙金芳
(1.广西科技大学 a.理学院;b.计算机科学与技术学院,广西 柳州 545006;2.广西师范大学 广西多源信息挖掘与安全重点实验室,广西 桂林 541004)
电动自行车作为人们出行的交通工具之一,使用者众多,但电动自行车违章较多,事故发生率较高。车牌识别技术不仅对机动车交通管理有着积极作用,对电动自行车违章行为也有着重要的规范作用。因电动自行车车牌与机动车车牌具有一定的相似性,鉴于成熟的机动车违章牌照识别系统,本文提出了基于深度学习的电动自行车车牌识别算法。
在车牌识别领域,传统的识别方法需要提取车牌中的单个字符输入网络进行识别,该方法十分依赖字符分割的准确性。Azad等根据车牌字符和底板颜色不同,利用垂直投影法进行字符分割。Pirgazi 等采用统计特征、过滤方法和形态学算子对车牌字符进行分割与提取。但是,当车牌字符之间间隔不清晰、粘连或因光照不均导致字符难以分割时,后续单个字符识别的步骤则难以进行。
由于强大的特征学习能力,光学字符识别(optical character recognition,OCR)研究能够将语言知识应用于场景文本识别,实现对字符的读取。将OCR应用于车牌字符识别中,能够实现输入车牌图像并输出完整的字符串而无需进行字符分割。Wang等引入了一套全面的中国车牌数据集,提出高精度、低计算成本的多任务卷积神经网络(multitask convolutional neural network,MTCNN),主要用于实现复杂场景中的车牌字符识别。Li等将字符串读取视为序列标签问题,对具有长短期记忆(long short-term memory,LSTM)的循环神经网络(recurrent neural network,RNN)进行训练,通过卷积神经网络(convolutional neural networks,CNN)识别从整个车牌中提取的序列特征。Zhang 等利用CycleGAN模型生成车牌图像,提出了图像到序列的车牌识别网络。CycleGAN 网络能够获得大量的训练数据,提高识别精度;同时其具有基于空间注意力的二维车牌识别器,能够在各种场景下准确而稳健地识别具有不同模式的车牌。胡逸龙等针对特定颜色类型车牌调整网络结构,并在识别模型中添加卫星通信网络(satellite telecommunications network,STN),矫正车牌形变问题。同样,针对车牌角度倾斜问题,也有文献对其进行研究,将车牌矫正后识别精度有明显的提升。
鉴于电动自行车车牌和机动车车牌的相似性,本文采用深度卷积神经网络的研究方法,以广西壮族自治区柳州市为图像收集地点,自建电动自行车车牌数据集。车牌字符构成与机动车基本相同,包含:汉字、英文字母以及阿拉伯数字,字符普遍分布在2 层。本文对卷积循环神经网络(convolutional recurrent neural network,CRNN)做了一定改进,使其在电动自行车车牌数据集上达到最优效果。
对于较复杂的文字、手写字符和乐谱等,CRNN模型都具有较好的识别效果,且CRNN 模型对于任何长度的序列都没有限制,也不需要分割字符或详细的字符标注,模型参数少,训练速度快。因此,参考经典的文本识别模型CRNN 的网络架构,对其中的部分进行改进和优化,以适用于电动自行车车牌数据集,设计出如图1 所示的车牌识别网络框架。车牌识别模型主要包括3个部分,分别是卷积神经网络(CNN)、循环神经网络(RNN)以及连接时序分类(connectionist temporal classification,CTC)。其中,CNN 提取图像特征,RNN 提取字符序列,CTC 模块解决字符无法对齐的问题。
图1 车牌识别网络框架图
在CRNN 原文中,特征提取部分的CNN 框架对ⅤGG结构做了微调。首先,CNN框架中将第三个和第四个最大池化层的核尺度设为1×2,能够方便地将CNN 的提取特征作为RNN 的输入。其次,在第五个和第六个卷积层的后面都添加了批量归一化层,加快了网络的训练速度。在进入CNN之前,原始图像的高度会被缩放为32。特征序列的每一个特征向量在特征图列的方向上从左向右生成,即第个特征向量与第个特征图相连接,每个特征向量的宽度被设为单像素。
参照CRNN的CNN部分设置,本文的CNN共设置5个卷积层,精简了原文的网络框架,减少了参数。本文的CNN在第五个卷积层后面添加了BN层,以加快网络的训练速度。激活函数采用LeakyRelu 函数,LeakyRelu 函数是Relu 函数的变体,是在Relu 函数的负半区间引入一个泄露值,使输出对负值输入有很小的坡度,能够解决Relu函数进入负区间后导致神经元不学习的问题。本文CNN中共设置了4个最大池化层,同样地,后2个池化层的卷积核大小为1×2。除了最后一层卷积层的卷积核尺寸为2×2且不做补零操作,其余卷积核尺寸均为3×3,padding=1。本文统一将输入图像的大小调整为32×160,通过CNN 后输出的特征图大小为512×1×41。
表1 CNN网络结构
序列预测网络用于预测特征序列中的每一帧标签分布。在序列文本识别领域,RNN 有很强的捕捉上下文的能力。然而传统的RNN 在处理长文本时会丧失连接较远信息的能力,且容易出现梯度消失问题,造成网络难以收敛,给训练增加负担。LSTM 是一种特殊的RNN,可以学习长期依赖信息。它通过门控状态来控制传输状态,记住需要长时间记忆的信息而忘记不重要的信息。图2表示时刻细胞的状态,从左到右依次是LSTM 的遗忘门、记忆门和输出门。H表示-1 时刻的输出,C表示上一个单元格状态,x为当前时刻的输入。图中圆圈里的符号表示加法和乘法,为Sigmoid函数。
图2 LSTM单元图
式(1)—式(3)为时刻每个门以及H和C的计算过程。
单向的LSTM只用到了过去的上下文,而在车牌特征序列中,认为2 个方向的上下文都是有用的;因此,本文使用如图3 所示的双向LSTM 结构,前向的利用过去的信息,反向的利用未来的信息。这样的结构不论是在图像文本检测还是语音识别中,都被证明比单向LSTM的预测更为准确。
图3 BiLSTM结构图
如图3 所示,本文设置2 层双向长短期记忆(bidirectional long short-term memory,BiLSTM)网络。CNN的输出是大小为×(512×41)的特征图,为输出序列的长度,为通道数。通过“map to sequence”的转化后将每一列=(,,…,x)输入BiLSTM 中,输出长度为×的向量=(,,…,y),为车牌字符类别数。本文中广西柳州电动自行车车牌字符有:中文字符“桂”、除去“I”和“O”的所有英文大写字母以及0~9这10个阿拉伯数字共34个字符。
转录部分:本文沿用CTC 的设置,对其参数不做更改。
在文本识别领域,经常会存在输入和输出难以对齐的问题;因此,本文用CTC对循环神经网络的输出进行解码,将BiLSTM的输出转换成一个序列。
定义为由BiLSTM 输出组成的序列路径。对于BiLSTM,在给定输入的情况下,输出为的概率用式(4)来计算。
式中,为多对一的映射函数,目的是去除空白标签与重复标签。∈()表示所有经过变换后是的路径,且对于任意一条路径有:
目前的机动车车牌识别系统已有较为成熟的抓拍系统以及车牌数据集(如CCPD 数据集),而国内电动自行车车牌数据集尚为空白,且网络搜索图片的结果也较少。由于广西壮族自治区内的电动自行车数量多,将广西柳州市作为车牌数据采集地。本实验所用数据为手持拍照设备收集而来的真实电动自行车车牌照片。本文共收集真实图片2 000 余张,随机抽取500 张真实车牌图片用作测试,其余用作训练。
由于本实验数据集较小,所使用的深度网络可能会产生过拟合现象,导致网络的泛化能力差,难以在测试集上达到最佳性能。一般来说,可以采用数据增强的方法防止过拟合现象。常见的数据增强方法有:旋转(图片随机翻转0~360°)、裁剪(图像随机裁去小部分)、添加噪声(高斯、椒盐噪声)等。这些图像增强方法有效地增加了数据集的多样性,对提升网络性能有很大的帮助。
本文对原始数据进行了不同的数据增强。如图4 所示,对于真实的图片,本文对其使用了模糊、形变、添加噪声等方法进行扩充。
图4 (网络版彩图)数据增强示例
此外,还在训练集中添加了仿造车牌。电动自行车车牌与机动车车牌字符个数一致,均为7个,分为2 排。经过观察,柳州电动自行车车牌基本分为绿色和白色2 种颜色,柳州本市的车牌为“桂B”开头,出现极少数南宁(“桂A”)、桂林(“桂C”)等其他市车牌;因此,仿造车牌以绿色和白色为底色,设置城市代号为“A”“B”“C”且这三类车牌数保持一致,并在仿造车牌上加入铆钉等元素。随机生成车牌号后,对仿造车牌也进行了一些处理,以更接近真实车牌。考虑到光照不同所导致的车牌阴影变化较大、某些车牌上有污渍刮痕以及拍摄角度不同可能会造成的车牌扭曲等,对仿造车牌加入椒盐噪声、调整图像明暗度、将图像进行仿射畸变等步骤的处理。处理后的仿造车牌如图5所示。
图5 (网络版彩图)仿造车牌图集
使用经过形变、加噪声等步骤处理后的数据训练能够极大地提高网络的泛化能力,使得同一个网络能够对不同场景的车牌识别具有良好的表现。实验中,训练集共有车牌数据6 000 余张,其中,扩充后的真实车牌3 000余张,仿造车牌3 000张。测试集500张车牌均为真实车牌。
实验运行环境为Windows 10 操作系统,CPU为英特尔i5,主频率为3.0 GHz,内存大小为8 GB。在Pytorch(1.2)框架中完成车牌识别实验。
在对真实车牌进行识别之前,生成了近70 000张仿造车牌,进行了20 轮的预训练。预训练的过程使不同的模块快速适应任务,微调过程将进一步减少训练损失,使网络融合。预训练时仿造车牌的识别精度达到99.68%,预训练模型的权重用于后续训练。
在训练阶段使用Adam优化器来训练模型。将输入车牌图像的大小固定为32×160,训练阶段batchsize设为32,测试阶段batchsize设为16,学习率设为0.000 1,训练轮次epoch设为100。
使用识别准确率(ACC)、平均损失(Loss)来评价模型。ACC 反映了模型正确识别车牌的个数,Loss表示车牌识别平均损失。模型中,ACC越大,Loss越小,则模型越好。此外,车牌检测系统具有实时性;因此,模型的识别速度也是一项重要指标。
图6 为模型训练过程的损失以及准确率。车牌识别网络在60 轮左右收敛,识别准确率为98.40%,最终平均损失为0.017 0,平均识别速度为41.24张/s。
图6 (网络版彩图)车牌识别模型的Loss和ACC
对于BiLSTM层数以及隐藏层单元数的选择,本文做了对比实验。分别设置BiLSTM的层数为1、2、3,隐藏层单元数为128、256、512和1 024。同样,通过ACC和Loss判断参数设置的优劣。由表2可以看出,当网络设置为2层BiLSTM,隐藏层为512时,识别准确率最高,此方案是最为合理的方案。
表2 BiLSTM参数对比分析
表2 中,随着隐藏层神经元数量提升(128 到256),准确率随之升高,在256层时达到最优。而当隐藏层单元数达到1 024 时,准确率降低,说明此时模型过拟合,泛化能力变差。
将CRNN原文中的CNN部分精简,去掉2个卷积层和最大池化层,激活函数换成LeakyRelu,将BN改为一层,放在网络的最后。与原始的7个卷积层的CNN对比,模型参数显著减少,加快了网络的收敛速度。RNN部分为适应电动自行车车牌数据集,将BiLSTM隐藏层单元数调整为512。如表3所示,通过切割字符进行识别的传统方法精度只有79.16%,改进CRNN 的准确率为98.40%。对比CRNN 原文,本文在电动自行车车牌数据集上实现了2.80%的精度提升,识别速度也有所提升。此外,通过比较文献[13]的LeNet-5-L、文献[19]的CRNN_Plate 和文献[12]的LPRNet,可以看出这些在机动车牌识别上取得较好效果的网络模型并不适用于本文的数据集。
表3 与其他方法对比
本文电动自行车车牌识别结果如图7所示。实验结果表明,对于明暗不同、有污渍、形变等较为复杂的车牌图片,本文的车牌识别模型有较高的识别准确率,且识别速度较快。
图7 (网络版彩图)电动自行车车牌识别效果图
基于对现有的机动车车牌识别系统的研究,本文提出了一种深度卷积循环神经网络的电动自行车车牌识别方法。该法对文本识别模型CRNN做了部分改进,通过特征提取、序列预测以及最后的CTC转录,在电动自行车车牌数据集上获得了较高的准确率。与传统的基于字符分割的车牌识别算法不同,本文的车牌识别模型避免了字符错误分割对识别率造成的影响,提高了车牌识别效率,简化了流程。在广西柳州电动自行车车牌数据集上的实验结果表明,本文提出的方法能够实现在污垢、形变、图像模糊等复杂自然场景下的车牌识别,鲁棒性较强,有广泛的应用场景。
由于目前还没有公开的电动自行车车牌数据集,本文的训练数据有限,一定程度上影响了车牌识别效果。虽然在广西柳州电动自行车车牌数据集上取得了不错的识别效果,但仍然存在一些不足,主要有:
1)所收集的车牌数据来源于同一地区,没有对其他地区的车牌进行研究,车牌的字符分布、底板颜色都比较单一,模型的适用范围较窄。下一阶段将会对全国范围内的电动自行车车牌进行分析研究,扩大数据集种类,使电动自行车车牌识别可以真正应用于实际。
2)本文的车牌识别仅针对采集好的图像数据,而在现实生活中,对于车牌识别有着更高的需求:动态识别、实时识别等;因此,下一步的研究方向是对动态视频中的电动自行车车牌进行识别。对于未来的实际交通应用,今后还有很多工作要做。