一种用于无约束场景下自动车牌识别的灵活方法
摘要
自动车牌识别是智能交通系统中多个应用的关键任务,从访问控制到交通监控均涉及此技术。大多数现有方法集中于特定设置(例如,收费站控制)或单一车牌(LP)区域(例如,欧洲、美国、巴西、台湾等),这限制了其广泛应用。本文提出了一种面向非受限拍摄场景的完整自动车牌识别系统,能够应对因倾斜视角导致的显著扭曲情况。我们提出一种改进的扭曲平面目标检测网络(IWPOD‐NET),可在多种条件下检测车牌的四个角点,从而将车牌图像变换为正前视图,缓解透视引起的畸变。在获得校正后的车牌后,我们测试了两种基于目标检测的光学字符识别(OCR)方法。实验结果表明,所提出的检测器即使在训练集非常有限的情况下,仍可与最先进的(SOTA)方法相媲美。在完整的自动车牌识别结果方面,我们的方法在多个包含不同拍摄条件和车辆类型(特别是摩托车)的数据集中取得了领先的性能表现。
索引术语
车牌检测,车牌识别,透视校正,深度学习。
一、引言
SEVERAL 交通相关应用,例如被盗车辆检测、收费控制和停车场出入验证,均涉及车辆识别,这项任务由自动车牌识别(ALPR)系统完成。近年来,并行处理和深度学习(DL)的进步推动了诸多计算机视觉任务的发展,例如目标检测/识别和光学字符识别(OCR),这些技术显著提升了自动车牌识别系统的性能。事实上,深度卷积神经网络(CNNs)已成为用于车辆和车牌(LP)检测的主流机器学习技术[1]–[10]。除了学术论文之外,许多商用自动车牌识别系统也受益于深度学习方法的发展。它们通常部署在大型数据中心并运行通过网络服务,能够每天处理数千到数百万张图像,并持续改进。例如,Sighthound( https://www.sighthound.com/)和OpenALPR的商业版本(http://www.openalpr.com/)。
尽管最先进水平(SOTA)取得了显著进展,但设计一个能够应对光度变化(颜色多样、不同光照条件、阴影、图像噪声)和几何变化(不同形状的车牌以及在多种视角下获取的车牌)的通用自动车牌识别系统仍然是一个挑战。
在本研究中,我们提出了之前会议论文[11]的扩展版本,该版本能够应对多种场景和摄像头设置。主要改进在于重新设计了车牌检测网络,并引入了专门的层,以分别学习分类和定位任务的权重。新网络提升了原始版本对汽车车牌的识别效果,并且现在还能处理摩托车车牌,而这一点被大多数现有的自动车牌识别方法所忽略。作为额外的改进,我们提出了可与任何基于检测器的车牌识别模块结合使用的后处理策略,并微调了一个目标检测器以将汽车(包括公交车和卡车)和摩托车识别为输出类别。我们表明,我们的改进使结果相较于[11]有了显著提升,在一些公开可用的数据集上达到了最先进的(SOTA)水平。
II. 相关工作
自动车牌识别(ALPR)是指在图像中查找并识别车牌的任务。该任务通常分为两个主要部分:车牌检测( LPD),旨在定位图像中的车牌(可能先于车辆检测进行);以及车牌识别(LPR),旨在生成与车牌相关的字符串。由于本工作的主要贡献是引入了一种改进的车牌检测网络,我们首先回顾针对该特定子任务的基于深度学习的方法。接着,我们转向完整的基于深度学习的自动车牌识别系统。
A. 车牌检测
YOLO 网络在准确率和速度之间提供了良好的折衷,这启发了许多近期的研究采用类似的架构,以实现针对实时性能的车牌检测。稍作修改使用了YOLO [12]和YOLOv2[13]网络的版本,Hsu et al.[6],通过扩大网络输出粒度以增加检测数量,并设置了两类(车牌和背景)的概率。他们的网络在精确率和召回率之间取得了良好的平衡,但该论文缺乏对提取的边界框的详细评估。此外,已知YOLO网络在检测小尺寸物体方面存在困难。因此,有必要在汽车远离摄像头的场景中进行进一步评估。
在[7],中,作者提出了一种基于两个YOLO网络的设置,旨在检测旋转的车牌。第一个网络用于找到包含车牌的区域,称为“注意力模型”,第二个网络则捕捉车牌的旋转矩形边界框。然而,他们仅考虑了平面内旋转,当存在非常倾斜的摄像头视角时,这种模型并不充分。此外,由于他们并未提出一个完整的自动车牌识别系统,因此很难评估光学字符识别方法在所检测区域上的表现效果。
在文献中也可以找到使用滑动窗口方法或结合卷积神经网络的候选区域过滤的车牌检测方法[4],[5],[16]。然而,由于无法像现代目标检测元架构(如YOLO、SSD [17]和Faster R‐CNN[18])那样共享计算,这些方法往往计算效率低下。
B. 完整的车牌识别方法
席尔瓦和荣格 [2],[19]以及Laroca et al.[8],[15]提出了一种基于一系列改进的YOLO网络的完整自动车牌识别系统。在 [2],[19],中,作者训练了两个不同的网络,一个用于联合检测汽车和车牌,另一个用于执行光学字符识别,并额外利用了[19]中的时序信息。他们的方法非常快速,但仅限于大多数前视/后视视角。Laroca及其同事 [8]使用了三个基于YOLO架构的网络,分别用于车辆检测、车牌检测和字符分割,另有一个额外的网络用于字符分类。他们的工作在 [15],中得到扩展,其中布局分类被纳入车牌检测模块,并采用单个网络进行字符检测和分类。这两个版本[8],[15]都能够处理摩托车车牌,但也未针对强烈的几何畸变进行训练。
Selmi et al.[16]采用了一系列基于形态学算子、高斯滤波、边缘检测和几何分析的预处理方法来寻找车牌候选区域和字符。然后,使用两个不同的卷积神经网络: (i) 将每幅图像中的一组车牌候选区域分类为单一正样本, (ii) 识别分割后的字符。该方法每幅图像仅处理一个车牌,且据作者称,扭曲的车牌和光照不良条件可能会影响性能。
徐及其同事[20]提出了一种大规模数据集(CCPD)和针对中国车牌的基线方法,以及一种端到端网络,该网络将车牌检测子网络与[21],中提出的车牌识别模块相结合,仅需类别级标注。尽管在[20],中显示出良好的结果,但该网络仅针对中国车牌进行训练(所检测到的车牌数量字符数量被固定为七个),这限制了其应用。李(Lee)及其同事[22]提出了一种联合去噪和校正网络,既能获得车牌的近似正前视图,又能提高视觉质量。他们还提出了一种第二网络,用于分割字符并回归车牌中预期的字符数量,并使用YOLOv3[14]进行识别。由于他们将输入图像调整为 320 × 320大小,因此当车辆在输入图像中被完整框出时,该方法是有效的。
比约克隆德及其同事[9]提出了一种基于深度模型的完整流程,这些模型仅使用合成车牌图像进行训练。更具体地说,他们从模板生成合成车牌(例如论文中所示的意大利或台湾车牌),并应用多种几何和光度畸变,用于训练一个回归车牌四个角点的深度模型,并将车牌转换为正前视图。基于目标检测的车牌识别网络也以类似方式训练,并应用需要额外知识的后处理步骤(例如车牌中的字符数量)。尽管在[9],中展示了良好的结果,但他们针对每种车牌类型(例如,一个用于意大利车牌,另一个用于台湾车牌)训练特定模型,因此添加新的车牌区域需要重新训练网络。
还有一些其他方法结合了不同的网络架构来处理不同的自动车牌识别任务,例如[10]中的Mask‐RCNN。值得一提的是,一些方法在车牌识别步骤中探索了循环层和连接时序分类(CTC),从而实现无需定位标注的字符识别。例如,李等人[1]将传统特征(如方向梯度直方图和局部二值模式)与循环网络及CTC相结合用于字符识别,然后在[1],中使用具有相似车牌识别模块的深度特征提取器,之后又提出了在最终任务中利用CTC的端到端网络[3]。
商用系统是评估最先进水平的良好参考。尽管它们通常仅提供关于其架构的部分(或无)信息,但我们仍然可以将其作为黑箱来评估最终输出。商用系统的示例包括 Sighthound、OpenALPR 和 Plate Recognizer (https://platerecognizer.com/)。
本次简要回顾表明,存在多种用于自动车牌识别(或车牌检测或车牌识别子任务)的方法。然而,大多数方法集中于单一的车牌区域,或将车牌区域表示为矩形边界框(这可能会限制其在特定拍摄条件下的应用,例如车辆在图像中相对完整地呈现、姿态近似正对等),如表I所示。我们所提出的方法旨在针对不同的拍摄条件和车牌类型具有通用性,并且还能够处理摩托车。接下来将对其进行描述。
III. 所提出的方法
所提出的方法的核心是引入一种改进的扭曲车牌平面物体检测网络(IWPOD‐NET),该网络能够在多种拍摄情况下检测汽车和摩托车的车牌,并将其校正为正前视图。尽管它可以直接应用于输入图像,但我们建议使用先前的
A. 车牌检测与去扭曲
扭曲平面目标检测网络(WPOD‐NET)是一种全卷积网络,最初在[11]中提出,用于检测车牌的四个角点。原始的WPOD‐NET在分类和定位任务中高度依赖权重共享,并一直延续到最后一层。由于还需处理摩托车车牌,这为任务增加了额外复杂性,因此我们在原始架构中添加了若干并行层,以更好地区分这两类任务。
与WPOD网络类似,所提出的改进型WPOD网络(即IWPOD‐NET)是一种全卷积网络,可在单次前向传播中快速完成多目标单类别检测。该网络将定位参数编码为一组六个仿射变换参数,通过这些参数可将标准正方形变形为表示在可能存在畸变图像中车牌的四边形。因此,我们可以对检测到的车牌进行逆变换,将其还原为正视投影,从而减少由透视问题引起的畸变。
1) 网络架构
IWPOD‐NET 由一系列带有批归一化(convbatch)的卷积层构成,其中多个卷积层位于残差块内部,旨在缓解梯度消失问题并加速训练时间 [23]。所有卷积滤波器的大小固定为 3 × 3,滤波器数量从 16 变化到 128。整个网络的中间层均使用修正线性单元( ReLU)作为激活函数,仅最后几层针对分类和定位任务进行专门设计。网络中包含四个大小为 2× 2、步长为 2 的最大池化层,使输入维度在整个网络中降低为原来的十六分之一。
在WPOD网络中,最后一个模块包含两个并行的卷积层:(i)一个用于推断目标概率,通过softmax函数激活;(ii)另一个用于回归仿射参数,采用线性激活。因此,分类和检测任务的权重在网络中一直共享到最后一个层(类似于YOLO等网络)。然而,随着输入图像外观和形状的可变性增加,每个任务可能会向前面的层反向传播冲突的信息,这可能会损害其中一个(或两个)任务。为缓解此问题,我们提出了一种简单的解决方案,即为每个任务添加两个浅层(但独立的)子网络。
分类子网络由两个convbatch层组成,最后一层使用线性激活。一个具有sigmoid激活的最终层提供输出层每个单元格存在车牌的概率。检测子网络具有相同的架构,但最后一层通过线性激活回归六个参数。图1展示了该网络的完整描述(包括每层的滤波器数量),并突出显示了本文引入的并行专用子网络。
2) 损失函数
对于高度为H、宽度为W的输入图像,以及由Ns= 24给出的网络步长,输出层由一个M × N × 7体积组成,其中M = H/Ns且N =W/Ns。对于该层中的每个空间点单元(m, n),网络生成七个值:第一个值 v1(n, m)是对应单元格遇到物体的概率,接下来的六个值—— v2(n, m)到v7(n, m)——与用于车牌定位的仿射变换相关。因此,损失函数必须包含与分类和定位任务相关的参数。我们首先定义每个个体损失,然后定义用于训练模型的最终损失函数。
损失函数的第一部分(分类)处理网络输出中单元格(m, n)存在目标的v 1(m ,n)概率。与多个二分类器类似,该值由以下方式给出
$$ f_{clas}(m, n)= \text{logloss}(I(m , n), v_1(m, n)), \quad (1) $$
其中 I(m,n)是目标指示函数,如果在单元格(m,n)处存在目标则返回1,否则返回0,且
$$ \text{logloss}(y, p)= -y \log(p) -(1 - y) \log(1 - p). \quad (2) $$
为了选择输出层中应对物体做出响应的单元格(m,n),我们首先将标注的车牌的角点pi调整到输出分辨率(将其除以Ns)。然后,我们相对于质心将调整后的四边形按比例 β= 0.5进行缩小,并将该区域内所有点(m,n)选为车牌的正标签(即 I(m,n)= 1)。此类单元格的示意图以白色显示在图2左侧(原始图像来自Cars数据集[24])。
对于定位损失,其核心思想是找到一个仿射变换,将标准正方形映射到标注的车牌的四个角点上。更准确地说,令pi=[xi,yi] T,其中i= 1,···,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表示以原点为中心的标准单位正方形的相应顶点。
对于与车牌相关的输出中的一个单元格(m,n)(即满足 I(m,n)= 1的单元格),我们通过网络步长的倒数对点 pi进行重新缩放,并根据(m,n)对其进行重新居中,使其中心大致与原点对齐。这是通过应用归一化函数实现的
$$ A_{mn}(p)= \frac{1}{N_s} p - [m,n]^T, \quad (3) $$
其中 α是一个缩放常数,旨在近似调整后四边形与标准正方形的尺寸。我们将 α= 7.75设为车牌最大和最小尺寸在增强的训练数据中的平均值除以网络步长(训练细节将在下文提供)。
然后,我们希望估计局部仿射变换
$$ T_{mn}(q)= \begin{bmatrix} v_2(n, m) & v_3(n, m) \ v_4(n, m) & v_5(n, m) \end{bmatrix}^+ q + \begin{bmatrix} v_6(n, m) \ v_7(n, m) \end{bmatrix}, \quad (4) $$
使得 Tmn(qi) ≈Amn(pi),其中 i= 1,2,3,4,x+= max{0,x} 是应用于仿射矩阵的对角线的 ReLU算子,用于避免水平或垂直翻转。该过程如图2所示。对于单元格(m,n)与左侧以橙色突出显示的车牌相关,我们在右侧展示了经过缩放和居中的四边形Amn(pi),以及标准正方形和正方形与四边形之间的预期映射关系(灰色箭头)。该映射的质量通过标注点与扭曲后的点之间的L1误差之和来量化。
$$ f_{loc}(m, n)= \sum_{i=1}^{4} |T_{mn}(q_i) - A_{mn}(p_i)|_1, \quad (5) $$
即定位损失。
最终损失通过将公式(1)和(5)中定义的局部项相加得到:
$$ \text{loss}= \sum_{m=1}^{M} \sum_{n=1}^{N} [I(m, n)f_{loc}(m, n)+ \lambda f_{clas}(m, n)], \quad (6) $$
其中 λ是定位项的相对权重。由于IWPOD‐NET中引入的分支提供了任务特定层,损失函数中的每一项在一定程度上被独立最小化,因此 λ的选择并不关键(我们使用了 λ= 1)。另外,请注意仿射参数仅根据真实标注在与车牌相关的单元格中进行估计,即当 I(m,n)= 1时。
在推理步骤中,检索最终卷积体积中所有分类概率 (n,m)大于阈值 v1(nm) Tlp的空间单元,并应用非极大值抑制(NMS)以去除高度重叠的车牌。对于获胜单元,从输出体积的最后六层中获取仿射变换 Tmn,并根据公式(4)将其应用于规范点 qi。这些点最终使用公式(3)中 Anm的逆算子进行反归一化,以获得原始分辨率下的估计车牌角点。根据车牌角点,我们计算平面单应性,将这些点映射到车牌的正对视图外观。如果已知车牌的实际尺寸,则可以利用它们保持车牌的正确宽高比。然而,在本研究中,我们将车牌解扭曲为一个与用于执行LPR的网络相关的固定大小矩形,这将在第三节‐C中讨论。
3) 训练细节
使用全卷积网络的一个优势是,我们可以在固定分辨率输入上进行训练(这样可以生成训练批次并加速训练过程),但在任意尺寸的测试图像上执行推理。假设输入图像的尺寸为N ×N,其中N必须是网络步长N s= 16的倍数。
考虑到网络必须处理各种各样的车牌模板、几何变化(由于相机投影导致的尺寸和透视畸变)以及颜色和光照条件,我们必须严重依赖数据增强来训练网络。给定一幅标注的训练图像,我们随机应用几何畸变(以模拟不同尺寸和视角)和光度失真(以模拟颜色和光照变化,以及模糊和噪声)。通过该策略,每幅训练图像都可以生成无限数量的增强版本。接下来将描述增强过程。
我们首先定义一个目标宽度w ∈[wminwmax],其中 0< wmin< wmax< N。我们使用了wmin= 0.2N和 wmax= N,使得最大宽度是最小宽度的五倍。由于我们没有车牌的实际尺寸(训练数据集包含来自多个地区的车牌,每个地区对车牌尺寸有不同的法规),我们随机选择一个目标宽高比ar,并计算高度h = w/ar。根据不同地区车辆和摩托车的宽高比,我们为车辆选择ar ∈[2.5、 4.5],为摩托车选择ar ∈[1.25、2.5] 。然后,我们平移目标车牌的角点,使其完全位于期望的尺寸N ×N内,方法是随机选择水平偏移量ho ∈[0,N −w]和垂直偏移量 vo ∈[0,N − h],以确定目标车牌左上角坐标的偏移。
下一步,我们求解将训练图像中标注的车牌角点映射到平移后的目标车牌角点的平面单应性H0。需要注意的是,将H0应用于输入图像可以将车牌“校正”为标准正平行视图。
在获得标准车牌后,我们可以人为地对包含车牌的平面施加三维旋转,以模拟同一摄像头下的多种视角。更具体地说,我们分别在 ±45◦、 ±80◦和±80◦的范围内选择横滚、俯仰和偏航角度。这些范围提供了极为多样的视角变化,并用于生成另一个平面单应性H1 ,以在平面上实现三维旋转。该单应性H1是在假设使用焦距为f= 1000 mm的标准针孔相机的情况下获得的,并且假设包含车牌的平面位于相同距离z= 1000mm处。最后,我们计算最终的单应性H= H1H0 ,并根据H扭曲输入训练图像(标注点也相应地进行扭曲)。由于单应性扭曲通常无法填满目标图像的整个矩形区域,因此使用一组随机选择的背景图像进行补全。这样做的目的是增加负样本的数量,从而减少网络产生的误报。
几何畸变处理后,应用光度增强。以下每种畸变均可随机应用:
- 取反:以p= 5%的概率对输入图像进行取反
- 模糊:应用高斯模糊,概率为p= 15%。模糊尺度 σ在范围[0, 0.1N]内随机选择;
- 颜色变化:在HSV色彩空间中进行随机修改,概率为p= 100 %。
从上述选定的变换集合中,可以从单个手动标注样本生成大量具有显著不同视觉特征的增强测试图像。图3展示了增强流程以及从Cars数据集中提取的同一标注输入图像生成的四个不同增强样本。
为了训练模型,我们使用了[11]中提供的196个标注图像,外加175张包含摩托车车牌标注的图像以及223张包含其他车辆(汽车、公交车、卡车)的图像,总共693个标注图像。我们选择N= 208来定义输入分辨率为 208×208以训练网络。
因此,增强过程中所有车牌的宽度从wmin= 42变化到w max= 208像素。
我们将原始WPOD‐NET的前18层(直到倒数第二残差层)的权重复制到扩展模型IWPOD‐NET中,冻结它们,并使用大小为64的小批量和ADAM优化器[25]以0.001的学习率对剩余层进行40k次迭代训练。然后,我们使用相同的学习率对所有层再训练50k次迭代,将学习率降低至 0.0001,并额外训练150k次迭代。
B. 车辆检测与缩放
如前所述,可以在运行IWPOD‐NET之前应用车辆检测。由于IWPOD‐NET被训练用于在一定范围内检测车牌,因此车辆检测既可以用来减少车牌的搜索空间,也可以调整输入到IWPOD‐NET的图像大小,使得预期的车牌尺寸处于合适的范围内。
目标检测领域的最先进水平正在不断进步,目前已有很多可用的检测器。在本研究中,我们选择使用Yolov3[14],,它在一般的目标检测任务中,特别是在车辆检测[26]的背景下,在准确率和运行时间之间提供了良好的权衡。尽管在 COCO数据集上训练的Yolov3版本已经包含了所需的类别——汽车(包括公交车和卡车)以及摩托车——但其训练数据涉及的场景在自动车牌识别应用中并不存在(或不理想)。例如,车辆标注包含了车辆的小部分(例如,仅由车载仪表盘摄像头拍摄到的车头部分),这对于涉及车辆的通用应用可能具有意义,但对于自动车牌识别而言则并不适用。此外,该数据集还包含非常小型车辆,其车牌无法辨认(甚至几乎不可见)。除了对 COCO 2017和Pascal VOC 2012数据集的标注进行剪枝外,我们还使用了来自UFPR‐ALPR数据集(训练集和验证集)以及包含摩托车的私有图像,最终获得了26,149张汽车和 6,661张摩托车图像。我们将Yolov3的输出层修改为仅适应两个类别,并将基于COCO预训练的Yolov3主干网络权重迁移过来,进行了10个周期的训练。随后,我们解冻所有层,并额外训练了15个周期,采用早停机制。
由于我们希望处理各种各样的捕获场景,输入图像的尺寸以及车辆的相对大小可能会有较大变化。因此,在运行IWPOD‐NET之前,我们需要将其调整为合适的尺寸。我们注意到,在大多数正面或背面视角中,车牌宽度相对于车辆裁剪区域宽度的比例变化较小,因为这两个结构本身的尺寸变化有限。在更倾斜的视角下,该比例 tends to be 更小,因为车辆图像还包括了侧面部分。我们还注意到,车辆边界框的宽高比可以粗略地区分正面和倾斜视角:在正面视角下宽高比接近于1,随着视角变得更加侧面,宽高比逐渐增大。
基于对自动车牌识别中使用的多个数据集进行的经验评估(这些数据集将在第四节‐B中讨论),我们确定了一个缩放因子f sc,其表达式为
$$ f_{sc}= \min\left{1, \frac{W_v}{w_v}\right}, \quad (7) $$
其中wv ×hv为检测到的车辆的边界框尺寸,ar=max{1, wv/hv}为其(裁剪后的)宽高比,Wv为缩放常数(汽车设为256,摩托车设为208)。
C. 车牌识别(LPR)
考虑到 IWPOD‐NET 生成了校正后的车牌,车牌识别问题被极大简化,因为它无需处理字符在旋转或尺寸上的大幅变化。然而,对于车牌识别模块仍存在多种选择和可能性。如第二节所述,一些方法利用序列信息(例如 CTC)直接获取车牌字符串,而另一些方法则依赖目标检测来定位并分类车牌中的每个字符。
尽管训练阶段需要标注字符定位,但我们认为基于目标检测的车牌识别具有多个优势:i)由于同一车牌中的所有字符高度通常相似,因此可以利用字符边界框来识别并剔除离群值;ii)摩托车车牌(或一般情况下具有多行字符的车牌)对基于序列/循环的方法构成挑战,但使用基于检测的方法可以有效处理;iii)如果我们预先知道车牌中字符的数量(或范围),而这一点由多个国家/地区规定,则可以利用置信度得分相应地调整检测数量。在本研究中,我们提出了将上述特性融入任何现有基于检测的车牌识别方法的策略。
1) 施加尺寸一致性
由于IWPOD‐NET执行的解扭曲操作提供了车牌的大致正视图,因此车牌中的所有字符高度应大致相同。我们通过测量每个字符高度(由边界框提供)与中位数的符合程度来利用这一先验知识。如果hi表示在给定车牌中第ith个检测到的字符的高度,则计算其相对于中位数的相对差异
$$ e(h_i)= \left| \frac{h_i - \text{median}{h_i}}{\text{median}{h_i}} \right|, \quad (8) $$
在车牌内,e(hi)的所有值都应较低。因此,e(hi)大于阈值Th的字符应为离群值。
为了验证我们的假设,我们计算了用于训练[11],中提出的车牌识别网络的数据集中每个标注车牌的字符高度中位数,该数据集包含分布在883个车牌上的5,429个带有边界框标注的字符。然后,我们计算了同一车牌上所有字符的相对中位数偏差e(hi)。所有误差的平均值为0.0267,标准差为 0.0287,表明分布非常均匀且数值较低。我们设定一个非常保守的阈值Th= 0.207,对应于该分布的99.9%百分位数(假设正态分布),旨在减少对一致字符的误删除。
2) 寻找双行字符串
在本研究中,我们认为摩托车车牌包含两行字符,如巴西和大多数欧洲国家的情况。当在摩托车车辆标签内检测到车牌时,我们首先检索每个字符的中心垂直坐标vi ,并希望将检测结果分为两行。为此,我们以稳健的方式计算vi的平均值(通过剔除可能与离群值相关的最低和最高值,并对剩余字符取平均)。然后,将vi小于平均值的字符分配至第一行,其余字符分配至第二行。
3) 施加区域依赖性约束
在默认的区域无关模式下,所有得分高于阈值Tlpr的检测结果都会被保留。如果我们知道车牌必须包含n ∈[nmin,nmax]个字符,则可以调整阈值Tlpr以获得nmin个检测结果(如果n< nmin),或者仅保留得分最高的nmax个字符(如果n> nmax)。除了每个字符的置信度阈值外,我们还对整个车牌施加最小“全局置信度”要求,该置信度由所有字符的平均检测得分组成。如果该值小于阈值Tmean,则丢弃该车牌(这有助于消除由LPD产生的误报)。值得一提的是,类似策略(不包括全局置信度)已在[15]中采用。
如果已知车牌中字符的分布(如在巴西或中国),当数字出现在错误位置时,我们可以将其替换为形状相似的字母(反之亦然)。可能引起混淆的字母/数字组合示例包括 B ↔ 8、Z ↔ 2、I ↔ 1、S ↔ 5。
4) IWPOD‐NET与车牌识别的集成
如第三节‐A所述, IWPOD‐NET的输出可用于将检测到的车牌变换至任意分辨率。在本研究中,我们测试了两种车牌识别网络:[11],中提出的OCR模块,该模块需要 80× 240图像作为输入;以及[15],中使用的OCR模块,该模块受[11],启发,使用更多数据进行训练,并需要 128×352图像。与汽车相关的车牌被扭曲为这些分辨率,而与摩托车相关的车牌则被扭曲为较小宽高比的图像(每种OCR网络分别为 80×120和 128×192),并用灰色背景填充,类似于基于YOLO 的方法。
IV. 实验结果
本节涵盖我们完整的自动车牌识别系统的实验分析。我们首先讨论现有的验证数据集和评估指标,然后展示 IWPOD‐NET在车牌检测方面取得的结果。接下来,我们提供本方法得到的完整的ALPR结果,并与其他最先进的方法和商用系统进行比较。
A. 参数设置与实现细节
所提出的方法在流程中包含三个网络,我们经验性地设置了以下接受阈值:车辆检测(Yolov3)为0.35,车牌检测(IWPOD‐NET)为0.35,以及LPR中的字符检测为0.4。需要注意的是,车牌检测仅应用于车辆检测器生成的区域,因此我们为第一个模块选择了较低的阈值以减少漏检数量。此外,对于少于四个字符或平均字符置信度小于Tmean= 0.6(通过经验设定)的车牌,被视为误报并予以丢弃。
在所有实验中,结果均使用默认设置生成,且未预知车牌区域。包含任何区域相关的后处理步骤(如第三节‐C3部分所述)的结果将被明确标出。此外,由于字符“I”和“1”在巴西车牌中是相同的,因此在OpenALPR‐BR和 UFPR‐ALPR数据集的评估中被视为同一类别。
所提出的卷积神经网络(IWPOD‐NET)在TensorFlow框架中实现,预训练权重可在 https://github.com/claudiojung/iwpod-net 获取。基于 Yolov3的车辆检测器通过 https://github.com/qqwweee/keras-yolo3 提供的Keras实现进行集成,而基于YOLOv2的车牌识别模块则通过 https://github.com/thtrieu/darkflow 提供的TensorFlow实现集成到我们的模型中。使用Python封装将所有模块集成在一起。实验所用硬件为Intel i7处理器,配备16GB内存和 NVIDIA RTX 2070显卡(8GB显存),运行在Windows 10操作系统上。实际运行时间取决于车辆数量(如果在 IWPOD‐NET之前使用车辆检测)以及输入IWPOD‐NET的输入图像大小。在考虑所有数据集的情况下,我们能够以平均速度 13.6 FPS(每秒帧数)运行完整的自动车牌识别系统。我们的网络及其训练权重将在论文被接受后公开提供。
B. 评估指标和数据集
尽管自动车牌识别系统的目标是正确识别所有车牌字符,但提出完整流程的方法例如,[9],[20]展示了LPD模块和最终LPR结果的结果。在评估LPD时,通常的做法是计算检测到的车牌与真实标注之间的交并比(IoU)。尽管这一方法被广泛采用,但本文指出,使用IoU可能存在误导性,主要原因有两个: i)大多数数据集的车牌标注以矩形边界框形式提供,而实际的车牌区域是四边形,在倾斜/旋转视角下可能与矩形边界框有显著差异;ii)IoU对最终任务的信息量不足:我们可能得到两个IoU完全相同的车牌检测结果,但如果其中一个漏掉了车牌的任何字符,则LPR任务将受到影响。
尽管我们对IoU提出了批评,但在第四节‐C中,我们仍使用IWPOD‐NET对LPD模块进行了简要分析。
对于车牌识别(LPR)这一最终任务(即所提出流程的最终结果),我们按照[1]中定义的方式计算了总准确率。该指标由正确识别的车牌数量除以标注的车牌总数得出(这实际上是召回率的核心思想)。我们还探讨了著名的莱文斯坦字符串距离[28],,即一个字符串转换为另一个字符串所需的最小单字符编辑次数。因此,当且仅当两个字符串完全匹配时,该距离为零,这等同于准确率。我们的LPR结果见第IV‐D节。
关于评估数据集,我们首先注意到,我们的方法设计和训练旨在应对多种场景,包括多种车辆(如汽车、公交车、卡车或自行车),这些车辆具有不同的尺寸和拍摄视角,以及来自不同地区的车牌。因此,我们选择了四个在线可用的数据集,分别是OpenALPR(欧盟和巴西子集)、 UFPR‐ALPR、AOLP(AC、LE 和 RP 子集)1和 CD‐HARD[8], 2,这些数据集共同涵盖了各种观察角度、光照条件、拍摄距离以及车牌区域。值得一提的是在3中提出的CCPD数据集,该数据集包含大量在各种情况下拍摄的中国车牌,并提供了车牌的四边形标注[27],。然而,我们在下载完整数据集后发现图像被高度压缩,有时甚至影响了车牌的可读性。事实上,图像的平均文件大小为 71.8KB,而论文中提到的平均文件大小为200KB。因此,我们仅将其用于接下来描述的车牌检测实验中。
C. 车牌检测结果
对于车牌检测(LPD)任务,我们使用AOLP和CCPD数据集。为了应对每个数据集的特殊性,我们为每个数据集采用不同的评估方式。参照[27],我们使用AOLP的边界框标注,并根据精确率(PE)和召回率(RE)来评估结果,当预测结果与真实标注的交并比(IoU)大于0.5时,视为正确检测。与[11],相同,在AOLP中未使用车辆检测。
表II所示的结果表明,所提出的方法具有最高的召回率,但精确率相对较低。然而,需要指出的是,IWPODNET能够正确地定位一些在真实数据中未标注的车牌,这增加了误报的数量(从而降低了精确率),尤其是在LE子集中。如果我们忽略此类检测结果,则AC、LE和RP子集的精确率分别提高到99.9%、99.3%和99.8%。图4展示了AOLP的一些结果,其中我们的结果以绿色显示,真实标注以红色显示。第二、第三和第四幅图像分别展示了一个“真实”误报、“错误”误报和一个漏检的示例,并用彩色箭头标出。
对于[20],中介绍的CCPD数据集,作者认为如果车牌检测结果与真实值标注的交并比大于0.7,则该车牌检测结果正确,这是一个更具选择性的阈值。尽管该数据集提供了车牌的四边形标注,但作者基于边界框计算交并比,而我们认为比较四边形之间的交并比更为合适。表III显示了我们的方法和竞争性方法在CCPD数据集不同子集上的结果以及总准确率(根据每个子集中的样本数量计算得出)。尽管在不同子集之间存在一些差异,但这三种方法的总准确率非常接近。我们认为这是我们的方法取得的一个显著成果,因为对比的方法[3],[20]使用了CCPD训练集中10万张图像进行训练/微调,而我们的方法仅使用了该数据集中的105张图像(总共693张)进行训练。
为了便于说明,我们还展示了通过我们的方法生成的四边形与真实标注四边形之间的交并比(IoU)准确率对比,同样使用0.7作为接受阈值,表中表示为“我们的方法(四边形)”。我们认为这是用于评估车牌检测方法的正确指标。图5展示了我们的LPD模块在AOLP的部分选定样本以及CCPD数据集的六个子集的随机选择上的结果。可以观察到,我们的方法与真实值具有很强的重叠性,在某些情况下,甚至比真实标注更好地捕捉到了车牌几何形状。
D. 车牌识别结果
我们首先进行一项消融研究,比较原始会议论文中提出的方法[11]和所提出的修改方法,在LPR任务中保持相同的 OCR模块。表IV显示了[11],在更换车辆检测器和使用 IWPOD‐NET作为LPD模块(表中记为IWPOD‐NET−)后,我们方法的最终LPR准确率,以及添加由公式(8)给出的字符后处理后的最终结果,后者简称为IWPOD‐NET。我们可以注意到,仅通过更换LPD模块,我们在四个数据集中的三个上提高了准确率(在AOLP‐RP上的准确率保持不变),而使用后处理结果会带来额外的增益。正如我们接下来将展示的,通过更换LPR模块,结果还可以进一步提升。
表V展示了我们的方法、最先进水平方法以及商用系统的最终自动车牌识别准确率结果。关于商用系统,我们于 2020年7月对所有数据集运行了OpenALPR和Sighthound 的结果,但UFPR数据集除外,因其已提供了这两个系统的基准结果。对于OpenALPR,必须指定车牌区域( CD‐HARD为多区域,我们选择了美国,因其似乎是最灵活的区域),而Sighthound则不依赖区域信息。关于我们的方法,带有’的结果是使用[15],的光学字符识别获得的,上标 rg表示额外使用了第三节‐C3部分所述的区域信息。对于巴西车牌,这意味着强制限定七个字符,并保持 LLLDDDD的车牌结构(L表示字母,D表示数字);对于台湾车牌,我们强制限定为五个或六个字符;对于欧洲车牌,其变化较大,添加区域信息不会改变结果。
我们可以观察到,IWPOD‐NET的区域无关版本表现出极具竞争力的结果,在CD‐HARD上得分最高,在所有 AOLP子集上也位居前列。值得注意的是,一些方法(如 [1],[3],[8],[9],[27], )针对特定区域或数据集进行了定制,而IWPOD‐NET在所有测试中使用了完全相同的版本。当引入区域相关的信息时,其在巴西和台湾车牌上的结果更佳。在使用训练更好的光学字符识别方法(IWPOD‐NET’ 和 IWPOD‐NET’rg)时,我们在大多数数据集上取得了最佳结果,在大多数子集中达到了最先进水平的准确率。
需要注意的是,UFPR‐ALPR数据集提供了同一车辆/车牌的多幅图像(测试集包含60辆不同车辆的30帧图像),因此可以探索时间一致性。如果我们采用[19],中提出的加权模式投票方案,时间上一致的结果将显著改善与逐帧版本相比。此外,请注意,IWPOD‐NET 和 IWPOD‐NETrg 的准确率为零,因为这些版本中使用的光学字符识别技术未使用摩托车车牌进行训练。当更换OCR模块 (IWPOD‐NET’ 和 IWPOD‐NET’rg)并加入时间一致性后,我们的方法在所有方法中取得了最佳结果,对摩托车的识别准确率达到100%。
图6展示了几例使用所提出方法(IWPOD‐NET版本)在不同数据集上的自动车牌识别示例。这些图像分别来自(从左上角开始顺次排列)Cars数据集(图像1、2、6)、 AOLP(图像3、8‐10)、OpenALPR(图像7、11)和 UFPR(图像4、5)。绿色矩形是车辆检测器的输出,红色四边形表示检测到的车牌,黄色四边形表示被丢弃的车牌检测结果(原因可能是平均OCR置信度过低,或检测到的字符数少于四个)。校正后的车牌及相应的车牌识别结果显示在图像的顶部或底部。图6的上一行展示了正确的车牌识别结果,其中前两幅图像呈现了严重扭曲但仍被 IWPOD‐NET正确校正的车牌。中间图像展示了一个正确的车牌识别结果,同时还包含另一辆车的部分车牌检测。最后两幅图像分别为公交车和摩托车的识别结果。图6的下一行展示了一些失败案例。第一幅图像中仅识别出四个字符中的三个,且车牌被错误丢弃。第二和第三幅图像展示了IWPOD‐NET未能正确识别车牌区域的例子,导致车牌识别失败。第四幅图像中车牌未被检测到,第五幅图像中车辆后部的一个电话号码(右上角)被错误地检测为车牌(误报结果)。最后,第六幅图像说明了最常见的失败原因:车牌被正确检测和校正,错误发生在车牌识别模块中。
最后,我们在表VI中展示了所提出的方法(不同版本)在考虑1个和2个字符时的结果。
五、结论与未来工作
在本研究中,我们提出了一种适用于无约束场景的完整自动车牌识别系统,其中由于倾斜视角,车牌可能会出现明显扭曲。本工作的主要贡献是引入了一种能够通过回归仿射变换来检测并校正多个扭曲车牌的网络,该仿射变换将标准正方形映射到车牌的四个角点。该网络仅使用少量标注数据(仅693张图像)进行训练,却表现出显著的泛化能力,可有效处理在不同光照条件和视角下拍摄的汽车和摩托车车牌。此外,本文还提出了可与任何基于检测器的车牌识别模块结合使用的后处理策略,并采用了一个针对输出类别(包括公交车和卡车)微调的目标检测器来识别汽车和摩托车。
我们的结果表明,所提出的车牌检测方法在具有挑战性的数据集(CCPD)上,其准确率可与其他使用远多于我们数据量的最先进方法相媲美。当与基于对象的车牌识别模块结合时,我们的完整自动车牌识别方法在包含大角度倾斜拍摄车牌的挑战性数据集中优于现有方法,同时在受控采集场景下仍保持最先进的准确率水平。关于特定问题在摩托车车牌识别中,所提出的方法优于现有方法 [8],[15], ,在利用时序信息时实现了零错误率。
在未来的工作中,我们计划专注于识别模块,以处理严重退化的车牌(例如低分辨率或运动模糊的车牌)。为此,我们打算充分依赖时序信息,在识别步骤之前通过合并多个帧的深度特征来提高车牌的质量,这与本研究中探索的时序一致性方法不同(该方法在每一帧都执行车牌识别,然后对车牌识别结果应用一致性处理)。
无约束场景下的车牌识别

被折叠的 条评论
为什么被折叠?



