PP-OCRv2:超轻OCR系统的万能包
摘要
光学字符识别(OCR)系统已广泛应用于多种场景,但设计兼顾精度与效率的OCR系统仍具挑战性。我们此前提出的超轻量OCR系统PP-OCR在平衡两者方面取得进展。本文进一步提出PP-OCRv2,通过五项关键技术提升性能:
- 检测模型优化:
- 协同互学习(CML):结合教师-学生蒸馏与学生间互学习,提升检测鲁棒性。
- CopyPaste数据增强:合成文本实例平衡样本分布,验证对检测任务有效。
- 识别模型优化:
- 轻量CPU网络(PP-LCNet):基于MobileNetV1改进,针对Intel CPU优化,速度提升38%。
- 统一深度互学习(U-DML):双学生网络互监督,无需预训练教师模型,准确率提升4.6%。
- 增强CTC损失:引入Center Loss增大相似字符间距,准确率再提0.9%。
实验表明,PP-OCRv2在同等推理成本下精度较PP-OCR提升7%,速度较服务器版(ResNet骨干)提升220%,总模型大小仅11.6M,支持移动端与服务器部署。代码已开源(GitHub/PaddleOCR)。
1. 引言
OCR技术历经二十年发展,广泛应用于文档电子化、身份认证、车牌识别等领域。PP-OCR(2020)作为实用化轻量系统,采用DB算法(检测)和CRNN(识别),结合19项策略优化模型体积与性能。
图2:PP-OCRv2的框架。绿色框中的策略与PP-OCR相同,橙色框中的策略为PP-OCRv2新增,灰色框中的策略将在未来被PP-OCRv2-tiny采用。
图2展示了PP-OCRv2的系统框架。如绿色框所示,大部分策略沿用了PP-OCR方案。橙色框内为PP-OCRv2新增策略:
- 文本检测:引入协同互学习(CML)和复制粘贴(CopyPaste)技术
- CML通过两个学生网络和一个教师网络协同训练,构建更鲁棒的文本检测器
- CopyPaste作为新型数据增强方法(Ghiasi等,2021),经证实能有效提升目标检测与实例分割任务性能,本研究验证其同样适用于文本检测任务
- 文本识别:采用轻量化CPU网络(PP-LCNet)(Cui等,2021)、统一深度互学习(U-DML)及中心损失函数(CenterLoss)
- PP-LCNet是基于Intel CPU优化的轻量级主干网络(由MobileNetV1改进而来)
- U-DML通过双学生网络协同提升识别精度
- CenterLoss用于缓解相似字符的误判问题
我们通过系列消融实验验证了上述策略的有效性。
图2灰色框内策略已在PP-OCR中被证实有效,但本文未作验证。后续将应用于PP-OCRv2-tiny模型以加速推理。
全文结构如下:第2章详述新增增强策略,第3章讨论实验结果,第4章给出结论。
2 增强策略
2.1 文本检测
协同互学习(CML
为解决文本检测蒸馏中的两大问题:1)当教师模型与学生模型精度相近时,传统蒸馏方法提升有限;2)二者结构差异较大时,传统蒸馏效果显著受限,我们采用CML方法(Zhang等,2017)。如图3所示,该框架由多个学生模型和教师模型构成超级网络,其创新性在于:蒸馏后学生模型的检测精度可超越教师模型。
实现机制
- 模型架构:
- 教师模型采用ResNet18主干网络
- 学生模型采用缩放系数0.5的MobileNetV3大型版本
- 训练流程:
- 固定教师模型参数,仅优化学生模型
- 学生模型通过三重监督信号学习:
- 真实标注(Ground Truth)
- 同伴模型后验熵(基于DML方法)
- 教师模型输出知识
损失函数设计
- 真实损失(GTLoss):
基于DB算法(Liao等,2020b)的复合损失:
其中:
(概率图损失):二元交叉熵
(二值图损失):Dice损失
(阈值图损失):L1损失- 超参数
,
- 同伴损失(DML Loss):
通过KL散度衡量双学生模型输出分布差异:
相比原始DML,本方案采用同步训练加速收敛
- 蒸馏损失(Distill Loss):
对教师模型概率图进行膨胀操作(核矩阵
)以增强知识迁移:
超参数
,膨胀操作
可提升教师模型响应区域准确性
最终,训练PP-OCR检测模型CML方法采用的总损失函数如下:
CopyPaste是一种创新的数据增强技术,已被证实能有效提升目标检测与实例分割任务的性能(Ghiasi等,2021)。该技术通过合成文本实例来平衡训练集中的正负样本比例,这是传统图像旋转、随机翻转和随机裁剪等增强方法无法实现的。由于所有文本均位于前景且相互独立,CopyPaste会将文本无重叠地粘贴到随机选择的背景图像上。图4展示了CopyPaste的典型示例
2.2 文本识别
图5:PP-LCNet网络结构。虚线框表示可选模块。主干部分采用标准卷积层。DepthSepConv代表深度可分离卷积,DW表示深度卷积,PW表示逐点卷积,GAP表示全局平均池化。
轻量级CPU网络(PP-LCNet) 为了在Intel CPU上获得更好的精度与速度平衡,我们设计了一个基于Intel CPU的轻量级骨干网络,该网络在启用MKLDNN的情况下提供了更快更准确的OCR识别算法。整个网络结构如图5所示。与MobileNetV3相比,由于MobileNetV1的结构在Intel CPU上启用MKLDNN时更容易优化推理速度,因此本网络基于MobileNetV1(Howard等,2017)。为了使MobileNetV1具有更强的特征提取能力,我们对其网络结构进行了改进,具体改进策略将从以下四个方面进行说明。
- 更好的激活函数。为提升MobileNetV1的拟合能力,我们将网络中的激活函数由ReLU替换为H-Swish。该改进在推理时间仅轻微增加的情况下,可显著提升模型精度。
- 在适当位置添加 SE 模块。SE模块(Hu等,2018)自提出以来已被众多网络采用,能通过通道加权获取更优特征。但考虑到Intel CPU上SE模块会增加推理耗时,我们通过大量实验发现:越接近网络末端,SE模块效果越显著。因此仅在网络尾部区块添加SE模块,其内部两层分别采用ReLU和H-Sigmoid激活函数,实现了精度与速度的最佳平衡。
- 更大的卷积核。虽然MixNet(Tan等,2019)证明混合尺寸卷积核能提升性能,但会降低推理速度。我们选择 在网络尾部将3×3卷积核替换为5×5卷积核,扩大感受野以捕获更全局的特征, 在最小化速度损耗的前提下提升性能。
- GAP 后更大的 1x1 卷积层维度。针对PP-LCNet在全局平均池化(GAP)后特征维度较小的问题,直接连接最终的分类层会丢失特征的组合信息。我们在最终分类层前增加1280维1×1卷积层。该设计在不影响推理速度的情况下,显著增强了特征组合能力。
通过以上四项改进,我们的模型在 ImageNet 上表现出色,表 4 列出了在英特尔 CPU 上与其他轻量级模型的性能指标对比。
统一深度互学习 (U-DML)
深度互学习(Deep mutual learning, DML)(Zhang et al. 2017)是一种两个学生网络相互学习的方法,它不需要一个带有预训练权重的大型教师网络来进行知识蒸馏。在 DML 中,对于图像分类任务,损失函数包含两部分:(1) 学生网络与真实标签(groundtruth)之间的损失函数;(2) 学生网络输出软标签之间的 Kullback–Leibler 散度(KL-Div)损失。
Heo 提出了 OverHaul(Heo et al. 2019),其中使用学生网络和教师网络之间的特征图距离进行蒸馏过程。对学生网络的特征图进行变换以保持特征图对齐。
为了避免过于耗时的教师模型训练过程,本文在 DML 的基础上提出了 U-DML,在蒸馏过程中也对特征图进行监督。图 6 展示了 U-DML 的框架。蒸馏过程涉及两个网络:学生网络和教师网络。它们具有完全相同的网络结构,但初始化权重不同。目标是对于相同的输入图像,两个网络不仅预测结果相同,特征图也应相同。
总损失函数由三部分组成:(1) CTC 损失。由于两个网络都是从头开始训练的,CTC 损失可用于促进网络收敛;(2) DML 损失。期望两个网络的最终输出分布相同,因此需要 DML 损失来保证两个网络之间分布的一致性;(3) 特征损失。两个网络结构相同,因此期望它们的特征图也相同,特征损失可用于约束两个网络中间特征图之间的距离。
CTC损失
本文采用CRNN作为文本识别基础架构,该架构整合了特征提取与序列建模能力。通过连接时序分类(CTC)损失函数(Graves等,2006)解决预测结果与真实标签的对齐问题。由于两个子网络均需从头训练,CTC损失同时作用于师生网络:
其中:
表示学生网络的头部输出
表示教师网络的头部输出
为输入图像的真实标签
DML损失
传统DML方法需分别更新子网络参数。为简化训练流程,本方案同步计算双网络间的KL散度损失并联合更新参数:
:分布
与
的KL散度(Kullback-Leibler Divergence)
和
:学生和教师网络的概率输出(通过Softmax计算)
KL散度计算基于Softmax归一化输出:
特征损失
为使学生网络的主干输出与教师网络对齐,参考Overhaul方法引入特征损失。该损失直接计算二者L2距离,无需特征图变换:
式中:
为学生网络主干输出
为教师网络主干输出- 采用均方误差(MSE)作为度量标准
总损失函数
最终,U-DML训练过程的总损失函数定义如下:
训练策略
实验发现分段学习率策略更适用于蒸馏训练:
- 由于特征损失的引入会延长模型收敛时间
- 采用800训练轮次(epochs)与分段学习率策略
- 在文本识别蒸馏任务中取得最佳效果
CRNN架构改进
针对标准CRNN的CTC-Head部分:
- 原始结构仅使用单层全连接(FC),特征解码能力较弱
- 改进为双层FC结构
- 在推理零开销的前提下,识别准确率提升约1.5%
增强型CTC损失
在中文识别任务中存在大量相似字符,其外观差异极小,极易导致误识别。PP-OCRv2为此设计了增强型CTC损失,该损失融合了原始CTC损失与度量学习中的中心损失思想(Wen等,2016),经改进适配序列识别任务。具体定义如下:
关键参数说明
- 特征对齐:
:时间步
的特征向量
:类别
的中心向量- 标签对齐难点:CRNN算法(施等,2016)存在特征与标签不对齐问题,xt 无直接对应标签
- 解决方案:采用贪婪解码策略获取伪标签:
yt=argmax(W⋅xt)(12)
(W 为CTC-Head参数矩阵)
- 实验参数:
- 平衡系数
经实验验证最优 - 中心损失约束使相似字符特征空间分离
- 平衡系数
3. 实验与结论
3.1 实验设置
数据集
我们在与PP-OCR工作(Du等,2020)相同的数据集上进行实验:
- 文本检测:
- 训练集:97K图像(68K真实场景图像 + 29K合成图像)
- 真实图像来源:百度图片搜索及9大公开数据集
LSVT(Sun等,2019)
、RCTW-17(Shi等,2017)
、MTWI 2018(He等,2018)
CASIA-10K(He等,2018)
、SROIE(Huang等,2019)
、MLT 2019(Nayef等,2019)
BDI(Karatzas等,2011)
、MSRA-TD500(Yao等,2012)
、CCPD 2019(Xu等,2018)
- 合成图像特征:聚焦长文本、多向文本及表格内文本
- 真实图像来源:百度图片搜索及9大公开数据集
- 验证集:500张真实场景图像
- 文本识别:
- 训练集:1,790万图像
- 真实图像:190万(源自公开数据集及百度图片搜索)
- 合成图像:1,600万(覆盖背景/旋转/透视变换/噪声/垂直文本等场景)
- 语料来源:真实场景文本
- 验证集:1.87万张真实场景图像
- 系统评估集:
- 300张实际应用场景图像
- 涵盖合同样本、车牌、铭牌、火车票、试卷、表格、证书、街景、名片、数字仪表等
注:文本检测与识别采用的数据合成工具基于text render(Sanster, 2018)改进
实现细节
本工作采用与PP-OCR(Du等,2020)相似的训练策略(详见图2)。所有模型均使用Adam优化器进行训练,初始学习率设为0.001。主要差异在于学习率调度策略:
- 文本检测模型:采用余弦学习率衰减(cosine learning rate decay)
- 文本识别模型:采用分段衰减策略(piece-wise decay)
检测与识别模型在训练初期均进行预热训练(warm-up)以提升稳定性。
训练参数配置
- 文本检测模型
- 总训练轮次:700轮
- 预热轮次:2轮
- 单卡批量大小:8
- 硬件配置:单张NVIDIA T4 GPU
- 文本识别模型
- 总训练轮次:700轮(初始学习率0.001) + 100轮(学习率衰减至0.0001)
- 预热轮次:5轮
- 单卡批量大小:128
推理评估指标
- 文本检测器性能:
使用调和平均值(Hmean)评估检测框准确率 - 端到端OCR系统:
采用端到端Hmean(结合检测与识别结果) - 文本识别器性能:
以整句准确率(Sentence Accuracy)作为核心指标
推理速度测试环境
- GPU推理:NVIDIA T4 GPU(单卡)
- CPU推理:Intel Xeon Gold 6148处理器
3.2 文本检测
表2展示了文本检测任务中DML(深度互学习)、CML(协同互学习)和CopyPaste数据增强策略的消融实验结果。实验以PP-OCR轻量级检测模型为基线,测试阶段将输入图像长边缩放至960像素。结果显示:
- DML策略:Hmean指标提升近 2%
- CML策略:Hmean指标进一步提升 3%(较基线累计提升 5%)
- CopyPaste数据增强:Hmean指标再提升 0.6%(最终累计提升 5.6%)
核心结论:
在模型结构不变的前提下,PP-OCRv2检测模型较PP-OCR的Hmean指标实现 3.6% 的绝对提升(原文累计提升5.6%但基线为PP-OCR轻量模型,最终对比PP-OCR时净提升3.6%),且推理速度保持不变。
⚠️ 注:推理时间包含预处理与后处理全流程耗时。
3.3 文本识别
表3展示了PP-LCNet轻量骨干网络、U-DML联合互学习策略及Enhanced CTC损失的消融实验结果:
- PP-LCNet替换MobileNetV3:
- 识别准确率提升 2.6%
- 模型体积增加3M,但因网络结构优化,单样本推理时间从 7.7ms降至6.2ms
- U-DML策略:准确率再提升 4.6%(显著增益)
- Enhanced CTC损失:准确率进一步增加 0.9%
综合效果:
所有策略联合使识别准确率绝对提升 8.1%,模型体积增加3M,但平均推理时间加速 1.5ms。
PP-LCNet泛化性验证:
在ImageNet-1k等挑战性数据集上的测试表明(表4),PP-LCNet在速度与精度上均优于MobileNetV3等轻量网络,成为兼顾高效与强表征的轻量化骨干网络。
3.4 系统性能
表5对比了PP-OCRv2与PP-OCR轻量版/服务器版的性能:
- PP-OCR服务器版:
- 检测骨干:ResNet18-vd
- 识别骨干:ResNet34-vd
- 特点:Hmean更高,但推理速度显著慢于轻量版
- PP-OCRv2轻量版:
- 相同推理成本下,Hmean较PP-OCR轻量版提升 7.3%
- 性能与PP-OCR服务器版相当,但速度更快
图9可视化展示了PP-OCRv2与PP-OCR轻量版/服务器版的端到端识别结果对比,印证上述结论。
4 结论
本文提出了一种更鲁棒的超轻量级OCR实用系统PP-OCRv2。通过集成协同互学习(CML)、CopyPaste数据增强、轻量化CPU网络(PP-LCNet)、统一深度互学习(U-DML)及中心损失函数等系列策略,显著增强了前代PP-OCR模型的性能。实际场景测试表明:在同等推理成本下,PP-OCRv2的识别精度显著超越PP-OCR(具体提升幅度见第三章实验分析)。本文同步发布了多个超轻量级OCR实用模型及其对应的大规模数据集,为工业落地提供了完整解决方案。