OCR - 2 - PP-OCRv2: Bag of Tricks for Ultra Lightweight OCR System - 1 - 论文学习
PP-OCRv2: Bag of Tricks for Ultra Lightweight OCR System
Abstract
光学字符识别(OCR)系统已广泛应用于各种应用场合。设计OCR系统仍然是一项具有挑战性的任务。在以前的工作中,我们提出了一个实用的超轻量级OCR系统(PP-OCR),以平衡准确度和效率。为了提高PP-OCR的准确性和保持高效率,本文提出了一种更健壮的OCR系统,即PP-OCRv2。我们介绍了一系列技巧来训练更好的文本检测器和文本识别器,包括 Collaborative Mutual Learning (CML), CopyPaste, Lightweight CPU Network (PP-LCNet), Unified-Deep Mutual Learning (U-DML) 和 Enhanced CTCLoss。实际数据实验表明,在相同的推理代价下,PP-OCRv2的精度比PP-OCR高7%。它还可以与PP-OCR的server模型相媲美,后者使用ResNet系列作为backbone。代码、模型可见https://github.com/PaddlePaddle/PaddleOCR
1 Introduction
如图1所示,OCR(光学字符识别)在过去二十年中得到了很好的研究,并有各种应用场景,如文档电子化、身份验证、数字金融系统和车辆牌照识别。
在实际构建OCR系统时,不仅要考虑精度,还要考虑计算效率。在之前的研究中,我们提出了一种实用的超轻量级OCR系统(PP-OCR)(Du等人,2020年),以平衡准确度和效率。它由文本检测、检测框校正和文本识别三部分组成。Differentiable Binarization(DB)(Liao et al.2020a)用于文本检测,CRNN(Shi、Bai和Yao 2016)用于文本识别。该系统采用19种有效策略来优化和缩小模型的大小。为了提高PP-OCR的准确性和效率,本文提出了一种更健壮的OCR系统,即PP-OCRv2。它引入了一系列技巧来训练更好的文本检测器和文本识别器。
图2展示了PP-OCRv2的框架。大多数策略遵循PP-OCR,如绿色框所示。橙色框中的策略是PP-OCRv2中的附加策略。在文本检测中,引入了Collaborative Mutual Learning(CML)和CopyPaste。CML利用两个student网络和一个teacher网络来学习更强大的文本检测器。CopyPaste是一种新的数据增强技巧,已被证明能有效提高目标检测和实例分割任务的性能(Ghiasi et al.2021)。我们表明,它也适用于文本检测任务。在文本识别中,引入了轻量级CPUNetwork(PP-LCNet)(Cui等人,2021年)、Unified-Deep Mutual Learning(U-DML)和CenterLoss。PP LCNet是一种新设计的基于Intel CPU的轻量级backbone,它是从MobileNetV1(Howard et al.2017)改进而来的。U-DML利用两个student网络学习更准确的文本识别器。CenterLoss的角色是放松相似字符的错误。我们进行了一系列消融实验来验证上述策略的有效性。
此外,图2灰色框中的策略在PP-OCR中被证明是有效的。但本文并未对此进行验证。未来,我们将采用它们来加速PP-OCRv2-tiny中的推理。
论文的其余部分组织如下。在第二节中,我们将详细介绍新添加的增强策略。第三节讨论了实验结果和第四节得出结论。
2 Enhancement Strategies
2.1 Text Detection
Collaborative Mutual Learning (CML) 我们提出了CML方法(Zhang et al.2017)来解决文本检测蒸馏的问题。蒸馏有两个问题:1.如果teacher模型的精度接近student模型的精度,则一般蒸馏法带来的改进是有限的。2.如果teacher模型的结构和student模型的结构有很大不同,那么一般蒸馏法带来的改进也非常有限。
该框架是由多个模型组成的超级网络,分别命名为student模型和teacher模型,如图3所示。CML方法在文本检测中可以达到蒸馏后student的准确度超过teacher模型的准确度的性能。
在CML中,两个sub-student模型使用DML方法相互学习(Zhang等人,2017)。同时,有一个teacher模式来指导两个student模式的学习。teacher模型使用ResNet18作为backbone,student模型使用scale为0.5的MobinenetV3大型模型作为backbone。
CML旨在优化sub-student模式。teacher模型的参数被冻结,只有sub-student模型按照设计的损失进行训练。一般来说,sub-student模型的监督信息包括三部分,包括ground truth标签、另一个student模型的后验熵和teacher模型的输出。相应地,有三个损失函数,包括ground truth损失Lgt、student模型中的peer损失Ls和teacher模型中的distill损失Lt。
ground truth损失,简称GTLoss,是为了确保训练由真实标签监督。我们使用DB算法(Liao等人,2020b)来训练sub-student模型。因此,ground truth损失Lgt是一种组合损失,包括概率lap lp的损失、二进制map lb的损失和阈值map lt的损失。GTLoss的公式如下所示,其中lp、lb和lt分别是二进制交叉熵损失、Dice损失和L1损失。α、 β是超级参数,默认值分别为5和10。
sub-student模型参考DML方法相互学习(Zhang等人,2017)。但与DML的不同之处在于,sub-student模型在每次迭代中同时进行训练,以加快训练过程。KL散度用于计算student模型之间的距离。student模型之间的peer损失如下:
distill损失反映了teacher模型对student模型的监督。teacher模型可以为student模型提供丰富的知识,这对性能改进非常重要。为了获得更好的知识,我们扩展了teacher模型的响应概率map,以增加目标区域。此操作可以略微提高teacher模型的准确性。distill损失如下所示,其中lp和lb分别为二进制交叉熵损失和Dice损失。γ是超级参数,默认值为5。fdila是以矩阵[[1,1],[1,1]]为核的扩张函数。
最后,在训练PP-OCR检测模型的CML方法中使用的损失函数如下所示。
CopyPaste是一种新的数据增强技巧,已被证明能有效提高目标检测和实例分割任务的性能(Ghiasi et al.2021)。它可以合成文本实例来平衡训练集中正负样本的比例,而传统的图像旋转、随机翻转和随机裁剪无法实现这一点。由于前景中的所有文本都是独立的,所以CopyPaste在随机选择的背景图像上粘贴文本时不会重叠。图4是CopyPaste的一个示例。
2.2 Text Recognition
Lightweight CPU Network (PP-LCNet) 为了在英特尔CPU上获得更好的准确度和速度权衡,我们设计了一个基于英特尔CPU的轻量级backbone,它提供了一个更快、更准确的OCR识别算法,并启用了mkldnn。整个网络的结构如图5所示。与MobileNetV3相比,由于MobileNetV1的结构使得在英特尔CPU上启用MKLDNN时更容易优化推理速度,因此网络是基于MobileNetV1(Howard et al.2017)的。为了使MobileNetV1具有更强的特征提取能力,我们对其网络结构进行了一些修改。改进策略将从以下四个方面进行说明。
1.更好的激活函数。为了提高MobileNetV1的拟合能力,我们用H-Swish替换了网络中的原始ReLU激活函数,这可以在只稍微增加推理时间的情况下显著提高准确性。
2.在适当位置安装SE模块。SE(Hu、Shen和Sun 2018)模块自提出以来已被大量网络使用。这是一种对网络channel进行加权以获得更好特征的好方法,并被用于许多轻量级网络,如MobileNetV3(Howard et al.2019)。然而,在英特尔CPU上,SE模块增加了推理时间,因此我们无法将其用于整个网络。事实上,通过大量实验,我们发现越靠近网络的尾部,SE模块就越有效。所以我们只需将SE模块添加到网络尾部附近的块中。这会使速度平衡更精确。SE模块中两层的激活函数分别为ReLU和H-Sigmoid。
3.较大的卷积核。卷积核的大小通常会影响网络的最终性能。在mixnet(Tan和Le 2019)中,作者分析了不同大小的卷积核对网络性能的影响,最后在网络的同一层中混合了不同大小的核。然而,这种混合会减慢模型的推理速度,因此我们尝试在尽可能少的推理时间增加的情况下增加卷积核的大小。最后,我们将网络尾部卷积核的大小设置为5×5。
4.GAP后的更大维度的1x1 卷积层。在PP-LCNet中,GAP后网络的输出维数很小,直接连接到最终的分类层会丢失特征的组合。为了使网络具有更强的拟合能力,我们将1280维大小的1x1 卷积连接到最终的GAP,这将在不增加推断时间的情况下增加模型大小。
通过这四个变化,我们的模型在ImageNet上表现良好,表4列出了与英特尔CPU上其他轻量级模型相比的指标。
Unified-Deep Mutual Learning (U-DML)
Deep mutual learning (Zhang et al.2017)是一种两个student网络相互学习的方法,知识蒸馏不需要一个具有预训练权重的更大teacher网络。在DML中,对于图像分类任务,损失函数包含两部分:(1)student网络和ground truth之间的损失函数。(2) 学生网络输出soft标签中的Kullback–Leibler散度(KL-Div)损失。
Heo提出的OverHaul(Heo等人,2019年),其中蒸馏过程使用了student网络和teacher网络之间的特征map距离。在student网络特征map上进行变换,以保持特征map对齐。
为了避免teacher模型训练过程过于耗时,本文在DML的基础上,提出了U-DML,在蒸馏过程中对特征map进行监督。图6显示了U-DML的框架。
蒸馏过程有两个网络:student网络和teacher网络。它们具有完全相同的网络结构和不同的初始权重。其目标是,对于相同的输入图像,两个网络可以得到相同的输出,不仅对于预测结果,而且对于特征map。
总损失函数由三部分组成:(1)CTC损失。由于这两个网络都是从零开始训练的,所以CTC损失可以用于网络的收敛;(2) DML损失。预计两个网络的最终输出分布相同,因此需要DML损失来保证两个网络之间分布的一致性;(3) feature损失。这两个网络的结构是相同的,因此它们的特征map应该是相同的,feature损失可以用来约束两个网络的中间特征map距离。
CTC loss. CRNN是本文中 文本识别的基础架构,它集成了特征提取和序列建模。它采用了Connectionist Temporal Classification (CTC)损失(Graves等人,2006年),以避免预测与ground truth之间的不一致。由于这两个sub-student是从头开始训练的,所以这两个子网采用CTC损失。损失函数如下所示。
其中Shout表示student网络的head输出,Thout表示teacher网络的head输出。gt表示输入图像的GroundTruth标签。
DML loss. 在DML中,每个子网络的参数分别更新。这里,为了简化训练过程,我们计算两个子网络之间的KL发散损失,并同时更新所有参数。DML损失如下所示。
其中KL(p | | q)表示p和q的KL散度。Spout和Tpout可计算如下:
Feature loss. 在训练过程中,我们希望student网络的backbone输出与teacher网络的backbone输出相同。因此,与Overhaul类似,feature损失用于蒸馏过程。损失的计算方法如下:
其中Sbout表示student网络的backbone输出,Tbout表示teacher网络的backbone输出。这里使用了均方误差损失。值得注意的是,对于特征损失,不需要进行特征map变换,因为用于计算损失的两个特征map完全相同。
最后,U-DML训练过程的总损失为如下所示:
在训练过程中,我们发现piece-wise学习率策略是更好的蒸馏选择。当使用特征损失时,模型需要更长的时间才能达到最佳精度,因此本文使用800个epochs和piece-wise策略来进行文本识别蒸馏过程。
此外,对于标准的CRNN体系结构,CTC-head只使用了一个FC层,这对于信息解码过程来说有点弱。因此,我们修改了CTC-head部件,使用两个FC层,这将导致精度提高约1.5%,而无需额外的推断时间成本。
Enhanced CTCLoss 中文识别任务中存在大量相似字符。他们在外表上的差异非常小,常常被认错。在PP-OCRv2中,我们设计了一个增强的CTCLoss,它结合了原始CTCLoss和度量学习中的CenterLoss(Wen等人,2016)思想。对其进行了一些改进,使其适用于序列识别任务。增强型CTCLoss的定义如下:
其中,xt是时间戳t的特征。cyt是类yt的中心。由于CRNN(Shi、Bai和Yao 2016)算法中的特征和标签之间的错位,我们没有明确的xt的标签yt。我们采用贪婪解码策略得到yt:
W是CTC head的参数。实验表明:λ=0.05是一个很好的选择。
3 Experiments
3.1 Experimental Setup
DataSets 我们在之前的PP-OCR工作(Du等人,2020年)中使用的相同数据集上进行实验,如表1所示。
对于文本检测,有97k个训练图像和500个验证图像。训练图像由68K真实场景图像和29K合成图像组成。真实场景图像收集自百度图像搜索以及公共数据集,包括LSVT(Sun等人2019)、RCTW-17(Shi等人2017)、MTWI 2018(他和Yang 2018)、CASIA-10K(他等人2018)、SROIE(Huang等人2019)、MLT 2019(Nayef等人2019)、BDI(Karatzas等人2011)、MSRA-TD500(Yao等人2012)和CCPD 2019(Xu等人2018)。合成图像主要关注长文本、多方向文本和表格中文本的场景。验证图像均来自真实场景。
对于文本识别,有1790万张训练图像和18.7K验证图像。在训练图像中,190万张是真实场景图像,来自一些公共数据集和百度图像搜索。使用的公共数据集包括LSVT、RCTW-17、MTWI 2018和CCPD 2019。剩下的16M合成图像主要关注不同背景的场景、旋转、透视变换、噪声、垂直文本等。合成图像的语料库来自真实场景图像。所有验证图像也都来自真实场景。
此外,我们为不同的实际应用场景收集了300张图像,以评估整个OCR系统,包括合同样本、车牌、铭牌、火车票、测试表、表格、证书、街景图像、名片、数字仪表等。图7和图8显示了测试集的一些图像。
文本检测和文本识别中使用的数据合成工具由text render(Sanster 2018)修改而来。
Implementation Details 我们采用了PP-OCR中使用的大多数策略(Du等人,2020年),如图2所示。我们使用Adam optimizer对所有模型进行训练,将初始学习率设置为0.001。不同之处在于,我们采用余弦学习率衰减作为检测模型训练的学习率方案,而采用piece-wise衰减作为识别模型训练的学习率方案。检测和识别模型训练都在最初几个epochs 中使用了warm-up训练。
在文本检测方面,该模型总共训练了700个epochs,其中进行了2个epochs的warm-up训练。batch大小设置为8/per card。在文本识别方面,进行了5个epochs的warm-up训练;然后训练了700个epochs,初始学习率为0.001;再训练100的epochs,学习率设置为0.0001。batch大小为128/per card。
在推理阶段,Hmean用于评估文本检测器和端到端OCR系统的性能。Sentence Accuracy用于评估文本识别器的性能。GPU推断时间在单个T4 GPU上测试。CPU推断时间在Intel(R)Xeon(R)Gold 6148上进行了测试。
3.2 Text Detection
表2显示了用于文本检测的DML、CML和CopyPaste的消融研究。基线模型为PP-OCR轻量级检测模型。在测试过程中,输入图像的长边调整为960。数据显示,DML可以将Hmean度量提高近2%,而CML可以提高3%。最后,通过数据增强方法CopyPaste,最终的Hmean可以进一步提高0.6%。因此,在相同的速度下,PP-OCRv2检测模型比PP-OCR检测模型提高了3.6%,同时模型结构保持不变。推理时间是包括预处理和后处理在内的总时间。
3.3 Text Recognition
表3显示了PP-LCNet、U-DML和增强CTC损失的消融研究。与MV3相比,PP-LCNet的准确率可提高2.6%。尽管PP-LCNet的模型大小要大3M,但由于网络结构的合理设计,推理时间从7.7ms减少到了6.2ms。U-DML方法可以将准确度再提高4.6%,这是一个显著的改进。此外,在使用CTC损失的情况下,准确度可提高0.9%。因此,使用所有这些策略,准确率提高了8.1%,模型大小增大了3M,但平均推理时间加快了1.5毫秒。
Ablation study for PP-LCNet 为了测试PP-LCNet的泛化能力,我们在整个模型设计过程中使用了具有挑战性的数据集,如ImageNet-1k。表4显示了PP-LCNet和我们在ImageNet上选择的其他不同轻量级模型之间的准确度-速度比较。很明显,PP-LCNet在速度和准确性方面都取得了更好的性能,即使与MobileNetV3这样有竞争性的网络相比也是如此。
3.4 System Performance
在表5中,我们比较了提出的PP-OCRv2与之前的超轻量级和大规模PP-OCR系统之间的性能。大规模PP-OCR系统使用ResNet18_vd作为文本检测器backbone,ResNet34_vd作为文本识别器backbone,与超轻量级版本相比,可以实现更高的Hmean,但推理速度较慢。可以发现,在相同的推理成本下,PP-OCRv2的Hmean比PP-OCR mobile模型高7.3%,与PP-OCR server模型相当。图9显示了提出的PP-OCRv2系统和之前的超轻量级和大规模PP-OCR系统的一些端到端识别结果。
4 Conclusions
在本文中,我们提出了一个更加鲁棒的超轻量级OCR系统PP-OCRv2。我们引入了一系列技巧来增强我们之前的工作PP-OCR,其中包括Collaborative Mutual Learning (CML), CopyPaste, Lightweight CPU Network (PP-LCNet), Unified-Deep Mutual Learning (U-DML) 和 CenterLoss。在真实数据上的实验表明,在相同的推理代价下,PP-OCRv2的准确率高于PP-OCR。给出了相应的消融实验。同时,一些实用的超轻量级OCR模型和一个大规模的数据集也已经发布了。