写点什么

再升级!PP-OCRv4 多场景平均精度提升 5%!

  • 2023-08-24
    北京
  • 本文字数:3842 字

    阅读完需:约 13 分钟

再升级!PP-OCRv4多场景平均精度提升5%!

OCR 方向的工程师,一定有在关注 PaddleOCR 这个项目,其主要推荐的 PP-OCR 算法更是被国内外企业开发者广泛应用。短短几年时间,PP-OCR 累计 Star 数量已超过 32.2k,频频登上 GitHub Trending 和 Paperswithcode 日榜月榜第一,称它为 OCR 方向目前最火的 repo 绝对不为过。


PaddleOCR 主打的 PP-OCR 系列模型,在去年五月份推出了 v3。最近,飞桨 AI 套件团队针对 PP-OCRv3 进行了全方位的改进,重磅推出了 PP-OCRv4!👏👏👏


从效果上看,速度可比情况下,v4 相比 v3 在多种场景下的精度均有大幅提升:


  • 中文场景,相对于 PP-OCRv3 中文模型提升超 4%。

  • 英文数字场景,相比于 PP-OCRv3 英文模型提升 6%。

  • 多语言场景,优化 80 个语种识别效果,平均准确率提升超 8%。


PP-OCRv4 模型目前已随 PaddleOCR 2.7 版本正式发布,欢迎大家持续关注 PaddleOCR~~~


GitHub 项目地址


https://github.com/PaddlePaddle/PaddleOCR


PP-OCRv4 效果速览


让我们拿结果说话,多图预警!!!


PP-OCRv4 效果速览





英文场景




多语言场景




下面上定量评测结果!


PP-OCRv4 在速度可比情况下,中文场景端到端 Hmean 指标相比于 PP-OCRv3 提升 4.25%,效果大幅提升。具体指标如下表所示:



测试环境:CPU 型号为 Intel Gold 6148,CPU 预测时使用 OpenVINO。


除了更新中文模型,本次升级也优化了英文数字模型,在自有评估集上文本识别准确率提升 6%,如下表所示:



同时,也对已支持的 80 余种语言识别模型进行了升级更新,在有评估集的四种语系识别准确率平均提升 5%以上,如下表所示:


在飞桨 AI 套件中使用 PP-OCRv4

为了方便大家在线体验效果,并且快速上手 PP-OCRv4 模型的训练调优和部署,PP-OCRv4 目前已上线飞桨 AI 套件 PaddleX!


在线体验推理效果


https://aistudio.baidu.com/projectdetail/6611435


创建自己的 PP-OCRv4


https://aistudio.baidu.com/modelsdetail?modelId=286


PaddleX 是一站式、全流程、高效率的飞桨 AI 套件,具备飞桨生态优质模型和产业方案。PaddleX 的使命是助力 AI 技术快速落地,愿景是使人人成为 AI Developer。


PaddleX 支持 10+任务能力,包括图像分类、目标检测、图像分割、3D、OCR 和时序预测等;内置 36 种飞桨生态特色模型,包括 PP-ChatOCR、PP-OCRv4、RT-DETR、PP-YOLOE、PP-ShiTu、PP-LiteSeg、PP-TS 等。


PaddleX 提供“工具箱”和“开发者”两种开发模式,同时支持云端和本地端。工具箱模式可以无代码调优关键超参,开发者模式可以低代码进行单模型训压推和多模型串联推理。


PaddleX 未来还将支持联创开发,收益共享!欢迎广大个人开发者和企业开发者参与进来,共创繁荣的 AI 技术生态!


目前 PaddleX 正在快速迭代,欢迎大家试用和指正!


PP-OCRv4 十大关键技术点深入解读


PP-OCRv4 整体的框架图保持了与 PP-OCRv3 相同的 pipeline,针对检测模型和识别模型进行了数据、网络结构、训练策略等多个模块的优化。PP-OCRv4 系统框图如下所示:



从算法改进思路上看,分别针对检测和识别模型,进行了共 10 个方面的改进:


检测模块


  • PP-LCNetV3:精度更高的骨干网络

  • PFHead:并行 head 分支融合结构

  • DSR: 训练中动态增加 shrink ratio

  • CML:添加 Student 和 Teacher 网络输出的 KL div loss


识别模块


  • SVTR_LCNetV3:精度更高的骨干网络

  • Lite-Neck:精简的 Neck 结构

  • GTC-NRTR:稳定的 Attention 指导分支

  • Multi-Scale:多尺度训练策略

  • DF: 数据挖掘方案

  • DKD :DKD 蒸馏策略


敲黑板了,下面让我们对这 10 个技术点进行一一解读。


检测优化


PP-OCRv4 检测模型在 PP-OCRv3 检测模型的基础上,在网络结构,训练策略,蒸馏策略三个方面做了优化。首先,PP-OCRv4 检测模型使用 PP-LCNetV3 替换 MobileNetv3,并提出并行分支融合的 PFhead 结构;其次,训练时动态调整 shrink ratio 的比例;最后,PP-OCRv4 对 CML 的蒸馏 loss 进行优化,进一步提升文字检测效果。


消融实验如下:



测试环境:Intel Gold 6148 CPU,预测引擎使用 OpenVINO。


PFhead:多分支融合 Head 结构


PFhead 结构如下图所示,PFHead 在经过第一个转置卷积后,分别进行上采样和转置卷积,上采样的输出通过 3x3 卷积得到输出结果,然后和转置卷积的分支的结果级联并经过 1x1 卷积层,最后 1x1 卷积的结果和转置卷积的结果相加得到最后输出的概率图。PP-OCRv4 学生检测模型使用 PFhead,Hmean 从 76.22%增加到 76.97%。



DSR:收缩比例动态调整策略


动态 shrink ratio(dynamic shrink ratio): 在训练中,shrink ratio 由固定值调整为动态变化,随着训练 epoch 的增加,shrink ratio 从 0.4 线性增加到 0.6。该策略在 PP-OCRv4 学生检测模型上,Hmean 从 76.97%提升到 78.24%。


PP-LCNetV3:精度更高的骨干网络


PP-LCNetV3 系列模型是 PP-LCNet 系列模型的延续,覆盖了更大的精度范围,能够适应不同下游任务的需要。PP-LCNetV3 系列模型从多个方面进行了优化,提出了可学习仿射变换模块,对重参数化策略、激活函数进行了改进,同时调整了网络深度与宽度。最终,PP-LCNetV3 系列模型能够在性能与效率之间达到最佳的平衡,在不同精度范围内取得极致的推理速度。使用 PP-LCNetV3 替换 MobileNetv3 backbone,PP-OCRv4 学生检测模型 hmean 从 78.24%提升到 79.08%。


CML:融合 KD 的互学习策略


PP-OCRv4 检测模型对 PP-OCRv3 中的 CML(Collaborative Mutual Learning) 协同互学习文本检测蒸馏策略进行了优化。如下图所示,在计算 Student Model 和 Teacher Model 的 distill Loss 时,额外添加 KL div loss,让两者输出的 response maps 分布接近,由此进一步提升 Student 网络的精度,检测 Hmean 从 79.08%增加到 79.56%,端到端指标从 61.31%增加到 61.87%。



识别优化


PP-OCRv3 的识别模块是基于文本识别算法 SVTR 优化。SVTR 不再采用 RNN 结构,通过引入 Transformers 结构更加有效地挖掘文本行图像的上下文信息,从而提升文本识别能力。直接将 PP-OCRv2 的识别模型,替换成 SVTR_Tiny,识别准确率从 74.8%提升到 80.1%(+5.3%),但是预测速度慢了将近 11 倍,CPU 上预测一条文本行,将近 100ms。因此,如下图所示,PP-OCRv3 采用如下 6 个优化策略进行识别模型加速。



基于上述策略,PP-OCRv4 识别模型相比 PP-OCRv3,在速度可比的情况下,精度进一步提升 4%。具体消融实验如下所示:



注:测试速度时,输入图片尺寸均为(3,48,320)。在实际预测时,图像为变长输入,速度会有所变化。测试环境:Intel Gold 6148 CPU,预测时使用 OpenVINO 预测引擎。


DF:数据挖掘方案


DF(Data Filter) 是一种简单有效的数据挖掘方案。核心思想是利用已有模型预测训练数据,通过置信度和预测结果等信息,对全量数据进行筛选。具体的:首先使用少量数据快速训练得到一个低精度模型,使用该低精度模型对千万级的数据进行预测,去除置信度大于 0.95 的样本,该部分被认为是对提升模型精度无效的冗余数据。其次使用 PP-OCRv3 作为高精度模型,对剩余数据进行预测,去除置信度小于 0.15 的样本,该部分被认为是难以识别或质量很差的样本。使用该策略,千万级别训练数据被精简至百万级,显著提升模型训练效率,模型训练时间从 2 周减少到 5 天,同时精度提升至 72.7%(+1.2%)。



PP-LCNetV3:精度更优的骨干网络


PP-LCNetV3 系列模型是 PP-LCNet 系列模型的延续,覆盖了更大的精度范围,能够适应不同下游任务的需要。PP-LCNetV3 系列模型从多个方面进行了优化,提出了可学习仿射变换模块,对重参数化策略、激活函数进行了改进,同时调整了网络深度与宽度。最终,PP-LCNetV3 系列模型能够在性能与效率之间达到最佳的平衡,在不同精度范围内取得极致的推理速度。


Lite-Neck:精简参数的 Neck 结构


Lite-Neck 整体结构沿用 PP-OCRv3 版本,在参数上稍作精简,识别模型整体的模型大小可从 12M 降低到 8.5M,而精度不变;在 CTCHead 中,将 Neck 输出特征的维度从 64 提升到 120,此时模型大小从 8.5M 提升到 9.6M,精度提升 0.5%。


GTC-NRTR:Attention 指导 CTC 训练策略


GTC(Guided Training of CTC),是在 PP-OCRv3 中使用过的策略,融合多种文本特征的表达,可有效提升文本识别精度。在 PP-OCRv4 中使用训练更稳定的 Transformer 模型 NRTR 作为指导,相比 SAR 基于循环神经网络的结构,NRTR 基于 Transformer 实现解码过程泛化能力更强,能有效指导 CTC 分支学习。解决简单场景下快速过拟合的问题。模型大小不变,识别精度提升至 73.21%(+0.5%)。



Multi-Scale:多尺度训练策略


动态尺度训练策略,是在训练过程中随机 resize 输入图片的高度,以增大模型的鲁棒性。在训练过程中随机选择(32,48,64)三种高度进行 resize,实验证明在测试集上评估精度不掉,在端到端串联推理时,指标可以提升 0.5%。



DKD:蒸馏策略


识别模型的蒸馏包含两个部分,NRTRhead 蒸馏和 CTCHead 蒸馏;


对于 NRTR head,使用了 DKD loss 蒸馏,使学生模型 NRTR head 输出的 logits 与教师 NRTR head 接近。最终 NRTR head 的 loss 是学生与教师间的 DKD loss 和与 ground truth 的 cross entropy loss 的加权和,用于监督学生模型的 backbone 训练。通过实验,我们发现加入 DKD loss 后,计算与 ground truth 的 cross entropy loss 时去除 label smoothing 可以进一步提高精度,因此我们在这里使用的是不带 label smoothing 的 cross entropy loss。


对于 CTCHead,由于 CTC 的输出中存在 Blank 位,即使教师模型和学生模型的预测结果一样,二者输出的 logits 分布也会存在差异,影响教师模型向学生模型的知识传递。PP-OCRv4 识别模型蒸馏策略中,将 CTC 输出 logits 沿着文本长度维度计算均值,将多字符识别问题转换为多字符分类问题,用于监督 CTC Head 的训练。使用该策略融合 NRTRhead DKD 蒸馏策略,指标从 0.7377 提升到 0.7545。


在 AI Studio 在线体验 PP-OCRv4 的推理效果


https://aistudio.baidu.com/projectdetail/6611435


飞桨 AI 套件 PaddleX 中的 PP-OCRv4


https://aistudio.baidu.com/modelsdetail?modelId=286


PaddleOCR 项目地址


https://github.com/PaddlePaddle/PaddleOCR

用户头像

还未添加个人签名 2022-12-26 加入

还未添加个人简介

评论

发布
暂无评论
再升级!PP-OCRv4多场景平均精度提升5%!_人工智能_飞桨PaddlePaddle_InfoQ写作社区