论文:License Plate Detection and Recognition in Unconstrained Scenarios
摘要
自动车牌识别( Automatic License Plate Recognition,ALPR)的方法众多,但大多数现有方法都把注意力放在特定车牌(LP)区域,并且数据集一般是车辆正面车牌比较清晰的区域。本论文提出了一个完整的ALPR系统,适用于任意场景的车辆图片,其中车牌可能由于倾斜而严重失真。主要贡献是引入了一种新的卷积神经网络(CNN),该网络能够在单个图像中检测和校正多个失真的牌照,然后这些校正后的牌照被送到光学字符识别(OCR)方法以获得最终识别结果。实验结果表明,本论文提出的方法在没有任何参数适应或特定场景的微调的情况下,与传统场景中的最先进的商业方法类似,并且在具有挑战性的场景中优于学术和商业方法。
概述
ALPR是在图像中找到并识别车牌的任务。它通常分为四个子任务,形成一个连续的流程:车辆检测、车牌检测、字符分割和字符识别。为简单起见,通常将最后两个子任务组合称为OCR。过去已经提出了许多不同的ALPR任务,通常使用图像二值化或灰度分析来找到候选区域(即LP和字符),然后是手工制作的特征提取方法和经典的机器学习分类器。
随着深度学习的兴起,最先进的ALPR技术开始向另一个方向发展,现在许多作品都采用CNN,因为它在通用物体检测和识别的精度很高。与ALPR相关的是场景文本定位(Scene Text Spotting,STS)和户外数字读取问题,目标是在自然场景中找到并读取文本/数字。尽管ALPR可以被视为STS的一个特例,但这两个问题具有特殊的特征:在ALPR中,需要学习没有相关语义信息的字符和数字(没有太多字体变化),而STS则专注于字体可变性高的文本信息,并探索词汇和语义信息。数字读取任务比ALPR的内容简单,因为它避免了常见的数字/字母混淆,例如B-8,D-0,1-I,5-S。
使用CNN的ALPR商业系统,比较著名的有Sighthound、OpenALPR商业版 和 Amazon Rekognition。尽管这些系统的技术取得了进步,但大多数ALPR系统主要使用车辆和LP的正面视图,这在诸如收费监控和停车场验证等应用中很常见。 然而,更宽泛的图像获取场景(例如,执法人员使用移动相机或智能电话拍照)可能导致车牌被高度扭曲,但仍然可读,如图1所示,即使最先进的商业系统也在为识别这些挑战性场景中的车牌而努力。
本论文提出了一个完整的ALPR系统,使用一种新颖的网络可以在各种场景和摄像机姿势中检测LP并估计其失真,从而允许在OCR之前进行整流过程。训练过程将真实图像扭曲倾斜来增强训练数据集,允许使用少于200个手动标记的图像从头开始训练网络。所提出的网络和数据增强方案使ALPR系统更加灵活,能够使用相同的系统参数检测和识别其他独立测试集中的车牌。本论文的所有标注数据都是公开可用的,包括汽车数据集,SSIG数据库和AOLP数据集。(下载地址:http://sergiomsilva.com/pubs/alpr-unconstrained/)
方法介绍
论文提出的方法由三个主要步骤组成:车辆检测、车牌检测和OCR,如图2所示。给定一张输入图像,第一个模块检测场景中的车辆。在每个检测到的车辆区域内,扭曲平面物体检测网络(Warped Planar Object Detection Network,wpod-net)会搜索车牌并回归每次搜索的一个有效变换,可以将车牌区域校正为类似正面视图的矩形。这些检测到的车牌和校正后的检测结果被送入OCR网络进行最终字符识别。
车辆检测
由于车辆是许多经典目标检测和识别数据集(如Pascal-VOC、ImageNet和Coco)中存在的潜在目标之一,因此作者决定不从头开始训练检测器,而是选择一个已知模型来执行车辆检测,并考虑一些标准。一方面,要求较高的召回率,因为任何具有可见LP的漏检车辆将直接导致整个LP漏检。另一方面,由于每个错误检测到的车辆必须通过WPOD-NET进行验证,因此精度过高也可能导致运行时间过长。基于这些考虑,决定使用yolov2网络,因为它执行速度快(大约70 fps),精度和召回率折衷性好(pascal-voc数据集上有76.8%的mAP)。作者没有对yolov2进行任何更改或修改,只是将网络当作黑盒,合并与车辆(比如汽车和公共汽车)相关的输出,忽略其他类。
检测结果(车辆)在被送入wpod-net之前需要调整大小。根据经验,较大的输入图像允许检测较小的目标,但会增加计算成本。在大致的前/后视图中,车牌尺寸和车辆边界框(BB)之间的比率很高。然而,对于斜视/侧视而言,此比率往往要小得多,因为倾斜车辆的边界框往往更大、更长。因此,倾斜视图的大小应比正面视图大,以保持LP区域的可识别性。虽然可以使用三维姿态估计方法来确定调整比例,但本论文提出了一个基于车辆边界框高宽比的简单快速的过程。当它接近1时,可以使用较小的尺寸,并且必须随着长宽比的增大而增大。更准确地说,调整因子fsc由
得到。其中是车辆边框的宽度和高度。
注意到 ,这样和就为需要调整大小的车辆边框的最小边界定了范围。在实验的基础上,为了在精度和运行时间之间保持良好的平衡,和。
车牌检测和反扭曲
车牌本质上是矩形平面物体,它们附着在车辆上以便识别。为了利用它的形状,作者提出了一种新的CNN,称为扭曲平面物体检测网络(WPOD-NET)。该网络学习检测各种不同失真程度的车牌,并对将扭曲车牌转换为近似正视图的变换系数进行回归。尽管可以学习平面透视投影而不是变换,但是透视变换中涉及的除法可能在分母中产生小值,因此导致数值不稳定。
WPOD-NET受到YOLO、SSD和空间变换网络(STN)启发:YOLO和SSD同时执行快速多目标检测和识别,但它们不考虑空间变换,仅为每次检测生成矩形边界框;相反,STN可以用于检测非矩形区域,但是它不能同时处理多个变换,在整个输入上仅执行单个空间变换。
使用WPOD-NET的检测过程如图3所示。网络输入由车辆检测模块调整大小的车辆图片,前馈网络会得到8通道的特征图,计算目标/非目标概率(2个特征图)和回归仿射变换参数(6个特征图)。 为了提取扭曲的车牌,首先考虑一个围绕单元中心(m,n)的固定大小的虚构平方。 如果该单元的是目标的概率高于给定的检测阈值,则使用部分回归参数来构建将虚构正方形转换为车牌四个顶点的仿射矩阵。 然后利用透视变换可将得到的车牌区域校正到正视图。
网络结构
网络总共有21个卷积层,其中14个位于残差块。所有卷积核尺寸固定为3×3。除检测块外,所有层使用 relu 激活函数。有4个尺寸为2×2、步长为2的最大池化层,将输入维数减少了16倍。最后,检测块具有两个并行卷积层:一个使用SoftMax回归用于推断目标概率,另一个不使用激活函数用于线性回归仿射参数。
损失函数
令 ,表示车牌标注的四个顶点,从左上角开始顺时针计
数。 另外,令 ,,,
表示以原点为中心的单位正方形。
对于高度和宽度的输入图像,以及(四个最大池化层)的网络步长,网络输出特征图尺寸为,其中,。 对于特征图中的每个单元网格,要估计8个值:前两个值(和)是目标/非目标概率,后六个值(到) 用于构建仿射变换矩阵:
其中对和使用函数以确保对角线为正(避免不期望的镜像或过度旋转)。
为了匹配网络输出分辨率,需要通过除以网络步长来调整顶点,并根据特征图中的每个网格来确定中心。 这些步骤通过归一化函数来完成:
其中表示车牌宽度的放大常数。 设置,这是增强训练数据集中平均LP宽度除以网络步幅的结果。
假设在单元格处存在目标(LP),则损失函数的第一部分是单位正方形变换到扭曲版本后与车牌归一化标注点之间的误差和,由下式给出:
损失函数的第二部分用于处理在处具有/不具有目标的概率。 类似于SSD的置信度损失,基本上是两个对数损失函数求和:
其中是目标指示器函数,如果在点处有对象则返回1,否则返回0;
。 如果一个目标的矩形边界框与GT的IoU大于阈值
(根据经验设置为0.3),则认为是点处存在目标。
最终损失函数是上面两部分损失的和:
训练细节
为了训练WPOD-NET,作者创建了一个包含196张图像的数据集,其中105个来自Cars数据集,40个来自SSIG数据集(training子集),51个来自AOLP数据集(LE子集)。 对于每张图像,手动注释图片中LP的4个角(有时不止一个车牌)。Cars数据集的所选图像主要是欧洲LP,但美国以及其他地区还有很多LP类型。 来自SSIG和AOLP的图像分别包含巴西和台湾的LP。 一些带标注的样本如图5所示:
由于数据集较小,所以使用图像增强:
- 修正:假设车牌位于一个平面,将图像根据车牌的标注进行调整;
- 长宽比:LP长宽比在区间[2,4]中随机设置,以适应不同区域的尺寸;
- 居中:LP中心成为图像中心;
- 放缩:放缩LP,使其宽度在40像素到208像素之间取值(根据LP的可读性进行实验设置的范围)。该范围用于定义方程式中使用的α的值;
- 旋转:执行随机选择角度的3D旋转,以适应各种摄像机设置;
- 镜像:50%的几率;
- 移动:随机将车牌从图像中心移动到图像中心周围208×208像素的正方形;
- 裁剪:在移动之前考虑LP中心,在其周围裁剪208×208区域;
- 色彩空间:HSV色彩空间中的轻微修改;
- 标注:通过应用于增强输入图像的相同空间变换来调整四个车牌顶点位置。
图6显示了从相同图像获得的20个不同的增强样本:
小批量数据设为32,使用ADAM优化器,总共迭代100k次。 学习率设定为0.001,参数β1= 0.9,β2= 0.999。 通过随机选择和数据增强来生成小批量,从而在每次迭代时产生新的大小为32×208×208×3的输入张量。
OCR
在校正过的LP上的字符分割和识别使用改进的YOLO v2网络。改进的原因是YOLO v2和FAST-YOLO网络的输入和输出具有固定宽高比以及粒度也是固定的。一般输入的长宽比为1:1,但在纵向和横向图像上都表现出良好的检测性能。然而,LP的长宽比约为3:1,对于这些网络来说太宽了。因此,需要更改网络参数以匹配车牌的长宽比。另一个改进的地方是网络输入和输出粒度。13×13 的YOLO v2输出密度不足以捕获并排水平排列的七个大物体(字符)。为了修正这个问题,让最终的网络输出为30×10。垂直输出尺寸的这种轻微下降不会影响网络性能,因为LP没有要检测的垂直对象序列。
输入图像选择使用240×80图像,这大约是数据集车牌平均尺寸的两倍,并减少丢失重要信息的机会。使用比原始输入更小的输入(240×80小于416×416)意为这需要对YOLO v2架构进行调整。首先,需要将最大池层数从五个减少到三个,以避免维度降低过多影响输出粒度的精度。其次,为了保持网络深度等于FAST-YOLO并且尽可能多地使用迁移学习,使用YOLO v2网络(Darknet-19)的前11层。之所以停在第12层,是因为它包含第四个最大池化层。对于FAST-YOLO,其第四个最大池化层前只有七层,从而网络深度减少,所以增加了四层并从头开始训练以改善非线性。下表提供了OCR网络的最终架构。
然而,通过使用合成和增强数据来应对世界各地(欧洲,美国和巴西)不同地区的LP特征,训练数据集在这项工作中得到了相当大的扩展。人工创建的数据包括粘贴到带纹理的背景上的一串七个字符,然后执行随机变换,例如旋转,平移,噪声和模糊。 一些生成的样本和用于合成数据的管流程概述如图7所示。合成数据的使用有助于极大地改善网络泛化能力,因此完全相同的网络对世界各地不同地区的LP表现良好。
评估数据集
本论文的目标之一是开发一种在各种不受约束的场景中表现良好的ALPR技术,但这也更应该在限制场景中很好地工作(例如正面视图)。 因此,文中选择了四个在线可用的数据集,即OpenALPR(BR和EU),SSIG和AOLP(RP),它们涵盖了许多不同的情况,如表1的第一部分所述。考虑三个不同的变量:LP角度( 正面和斜面),从车辆到摄像机的距离(近距离,中距离和远距离)以及拍摄照片的区域。
目前在LP失真方面使用的数据集是AOLP Road Patrol(RP)子集,其试图模拟将摄像机安装在巡逻车辆中或由人手持的情况;在相机到车辆的距离方面使用的是SSIG数据集,它由高分辨率图像组成,允许远距离车辆的LP仍然可读。所有SSIG数据都没有同时出现多个LP。虽然所有这些数据集涵盖了许多情况,但缺乏更具通用性的数据集。因此,本文工作的另一个贡献是手动注释从汽车数据集中选择的一组新的102个图像(命名为CD-HARD),涵盖各种具有挑战性的情况。所选择的图像主要是具有强LP失真但人类仍然可以读取。
实验结果
文中方法有三个网络,根据经验设置以下接受阈值:车辆(YOLOv2)和LP(WPOD-NET)检测为0.5,字符检测和识别(OCR-NET)为0.4。
Ours:使用真实数据、增强数据和人工生成数据训练
Ours (no artf.):只使用真实数据、增强数据训练
Ours (unrect.):使用常规不校正边界框方法的结果
结果表明,使用人工合成数据可以明显提高准确率;使用校正车牌的方法也在挑战性的数据中极大提高了准确率。
表2还显示了商业和学术系统的结果。在受控情景的数据集(LP主要是正面的)中论文中的方法和商业系统识别率相当;在具有挑战性的情况下(AOLP RP和CD-HARD数据集),论文的系统在所有比较方法上的表现都超过了其他方法。同时超越专注于单个区域或数据集学术方法展示了强大的泛化能力。
文中的WPOD-NET使用TensorFlow框架实现,YOLOv2车辆检测和OCR-NET使用DarkNet框架创建和执行。 Python包用于集成两个框架。实验硬件是Intel Xeon处理器,具有12Gb RAM和NVIDIA Titan X GPU。 通过这种配置,能够以平均5 FPS(考虑所有数据集)运行完整的ALPR系统。 该时间高度依赖于输入图像中检测到的车辆数量。 因此,增加车辆检测阈值将导致更高的FPS,但是召回率更低。