本文主要是介绍论文笔记【车牌识别】:Towards End-to-end Car License Plate Location and Recognition in Unconstrained Scenarios,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
论文:https://arxiv.org/pdf/2008.10916.pdf
文章结构
- 摘要
- 1. Introduction
- 2. 相关工作
- 2.1车牌定位
- 2.1.1 传统的方法
- 2.1.2 基于深度学习的方法
- 2.2 车牌识别
- 2.2.1 基于分割的方法
- 2.2.2 无分隔方法
- 2.3 端到端的方法
- 3. 所提出方法的细节
- 3.1 概述
- 3.2 网络结构
- 3.2.1 特征提取
- 3.2.2 定位网络
- 3.2.3 RoIAlign和修正
- 3.2.4 识别网络
- 3.3 优化
- 3.3.1 标签任务
- 3.3.2 损失函数
- 3.4 后处理
- 4. 实验结果
摘要
得益于卷积神经网络的快速发展,汽车牌照检测和识别的性能得到了很大提高。尽管如此,大多数现有的方法都分别解决检测和识别问题,并专注于特定的场景,这阻碍了现实世界应用程序的部署。为了克服这些挑战,我们提出了一个高效准确的框架来同时解决车牌检测和识别任务。它是一个轻量级、统一的深度神经网络,可以端到端优化并实时工作。具体来说,对于无约束场景,采用无锚方法来有效地检测车牌的边界框和四个角,用于提取和校正目标区域特征。然后,设计了一个新的卷积神经网络分支,在不进行分割的情况下进一步提取字符的特征。最后,将识别任务视为序列标记问题,由连接主义时间分类(CTC)直接解决。选择几个公共数据集进行评估,包括在各种条件下从不同场景收集的图像。实验结果表明,所提出的方法在速度和精度上都显著优于先前最先进的方法。
1. Introduction
无约束场景存在的各种挑战:
- 由于照明和天气等环境因素的影响,车牌的图像质量差导致识别精度下降。
- 车牌拍摄的倾斜度大,导致车牌和字符分割不准确,直接降低了识别的准确性。
- 运行速度也是ALPR系统的重要衡量标准,使用更大的网络或更复杂的处理实现的高精度也将导致速度下降。
以前的大多数工作都集中在两个子任务(定位,识别)中的一个子任务上,或者分别解决它们。
- 对于车牌定位子任务,通常采用通用的物体检测方法来生成边界框。然而,当车牌拍摄存在较大的倾斜或旋转度时,单个边界框无法定位准确的区域。
- 对于识别子任务,基于分割的方法在很大程度上取决于字符分割的质量,而字符分割对无约束条件很敏感。相反,无分割方法通常通过使用递归神经网络(RNN)方法直接标记车牌字符,这相对耗时。
只有少数先前的工作试图通过单个网络解决这两个子任务。与两步(检测、识别)解决方案相比,当应用适当的学习策略时,端到端的训练方式更加简洁高效。此外,使用类似的处理模块(如主干网、RNN)可以实现相当的性能。我们认为仍有三个主要挑战阻碍了ALPR系统在现实世界应用中的部署。
- 第一个挑战是对无约束场景的适应性和泛化能力
- 第二个问题是速度和准确性之间的权衡。
- 第三个是模型训练和部署的便利性。
为了克服这些挑战,我们提出了一个高效、准确的框架来同时解决这两个子任务。对于不受约束的场景,检测子任务对边界框和车牌的四个角进行回归。拐角处的车牌区域对拍摄角度不敏感,比边界框定位的车牌区域更准确。然后,计算校正后的特征用于车牌识别,将其视为序列标记问题。识别子任务也基于一个非常小的网络,将校正后的特征作为输入。整个网络可以进行端到端的训练并实时工作。图1是我们提出的框架的示意图。输入图像被馈送到单个神经网络,该网络由特征提取、定位和识别组成。最终结果包括三个部分:一个边界框、四个角和字符。
和基于分割的方法相比,差异如下:
- 管道。我们提供了一个端到端网络,可以在单个前向通道中读取牌照,而他们的方法是级联架构,包括两个相对独立的网络。
- 特征提取。我们使用典型的FPN进行特征提取和融合。输入是单个图像。对多尺度特征进行提取和融合,用于定位和识别。不同的是,他们的比例金字塔方法分别处理每个缩放的图像。输入是多尺度图像。他们将这些天平的检测结果进行融合,得出最终结果。
- 定位。我们的定位网络是基于使用完全卷积层的无锚方法,而他们的方法是基于完全连接层。
- 识别。我们将车牌识别视为序列标记,而他们将其视为字符检测和分类问题。图1描述了我们提出的框架的示意性概述。
总之,本文的主要贡献如下:
- 我们提出了一种新的端到端可训练网络,利用共享特征和多任务学习策略同时解决车牌定位和识别任务。与两步解决方案相比,它有一个更简单但有效的管道。
- 对于无约束场景,设计了一种无锚方法来有效地预测车牌的边界框和四个角。准确的定位和校正可以显著提高识别性能。
- 所提出的方法是一种高效、准确的网络,可以实时工作。为了提高效率,使用了轻质主干。对于车牌定位,使用无锚方法去除了非最大值抑制(NMS),这也可以显著减少处理时间。
- 我们还介绍了一个用于无需分割的车牌识别的小型CNN分支。与基于RNN的方法相比,它更有效。
2. 相关工作
2.1车牌定位
2.1.1 传统的方法
传统的检测方法建立在手工制作的特征和浅层可训练架构之上[19]。它们基于这样一个事实,即车牌是矩形的,有特殊的颜色和相对固定的字符。因此,已经采用了基于边缘、基于颜色、基于纹理和基于字符的方法。
- 基于边缘的方法
方法:边缘聚类被公式化用于解决平板检测问题。使用期望最大化(EM)来提取车牌区域。在[8]中,提出了一种线密度滤波器方法来提取候选区域。然后,使用线性支持向量机(SVM)基于颜色显著性特征对候选区域进行进一步分类。 - 基于颜色的方法
方法:使用颜色像素来检测车牌的位置。基于边缘和基于颜色的方法对于实时应用来说通常足够快。
缺点:边缘和颜色特征对无约束场景中的照明条件很敏感。例如,边缘特征可能会丢失,颜色可能会在强光下发生变化。 - 基于纹理的方法
方法:该方法使用小波变换和经验模式分解(EMD)分析来搜索车牌的位置。在[12]中,多级扩展局部二进制模式被用作有效的检测器。
优点:与基于边缘和颜色的方法相比,这类方法可以缓解由于光照变化和复杂背景所带来的问题,这是通过使用更耗时的处理模块来实现的。 - 利用字符特征直接定位车牌字母数字字符的方法。
方法:车牌被分解为几个组成字符。然后,分别使用条件随机场(CRF)和最大稳定极值区(MSER)来提取和构造特征。
缺点:基于特征的方法可以在一定程度上适应各种环境因素。缺点是他们很容易受到角色背景的影响。
综上所述,传统方法主要提取低层次的手工特征,这些特征的表示能力有限。总是需要额外的处理步骤。尽管复杂的管道是为了处理不受约束的情况而设计的,但性能很难像基于深度学习的方法那样好。
2.1.2 基于深度学习的方法
基于深度学习的方法基于深度学习方法通常使用深度神经网络提取特征并回归位置参数。它们中的大多数都是经过监督训练建造的。对于特征提取,以前的大多数工作都采用了常用的主干,如VGG、DarkNet、ResNet、DenseNet,这些主干很耗时。一些作品设计了轻量级网络以提高效率。例如,[2]介绍了一种具有少于20个卷积层的新型网络。它对于实时应用程序来说足够快。
对于定位,可以使用YOLO、SSD、Faster-rcnn等通用对象检测方法来获取车牌的边界框。目标检测方法大致可分为三类:基于锚的一阶段方法、两阶段方法和无锚方法。基于锚点的一阶段方法,如YOLO和SSD,由于其较低的计算成本,经常用于车牌检测。例如,[29]提出了一种使用YOLO检测器的鲁棒且高效的ALPR系统。在[9]中,针对车牌图像提出了一种基于改进YOLO框架的多向检测器。两阶段方法,如Faster-rcnn,具有较高的检测精度,但计算效率较低。[17] 提出了一种基于两阶段检测的网络。候选LP区域由区域建议网络(RPN)检测。然后,使用检测头进行边界框回归。与基于锚的方法相比,无锚方法[30,31]避免了与锚相关的超参数和IoU的计算(在地面实况框和锚框之间),这使得训练过程更加高效和容易训练。此外,一些技巧可以提高性能。在[11]中,设计了一种混合级联结构,用于在复杂场景中检测小而模糊的车牌。在[32]中,RNN被设计用于提高复杂场景中车牌的定位率。在[3]中,预测了车牌的4个角,以提高检测精度。总之,通过使用大量样本进行训练,基于深度学习的方法通常更稳健。
2.2 车牌识别
2.2.1 基于分割的方法
传统的车牌识别方法通常基于字符分割。然后,采用光学字符识别(OCR)方法对每个字符进行逐一分类。车牌识别的准确性在很大程度上取决于字符分割的质量。
2.2.2 无分隔方法
无分段方法通常直接将车牌字符作为一个序列。识别任务可以转化为序列标记问题。为了解决这类问题,在不同的情况下采用了基于CNN和基于RNN的方法。这些方法之所以可行,是因为车牌中的字符长度相对固定。通常,基于细胞神经网络的方法的适应性相对较弱,很难使用单个模型灵活适应不同长度的车牌。其他方法,如基于完全卷积网络(FCN)的方法,通过语义分割找到每个字符区域,也可以获得相对较好的结果。
基于RNN的方法广泛应用于语音识别、语言建模、机器翻译等领域。由于其强大的连接主义机制,RNN在序列标记方面具有天然的优势。然而,基于RNN的方法依赖于前一时间步长的计算,因此不允许对序列中的每个元素进行并行化。
2.3 端到端的方法
两个子任务由单个端到端可训练网络解决。与两步方法相比,端到端方法可以减少检测和识别模型之间的误差传播。
3. 所提出方法的细节
3.1 概述
所提出的网络架构如图2所示。与现有的方法不同,我们的方法是一种新的无锚网络,可以同时解决车牌定位和识别任务。它由特征提取、定位分支和识别分支组成。对于共享特征提取,为了提高效率,我们选择了轻量级主干。然后使用信道缩减和FPN。受[31]中无锚方法的启发,我们设计了一个检测头,在没有NMS的情况下回归边界框和板的角。与单边界框方法相比,拐角可以更准确地标记车牌。对于识别,RoIAlign首先通过边界框剪切和调整共享特征图的大小。然后,在角落的帮助下进行调整。我们设计了基于CNN的识别头来标记和解码字符序列,而不需要字符分割。它是一个实时、端到端可训练的框架,可以在不受约束的场景中工作。
3.2 网络结构
3.2.1 特征提取
为了提高效率,采用了轻量级模型(ResNet-18)作为骨干网络。然后,采用信道缩减策略,进一步降低计算成本。对于网络中的上采样,为了提高效率,我们使用了一种简单的最近邻插值算法。具体如下:
- 由主干的conv2、conv3、conv4和conv5级生成的4个特征图(表示为C2、C3、C4、C5)用于信道减少。4个特征图相对于输入图像具有4、8、16、32个像素的步长。
- 通过使用1×1卷积层(包括BN和ReLU),将每个特征图的通道数减少到128。缩减后的特征图表示为C’2、C’3、C’4、C’5。采用特征金字塔网络(FPN)从上到下融合不同级别的特征图。
- 计算4个新的特征图(命名为P2、P3、P4、P5),每个特征图具有128个通道。它们的计算公式为:
P 5 = C 5 ′ P_5=C'_5 P5=C5′
P 4 = 0.5 × C 4 ′ + 0.5 U p × 2 ( P 5 ) P_4=0.5×C'_4+0.5U_{p×2}(P5) P4=0.5×C4′+0.5Up×2(P5)
P 3 = 0.5 × C ′ 3 + 0.5 U p × 1 ( P 4 ) P_3=0.5×C'3+0.5U_{p×1}(P4) P3=0.5×C′3+0.5Up×1(P4)
P 2 = 0.5 × C ′ 2 + 0.5 U p × 3 ( P 3 ) P_2=0.5×C'2+0.5U_{p×3}(P3) P2=0.5×C′2+0.5Up×3(P3)
其中 U p × 2 U_{p×2} Up×2表示2次上采样。最近邻插值算法用于上采样。 - 为了进一步融合低层次和高层次之间的语义特征,我们使用中的类似方法来计算特征图F。其描述如下: F = P 2 ∪ U p × 2 P 3 ∪ U p × 4 P 4 ∪ U p × 8 P 5 F = P_2 ∪ U_{p×2}P_3 ∪ U_{p×4}P_4 ∪ U_{p×8}P_5 F=P2∪Up×2P3∪Up×4P4∪Up×8P5。
其中∪表示通道级联, U p × 4 ( ⋅ ) U_{p×4}(·) Up×4(⋅)和 U p × 8 ( ⋅ ) U_{p×8}(·) Up×8(⋅)分别表示4次和8次上采样。 - 使用3×3卷积层(具有BN和ReLU)将F的通道数减少到128。
3.2.2 定位网络
角的预测是基于四个角有明显的纹理和形状特征这一事实。我们将角落作为车牌的关键点,并回归相对于中心点的位置。所提出的探测头如图3所示。虽然我们预测四个角可以准确地代表一个车牌,但边界框也可以用于车牌定位和校正。首先,它用来帮助我们确定一个角落属于哪个板块。当图像中有多个板块时,我们计算角和包围框之间的距离。最近的角连接到边界框。其次,在RoIAlign阶段也使用该算法对特征进行裁剪以进行整流。
提出的探测头,由6个子分支组成,3个子分支用于边界框回归,3个子分枝用于角点回归。我们使用中心点w、h和偏移来表示边界框,使用相对位置来标记车牌的4个角。边界盒解码器和角解码器分别用于解码盒和角。对于每个分支,使用3×3卷积层和1×1卷积层。对于所有子分支,3×3卷积层的信道数被设置为64。1×1卷积层用于格式化输出特征图。不同类型的分支有不同的通道编号。
- Sigmoid激活的子分支是用于预测边界框和角的中心的热图。
- 对于边界框,w、h通过具有2个输出通道的子分支进行回归。对于拐角,相对位置由具有8个输出通道的分支预测。
- 剩下的子分支用于计算特征图下采样(从H × W到1 4H × 1 4W)引起的偏移量。
由于所提出的位置分支是一个密集的预测网络,因此热图的每个点都是一个预测结果。对于边界框解码,提取热图中的峰值作为中心点。然后从其他两个分支中提取每个中心点的w、h和偏移量。对于角解码,角被严格分为四类(左上、右上、左下、右下)。然后,为每个类别提取热图中的峰值。在找到所有边界框和角之后,我们使用边界框中心和角之间的简单距离测量来确定角属于哪个框。
3.2.3 RoIAlign和修正
RoIAlign [41] 被用来通过定位网络解码的边界框对共享特征图进行裁剪和调整大小。我们知道,车牌是矩形的。我们将 h = 32,w = 96 来调整裁剪后的特征大小。然后,RoIAlign 之后的特征图大小变为 Br × 32 × 96 × 128,其中 Br = B × M 是用于识别的新批次大小。M 是每个图像中许可证板实例的最大数量。与 RoI 池相比,RoIAlign 可以生成具有更准确边界的特征图。修正的设计是为了消除特征图的透视畸变。在无约束的场景中,用单个边界框表示车牌的位置是不精确的,因为包括许多车牌区域外的无效像素。在这种情况下,经过 RoIAlign 处理后的特征是扭曲和嘈杂的,这会影响识别的性能。
为了解决这个问题,我们使用四个角来精确定位车牌。具体地,投影变换用于将由角点形成的一个向量空间映射到由相应边界框定义的另一个向量空间。变换可以通过简单的乘法完成。
3.2.4 识别网络
我们将车牌识别视为不进行字符分割的序列标记。序列标记的目标是分配标签序列。由于特征之间没有相关性,为了提高效率,我们使用一个简单的CNN网络来模拟时间分类。与基于分割的方法相比,时间分类数据只能用目标序列进行弱标记。如图4所示,我们设计了一个只有5个卷积层和2个Max pooling层的小网络,用于进一步的特征提取。
3.3 优化
3.3.1 标签任务
对于位置,网络需要给出车牌的角和中心的位置。对于每个中心,附加w, h和偏移量。对于每个角,添加相对坐标x, y和偏移量。如图5所示,中心和角落用值([0,1])表示,且为高斯分布。这些分布的中心点设为1。右边的图像是五个标记地图的融合。
3.3.2 损失函数
训练任务包括定位和识别两部分。因此损失函数可以表示为:
L = L d + λ L r L = L_d + λL_r L=Ld+λLr
其中 L d L_d Ld是位置损失, L r L_r Lr是识别损失。我们在实验中设置权重因子λ = 10。定位损失 L d L_d Ld描述如下:
L d = L c b + L w b h + β L o f f b + L c c + L w c h + β L o f f c L_d = L^b_c + L^b_wh + βL^b_{off} + L^c_c + L^c_wh + βL^c_{off} Ld=Lcb+Lwbh+βLoffb+Lcc+Lwch+βLoffc
其中, L c b L^b_c Lcb和 L c c L^c_c Lcc分别为中心和角的位置损失, L w b h L^b_wh Lwbh为包围盒的w、h损失, L w c h L^c_wh Lwch为角的相对坐标损失, L o f f b L^b_{off} Loffb和 L o f f c L^c_{off} Loffc分别为包围盒和角的偏移损失。权重因子 β β β设置为0.05。
3.4 后处理
对于定位,边界盒解码器和角解码器的结果需要经过4倍的乘法恢复到原始图像大小。然后,删除无效值。对于识别,由于车牌是具有一定规格的特殊字符序列,我们通过设置特定的规则对解码序列进行过滤。也就是说,在字符解码之后不符合规则的结果首先被丢弃。我们制定了车牌识别规则,包括字符数规则和字符子集规则两部分。采用第一条规则过滤掉长度不满足要求的结果序列。第二条规则为车牌的每个字符定义了一个有效子集。如果任何字符不在其子集中,结果序列将被过滤掉。我们在光束搜索之后做后处理。满足预定义规则的第一个序列就是最终结果。需要注意的是,后期处理是可选的。
4. 实验结果
在本节中,我们在几个公共数据集上对所提出的方法进行了实验评估,包括CCPD数据集[18],AOLP数据集[20]和北大车辆数据集[8]。对于检测性能指标,采用预测盒与地面真相盒之间的交集over Union (IoU)来判断检测结果是否与地面真相匹配。欠条的阈值λ一般设置为λ = 0.5。当IoU > λ时,预测框是正确的。对于端到端性能度量,应该同时考虑检测和识别。根据[17]中使用的一般端到端评估协议,我们计算借条和识别结果。当IoU > λ与车牌识别结果相匹配时,预测结果正确。
这篇关于论文笔记【车牌识别】:Towards End-to-end Car License Plate Location and Recognition in Unconstrained Scenarios的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!