- PP-OCR: A Practical Ultra Lightweight OCR System论文地址
- PP-OCRv2: Bag of Tricks for Ultra Lightweight OCR System论文地址
- PP-OCRv3: More Attempts for the Improvement of Ultra Lightweight OCR System论文地址
- PaddleOCR Github OCR工具库 43.5K个star
- PP-OCRv1由百度发表于
2020年9月
,截止2024年10月份,引用数是197。是PP-OCR系列的第一篇论文。 - PP-OCRv2由百度发表于
2021年9月
,截止2024年10月份,引用数是59。是PP-OCR系列的第二篇论文。 - PP-OCRv3由百度发表于
2022年6月
,截止2024年10月份,引用数是83。是PP-OCR系列的第三篇论文。 - PP-OCRv4由百度发表于
2023年9月
,截止2024年10月份,代码已发布,论文还没发布。
文章目录
- [1. PaddleOCR工具包](#1. PaddleOCR工具包)
- [2. 论文摘要](#2. 论文摘要)
- [3. 实验结果-Accuracy=0.65](#3. 实验结果-Accuracy=0.65)
-
- [3.1. 实验设置](#3.1. 实验设置)
-
- [3.1.1. 用什么数据集?](#3.1.1. 用什么数据集?)
- [3.1.2. 用什么训练参数?](#3.1.2. 用什么训练参数?)
- [3.2. Text Detection文本检测](#3.2. Text Detection文本检测)
- [3.3. Direction Classification方向分类](#3.3. Direction Classification方向分类)
- [3.4. Text Recognition文本识别](#3.4. Text Recognition文本识别)
-
- [Text Recognition文本识别的评估指标--准确率(复习)](#Text Recognition文本识别的评估指标--准确率(复习))
- [PP-OCRv1模型表现,Accuracy=0.69(整句准确率)](#PP-OCRv1模型表现,Accuracy=0.69(整句准确率))
- [3.5. PP-OCRv1整体性能,Hmean=51.9%](#3.5. PP-OCRv1整体性能,Hmean=51.9%)
- [4. 核心贡献](#4. 核心贡献)
-
- [4.1. 挑战1-文本外观千变万化](#4.1. 挑战1-文本外观千变万化)
- [4.2. 挑战2-减低推理成本](#4.2. 挑战2-减低推理成本)
- [4.3. PP-OCR结构长什么样?](#4.3. PP-OCR结构长什么样?)
-
- [4.3.1. PP-OCRv1使用的文本检测器(Text Detection)](#4.3.1. PP-OCRv1使用的文本检测器(Text Detection))
- [4.3.2. PP-OCRv1使用的文本分类器(Text Classificer)](#4.3.2. PP-OCRv1使用的文本分类器(Text Classificer))
- [4.3.3. PP-OCRv1使用的文本识别器(Text Recognition)](#4.3.3. PP-OCRv1使用的文本识别器(Text Recognition))
- [4.4. 英汉识别数据集](#4.4. 英汉识别数据集)
- [5. 优化措施](#5. 优化措施)
-
- [5.1. 如何改进Text Detection?](#5.1. 如何改进Text Detection?)
-
- [5.1.1. 轻量化主干网络-选用MobileNetV3_large_x0.5](#5.1.1. 轻量化主干网络-选用MobileNetV3_large_x0.5)
- [5.1.2. 轻量化头部网络-使用FPN](#5.1.2. 轻量化头部网络-使用FPN)
- [5.1.3. 从Mobilev3主干网络中移除SE模块](#5.1.3. 从Mobilev3主干网络中移除SE模块)
- [5.1.4. 余弦学习率衰减](#5.1.4. 余弦学习率衰减)
- [5.1.5. 学习率预热Learning Rate Warm-up](#5.1.5. 学习率预热Learning Rate Warm-up)
- [5.1.6. FPGM Pruner(模型剪枝)](#5.1.6. FPGM Pruner(模型剪枝))
- [5.2. 如何改进Direction Classification?](#5.2. 如何改进Direction Classification?)
-
- [5.2.1. 轻量化主干网络-MobileNetV3_small_x0.35](#5.2.1. 轻量化主干网络-MobileNetV3_small_x0.35)
- [5.2.2. 数据增强(加了BDA和RandAugment)](#5.2.2. 数据增强(加了BDA和RandAugment))
- [5.2.3. 输入分辨率(32x100)变成(48x192)](#5.2.3. 输入分辨率(32x100)变成(48x192))
- [5.2.4. PACT量化](#5.2.4. PACT量化)
- [5.3. 如何改进Text Recognition?](#5.3. 如何改进Text Recognition?)
-
- [5.3.1. 轻量化主干网络-MobileNetV3_small_x0.5](#5.3.1. 轻量化主干网络-MobileNetV3_small_x0.5)
- [5.3.2. 数据增强](#5.3.2. 数据增强)
- [5.3.3. 余弦学习率衰减](#5.3.3. 余弦学习率衰减)
- [5.3.4. 增大特征图尺寸](#5.3.4. 增大特征图尺寸)
- [5.3.5. 使用L2正则化防止过拟合](#5.3.5. 使用L2正则化防止过拟合)
- [5.3.6. 学习率预热Learning Rate Warm-up](#5.3.6. 学习率预热Learning Rate Warm-up)
- [5.3.7. 轻量化头部网络](#5.3.7. 轻量化头部网络)
- [5.4.8. 预训练模型](#5.4.8. 预训练模型)
- [5.4.9. PACT量化](#5.4.9. PACT量化)
- 最后
1. PaddleOCR工具包
基于PaddlePaddle框架的优秀的多语言光学字符识别(OCR)工具包,就是从这篇论文起家的,这篇论文是第一个版本,截止2024年10月份,已经更新到PP-OCRv4了(v4代码已发布,论文还没出来)。下面是这个工具包的介绍:
-
Awesome multilingual OCR toolkits:
- 这指的是一个非常棒的、支持多种语言的OCR工具包。OCR技术用于将图片中的文字转换为机器可读的文本。
-
based on PaddlePaddle:
- 表示这个工具包是基于PaddlePaddle框架开发的。PaddlePaddle是由百度开发的一个开源深度学习平台。
-
practical ultra lightweight OCR system:
- 这个系统是实用的,并且非常轻量级,意味着它占用的资源很少,可以容易地部署在不同的环境中。
-
support 80+ languages recognition:
- 这个工具包能够支持80种以上的语言的文字识别功能。
-
provide data annotation and synthesis tools:
- 它提供了数据标注工具和合成工具,这有助于用户准备训练数据。
-
support training and deployment among server, mobile, embedded and IoT devices:
- 指的是这个工具包支持在服务器、移动设备、嵌入式系统以及物联网(IoT)设备上进行模型训练和部署。
2. 论文摘要
论文摘要描述了一个名为PP-OCR的超轻量级光学字符识别(OCR)系统的研究。下面逐步解释摘要的意思:
-
应用背景:
- OCR技术已经被广泛应用于多个场景中,如办公自动化(OA)系统、工厂自动化、在线教育、地图制作等。
-
存在挑战:
- 尽管如此,由于文本外观的多样性以及对计算效率的需求,OCR仍然是一个具有挑战性的任务。
-
研究贡献:
- 在本文中,研究人员提出了一种实用的超轻量级OCR系统,称为PP-OCR。
- 整个PP-OCR模型的大小仅为3.5M,用于识别6622个汉字;而识别63个字母数字符号时模型大小为2.8M。
-
实现方法:
- 研究人员介绍了一系列策略来增强模型能力或减少模型大小。
- 还提供了基于真实数据的消融实验结果。
-
数据集与模型:
- 发布了多个预训练模型用于中文和英文识别,包括使用97K张图像训练的文字检测器、使用600K张图像训练的方向分类器,以及使用17.9M张图像训练的文字识别器。
-
多语言支持:
- 提出的PP-OCR也在其他几种语言的文字识别任务上进行了验证,包括法语、韩语、日语和德语。
-
开源与代码共享:
- 所有上述提到的模型都是开源的,并且代码可以在GitHub仓库中找到,地址是https://github.com/PaddlePaddle/PaddleOCR。
3. 实验结果-Accuracy=0.65
3.1. 实验设置
3.1.1. 用什么数据集?
如表1所示,为了实现一个实用的OCR系统,我们构建了一个大规模的汉英识别数据集作为实验数据集。
对于text detection
,有97k张训练图像和500张验证图像。在训练图像中,有68K张图像是真实的场景图像,它们来自于一些公共数据集和百度图像搜索。使用的公共数据集包括LSVT(发布于2019)、RCTW-17(发布于2017)、MTWI 2018(发布于2018)、CASIA-10K(发布于2018)、SROIE(发布于2019)、MLT 2019(发布于2019)、BDI(发布于2011)、MSRA-TD500(发布于2012)和CCPD 2019(发布于2018)。百度图像搜索中的训练图像大多是文档文本图像。剩下的29K合成图像主要关注长文本、多方向文本和表格文本的场景。所有的验证图像都来自于真实的场景。
对于direction classification
,有600k的训练图像和310K验证图像。在训练图像中,有100K张图像是真实的场景图像,它们来自于公共数据集(LSVT,RCTW-17,MTWI 2018)。它们是水平的文本,是从修正和裁剪图像的Ground Truth得来的。剩下的500K合成图像主要集中在反向文本上。我们使用垂直字体来合成一些文本图像,然后水平地旋转它们。所有的验证图像都来自于真实的场景。
对于text recognition
,有17.9M的训练图像和18.7K的验证图像。在训练图像中,有190万张图像是真实的场景图像,它们来自于一些公共数据集和百度图像搜索。所使用的公共数据集包括LSVT、RCTW-17、MTWI 2018和CCPD 2019。剩下的16M合成图像主要关注不同背景、平移、旋转、透视变换、线干扰、噪声、垂直文本等场景。合成图像的语料库来自于真实的场景图像。所有的验证图像也都来自于真实的场景。
为了快速进行消融实验并选择合适的策略,我们从真实场景训练图像中选择4k个图像用于text detection,从真实场景训练图像中选择300k图像用于text recognition。
此外,我们还收集了300张不同真实应用场景的图像,以评估整个OCR系统,包括合同、车牌、工牌、火车票、测试表、表格、证书、街景图像、名片、数字仪表等。图3和图4显示了测试集的一些图像。
此外,为了验证PP-OCR对于其他语言的应用,我们还收集了一些用于字母数字符号识别、法语识别、韩语识别、日语识别和德语识别的语料库。然后合成带方向文本的图像以进行text recognition。一些用于字母数字符号识别的图像来自公共数据集,ST(发布于2016年)和SRN(发布于2020年)。表2显示了这些统计数据。由于用于text detection的MLT 2019包括了多语言图像,因此用于汉英识别的文本检测器也可以支持多语言文本检测。由于数据有限,我们还没有找到合适的数据来训练多语言的 direction classification。
用于text detection 和text recognition的数据合成工具从text_render(论文2018)中进行了修改。
3.1.2. 用什么训练参数?
我们使用Adam优化器对所有模型进行训练,并采用余弦学习率衰减作为学习率调度。不同任务的初始学习率、批处理大小和Epoch见表4。当我们得到训练好的模型时,可以使用FPGM修剪器和PACT的QAT模型进一步减小模型规模。FPGM修剪器和PACT量化的训练过程与之前相似。
在推理期间,我们使用HMean来评估text detector的性能。精度是评估direction classifier o或 text recognizer的性能的指标。F-score用于评估OCR系统的性能。为了计算F-score分数,一个正确的文本识别结果应该是准确的位置和相同的文本。GPU推理时间在一个T4 GPU上进行了测试。CPU推断时间在Intel ® Xeon ® Gold 6148上进行了测试。我们使用骁龙855(SD 855)来评估量化模型的推理时间。
3.2. Text Detection文本检测
文本检测的衡量指标HMean是什么?
在文本检测(Text Detection)领域,尤其是在衡量算法性能的指标中,Hmean(Harmonic mean)是一个重要的概念。Hmean通常是指F-measure或者Dice系数等评价指标的一个变种,它用来综合考虑精确率(Precision)和召回率(Recall)这两个指标。
-
精确率(Precision) 是指检索出的相关文档数占检索出的总文档数的比例。对于文本检测而言,可以理解为模型正确识别的文本框数量占所有识别出的文本框的比例。
-
召回率(Recall) 是指检索出的相关文档数占该类文档总数的比例。在文本检测场景下,则是正确识别的文本框数量占所有实际存在的文本框的比例。
Hmean是一个调和平均数,用于评估分类器的整体性能,尤其是在类别不平衡的情况下。它的计算公式如下:
当Precision或Recall中有任何一项接近于零时,Hmean会接近于零,这反映了模型性能的一个平衡点。Hmean的值范围从0到1,值越高表示模型性能越好
。
在文本检测任务中,使用Hmean作为性能指标可以帮助研究者了解其模型在不同数据集上的整体表现,并且鼓励模型在保证高精度的同时也要有良好的召回率,即不仅要找到尽可能多的真实文本区域,而且这些识别出来的区域还应该是正确的。
PP-OCRv1模型表现,Hmean=0.64
表5比较了不同主干网络对Text detecter 的性能。
在PP-OCR中,我们选择MobileNetV3_large_x0.5
来达到准确性和效率的平衡
Tabel 3显示了inner channel of the head、SE、余弦学习率衰减、学习率预热的消融研究。分析如下
- 首先,通过将Text detecter的inner channel of the head从256减少到96,模型尺寸缩小了41%,推理时间缩短了近50%,而HMean仅略有下降。因此,
减少inner channel of the head
是减轻Text detecter大小的一种有效方法。 - 然后,当去除Text detecter主干网络的SE模块后,模型尺寸减少了36.6%,推理时间进一步加快了18.8%。同时,HMean也不会受到影响。因此,对于文本检测,
SE模块的精度提高是有限的
,但时间成本非常高。 - 最后,使用余弦学习率衰减而不是固定学习率和学习率预热,HMean将会得到明显的改善。同时,模型的大小和推理时间也不会受到影响。
余弦学习率衰减和学习率预热是文本检测的有效策略
。
3.3. Direction Classification方向分类
PP-OCRv1模型表现,Accuracy=0.94
表7比较了不同主干网络对Direction Classification的性能。具有不同尺度(0.35,0.5)的MobileNetV3的精度很接近。MobileNetV3_small_x0.35的模型大小和推理时间要好得多
。此外,在之前的一些工作中,ShuffleNetV2被用于训练方向分类器。从表中来看,无论是精度、模型大小还是推理时间,ShuffleNetV2都不是一个很好的选择。
Table 9显示了对Direction Classification的数据增强的消融研究。不增加数据的Direction Classification的基线准确率仅为88.79%。当我们采用BDA(某种数据增强方法)时,准确率可以提高2.55%。我们也证明了RandomErasing和 RandAugment对文本方向的分类很有用。因此,在PP-OCR中,我们使用BDA(基础数据增强)和RandAugment来训练一个direction classifier。
表8显示了对direction class的输入分辨率和PACT量化的消融研究。当输入分辨率从3×32×100调整到3×48×192时,分类精度有所提高,但预测速度基本不变。此外,我们还验证了PACT量化策略对加速文本方向分类器预测速度的有效方法。模型规模减少45.9%,推理时间加快25.86%。准确性是一种轻微的提升。
3.4. Text Recognition文本识别
Text Recognition文本识别的评估指标--准确率(复习)
在光学字符识别(OCR)领域,文本识别(Text Recognition)的准确率(Accuracy)通常用来衡量识别系统输出的文本与实际文本之间的一致性。准确率是一个非常直观的性能指标,它可以告诉我们模型在多大程度上能够正确地识别文本。
文本识别准确率的定义可以分为两种主要方式:
-
字符级准确率(Character-level Accuracy) :
字符级准确率关注的是模型识别出的字符与实际字符之间的匹配程度。它可以定义为正确识别的字符数占总字符数的比例。计算公式如下:
-
单词级准确率(Word-level Accuracy) 或 整句准确率(Sequence-level Accuracy) :
单词级或整句准确率关注的是整个单词或句子是否完全正确识别。即使一个单词中只有一个字符识别错误,整个单词也被认为是错误的。计算公式如下:
PP-OCRv1模型表现,Accuracy=0.69(整句准确率)
表10比较了不同主干网络的Text recognition的性能。MobileNetV3不同尺度的精度、模型大小和推理时间都有很大的变化。在PP-OCR中,我们选择MobileNetV3_smart_x0.5
来平衡精度和效率。
表11比较了CRNN用于文本识别的通道数。将通道数量从256个减少到48个,模型尺寸从23M减少到4.6M,推理时间加快了近30%。
但是,准确性不会受到影响。我们可以看到头部的通道数量对轻量级文本识别器的模型大小有很大的影响。
Tabel 12展示了数据增强、余弦学习率衰减、第二个向下采样特征图的步幅、正则化参数L2衰减和文本识别的学习率预热的消融研究。
为了验证每种策略的优点,基本实验的设置为策略S1:
- 当使用BDA时,准确率将提高3.12%。数据增强对于文本识别是非常必要的。
- 当我们采用余弦学习率进一步衰减时,准确率将提高1.47%。余弦学习率是一种有效的文本识别策略。
- 接下来,当我们提高特征图的分辨率,并将第二个向下采样特征图的步幅从(2,1)降低到(1,1)时,准确率将提高5.27%。
- 然后,当我们进一步将正则化参数L2的衰减从0调整到1e−5时,精度将提高3.4%。特征图的分辨率和L2的衰减对其性能有很大的影响。
- 最后,使用学习率热身,准确率将提高0.62%。使用TIA数据增强,准确率将提高0.91%。学习率热身和TIA也是文本识别的有效策略。
Tabel 13显示了对文本识别的PACT量化的消融研究。当我们使用PACT量化时,模型尺寸减少了67.39%,推理时间加快了8.3%。由于对LSTM没有量化,所以加速度不明显。然而,准确性取得了显著的提高。因此,PACT量化也是减小文本识别器模型大小的有效策略
。
最后,实验表明预训练模型是很有帮助的。我们利用17.9M的训练图像来学习一个Text Recognition。然后,利用该模型作为预训练模型,对消融实验中的样品进行微调。当使用上述预训练模型时,准确率将从65.81%上升到69%,效果非常明显。
3.5. PP-OCRv1整体性能,Hmean=51.9%
表14显示了OCR系统的prunner或量化的消融研究。当我们使用精简方法时,模型大小减少了55.7%,推理时间加快了12.42%,但是F-score没有影响。推理时间包括系统各部分的预处理和后处理。因此,FPGM修剪器和PACT量化也是减小模型规模的有效策略。
为了比较所提出的超轻量级OCR系统与大规模OCR系统之间的差距,我们还训练了一个大规模OCR系统,使用Res18_vd作为Text detection的主干网络,使用Res34_vd作为Text Recognition主干网络。表15显示了比较结果。大规模OCR系统的F-score高于超轻量级OCR系统,但超轻量级系统的模型尺寸和推理时间明显更好。
4. 核心贡献
OCR(光学字符识别)是一种以自动识别图像中的文本为目标的技术,具有悠久的研究历史和广泛的应用场景,如文件电子化、身份认证、数字金融系统、车牌识别等。此外,在工厂中,通过自动提取产品的文本信息,可以更方便地管理产品。学生的线下作业或试卷可以采用OCR系统电子,提高教师和学生之间的沟通效率。OCR还可以用于标注街景图像的兴趣点(POI),有利于地图的制作效率。丰富的应用场景赋予OCR技术具有巨大的商业价值,同时也面临着许多挑战。
4.1. 挑战1-文本外观千变万化
图像中的各种文本外观文本一般可以分为两类:场景文本和文档文本。场景文本是指自然场景中的文本,如图3中所示。这通常会随着透视、缩放、弯曲、杂乱、字体、多语言、模糊、照明等因素而发生显著的变化。
如图4所示,文档文本在实际应用中更为常见。由高密度和长文本引起的不同问题需要解决。否则,文档图像文本识别往往需要构建结果,这就引入了一项新的艰巨任务。
4.2. 挑战2-减低推理成本
在实际应用中,需要处理的图像通常是大量的,这使得高计算效率成为设计OCR系统的重要标准。CPU比GPU的成本更低。特别是,OCR系统需要在许多情况下在嵌入式设备上运行,比如手机,这使得有必要考虑模型的大小。权衡模型的大小和性能是困难的,但价值是巨大的。
4.3. PP-OCR结构长什么样?
在本文中,我们提出了一种实用的超轻量级OCR系统,称为PP-OCR,该系统由文本检测、检测框修正和文本识别三部分组成,如图2所示。
4.3.1. PP-OCRv1使用的文本检测器(Text Detection)
文本检测的目的是定位图像中的文本区域。在PP-OCR中,我们使用可微二值化(DB)(Liao et al. 2020)作为文本检测器,它基于一个简单的分割网络。简单的DB后处理使其非常高效。为了进一步提高其有效性和效率,我们采用了以下六种策略:轻量化主干网络、轻量化头部网络、去除SE模块、余弦学习率衰减、学习率预热和FPGM修剪器。最后,将文本检测器的模型尺寸缩小到1.4M
。
4.3.2. PP-OCRv1使用的文本分类器(Text Classificer)
在识别检测到的文本之前,需要将文本框转换为一个水平的矩形框,以进行后续的文本识别。因为检测帧(detection frame)由四点组成,所以它容易通过几何变换(如仿射变换)进行矫正。然而,矫正后的盒子可以颠倒。因此,需要一个分类器来确定文本的方向。如果确定一个盒子被反转,则需要进一步翻转。训练文本方向分类器是一项简单的图像分类任务。我们采用以下四种策略来增强模型的能力和减小模型的尺寸:轻量化的主干网络、数据增强、增强输入分辨率和PACT量化。最后,文本方向分类器的模型大小为500KB
。
4.3.3. PP-OCRv1使用的文本识别器(Text Recognition)
在PP-OCR中,我们使用CRNN(Shi,Bai,and Yao 2016)作为文本识别器,广泛应用于文本识别。CRNN集成了特征提取和序列建模。它采用了Connectionist Temporal Classification(CTC)损失,避免了预测与标签之间的不一致。为了提高文本识别器的模型能力和减少模型大小,我们采用了以下9种策略:轻量化主干网络、数据增强、余弦学习率衰减、特征映射分辨率、正则化参数,学习率预热,轻量化头部网络,预训练模型和PACT量化。最后,文本识别器的模型大小仅为1.6M
,字母数字符号识别的模型大小为900KB。
4.4. 英汉识别数据集
为了实现一个实用的OCR系统,我们构建了一个大规模的汉英识别数据集。具体来说,文本检测数据集有97K张图像。方向分类数据集有60万张图像。文本识别数据集有1790万张图像。 我们选择了少量的数据来快速进行消融实验,并选择了合适的策略。我们做了很多消融实验来显示不同策略的效果。此外,我们还验证了所提出的PP-OCR系统用于其他语言的识别,包括字母数字符号、法语、韩语、日语和德语。
5. 优化措施
5.1. 如何改进Text Detection?
在本节中,将详细介绍如何增强模型能力或减少文本检测器的模型大小的六种策略。图5显示了文本检测器DB的体系结构。
5.1.1. 轻量化主干网络-选用MobileNetV3_large_x0.5
主干网络的大小对文本检测器的模型大小有主要影响。因此,在构建超轻模型时,应选择轻骨架。随着图像分类技术的发展,MobileNetV1、MobileNetV2、MobileNetV3和ShuffleNetV2系列经常被用作轻量化主干网络。每个系列都有不同的规模。PaddleClas提供了20多种主干网络的准确率和CPU上的推理时间,如图6所示。
当检测推理时间相同时,MobileNetV3可以获得更高的精度。在规模的选择方面,从实验中考虑精度和效率的权衡,我们采用MobileNetV3_large_x0.5。
PaddleClas总共提供了多达24个系列的图像分类网络结构和训练配置,122个模型的预训练权重及其评估指标,如ResNet, ResNet vd, SEResNeXt, Res2Net, Res2Net vd, DPN, DenseNet, EfficientNet,Xception, HRNet等
5.1.2. 轻量化头部网络-使用FPN
文本检测器的头部在目标检测方面与FPN(Lin et al. 2017)结构相似,并融合不同尺度的特征图,以提高小文本区域检测的效果。为了方便合并不同分辨率的特征映射,经常使用1×1卷积将特征映射减少到相同数量的通道。
probability map 和 the threshold map是由融合的特征映射生成的,其卷积也与上述inner_channels相关联。因此,inner_channels对模型的尺寸有很大的影响。当inner_channels从256减少到96时,模型尺寸从7M减少到4.1M,但精度略有下降。
注意:inner_channels表示的是特征图的通道数
5.1.3. 从Mobilev3主干网络中移除SE模块
SE是 squeeze-and-excitation(压缩和激励)的简称(Hu,Shen,和Sun 2018)。如图7所示,SE块显式地建模通道之间的相互依赖关系,并自适应地重新校准通道方向的特性响应。由于SE块可以明显地提高视觉任务的准确性,因此MobileNetV3的搜索空间中包含了它们,并且许多SE块都在MobileNetV3架构中。然而,当输入分辨率很大时,如640×640,很难估计使用SE块的信道级特征响应。精度的提高很有限,但时间成本很高。当从主干上将SE块移除时,模型尺寸从4.1M减小到2.5M,但精度没有影响。
5.1.4. 余弦学习率衰减
学习速率是控制学习速度的超参数。学习率越低,损失值的变化就越慢。虽然使用较低的学习速率可以确保你不会错过任何局部最小值,但这也意味着收敛速度很慢。在训练的早期阶段,权值处于随机初始化状态,因此我们可以设置一个相对较大的学习速率,以便更快地收敛。在训练的后期阶段,权值接近于最优值,因此应该使用相对较小的学习率。余弦学习率衰减已成为首选学习率变化策略。在整个训练过程中,余弦学习率的衰减保持了相对较大的学习率,因此其收敛速度较慢,但最终的收敛精度较好。图8比较了学习速率衰减的不同方法。
5.1.5. 学习率预热Learning Rate Warm-up
论文(He et al. 2019a)表明,使用学习率预热操作有助于提高图像分类的准确性。在训练过程开始时,使用过大的学习率可能会导致数值不稳定,需要使用较小的学习率。训练一些epoch之后,当训练过程稳定时,将使用初始学习率继续训练。对于文本检测,实验表明,该策略也是有效的。
"Learning Rate Warm-up" 是一种在训练深度学习模型时使用的策略,其目的是为了更有效地调整模型的学习速率。让我们逐步来看这个概念是如何应用的。
步骤一:理解学习率的基本概念
首先,我们需要理解什么是学习率(learning rate)。学习率是训练过程中一个非常重要的超参数,它控制着权重更新的大小。如果学习率太高,模型可能会越过最小值,导致训练不稳定;如果太低,则训练过程会非常缓慢,可能需要更多的迭代才能收敛。
步骤二:为什么需要Warm-up?
在某些情况下,尤其是在使用非常大的批次大小(batch size)训练时,开始时采用固定的学习率可能会导致训练不稳定或发散。这是因为初始阶段的梯度可能非常大,导致权重更新过大,使得损失函数(loss function)值变得不稳定。
步骤三:Warm-up的原理
为了解决这个问题,可以采用"学习率预热"(Learning Rate Warm-up)的方法。这种方法在训练的初期逐渐增加学习率,而不是一开始就使用固定的较高学习率。这样做的好处是可以让模型有一个适应期,在这个期间内,模型可以更平稳地进入训练状态。
步骤四:Warm-up的具体实现
实现学习率预热通常是在训练的前几个epoch里逐渐增加学习率到预定的最大值。例如,可以在前5个epoch中线性地增加学习率,从0开始直到达到预定的学习率值。
步骤五:Warm-up的效果
通过使用Warm-up技术,可以避免因初始学习率设置不当而导致的问题,并且可以帮助优化算法更快地找到合适的下降方向。此外,在一些研究中还发现,Warm-up对于使用大规模数据并行训练的情况特别有用。
步骤六:Warm-up与其他学习率调度策略结合
Warm-up经常与学习率衰减等其他学习率调度策略结合使用。例如,在预热阶段结束后,可以根据某些条件(如验证集上的性能)来减少学习率,以帮助模型更好地收敛。
总结而言,学习率Warm-up是一种帮助模型在训练初期更加稳定的技术,通过逐渐增加学习率,它可以防止过大的梯度更新带来的不利影响,并且有助于提高训练的效率。
5.1.6. FPGM Pruner(模型剪枝)
剪枝法是提高神经网络模型推理效率的另一种方法。为了避免模型剪枝导致的模型性能下降,我们使用FPGM(He et al. 2019b)来寻找原始模型中不重要的子网络。FPGM以几何中值为准则,并将卷积层中的每个滤波器作为欧几里得空间中的一个点。然后计算这些点的几何中值,并删除具有相似值的滤波器,如图9所示。每一层的压缩比对于修剪模型也很重要。均匀地修剪每一层通常会导致显著的性能下降。在PP-OCR中,根据(Li et al. 2016)中的方法计算每层的剪枝灵敏度,然后用来评估每层的冗余度。
5.2. 如何改进Direction Classification?
本节将详细介绍如何增强模型能力或减少Direction Classification的模型大小的四种策略。
5.2.1. 轻量化主干网络-MobileNetV3_small_x0.35
我们还采用MobileNetV3作为方向分类器的主干网络,它与文本检测器相同。因为这个任务相对简单,我们使用MobileNetV3_small_x0.35来实现准确性和效率的权衡。当使用更大的骨干时,精度不会提高更多。
5.2.2. 数据增强(加了BDA和RandAugment)
有一些图像增强操作可以用于训练文本识别器,如旋转、透视失真、运动模糊和高斯噪声。这些过程被简称为BDA(基础数据增强)
。它们被随机地添加到训练图像中。实验表明,BDA对方向分类器的训练也很有用。除了BDA之外,最近提出了一些新的数据增强操作以改善图像分类的效果,例如,AutoAugment (Cubuk et al. 2019),RandAugment
(Cubuk et al. 2020), CutOut (DeVries and Taylor 2017), RandErasing (Zhong et al. 2020), HideAndSeek (Singh and Lee 2017), GridMask (Chen 2020), Mixup(Zhang et al. 2017) and Cutmix (Yun et al. 2019)。但实验表明,除了随机增强和随机擦除外,大部分方法都不适用于方向分类器的训练。随机增强效果最好。最后,我们在方向分类的训练图像中添加了BDA和随机增强。
5.2.3. 输入分辨率(32x100)变成(48x192)
一般来说,当归一化图像的输入分辨率提高时,精度也会得到提高。由于方向分类器的主干非常轻,适当地提高分辨率并不会导致计算时间的明显提高。在以往的大多数文本识别方法中,归一化图像的高度和宽度分别设置为32和100。而在PP-OCR中,高度和宽度分别设置为48和192,以提高方向分类器的精度。
5.2.4. PACT量化
量化可以使神经网络模型具有更低的延迟、更小的体积和更低的计算功耗。目前,量化主要分为离线量化和在线量化两类。离线量化是指利用KL散度和移动平均等方法来确定量化参数,不需要再训练的一种定点量化方法。在线量化是在训练过程中确定量化参数,比离线量化模式提供更少的量化损失。
PArameterized Clipping acTivation PACT(副参数化剪切激活)(Choietal.2018)是一种新的在线量化方法,可以提前从激活中去除一些异常值。在剔除异常值后,该模型可以学习到更合适的定量尺度。PACT预处理激活
的公式如下:
对普通PACT方法的激活值的预处理是基于ReLU函数的。所有大于一定阈值的激活值都会被截断。然而,MobileNetV3的激活功能不仅是ReLU,而且是hard swish硬摇摆。使用普通的PACT量化会导致更高的量化损失。因此,我们将激活预处理
的公式修改如下,以减少量化损失。
我们使用改进的PACT量化方法来量化方向分类器模型。此外,在PACT参数中加入系数为0.001的l2正则化,以提高模型的鲁棒性。
上述FPGM模型剪枝和PACT量化的实现是基于PaddleSlim。PaddleSlim是一个用于模型压缩的工具包。它包含了一系列的压缩策略,如剪枝、定点量化、知识蒸馏、超参数搜索等神经结构搜索。
5.3. 如何改进Text Recognition?
在本节中,将详细介绍关于增强模型能力,或者减少文本识别器模型大小的九种策略。图10显示了文本识别器CRNN的架构。
5.3.1. 轻量化主干网络-MobileNetV3_small_x0.5
我们还采用MobileNetV3作为文本识别器的主干,与文本检测相同。选择MobileNetV3_small_x0.5来实现准确性和效率的均衡。如果你对模型的尺寸不那么敏感,那么MobileNetV3_small_x1.0也是一个不错的选择。模型尺寸仅增加了2M,精度明显提高。
5.3.2. 数据增强
除了前面提到的经常用于文本识别的BDA(基础数据增强)外,TIA(Luo et al. 2020)也是一种有效的文本识别数据增强方法。
TIA的做法是:首先,在图像上初始化一组基准点。然后随机移动这些点,生成一个具有几何变换的新图像。在PP-OCR中,我们将BDA和TIA添加到文本识别的训练图像中。
5.3.3. 余弦学习率衰减
正如在文本检测中所提到的,余弦学习率衰减已成为首选的学习率降低方法。实验结果表明,余弦学习率衰减策略也能有效地提高模型的文本识别能力。
5.3.4. 增大特征图尺寸
为了适应多语言识别,特别是中文识别,在PP-OCR中,CRNN输入的高度和宽度被设置为32和320。那么,原始的MobileNetV3的步伐就不适合用于文本识别了。如图12所示,为了保持更多的水平信息,我们将除第一个采样特征图外,向下采样特征图的步幅从(2,2)修改为(2,1)。为了保持更多的垂直信息,我们进一步修改了第二个向下采样特征图的步幅,从(2,1)到(1,1)。因此,第二个向下采样特征图s2的步幅极大地影响了整个特征图的分辨率和文本识别器的精度。在PP-OCR中,s2被设置为(1,1),以获得更好的经验性能。
5.3.5. 使用L2正则化防止过拟合
过拟合是机器学习中的一个常见术语。一个简单的理解是该模型在训练数据上表现良好,但在测试数据上表现不佳。为了避免过拟合,人们提出了许多常规的方法。其中,weight decay重量衰减是避免过拟合的一种广泛使用的方法之一。在最终的损失函数之后,将 L2 regularization (L2 decay)添加到损失函数中。在L2正则化的帮助下,网络的权值倾向于选择一个较小的值,最后整个网络中的参数趋于0,从而相应地提高了模型的泛化性能。对于文本识别,L2 decay对识别精度有很大的影响。
5.3.6. 学习率预热Learning Rate Warm-up
与文本检测类似,学习率热身也有助于文本识别。在文本识别方面,实验表明,使用这种策略也是有效的。
5.3.7. 轻量化头部网络
一个完整的连接层用于将序列特征编码到普通的预测字符中。序列特征的维度对文本识别器的模型大小有影响,特别是对于超过6以上的中文识别。同时,并不是说维数越高,序列特征的表示能力就越强。在PP-OCR中,序列特征的维数被经验设置为48。
5.4.8. 预训练模型
如果训练数据较少,先在ImageNet等大数据集上进行预训练,然后对现有的网络进行微调,以实现快速收敛和更好的精度。在图像分类和目标检测中的迁移学习结果表明,上述策略是有效的。在真实的场景中,用于文本识别的数据往往是有限的。如果用数千万个样本进行预训练,即使是合成的,上述模型也可以显著提高精度。我们通过实验证明了该策略的有效性。
5.4.9. PACT量化
除了跳过LSTM层外,我们采用了类似的方向分类量化方案来减小文本识别器的模型大小。由于LSTM量化的复杂性,这些层目前还不被量化。
最后
这是PP-OCR系列论文的第一篇,后续会继续介绍和精读v2、v3、v4,敬请关注!