【论文简介】PP-OCRv1-v4中文字符识别论文概述

这篇具有很好参考价值的文章主要介绍了【论文简介】PP-OCRv1-v4中文字符识别论文概述。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

相关论文
论文打包下载 - 提取码:0822:https://pan.baidu.com/s/1WDXf-erVIPWxmoJRVX3_XA?pwd=0822
2009.PP-OCR: A Practical Ultra Lightweight OCR System
2109.PP-OCRv2: Bag of Tricks for Ultra Lightweight OCR System
2206.PP-OCRv3: More Attempts for the Improvement of Ultra Lightweight OCR System
2308.PP-OCRv4:目前代码已发布(2023.08.07),但技术报告未更新
工程代码: github_PaddleOCR_2.7 | 国内gitee_PaddleOCR

【论文简介】PP-OCRv1-v4中文字符识别论文概述,# Paddle,论文解读,ocr,中文字符识别,paddleocr,模型压缩,PPOCRv4

概述

中文模型尺寸仅为3.5M,能识别6622个汉字 。识别63个字母数字符号的模型,仅为2.8M

一、PP-OCRv1 模型结构

图中的模型大小是关于中英文识别的。对于字母数字符号识别( alphanumeric symbols recognition),文本识别的模型大小为1.6M~0.9M。其余的模型的大小相同
主要流程为: DB文字检测 + 方向分类+CRNN字符识别
其中文本检测算法选用可微二值化算法 DB,使用 97K图片训练
文本识别算法选用CRNN,使用1700万张图片的图片训练 ,PPOCRv3采用的是 SVTR
文本方向分类器 MobileNetv3, 在检测和识别模块之间添加,以应对不同方向的文本识别。(60万+图片训练)
下图黑色的文字表示改进结构或者策略
【论文简介】PP-OCRv1-v4中文字符识别论文概述,# Paddle,论文解读,ocr,中文字符识别,paddleocr,模型压缩,PPOCRv4

模型模块意义说明
├── transforms # 网络的图像变换模块
├── backbones # 网络的特征提取模块
├── necks # 网络的特征增强模块
└── heads # 网络的输出模块

二、改进策略(压缩模型大小、调高精度与泛化)

目标检测模型优化

1. 文字检测的骨干网络(backgone)轻量化

使用MobileNet或者ShuffleNet系列作为 light backbone

2. 文字检测头(head)的轻量化

采用FPN的类似结构,融合不同尺度的特征层为了方便合并不同分辨率的特征映射,通常使用1×1卷积法将特征映射减少到相同数量的通道数,本文从256减少到了96,

3. 去除了SE( squeeze-and-excitation)模块 (在骨干网络MobileNetv3中)【论文简介】PP-OCRv1-v4中文字符识别论文概述,# Paddle,论文解读,ocr,中文字符识别,paddleocr,模型压缩,PPOCRv4

如图7所示,SE块显式地建模通道之间的相互依赖(inter-dependencies)关系,并自适应地重新校准通道方向的特性响应。由于SE块可以明显地提高视觉任务的准确性,因此MobileNetV3的搜索空间中包含了它们,并且许多SE块都在MobileNetV3架构中。然而,当输入分辨率很大时,如640×640,很难估计使用SE块的逐通道特征响应(channel-wise feature responses)。精度的提高很有限,但时间成本很高。当从主干上将SE块移除时,模型尺寸从4.1M减小到2.5M,但精度没有影响。

4. 余弦学习率衰减 (Cosine Learning Rate Decay)

在训练的早期阶段,权值处于随机初始化状态,因此我们可以设置一个相对较大的学习速率,以便更快地收敛(convergence)。在训练的后期阶段,权值接近于最优值,因此应该使用相对较小的学习率。(虽然使用较低的学习速率可以确保你不会错过任何局部最小值,但这也意味着收敛速度很慢。)【论文简介】PP-OCRv1-v4中文字符识别论文概述,# Paddle,论文解读,ocr,中文字符识别,paddleocr,模型压缩,PPOCRv4

5. 学习率预热(Learning Rate Warm-up)

论文建议 :1812.Bag of Tricks for Image Classification with Convolutional Neural Networks (基于卷积神经网络的图像分类的各种技巧)
warm-up采用以较低学习率(例如0)逐渐增大至较高学习率的方式实现网络训练的“热身”阶段(一般2-5epochs),随着训练的进行学习率慢慢变大,到一定程度后就可以设置的预设的学习率进行训练了(因为在训练过程开始时,使用太大的学习率可能会导致数值不稳定(numerical instability),建议使用较小的学习率,这样就可以提高网络的准确率)
扩展阅读:学习率预热和学习率衰减
【论文简介】PP-OCRv1-v4中文字符识别论文概述,# Paddle,论文解读,ocr,中文字符识别,paddleocr,模型压缩,PPOCRv4

6. FPGM 剪枝 (Pruner)?

使用FPGM,在原始模型中找到不重要的子网络( sub-network)。
该方法以几何中值(geometric median)为准则,并将卷积层中的每个滤波器作为欧氏空间中( Euclidean space)的一个点。然后计算这些点的几何中值,去掉具有相似值的滤波器,如图所示
【论文简介】PP-OCRv1-v4中文字符识别论文概述,# Paddle,论文解读,ocr,中文字符识别,paddleocr,模型压缩,PPOCRv4
PP-OCR 根据论文 1608.Pruning filters for efficient convnets 计算每层的剪枝灵敏度(pruning sensitivity),然后用来评估每层的冗余度(redundancy)

方向分类的优化方法

7. 方向分类骨架 MobileNetV3 small x0.35 轻量

8. 数据增强方法

旋转(rotation),透视失真(perspective distortion),运动模糊(motion blur)和高斯噪声。这些过程被简称为BDA(基础数据增强 Base Data Augmentation)。随机增强效果最好。最后,我们在方向分类的训练图像中添加了BDA和随机增强(RandAugment):

9. 增加输入图像的分辨率 Input Resolution

在以往的大多数文本识别方法中,归一化图像的高度和宽度分别设置为32和100。而在PP-OCR中,高度和宽度分别设置为48和192,以提高方向分类器的精度。

10. PACT 量化 (quantization)?

量化可以使神经网络模型具有更低的延迟(latency)、更小的体积(volume)和更低的计算功耗(consumption)
P ACT(准参数化剪切激活, Arameterized Clipping acTivation)是一种新的在线量化方法,可以提前从激活中去除一些异常值 . 为了适应新结构,本文进行了改进。

文字识别优化

11. 识别主干网络 MobileNetV3 small x0.5

改为MobileNetV3 small x1.0 模型也不错,只增加2M的大小

12. 数据增强 TIA

2003. Joint Data Augmentation and Network Optimization for Text Recognition
【论文简介】PP-OCRv1-v4中文字符识别论文概述,# Paddle,论文解读,ocr,中文字符识别,paddleocr,模型压缩,PPOCRv4

13. Feature Map Resolution

为了适应多语言识别(multilingual recognition),特别是中文识别 ,CRNN输入的高度和宽度被设置为32和320。,所以,原始的MobileNetV3的步伐 (stride)就不适合用于文本识别了
除了第一个采样特征图之外,我们将向下采样特征图的步幅从(2、2)修改为(2、1)。为了保持更多的垂直信息,我们进一步修改了第二个向下采样特征图的步幅,从(2,1)到(1,1)。因此,第二个向下采样特征图s2的步幅极大地影响了整个特征图的分辨率和文本识别器的精度。在PP-OCR中,s2被设置为(1,1),以获得更好的经验性能。【论文简介】PP-OCRv1-v4中文字符识别论文概述,# Paddle,论文解读,ocr,中文字符识别,paddleocr,模型压缩,PPOCRv4
table from : Searching for mobilenetv3

14. 正则化参数 Regularization Parameters

为了防止过拟合(在训练集上效果好,测试集效果一般),权重衰减(weight decay)是避免过拟合的一种广泛使用的方法之一。在最终的损失函数之后,将l2正则化(L2衰减 (decay))添加到损失函数中。在l2正则化的帮助下,网络的权值倾向于选择一个较小的值,最后整个网络中的参数趋于0,从而相应地提高了模型的泛化性能(generalization)。对于文本识别,l2衰减对识别精度有很大的影响。

15. 轻量化

一个全连接层(full connection)用于将序列特征编码到普通的预测字符中。
序列特征的维度( dimension of the sequence features) 对文本识别器的模型大小有影响,
特别是对于超过词库6千+以上的中文识别。
同时,并不是说维数越高,序列特征的表示能力就越强。在PP-OCR中,序列特征的维数被经验设置为48

16. 预训练模型

如果训练数据较少,则对现有的网络进行微调,并在ImageNet等大数据集上进行训练,以实现快速收敛和更好的精度。在图像分类和目标检测中的迁移学习结果表明,上述策略是有效的
在真实的场景中,用于文本识别的数据往往是有限的。如果用数千万个样本进行训练,即使是合成的,上述模型也可以显著提高精度

17.-19 文字识别与图片检测相似的方法

PACT Quantization 和 cosine-learning decay 衰减 以及 Learning Rate Warm-up 学习率热启动

三、原始文本检测算法DB

基于可微二值化的实时场景文字检测 1911.Real-time Scene Text Detection with Differentiable Binarization

3.1 DB算法概述

基于分割的方法在文本检测中非常流行,因为分割结果可以更准确地描述各种形状的场景文本。

From: DBNet阅读笔记 - 周军的文章 - 知乎
在基于分割的文本检测网络中,最终的二值化map都是使用的固定阈值来获取,并且阈值不同对性能影响较大。本文中,对每一个像素点进行自适应二值化,二值化阈值由网络学习得到,彻底将二值化这一步骤加入到网络里一起训练,这样最终的输出图对于阈值就会非常鲁棒。

probability map, 代表像素点是文本的概率
threshold map, 每个像素点的阈值
binary map, 自适应二值化后得到的映射图

【论文简介】PP-OCRv1-v4中文字符识别论文概述,# Paddle,论文解读,ocr,中文字符识别,paddleocr,模型压缩,PPOCRv4
可学习的二值化公式(其实就是一个带系数的sigmoid):
使用DB模块之后,二值化操作就变成了可微的,可以加到网络里一起训练。
Pi,j表示概率图上的
Ti,j是从网络中学习的自适应阈值映射
【论文简介】PP-OCRv1-v4中文字符识别论文概述,# Paddle,论文解读,ocr,中文字符识别,paddleocr,模型压缩,PPOCRv4

3.2 DB在paddleocr调参说明

其中,DB算法相关参数如下

参数名称 类型 默认值 含义
det_db_thresh float 0.3 DB输出的概率图中,得分大于该阈值的像素点才会被认为是文字像素点
det_db_box_thresh float 0.6 检测结果边框内,所有像素点的平均得分大于该阈值时,该结果会被认为是文字区域
det_db_unclip_ratio float 1.5 Vatti clipping算法的扩张系数,使用该方法对文字区域进行扩张
max_batch_size int 10 预测的batch size
use_dilation bool False 是否对分割结果进行膨胀以获取更优检测效果
det_db_score_mode str “fast” DB的检测结果得分计算方法,支持fastslowfast是根据polygon的外接矩形边框内的所有像素计算平均得分,slow是根据原始polygon内的所有像素计算平均得分,计算速度相对较慢一些,但是更加准确一些。

四、文本识别算法 (CRNN , SVTR)

4.1 CRNN (老,V1-V2使用):

一种基于图像的序列识别的端到端可训练神经网络 及 其在场景文本识别中的应用
1507.An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition
结构如下,先卷积,后使用LSTM处理
【论文简介】PP-OCRv1-v4中文字符识别论文概述,# Paddle,论文解读,ocr,中文字符识别,paddleocr,模型压缩,PPOCRv4

4.2 SVTR (基于transformer的文本识别模型)

2205.SVTR: Scene Text Recognition with a Single Visual Model (单个视觉模型)
SVTR不再采用RNN结构,通过引入Transformers结构更加有效地挖掘文本行图像的上下文信息,从而提升文本识别能力。
【论文简介】PP-OCRv1-v4中文字符识别论文概述,# Paddle,论文解读,ocr,中文字符识别,paddleocr,模型压缩,PPOCRv4
不同结构的识别模块对比
【论文简介】PP-OCRv1-v4中文字符识别论文概述,# Paddle,论文解读,ocr,中文字符识别,paddleocr,模型压缩,PPOCRv4

五、实验

5.1 实验数据集

【论文简介】PP-OCRv1-v4中文字符识别论文概述,# Paddle,论文解读,ocr,中文字符识别,paddleocr,模型压缩,PPOCRv4

*PP-OCRv1-v4的结构变化

一、PP-OCRV1

要由DB文本检测、检测框矫正和CRNN文本识别三部分组成。
最终得到整体大小为3.5M的超轻量中英文OCR和2.8M的英文数字OCR。更多细节请参考PP-OCRv1技术方案
【论文简介】PP-OCRv1-v4中文字符识别论文概述,# Paddle,论文解读,ocr,中文字符识别,paddleocr,模型压缩,PPOCRv4

该系统从骨干网络选择和调整、预测头部的设计、数据增强、学习率变换策略、正则化参数选择、预训练模型使用以及模型自动裁剪量化8个方面,采用19个有效策略,对各个模块的模型进行效果调优和瘦身,
其中FPGM裁剪器和PACT量化的实现可以参考PaddleSlim。

二、PP-OCRv2

红色框)表示较于v1的改变,绿色框 表示v1已经具有的结构
【论文简介】PP-OCRv1-v4中文字符识别论文概述,# Paddle,论文解读,ocr,中文字符识别,paddleocr,模型压缩,PPOCRv4

5大改进

PP-OCRv2在PP-OCR的基础上,进一步在5个方面重点优化,
检测模型采用
CML协同互学习知识蒸馏策略
CopyPaste数据增广策略;
识别模型
采用 LCNet 轻量级骨干网络、
UDML 改进知识蒸馏策略
Enhanced CTC loss损失函数改进(如上图红框所示),
进一步在推理速度和预测效果上取得明显提升。更多细节请参考PP-OCRv2技术报告。

三、PP-OCRv3

红色框)表示较于v2的改变,绿色 表示v2已经具有的结构
中文场景,相对于PP-OCRv2中文模型提升超5%;
英文数字场景,相比于PP-OCRv2英文模型提升11%;
多语言场景,优化80+语种识别效果,平均准确率提升超5%。
【论文简介】PP-OCRv1-v4中文字符识别论文概述,# Paddle,论文解读,ocr,中文字符识别,paddleocr,模型压缩,PPOCRv4

PP-OCRv3 九大改进

从算法改进思路上看,分别针对检测和识别模型,进行了共9个方面的改进:
PP-OCRv3的识别模块是基于文本识别算法SVTR优化。
SVTR不再采用RNN结构,通过引入Transformers结构更加有效地挖掘文本行图像的上下文信息,从而提升文本识别能力。
直接将PP-OCRv2的识别模型,替换成SVTR_Tiny,识别准确率从74.8%提升到80.1%(+5.3%),但是预测速度慢了将近11倍,CPU上预测一条文本行,将近100ms
2205.SVTR: Scene Text Recognition with a Single Visual Model

检测模块:
LK-PAN:大感受野的PAN结构;
DML:教师模型互学习策略;
RSE-FPN:残差注意力机制的FPN结构;
识别模块:
SVTR_LCNet:轻量级文本识别网络;
GTC:Attention指导CTC训练策略;
TextConAug:挖掘文字上下文信息的数据增广策略;
TextRotNet:自监督的预训练模型;
UDML:联合互学习策略;
UIM:无标注数据挖掘方案。 从效果上看,速度可比情况下,多种场景精度均有大幅提升:

四、PP-OCRv4 (目前效果最好2023.08.07更新)

红色框)表示较于v3的改变,绿色 表示v3已经具有的结构
从效果上看,速度可比情况下:
中文场景,相对于PP-OCRv3中文模型提升超4%
英文数字场景,相比于PP-OCRv3英文模型提升6%;
多语言场景,优化80个语种识别效果,平均准确率提升超8%。
【论文简介】PP-OCRv1-v4中文字符识别论文概述,# Paddle,论文解读,ocr,中文字符识别,paddleocr,模型压缩,PPOCRv4

PPOCRv4的10大算法改进

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

检测模块:
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蒸馏策略

附录2 代码使用

环境安装参考:
paddlepaddle深度学习框架: https://www.paddlepaddle.org.cn/
https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/quickstart.md
代码文章来源地址https://www.toymoban.com/news/detail-649981.html

from paddleocr import PaddleOCR, draw_ocr

# Paddleocr目前支持的多语言语种可以通过修改lang参数进行切换
# 例如`ch`, `en`, `fr`, `german`, `korean`, `japan`
ocr = PaddleOCR(use_angle_cls=True, lang="ch")  # need to run only once to download and load model into memory
img_path = './imgs/11.jpg'
result = ocr.ocr(img_path, cls=True)
for idx in range(len(result)):
    res = result[idx]
    for line in res:
        print(line)

# 显示结果
# 如果本地没有simfang.ttf,可以在doc/fonts目录下下载
from PIL import Image
result = result[0]
image = Image.open(img_path).convert('RGB')
boxes = [line[0] for line in result]
txts = [line[1][0] for line in result]
scores = [line[1][1] for line in result]
im_show = draw_ocr(image, boxes, txts, scores, font_path='doc/fonts/simfang.ttf')
im_show = Image.fromarray(im_show)
im_show.save('result.jpg')

到了这里,关于【论文简介】PP-OCRv1-v4中文字符识别论文概述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 基于 Paddle Serving快速使用(服务化部署 - CentOS 7)

    目录 Paddle Serving服务化部署实战 准备预测数据和部署环境 环境准备 安装 PaddlePaddle 2.0 安装 PaddleOCR 准备PaddleServing的运行环境, 模型转换 Paddle Serving pipeline部署 确认工作目录下文件结构: 启动服务可运行如下命令: 测试 Python发送服务请求: Postman 发送请求 参数调整 百度飞

    2024年02月07日
    浏览(43)
  • PP-OCRv4-server-det模型训练

    PP-OCRv4-server-det项目地址https://aistudio.baidu.com/projectdetail/paddlex/6792800 1、数据校验 2、 模型训练 3、评估测试   4、模型部署  

    2024年02月06日
    浏览(33)
  • 安装PaddlePaddle及使用PP-OCRv3 模型提取身份证信息

    1)目标 本指南的首要目的是提供一种快速使用百度开源深度学习平台(飞浆平台)的方法,飞浆平台提供了很多已经完成训练的AI模型,让了解 Python、Docker、Linux 基础知识的开发人员能够在 一至几个工作日 内完成飞浆AI模型在项目的使用搭建; 飞浆平台支持的硬件环境:

    2024年02月11日
    浏览(30)
  • lua 中文字符的判断简介

    一般在工作中会遇到中文字符的判断、截断、打码等需求,之前一直没有总结,虽然网上资料也多,今天在这里简单的总结一下。 1 .UTF-8简单描述 UTF-8 是 Unicode 的实现方式之一,其对应关系(编码规则)如下表所示: Unicode 可以容纳100多万个符号 UTF-8 最大的一个特点,就是

    2024年02月07日
    浏览(27)
  • C# OpenVinoSharp PP-TinyPose 人体姿态识别

    目录 效果 模型信息 项目 代码 下载  Inputs ------------------------- name:image tensor:Float[1, 3, 256, 192] --------------------------------------------------------------- Outputs ------------------------- name:conv2d_441.tmp_1 tensor:Float[1, 17, 64, 48] name:argmax_0.tmp_0 tensor:Int64[1, 17] -------------------------------------

    2024年02月09日
    浏览(25)
  • 边缘计算AI智能分析网关V4客流统计算法的概述

    客流量统计AI算法是一种基于人工智能技术的数据分析方法,通过机器学习、深度学习等算法,实现对客流量的实时监测和统计。该算法主要基于机器学习和计算机视觉技术,其基本流程包括图像采集、图像预处理、目标检测、目标跟踪和客流量统计等步骤,通过在监控视频

    2024年01月18日
    浏览(35)
  • 论文解读: PP-YOLOE: An evolved version of YOLO

    论文地址:https://arxiv.org/pdf/2203.16250.pdf 发表时间:2022 PP-YOLOE基于PP-YOLOv2改进实现,其中PP-YOLOv2的整体架构包含了具有可变形卷积的ResNet50-vd的主干,使用带有SPP层和DropBlock的PAN做neck,以及轻量级的IoU感知头。在PPYOLOv2中,ReLU激活功能用于主干,而mish激活功能用于颈部。PP-

    2024年02月06日
    浏览(33)
  • portraiture宿主插件最新v4中文版本下载及使用教程

    自拍怎么可以不修图呢?如果要修图的话,磨皮就是其中非常重要的一环。皮肤看起来细腻光滑了,整个人的颜值都会瞬间拉高。下面就让我们介绍一下磨皮用什么软件好用,什么软件可以手动磨皮的相关内容。portraiture是ps人像修图中常用的一款磨皮插件,还提供了免费版供

    2024年02月08日
    浏览(36)
  • 中文全文检索pgroonga在HGDB-SEE V4.5.8版本编译

    PGroonga 官网:https://pgroonga.github.io/ Description:PGroonga (píːzí:lúnɡά) is a PostgreSQL extension to use Groonga as the index.PostgreSQL supports full text search against languages that use only alphabet and digit. It means that PostgreSQL doesn’t support full text search against Japanese, Chinese and so on. You can use super fast full te

    2024年02月22日
    浏览(34)
  • MWeb Pro For Mac v4.5.9 强大的 Markdown 软件中文版

    MWeb 是专业的 Markdown 写作、记笔记、静态博客生成软件,目前已支持 Mac,iPad 和 iPhone。MWeb 有以下特色: 软件下载:MWeb Pro For Mac v4.5.9 使用原生的 macOS 技术打造,追求与系统的完美结合。 原则上,首先是追求界面简洁和高性能,然后才是强大易用,功能全面。 完整支持 C

    2024年04月12日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包