PP-OCRv2:超轻OCR系统的万能包

PP-OCRv2:超轻OCR系统的万能包

摘要

光学字符识别(OCR)系统已广泛应用于多种场景,但设计兼顾精度与效率的OCR系统仍具挑战性。我们此前提出的超轻量OCR系统PP-OCR在平衡两者方面取得进展。本文进一步提出PP-OCRv2,通过五项关键技术提升性能:

  1. 检测模型优化
    • 协同互学习(CML):结合教师-学生蒸馏与学生间互学习,提升检测鲁棒性。
    • CopyPaste数据增强:合成文本实例平衡样本分布,验证对检测任务有效。
  1. 识别模型优化
    • 轻量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大型版本
  • 训练流程
    1. 固定教师模型参数,仅优化学生模型
    2. 学生模型通过三重监督信号学习:
      • 真实标注(Ground Truth)
      • 同伴模型后验熵(基于DML方法)
      • 教师模型输出知识

损失函数设计

  1. 真实损失(GTLoss)
    基于DB算法(Liao等,2020b)的复合损失:

其中:

  • (概率图损失):二元交叉熵
  • (二值图损失):Dice损失
  • (阈值图损失):L1损失
  • 超参数

  1. 同伴损失(DML Loss)
    通过KL散度衡量双学生模型输出分布差异:

相比原始DML,本方案采用同步训练加速收敛

  1. 蒸馏损失(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具有更强的特征提取能力,我们对其网络结构进行了改进,具体改进策略将从以下四个方面进行说明。

  1. 更好的激活函数。为提升MobileNetV1的拟合能力,我们将网络中的激活函数由ReLU替换为H-Swish。该改进在推理时间仅轻微增加的情况下,可显著提升模型精度。
  2. 在适当位置添加 SE 模块。SE模块(Hu等,2018)自提出以来已被众多网络采用,能通过通道加权获取更优特征。但考虑到Intel CPU上SE模块会增加推理耗时,我们通过大量实验发现:越接近网络末端,SE模块效果越显著。因此仅在网络尾部区块添加SE模块,其内部两层分别采用ReLU和H-Sigmoid激活函数,实现了精度与速度的最佳平衡。
  3. 更大的卷积核。虽然MixNet(Tan等,2019)证明混合尺寸卷积核能提升性能,但会降低推理速度。我们选择 在网络尾部将3×3卷积核替换为5×5卷积核,扩大感受野以捕获更全局的特征, 在最小化速度损耗的前提下提升性能。
  4. 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),经改进适配序列识别任务。具体定义如下:

关键参数说明

  1. 特征对齐
    • :时间步

      的特征向量
    • :类别

      的中心向量
    • 标签对齐难点:CRNN算法(施等,2016)存在特征与标签不对齐问题,xt 无直接对应标签
  • 解决方案:采用贪婪解码策略获取伪标签:
    yt=argmax(W⋅xt)(12)
    (W 为CTC-Head参数矩阵)
  1. 实验参数
    • 平衡系数

      经实验验证最优
    • 中心损失约束使相似字符特征空间分离

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)
      • 合成图像特征:聚焦长文本、多向文本及表格内文本
    • 验证集: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)以提升稳定性。

训练参数配置
  1. 文本检测模型
    • 总训练轮次:700轮
    • 预热轮次:2轮
    • 单卡批量大小:8
    • 硬件配置:单张NVIDIA T4 GPU
  1. 文本识别模型
    • 总训练轮次: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实用模型及其对应的大规模数据集,为工业落地提供了完整解决方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/87923.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/87923.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常见的软件版本开源协议

开源软件许可证核心指南 一、许可证基础分类 1. 宽松型许可证(Permissive) 核心特征:允许闭源衍生,仅保留版权声明适用场景:商业集成、快速开发代表协议: 📜 MIT 📜 Apache 2.0 &…

基于FPGA的一维序列三次样条插值算法verilog实现,包含testbench

目录 1.前言 2.算法运行效果图预览 3.算法运行软件版本 4.部分核心程序 5.算法仿真参数 6.算法理论概述 7.参考文献 8.算法完整程序工程 1.前言 三次样条插值是一种在数据拟合和信号处理中广泛应用的技术,它通过构造分段三次多项式来逼近给定的离散数据点&a…

RAG 之 Prompt 动态选择的三种方式

“如果我有5个prompt模板,我想只选择一个每次都自动五选一能做到吗怎么做?” 完全可以做到。这在复杂的RAG或Agentic工作流中是一个非常普遍且关键的需求,通常被称为“条件路由(Conditional Routing)”或“动态调度&am…

【ROS2 自动驾驶学习】02-安装ROS2及其配套工具

目录 一、设置语言环境 二、添加存储库 三、添加软件源 四、安装ROS2 五、配置环境 六、测试ROS2 七、安装一些工具 7.1 terminator 7.2 colcon工具 7.3 tf工具 7.4 joint-state-publisher工具 7.5 urdf 八、安装三方库 8.1 Eigen 8.2 yaml-cpp 8.3 matplotl…

系统学习Python——并发模型和异步编程:基础知识

分类目录:《系统学习Python》总目录 并行是并发的一种特殊情况。**所有并行系统都是并发的,但不是所有并发系统都是并行的。**在21世纪初,我们可以使用单核设备在GNU Linux上同时处理100个进程。一台拥有4个CPU核的现代笔记本计算机&#xff…

睿尔曼系列机器人——以创新驱动未来,重塑智能协作新生态(下)

在智能制造与人工智能深度融合的当下,机器人技术正经历从 “功能替代” 到 “价值共创” 的深刻跃迁。睿尔曼,作为全球超轻量仿人机械臂领域的先行者,始终秉持 “让机器人触手可及” 的使命,凭借底层技术的突破性进展,…

表征工程(Representation Engineering, RepE)

表征工程(Representation Engineering, RepE) 近年来,表征工程(Representation Engineering, RepE)在提升AI系统透明度和可控性方面取得了显著进展。 一、大模型可解释性与可控性的突破 核心论文:《Representation Engineering: A Top-Down Approach to AI Transparen…

国产ARM+FPGA工业开发平台——GM-3568JHF

一、引言 随着物联网和国产替代需求的快速发展,嵌入式系统面临计算性能与硬件灵活性的双重挑战。GM-3568JHF开发板基于国产“ARMFPGA”异构架构,结合瑞芯微RK3568J处理器与紫光同创Logos-2 FPGA芯片,支持国产自主操作系统,满足通…

RISCV Linux 虚拟内存精讲系列一 Sv39

笔者认为,Linux 操作系统(Operating System)最核心的机制是虚拟内存(Virtual Memory)。因为,操作系统主要作用是将硬件环境抽象起来,给在其中运行的应用(Applications)提…

【apply from: “$flutterRoot/packages/flutter_tools/gradle/flutter.gradle“作用】

这行代码的作用是将 Flutter 的 Gradle 构建脚本集成到 Android 项目中,具体细节如下:作用解析:引入 Flutter 构建逻辑 flutter.gradle 是 Flutter SDK 的核心构建脚本,它负责: 编译 Dart 代码为原生二进制文件&#x…

深入理解JavaScript设计模式之命令模式

深入理解JavaScript设计模式之命令模式 文章目录深入理解JavaScript设计模式之命令模式定义简单命令模式组合命令模式使用命令模式实现文本编辑器目标关键类说明实现的效果交互逻辑流程所有代码:总结定义 命令模式也是设计模式种相对于变焦简单容易理解的一种设计模…

CSS 网页布局:从基础到进阶

CSS 网页布局:从基础到进阶 引言 随着互联网的飞速发展,网页设计已经成为了一个不可或缺的领域。CSS(层叠样式表)作为网页设计中的关键工具,用于控制网页元素的样式和布局。本文将为您全面解析CSS网页布局,…

【人工智能】大语言模型(LLM) NLP

大语言模型(LLM)& NLP1.大语言模型(LLM)1.1 一句话解释1.2 更形象的比喻1.3 为什么叫 “大” 模型1.4 它能做什么1.5 现实中的例子2.对比 NLP2.1 用 “汽车进化” 比喻 NLP → LLM2.2 为什么说 LLM 属于 NLP2.3 LLM 的 “革命…

Unity HDRP + Azure IoT 的 Python 后端实现与集成方案

Unity HDRP Azure IoT 的 Python 后端实现与集成方案 虽然Unity HDRP本身使用C#开发,但我们可以构建Python后端服务支持物联网系统,并与Unity引擎深度集成。以下是完整的实现方案: 系统架构 #mermaid-svg-qCDb0g9Ik287Cg8X {font-family:&qu…

小黑黑日常积累大模型prompt句式2:【以段落的形式输出,不分点列举】【如果没有相关内容则不输出】【可读性强】【输出格式规范】

以段落的形式输出,不分点列举 每个标题下直接接续段落内容,不编号、不分点。......标题下直接接续段落内容,不继续进行分点列举。如果没有相关内容则不输出 若某一部分无法从原文中提取有效信息,则跳过该部分内容,不做…

React Native 基础组件详解<一>

一、Text组件 1)numberOfLines:显示行数 2)ellipsizeMode:超出隐藏的位置 clip->裁掉 head/middle/ tail->点的位置 3)selectable: 是否可以选中 4)selectionColor:选中后的颜色 5&#…

异步编程(Promise/Generator/async)

1、Promise 2、Generator 3、async/await

【Note】《Kafka: The Definitive Guide》 第8章: Cross-Cluster Data Mirroring

《Kafka: The Definitive Guide》 第8章: Cross-Cluster Data Mirroring 一、跨集群镜像的场景与价值 多区域低延迟访问 将业务数据从主集群实时复制到多个地理区域的集群,缩短消费者跨区读取延迟。 灾备切换 当主集群出现故障时,可快速将消…

「Windows/Mac OS」AIGC图片生成视频 ,webui + stable-diffusion环境部署教程

stable-diffusion webui 环境搭建目录 一、Windows 环境部署 stable-diffusion-webui1、准备条件2、安装Python 3.10.X(**较新版本的 Python 不支持 torch**)3、安装Git 教程4、使用Git 下载 stable-diffusion-webui 存储库,4.1、显示报错 5…

【深度学习】 深度学习训练配置参数详解

深度学习训练配置参数详解 1. 启动初始化参数说明CUDA_VISIBLE_DEVICES指定使用的GPU设备编号("0"表示单卡)seed随机种子(1777777),保证实验可复现性cuda是否启用GPU加速(True)benchm…