APP下载

基于深度学习的非约束场景多车牌识别方法研究

2024-02-21张振威王红成

东莞理工学院学报 2024年1期
关键词:字符识别车牌字符

张振威 王红成

(1.东莞理工学院 电信工程与智能化学院,广东东莞 523808;2.东莞理工学院 计算机科学与技术学院,广东东莞 523808)

在特定的约束场景,如充足均匀的光照、简单的背景、固定的拍摄角度等情况下,现有的车牌识别系统(ALPR)能取得较高的车牌识别准确率,但在光照不均、大角度偏转、雨雪天气等非约束场景下该系统存在较大的局限性。赵[1]等人分别从不同的城市调研了5套商业的自动车牌识别系统,发现这些系统在他们的数据集上测试的平均识别准确率均从声称的99%下降到了75%~92%。由此可知,在非约束条件下的自动车牌识别技术仍是一项很有挑战且有价值的研究课题。本文对非约束场景下的车牌识别问题进行研究,旨在得到一种识别精度高、实时性强以鲁棒性良好的车牌识别算法模型。

近年来的车牌识别方法大概分为车牌检测以及车牌识别两个部分。传统的车牌检测技术主要基于图像处理方法[2],根据车牌颜色、纹理[3]等信息检测车牌位置。随着神经网络的发展,人们通过设计神经网络的结构,获得了一系列效果良好的目标检测算法,比如Faster R-CNN[4]、YOLO[5]系列、SSD[6]等。Laroca[7]等人以YOLO为基础,设计出了一种名为Fast-YOLO的车牌检测器。该检测方法先粗略定位到车牌所在区域的大致位置,然后将粗略定位的车牌图像再次输入到网络中进行精确定位。然而此检测方法受限于第一个阶段,若粗略定位过程中未检测到包含车牌图像的区域,则无法保证此方法车牌识别准确率。另外,还有通过神经网络直接在图片中定位车牌位置的车牌检测方法,Henry[8]等提出了使用tiny YOLOv3网络检测车牌的位置,并在训练车牌的过程中在数据集中加入负样本的方法。

车牌字符识别是自动车牌识别技术的重要环节,是自动车牌识别技术的重点内容。字符识别过程可以大概分为有分割的字符识别和无分割的字符识别。有分割的车牌字符识别是指车牌中的每个字符进行分割,再逐个对每个独立的字符进行光学字符分类。Goel[9]等人使用模板匹配算法,将分割得到的字符与预先存储的大量关于车牌字符的图片进行匹配比较,得到每一个字符的匹配结果。近年来,深度学习网络也被用来解决分割字符的识别问题,如Rayson[10]等通过YOLO网络对车牌每个字符进行分类识别,而Selmi[11]通过Mask RCNN在定位到的车牌区域检测并识别每个字符,Bjorklund[12]等人则利用两个卷积神经网络模型,分别进行车辆的定位以及车牌字符的分割检测。基于有分割的车牌字符识别方法的效果在一定程度上取决于字符分割程度的优劣。

无分割的车牌字符识别是指将车牌字符看作是一个序列,将车牌字符的识别任务转化为序列标记问题。基于神经网络[13-14]的无分割车牌识别方法可以减少车牌字符识别过程中的误差累积。而Zhang[15]等人通过引入siamese网络设计出基于质量感知的视频车牌流的算法,并通过压缩质量意识网络使算法更为轻便,在各种场景中均取得良好的表现。对于基于级联结构的ALPR模型,Laroca[16]选择Fast-YOLOv2网络来检测车牌的位置并对车牌布局进行分类,最后通过YOLO网络的前面11层结构及若干卷积层组成的CR-NET网络对车牌字符进行识别,该模型能够很好地处理不同区域国家的车牌识别场景,但论文中在结果比较时仅对比了中文车牌的数字和字母部分,没有对车牌中的汉字进行比较。而Wang[17]等人提出的级联框架则同时给出了考虑中文汉字字符和不考虑中文汉字字符识别的实验结果,它首先在低分辨率输入图像中定位车牌,再使用集成块BI来提取车牌空间特征并矫正车牌为正面视图,最后采用一种基于权重共享的分类器来平衡训练样本,解决了小规模数据集问题。

现有的大多研究方法均是对不同场景下的单车牌识别问题进行研究,在实际的非约束场景中,经常会出现画面中包含多个不同类型车牌的情况。为解决此类问题,本文提出一种能适应于多车牌识别场景的级联算法模型,该模型能够识别非约束场景中的单个以及多个车牌并展现出良好的实时性能。

本文创新点如下:针对非约束场景下的多车牌识别问题,为筛选出输入图像中的有效车牌,提出基于车辆检测的后处理策略,同时对车牌检测矫正网络设计了并行的对象检测概率推断结构与仿射系数回归功能结构,有效地提高了整体模型的实时性能。

1 网络模型

1.1 网络模型的工作流程

提出的车牌识别模型工作流程大致分为车辆检测、车牌检测与矫正、车牌字符识别三个阶段。如图1所示,对于任意一张包含一个或多个车辆的输入图像,模型首先通过车辆检测模块定位出图像中车辆的位置,随后车牌检测与矫正模块在每个检测到的车辆范围内检测并矫正车牌,得到图1中每辆车的车牌的正面视角图,最后通过车牌字符识别网络识别车牌字符并将识别出的字符序列作为输出结果。

图1 多车牌识别模型工作流程

1.2 网络模型结构

1.2.1 基于YOLOv5l的车辆检测

采用的车辆检测算法模型为YOLOv5l,该模型的尺寸较小,部署花费代价较小,可以很好地权衡检测速度和检测精度等问题。模型在COCO数据集上进行预训练,然后将所有的汽车类合为一个检测类别并忽略其他检测类的结果。除此之外,通过车辆检测后处理方法保证了模型能够检测到完整的车牌,避免图像中的车牌字符被遮挡或图像中只有部分车牌的情况。

由于车牌是车辆中较小的部分,所以当图像中车辆面积过小时,车牌会变得更加微小而难以识别。因此,对检测到的车辆的面积进行统计计算,当车辆面积与整个图像的面积比小于0.03时,则舍去。另外一个考虑因素是,图像中检测到的车辆必须包含牌照。为只保留包含车牌信息的车辆目标,收集统计了常见车辆的尺寸信息,如表1所示。经过反复测试分析,最终确定锚框宽高比阈值2.31,即当车辆锚框宽高比小于该阈值的时候,则认为该检测到的车辆目标包含了车牌信息。

表1 常见车辆尺寸信息统计

1.2.2 基于并行分支结构的车牌检测与矫正

为使模型能够成功检测并矫正车牌,拥有较好的实时性能,将车牌检测矫正网络设计为并行的对象检测概率推断功能结构与仿射系数回归功能结构,共同训练模型参数。该部分网络结构如图2所示。

图2 基于并行分支结构的车牌检测与矫正网络

由图3可知,对于一个W×H的输入图像,网络的步幅设置为24,网络的特征输出图为M×N×7,每个特征图中的点单元格共需要确定7个值,一个值用来估计对象或者非对象的概率,六个值用来构建局部仿射变换Tmn,变换公式如下:

图3 CRNN图像文本识别

(1)

其中,q是以单位长度正方形中心为坐标原点的顶点,v2-7表示每个特征图点单元格中除去对象估计点的剩余六个点,v2和v5使用最大值函数是为了保证坐标为正值以避免过度旋转。

为调整网络特征图的输出分辨率,需要通过归一化函数对车牌的顶点坐标进行缩放并重新居中。使用的归一化函数定义为

(2)

其中,p为车牌顶点的坐标,Ns为网络的步幅,(m,n)为特征图中的点坐标,α为在检测车牌周围构建的正方形的比例系数,根据训练数据中最大最小车牌维度与网络步长,设置为α= 7.75。

对于整个网络中的损失函数,需要考虑两部分损失。第一部分是在检测车牌周围虚构的标准正方形在拟合归一化车牌之间的误差,该部分误差造成的损失可表示为

(3)

第二部分损失应该考虑在特定单元点上是否有对象而引起的误差,该部分误差可表示为两个对数损失的总和,其定义公式为

fprobs(m,n)=

logloss(Lobj,v1)+logloss(1-Lobj,v2) ,

(4)

式(4)中,v1和v2为特征图中要确定值的两个对象估计点。Lobj用来表示该点单元格中是否含有对象,其函数值可以表示为

(5)

因此,对网络特征图中的每个点单元格,需要综合考虑该点单元格是否存在对象的损失以及虚拟正方形的仿射变换损失,由于本网络采用了并行分支的结构,最终确定的损失函数可表示为

(6)

1.2.3 车牌识别

车牌识别是指将检测到的车牌中的字符进行识别输出。常见的车牌识别方法大致分为基于切割的车牌识别和免分割的车牌识别。对于免分割的车牌识别方法工作过程大致如下:对给定的车牌图片,车牌识别模型首先提取图像的特征,然后对提取到的特征进行序列建模,最后将预测序列作为识别到的车牌字符。

用于图像文本识别的卷积循环神经网络(CRNN)的结构如图3所示。该网络包含卷积神经网络CNN和循环神经网络RNN,能够将图像文本识别问题转换为时序依赖序列问题。CRNN通过卷积层来提取图像中的特征,然后将特征图的特征向量序列传递给后面的循环神经网络,最后是CTC转录层,采用CTC损失,将上一层的预测标签分布转换为最终的预测序列。以卷积循环神经网络为基础,衍生了大量的图像文本识别算法。

本文采用的车牌识别模型借鉴了CRNN的结构,使用ResNet18提取车牌图像的特征,使用双向长短期记忆网络BLSTM对特征序列进行建模并保留网络结构中的CTC损失从而更好地识别图像文本。

在提取图像特征的时候,卷积神经网络的层数和特征提取的效果息息相关。随着卷积神经网络层数的增加,模型的性能也会不断提升。而当网络的层数增加到一定程度后,模型的性能会由于梯度消失的问题开始下降。本文采用ResNet18来对车牌的特征进行提取。RestNet18残差神经网络打破了深度学习网络层数的限制,其网络层某一层的输出可以直接跨过若干层传递到后面的网络层。该设计结构可以在保证模型训练误差的基础上加深卷积神经网络的深度,从而使模型获得更好的性能。

对于循环层的长短期记忆网络LSTM,能获取图像文本的长距离信息,具有单向性。然而在图像文本的序列识别中,两个方向的信息是可以叠加在一起形成双向的长短期记忆网络。本文采用双向的长短期记忆网络BLSTM替换原来的单向长短期记忆网络,使模型能够捕捉到更多的上下文特征信息,减少上下文信息的损失,提高车牌在复杂场景下的车牌识别准确率。

为使模型有很好的鲁棒性,能够在复杂多变的实际场景中展现出良好的性能。在训练过程中使用了数据增强(data augmentation)策略,对训练数据采用拉伸纵横比、中心随机角度旋转、平移等方法增强数据的物理空间特征。同时为了增强模型对复杂环境下图像的适应性,在训练模型过程中会对图像添加随机的高斯噪声并调整图像的HSV颜色空间,这种数据增强方法提高了模型在噪声环境和低光照场景下的性能,可使模型取得更好的鲁棒性。

2 实验结果与讨论

2.1 数据集

CCPD(Chinese City Parking Dataset)数据集是中科大团队Xu[18]等于2018年提出的关于中国车牌的数据集,共包含25万多张在不同场景下的车牌图片,是目前已知的关于中国车牌的数量最大的数据集。表2描述了CCPD数据集每个子数据集的详细信息。在每个子数据中随机挑选2 000张图片作为训练集,100张图片作为验证集,2 000张图片作为测试集。

表2 CCPD数据集各子数据集信息

AOLP数据集(Application Oriented License Plate)中共包含三个子数据集,分别为AC、LE、RP。AC子数据集是在比较简单理想的场景下收集的,比如收费站。共包含图片681张。LE子数据集采集的是违法车辆,摄像机在车辆附近,共包含图像757张。RP子数据集采集的是交警在巡逻时拍摄的车辆照片,由于车辆处于运动当中,拍摄的车辆图像距离可能会过远或过近,并且照片视角有任意的变化,共611张,RP子数据集是三个子数据中最难的一个。在三个子数据集中,本文均以2∶1∶2的比例划分训练集、验证集和测试集。

最后一个数据集为网络搜集的数据集。由于本文所提出的模型能够检测图像中的多个车牌,且现有已知的数据集中并没有专门的多车牌数据集。为了验证本文提出模型在多车牌识别任务中的有效性。笔者在网络上收集了不同场景的47张包含多车辆的图像作为测试数据,在此类场景下,所提出的模型能够在完成大部分车牌的识别任务。

2.2 实验设备

为了验证所提模型的有效性,在实验平台上进行了相关实验,实验平台参数如下,平台CPU采用Gold 61系列(72vCPU)v5@2.5 GHz,320 GB内存,GPU采用NVIDIA Tesla V100 SXM2,显存大小为8*32 GB。平台通信采用NVLink双向通信,速度为300 GB/s,操作系统为CentOS7.8版本。

2.3 实验结果与分析

本文提出一种适用于非约束条件下的多车牌自动识别模型。模型训练过程使用的数据来源于CCPD数据集与人工生成的车牌数据集。为验证模型性能,选取了CCPD数据集与AOLP数据集以及网络搜集的多车辆数据集,并在这些数据集上与其他的模型进行对比实验。表2和表3分别展示了本文模型在CCPD数据集上的检测性能和识别性能。

表3 CCPD数据集上检测精度比较

由表3可得,相较于其他方法,本文提出的车牌检测方法能更准确地检测车牌位置,在CCPD的各子数据集上平均检测精度达到95.74%,比其它方法至少高出了2.15个百分点。由表4可知,本模型在CCPD各子数据集上都展现出卓越的识别性能,且在每个子数据集上都能达到超过92%的识别准确率,在各子数据集上的平均识别率达到了95.7%的精度,比其它方法提高了至少1.1个百分点。从识别速度方面分析,本文所提出的模型相对于Faster-rcnn快了约1.7倍,相较于其它方法,本模型以牺牲少许的速度为代价,取得了更高的识别性能。在原有训练模型的基础上,采用数据增强的方式进一步训练模型,使模型的识别准确率平均提高了1.1个百分点。

表4 CCPD数据集上识别精度比较

AOLP数据集上的实验结果如表5和表6所示。对于车牌检测性能,本文模型在AOLP三个子数据集上都至少达到了99.5%的检测精度。对于车牌字符识别性能,在AC子数据集上,本模型比表5中的其它方法的识别精度至少高出0.85个百分点。在RP子数据集上,本模型比表中其它方法的识别精度至少高出0.49个百分点。同时,模型的FPS值达到了47.2,充分说明了提出模型在复杂场景下的准确性、鲁棒性及实时性。在原有训练模型的基础上,采用数据增强的方式进一步训练模型,使模型的识别准确率平均提高了1.9个百分点。

表5 AOLP数据集上检测精度比较

表6 AOLP数据集上识别精度比较

在网络收集的多车牌数据集中,本文提出的模型能很好地识别出多个车辆以及对应车牌,并能有效地剔除无车牌或仅有部分车牌的的目标车辆。本部分测试用例为网络搜集且考虑了多车辆场景下的无效检测目标过滤问题,这是其它大多方法不具备的。在网络搜集的多车牌数据集中,本文模型能够很好地检测到图像中的多个车牌,并在该多车牌数据集中达到了98%的车牌识别精度。

2.4 实验结果可视化

本节展示了通过python语言实现的html客户端界面效果,界面包含检测到的车辆、矫正后的车牌以及车牌字符识别结构和置信率。所提供的展示样本包含了不同类型车牌、不同偏转视角、低质量模糊图片、单车牌图像以及多车牌图像等不同的场景,充分展示了本文所提出模型的准确性与鲁棒性。

图4展示了模型对新能源车以及大卡车的车牌识别结果,由结果可知,模型均成功检测到了车辆并准确识别了车牌字符。本模型在多车牌场景中同样展现出了良好的性能,图5展示了数据集中部分多车牌图片的车牌识别结果,对与输入图像中的三个车辆目标,本模型均能正确地识别出车牌字符。图4、图5中,输入图像中的偏转视角车牌,本模型能够将其矫正为正面视角并在页面中呈现出来,为后续的车牌字符识别模块提供了有利条件,充分说明了模型车牌检测与矫正模块的有效性。图5中不包含车牌信息的小目标,模型能够对其有效的剔除避免信息冗余,结果页面中只显现了包含完整车牌信息的车辆以及对应的车牌识别结果,充分说明了本文模型对小目标后处理的合理性与有效性。

图4 不同类型车牌展示结果(左:大卡车,右:新能源车)

图5 三车牌识别结果

4 结语

对非约束场景下的车牌识别进行研究,提出了能够在复杂环境中表现出较高性能的多车牌识别算法模型。该模型首先检测图像中的所有车辆目标并进行后处理从而筛选出包含完整车牌信息的有效车辆目标,这是模型能够实现多车牌识别的基础;其次,对车牌检测矫正网络中的检测对象概率推断功能结构以及仿射系数回归功能结构设置并行分支,为防止模型在训练的过程中互相干扰而在其前面分别设置独立的网络层,提高了模型的检测精度和检测速度;最后,车牌识别部分根据图像文本识别的原理设计了基于ResNet18的特征提取网络,采用双向长短期记忆BLSTM特征序列建模网络以及能够识别不同长度车牌字符序列的CTC损失,并采用了数据增强的方式提高了模型的识别精度以及鲁棒性。实验结果表明,在多个测试数据集环境下,本文提出的模型无论在识别精度还是在识别速度方面均取得了比其它模型更加优良的效果。对于绿牌新能源车、大卡车、普通轿车等不同类型车牌场景以及多车辆场景,本文提出的模型均能够准确的识别车牌字符,展现出了良好的鲁棒性。

猜你喜欢

字符识别车牌字符
寻找更强的字符映射管理器
字符代表几
一种USB接口字符液晶控制器设计
数字图像处理技术在车牌识别系统中的应用
消失的殖民村庄和神秘字符
一种改进深度学习网络结构的英文字符识别
第一张车牌
基于MATLAB 的车牌识别系统研究
仪表字符识别中的图像处理算法研究
基于CUDA和深度置信网络的手写字符识别