这篇文章详细介绍了一种名为PP-OCRv3的超轻量级光学字符识别(OCR)系统的研究成果。PP-OCRv3是百度公司开发的一种升级版OCR系统,旨在进一步提高文本检测和识别的性能,同时保持高效的计算效率。以下是文章的主要研究内容概括:
研究背景与动机
OCR技术的应用:OCR技术在文档电子化、身份认证、数字金融系统和车辆牌照识别等多种场景中得到广泛应用。
挑战:设计一个实用的OCR系统需要平衡准确性和计算效率,尤其是在资源受限的环境中(如移动设备)。
PP-OCRv3系统概述
前代系统:文章回顾了PP-OCR和PP-OCRv2系统,这些系统在准确性和效率之间取得了较好的平衡。
新系统PP-OCRv3:提出了PP-OCRv3,通过9个方面的改进进一步提升了性能。
主要改进策略
文本检测器:
LK-PAN模块:引入了具有大感受野的PAN模块,提升对大字体和极端宽高比文本的检测能力。
RSE-FPN模块:引入了具有残差注意力机制的FPN模块,增强特征图的表示能力。
DML蒸馏策略:采用深度互学习策略,提升教师模型的性能。
文本识别器:
SVTR-LCNet:结合了基于Transformer的SVTR和基于CNN的PP-LCNet,形成轻量级文本识别网络。
GTC(通过注意力引导的CTC训练):使用注意力模块指导CTC训练,提高准确性。
TextConAug:通过数据增强策略挖掘文本上下文信息。
TextRotNet:使用自监督预训练模型,提升模型的收敛效果。
U-DML(统一深度互学习):同时监督和训练不同结构的特征图和输出。
UIM(未标记图像挖掘):使用高精度模型预测未标记图像,获取伪标签。
实验结果
数据集:使用了多个真实场景和合成数据集进行训练和验证,涵盖了多种文本检测和识别的场景。
性能提升:
Hmean:PP-OCRv3的Hmean比PP-OCRv2高出5%,在相同的预测成本下。
推理速度:PP-OCRv3在CPU上的推理速度与PP-OCRv2相当,在T4 GPU上快22%。
消融实验:通过一系列消融实验验证了各改进策略的有效性。
PP-OCRv3通过一系列优化策略,在保持高效计算效率的同时,显著提升了文本检测和识别的准确性,使其成为一个更强大的OCR系统。这些改进使得PP-OCRv3在实际应用中更具优势,尤其是在资源受限的环境中。文章还提供了详细的实验设置、实现细节和参考文献,为研究人员和开发者提供了丰富的信息,以便进一步研究和应用PP-OCRv3系统。这里是自己的论文阅读记录,感兴趣的话可以参考一下,如果需要阅读原文的话可以看这里,如下所示:
摘要
光学字符识别(OCR)技术已在各种场景中得到广泛应用,如图1所示。设计一个实用的OCR系统仍然是一个有意义但具有挑战性的任务。在以往的工作中,考虑到效率和准确性,我们提出了一个实用的超轻量级OCR系统(PP-OCR),以及一个优化版本PP-OCRv2。为了进一步提升PP-OCRv2的性能,本文提出了一种更强大的OCR系统PP-OCRv3。PP-OCRv3在9个方面基于PP-OCRv2升级了文本检测模型和文本识别模型。对于文本检测器,我们引入了一个具有大感受野的PAN模块,名为LK-PAN,一个具有残差注意力机制的FPN模块,名为RSE-FPN,以及DML蒸馏策略。对于文本识别器,我们引入了轻量级文本识别网络SVTR-LCNet,通过注意力引导的CTC训练,文本增强数据增强策略TextConAug,通过自监督TextRotNet获得更好的预训练模型,U-DML,以及UIM以加速模型并提高有效性。实验表明,PP-OCRv3的Hmean比PP-OCRv2高出5%,且推理速度相当。上述所有模型均已开源,代码可在GitHub仓库PaddleOCR中获取,该仓库由PaddlePaddle支持。
1 引言
如图1所示,野外的OCR(光学字符识别)有各种应用场景,例如文档电子化、身份认证、数字金融系统和车辆牌照识别。近年来,研究人员对OCR中的文本检测和文本识别子问题进行了深入研究。提出了许多有效的算法,例如用于文本检测的DB(Liao等人,2020)和用于文本识别的CRNN(Shi、Bai和Yao,2016)。通过连接一个检测模型和一个识别模型,可以获得一个常见的两阶段OCR系统。在实际的工业应用中,OCR系统通常需要部署在各种软件和硬件环境中,其中存储空间或计算资源往往有限,例如在手机上。因此,在构建实际的OCR系统时,我们需要同时考虑准确性和计算效率。
图1:提出的PP-OCRv3系统的一些图像结果。
此前,我们提出了一个实用的超轻量级OCR系统(PP-OCR)(Du等人,2020),以平衡准确性和效率,并在PP-OCRv2(Du等人,2021)中提出了一系列技巧,以在不增加预测成本的情况下进一步提高准确性。PP-OCRv2的Hmean比PP-OCR移动模型高出7%,且与使用ResNet系列作为主干的服务器模型相当。然而,仍然存在一些问题,例如单个单词的漏检和误识别,如图11和图12所示。在本文中,我们提出了PP-OCRv3,这是一个更强大的OCR系统,能够更好地解决上述问题。图2展示了PP-OCRv3的框架。PP-OCRv3的整体框架与PP-OCRv2相同,由三个部分组成:文本检测、检测框校正和文本识别。在PP-OCRv3中,分别进一步优化了文本检测模型和文本识别模型。具体来说,检测网络仍然基于DB(Liao等人,2020)进行优化,而识别网络的基本模型被SVTR(Du等人,2022)取代,而不是CRNN(Shi、Bai和Yao,2016)。大多数策略遵循PP-OCR和PP-OCRv2,如绿色框所示。粉色框中的策略是在PP-OCRv3中新增的。
图2:提出的PP-OCRv3的框架。绿色框中的策略与PP-OCRv2相同。粉色框中的策略是PP-OCRv3中新增的。灰色框中的策略被PP-OCRv3微型模型采用。
对于文本检测器,我们引入了一个具有大感受野的PAN模块,名为LK-PAN,一个具有残差注意力机制的FPN模块,名为RSE-FPN,以及DML(Zhang等人,2017)蒸馏策略。LK-PAN和DML用于提升教师模型的性能,而RSE-FPN被集成到学生网络中。通过一个性能更好的教师模型和一个优化的学生网络,可以使用协同互学习(CML)(Du等人,2021)训练出一个更好的检测模型。对于文本识别器,我们引入了轻量级文本识别网络SVTR-LCNet,通过注意力引导的CTC训练,文本增强数据增强策略TextConAug,通过自监督TextRotNet获得更好的预训练模型,U-DML,以及UIM以实现准确性和效率的平衡。SVTR-LCNet是一个新颖的轻量级文本识别网络,它结合了基于Transformer的算法SVTR(Du等人,2022)和基于CNN的算法PPLCNet(Cui等人,2021),后者被用作PP-OCRv2识别器的主干,以便结合它们在准确性和效率方面的优势。其他六个策略,包括通过注意力引导的CTC训练、TextConAug、TextRotNet、U-DML和UIM,被引入以提高准确性而不增加任何预测成本。此外,图2中灰色框中的策略被采用以进一步压缩和加速PP-OCRv3。压缩后的模型被称为PP-OCRv3微型。我们进行了一系列消融实验来验证上述策略的有效性。实验表明,PP-OCRv3的Hmean比PP-OCRv2高出5%,且推理速度相当。本文的其余部分安排如下。在第2节中,我们介绍新提出的改进策略的详细信息。第3节讨论实验结果,第4节得出结论。
2 改进策略
2.1 文本检测
PP-OCRv3检测模型的训练框架仍然是协同互学习(CML)蒸馏,这是在PP-OCRv2中提出的,如图3所示。CML的主要思想是结合传统的教师指导学生蒸馏策略和深度互学习(DML)(Zhang等人,2018),允许学生网络相互学习。在PP-OCRv3中,我们分别优化了教师模型和学生模型。对于教师模型,提出了一个具有大感受野的PAN模块,名为LK-PAN,并采用了DML蒸馏策略;对于学生模型,提出了一个具有残差注意力机制的FPN模块,名为RSE-FPN。
LK-PAN:具有大感受野的PAN模块 LK-PAN(大核PAN)是一个轻量级PAN(Liu等人,2018)模块,具有更大的感受野,如图4所示。主要思想是在PAN模块的路径增强中将卷积核大小从3×3增加到9×9,这可以扩大特征图中每个像素的感受野,使其更容易检测大字体和具有极端宽高比的文本。
DML:教师模型的深度互学习 DML(深度互学习)(Zhang等人,2018)可以通过两个具有相同结构的模型相互学习,有效提高文本检测模型的准确性。在教师模型训练中采用了DML策略,以尽可能提高教师模型的Hmean。图5展示了PP-OCRv3中DML的示意图。
RSE-FPN:具有残差注意力机制的FPN模块 RSE-FPN(残差挤压激励FPN)通过用RSEConv替换FPN中的卷积层,引入残差注意力机制,以提高特征图的表示能力。RSEConv由两部分组成:挤压激励(SE)块(Hu、Shen和Sun,2018)和残差结构,如图6所示。最初,我们尝试仅添加SE块,结果并不如预期有效。考虑到PP-OCRv2轻量级FPN的通道数相对较少,SE模块可能会抑制一些包含重要特征的通道。在RSEConv中引入残差结构可以缓解上述问题,并提高文本检测性能。
图3:PP-OCRv3检测模型的CML蒸馏框架。
图4:LK-PAN的示意图。
图5:DML的示意图。
图6:RSE-FPN的示意图。
2.2 文本识别
PP-OCRv3的识别模型基于文本识别算法SVTR(Du等人,2022)进行优化。SVTR通过引入Transformer结构,不再涉及循环神经网络(RNN),能够更有效地挖掘文本行图像的上下文信息。为了使SVTR更具实用性,我们采用了六个策略来优化和加速模型,如图7所示。
SVTR-LCNet:轻量级文本识别网络 SVTR-LCNet是一个轻量级文本识别网络,融合了基于Transformer的网络SVTR(Du等人,2022)和基于CNN的轻量级网络PP-LCNet(Cui等人,2021)。具体来说,我们采用了SVTR的微型版本,名为SVTR-Tiny。然而,由于MKLDNN加速库支持的模型结构有限,基于CRNN的PP-OCRv2识别器在CPU上启用MKLDNN时,SVTR-Tiny的速度慢了10倍,这还不够实用。
如图8所示,SVTR-Tiny的主要结构是Mix Block,通过分析证明这是最耗时的模块,因此我们分三步优化结构以加快速度并确保模型的有效性,如图9所示。首先,考虑到PP-LCNet的高效率,我们用PP-LCNet的前三阶段替换了SVTR-Tiny的前半部分网络,并保留了4个全局Mix Block。其次,我们将全局Mix Block的数量从4个减少到2个。第三,由于我们发现全局Mix Block的预测速度与输入特征的形状有关,我们将全局Mix Block移到池化层后面。最终,我们得到了一个新颖的轻量级文本识别网络SVTR-LCNet,如图9(c)所示。
GTC:通过注意力引导的CTC训练 连接时序分类(CTC)和注意力机制是最近场景文本识别工作中使用的两种主要方法。与基于注意力的方法相比,CTC解码器可以实现更快的预测速度,但准确性较低。为了获得一个高效且有效的模型,我们使用一个注意力模块来引导CTC的训练,以融合多种特征,参考了GTC(Hu等人,2020)方法,这对于提高准确性是有效的。由于在预测过程中完全移除了注意力模块,因此在推理过程中没有增加更多的时间成本。
TextConAug:用于挖掘文本上下文信息的数据增强 TextConAug是一种用于挖掘文本上下文信息的数据增强策略。主要思想来自论文ConCLR(Zhang等人,2022),其中作者提出了数据增强策略ConAug,将一批中的2张不同图像连接起来形成新图像,并进行自监督对比学习。我们将这种方法应用于监督学习任务,并设计了TextConAug,它可以丰富训练数据的上下文信息并提高训练数据的多样性。
(a)用PP-LCNet的前三阶段替换SVTR的前半部分网络,并保留4个全局Mix Block。 (b)将全局Mix Block的数量从4个减少到2个。 (c)将全局Mix Block移到池化层后面。虚线表示全局Mix块的位置移动过程,用SVTR G表示。
图9:SVTR-Tiny的优化过程。SVTR-LCNet如(c)所示。
TextRotNet:自监督预训练模型 TextRotNet是一个通过自监督方式用大量未标记文本行数据训练的预训练模型,参考了先前的工作STR-Fewer-Labels(Baek、Matsui和Aizawa,2021)。我们使用这个模型来初始化SVTR-LCNet的权重,帮助文本识别模型更好地收敛。
U-DML:统一深度互学习 U-DML是PP-OCRv2中提出的一种策略,非常有效,可以在不增加模型大小的情况下提高准确性。在PP-OCRv3中,对于两种不同结构的SVTR-LCNet和注意力模块,PP-LCNet的特征图、SVTR模块的输出以及它们之间的注意力模块的输出同时受到监督并进行训练。
UIM:未标记图像挖掘 UIM是一种简单的未标记数据挖掘策略。主要思想是使用高精度文本识别模型对未标记图像进行预测以获得伪标签,并选择预测置信度高的样本作为训练轻量级模型的训练数据。
3 实验
3.1 实验设置
数据集 我们在表1所示的数据集上进行实验,这些数据集是在我们先前的工作PP-OCR(Du等人,2020)和PP-OCRv2(Du等人,2021)的基础上扩展的。对于文本检测,有12.7万张训练图像和200张验证图像。训练图像包括6.8万张真实场景图像和5.9万张合成图像。真实场景图像是从百度图片搜索和公共数据集收集的,包括LSVT(Sun等人,2019)、RCTW-17(Shi等人,2017)、MTWI 2018(He和Yang,2018)、CASIA-10K(He等人,2018)、SROIE(Huang等人,2019)、MLT 2019(Nayef等人,2019)、BDI(Karatzas等人,2011)、MSRATD500(Yao等人,2012)和CCPD 2019(Xu等人,2018)。合成图像主要关注长文本、多方向文本和表格中文本的场景。验证图像全部来自真实场景。对于文本识别,有1850万张训练图像和1.87万张验证图像。在训练图像中,700万张是真实场景图像,来自一些公共数据集和百度图片搜索。公共数据集包括LSVT、RCTW-17、MTWI 2018、CCPD 2019、openimages https://github.com/openimages/dataset 和InvoiceDatasets https://github.com/FuxiJia/InvoiceDatasets。此外,我们从网络上抓取了75万张财务报告图像。我们通过UIM策略从LSVT未标记数据中获得了81万张图像。我们还从Pubtabnet https://github.com/ibm-aur-nlp/PubTabNet 获得了约300万张裁剪图像。其余的1150万张合成图像主要关注不同背景、旋转、透视变换、加噪、垂直文本等场景。合成图像的语料库来自真实场景图像。所有验证图像也来自真实场景。此外,我们收集了800张不同真实应用场景的图像,以评估整个OCR系统,包括合同样本、车牌、铭牌、火车票、试卷、表格、证书、街景图像、名片、数字仪表等。图10展示了一些测试集的图像。文本检测和文本识别中使用的数据合成工具是从text render(Sanster,2018)修改而来的。
表1:文本检测和识别数据集的统计数据。
任务总数真实场景合成图像验证数据
文本检测127K68K59K200
文本识别18.5M7M11.5M18.7K
实现细节 我们采用了PP-OCRv2中使用的所有策略,如图2所示。我们使用Adam优化器训练所有模型,初始学习率设置为0.001。不同之处在于,我们对检测模型的训练采用余弦学习率衰减作为学习率调度,而对识别模型的训练采用分段衰减。此外,我们对识别模型使用3e-5的权重衰减,但对CTC头使用1e-5。对于检测模型训练,我们使用5e-5的权重衰减。对于检测和识别模型的训练,开始时都进行了几轮的热身训练。对于文本检测,模型总共训练500轮,热身训练2轮。每张卡的批量大小设置为8。对于文本识别,模型热身训练5轮,然后以0.001的初始学习率训练700轮,然后以衰减到0.0001的学习率再训练100轮。每张卡的批量大小为128。在推理期间,使用Hmean评估文本检测器和端到端OCR系统的性能。使用句子准确率评估文本识别器的性能。GPU推理时间在单个T4 GPU上测试。CPU推理时间在Intel(R)Xeon(R)Gold 6148上测试。
3.2 文本检测
PP-OCRv3文本检测器采用CML蒸馏策略,涉及一个教师模型和两个学生模型,如图3所示。我们首先分别优化教师模型和学生模型的网络,然后使用优化后的教师模型指导学生模型的训练。对于教师模型,集成了LK-PAN并采用了DML以进一步提高效果。对于学生模型,集成了RSE-FPN。消融研究如表2所示。该表可以根据双横线分为两部分。上部分是教师模型的实验结果,下部分是学生模型的实验结果。教师模型用于更好的效果,而不考虑效率,而学生模型需要同时考虑两者。教师模型的基线是一个以ResNet50为主干的DB模型,名为DB-R50。可以看出,使用LK-PAN可以将Hmean从83.5%提高到85.0%,推理时间成本从260毫秒增加到396毫秒。使用DML蒸馏,教师模型的Hmean可以进一步提高到86.0%。对于学生模型,比较标记为的两个实验(意味着没有采用CML蒸馏方法),可以发现使用RSE-FPN可以将Hmean从81.3%提高到84.5%,推理时间仅增加了6%。学生模型1相当于PP-OCR移动检测器,而PP-OCRv2检测器是通过CML蒸馏的PP-OCR移动检测器的版本。此外,我们验证了优化后的教师和学生模型在CML中的组合效果。DB-MV3-CML使用CML训练,由教师模型DB-R50-LK-PAN-DML指导。Hmean从83.2%提高到84.3%。如果我们在DB-MV3-CML的学生模型中引入RSE-FPN,Hmean可以从84.3%提高到85.4%。最终,我们采用DB-MV3-RSE-FPN-CML作为PP-OCRv3的文本检测模型。PP-OCRv2和PP-OCRv3文本检测模型的视觉比较如图11所示。
表2:文本检测增强策略的消融研究。DB-R50表示以ResNet50为主干的DB文本检测模型。DB-R50-LK-PAN用LK-PAN替换了DB-R50的FPN模块。DB-R50-LK-PAN-DML是用DML训练的DB-R50-LK-PAN。DB-MV3表示以MobileNetV3为主干的DB模型。DB-MV3-RSE-FPN用RSE-FPN替换了DB-MV3的FPN模块。DB-MV3-CML是从DB-R50-LK-PAN-DML蒸馏而来的。DB-MV3-RSE-FPN-CML是从DB-R50-LK-PAN-DML蒸馏而来且集成了RSE-FPN。
ID策略模型大小(M)Hmean(%)速度(ms)
基线教师DB-R509983.5260
教师1DB-R50-LK-PAN12485.0396
教师2DB-R50-LK-PAN-DML12486.0396
学生1*DB-MV3381.3117
学生2*DB-MV3-RSE-FPN3.684.5124
基线学生PP-OCRv2 det383.2117
学生1DB-MV3-CML(教师2)384.3117
学生2DB-MV3-RSE-FPN-CML(教师2)3.685.4124
3.3 文本识别
表3显示了SVTR-LCNet的消融研究。我们选择PP-OCRv2基线模型作为我们的基线,它使用PP-LCNet、隐藏大小为48的BiLSTM和CTC解码器,但没有U-DML。与PP-OCRv2基线相比,SVTR-Tiny的准确率可以提高10.8%,而预测速度几乎慢了11倍。在用PP-LCNet的前三阶段替换SVTR-Tiny的前半部分网络并保留4个全局Mix Block之后,准确率降低到76%,但速度可以提高69%。然后我们将全局Mix Block的数量从4个减少到2个,这进一步将准确率降低到72.9%,但速度又提高了69%。在将全局Mix Block移到池化层后面之后,准确率降至71.9%,预测速度超过了基于CNN的PP-OCRv2基线22%。此外,将输入图像的高度从32进一步增加到48,这使得预测速度略有下降,但准确率大幅提高。使用SVTR-LCNet,识别准确率达到了73.98%,接近使用U-DML蒸馏训练的PP-OCRv2识别器的准确率。
表3:SVTR-LCNet的消融研究。G4表示4个全局Mix Block,G2表示2个全局Mix Block。h32表示输入图像的高度为32像素,h48表示输入图像的高度为48像素。预测速度在……上进行了测试。
策略模型大小(M)准确率(%)速度(ms)
PP-OCRv2基线869.38.5
SVTR-Tiny2180.197.0
SVTR-LCNet(G4)9.276.030.0
SVTR-LCNet(G2)1373.09.4
SVTR-LCNet(h32)1271.96.6
SVTR-LCNet(h48)1274.07.6
表4显示了PP-OCRv3识别器优化策略的消融研究。与PP-OCRv2相比,SVTR-LCNet的准确率接近使用U-DML蒸馏训练的PP-OCRv2识别器的准确率,速度提高了11%。GTC可以将准确率提高1.82%,并且由于在预测过程中完全移除了注意力模块,因此在推理过程中没有增加更多的时间成本。通过使用TextConAug,准确率进一步提高了0.5%。TextRotNet可以再提高0.6%的准确率。此外,通过U-DML,准确率可以提高1.5%,这是一个显著的改进。通过使用UIM挖掘未标记数据,准确率可以提高1.0%。图12展示了一些通过PP-OCRv3和PP-OCRv2测试的示例。
表4:PP-OCRv3识别器的消融研究。+表示在先前策略的基础上使用了一种新策略。预测速度在……上进行了测试。
策略模型大小(M)准确率(%)速度(ms)
PP-OCRv2874.88.5
SVTR-Tiny2180.197.0
SVTR-LCNet(h32)1271.96.6
SVTR-LCNet(h48)1274.07.6
+ GTC1275.87.6
+ TextConAug1276.37.6
+ TextRotNet1276.97.6
+ U-DML1278.47.6
+ UIM1279.47.6
3.4 系统性能
在表5中,我们比较了提出的PP-OCRv3系统与先前的超轻量级PP-OCR系统的性能。如我们所见,PP-OCRv3的Hmean比PP-OCRv2高出5.3%,在CPU上的推理成本相同。PP-OCRv3在T4 GPU上的推理速度比PP-OCRv2快22%。PP-OCRv3的可视化结果如图所示。
表5:PP-OCRv3系统与先前PP-OCR的比较。
模型Hmean(%)模型大小(M)CPU速度(ms)T4 GPU速度(ms)
PP-OCR移动50.38.1356116
PP-OCR服务器57.0155.11056200
PP-OCRv257.611.6330111
PP-OCRv362.915.633187
4 结论
在本文中,我们提出了一个更强大的OCR系统PP-OCRv3,它涉及9项改进,其中3项用于检测器,6项用于识别器。实验表明,PP-OCRv3的Hmean比PP-OCRv2高出5%,预测成本相同。相应的消融实验也已完成。
