paddleocr笔记

PP-OCRv1

PP-OCR中,对于一张图像,需要完成以下3个步骤提取其中的文字信息:

  1. 使用文本检测方法,获取文本区域多边形信息(PP-OCR中文本检测使用的是DBNet,因此获取的是四点信息)。
  2. 对上述文本多边形区域进行裁剪与透视变换校正,将文本区域转化成矩形框,再使用方向分类器对方 向进行校正。
  3. 基于包含文字区域的矩形框进行文本识别,得到最终识别结果。

经过以上3个步骤便完成了对于一张图像的文本检测与识别过程。 PP-OCR的系统框图如下所示。

文本检测基于后处理方案比较简单的DBNet,文字区域校正使用几何变换以及方向分类器,文本识别使用基于融合卷积特征与序列特征的CRNN模型,采用CTC loss解决预测结果与标签不一致的问题。

文本检测

DBNet算法详解

DB是一个基于分割的文本检测算法,其提出可微分阈值Differenttiable Binarization module(DB module)采用 动态的阈值区分文本区域与背景

基于分割的普通文本检测算法其流程如上图中的蓝色箭头所示,此类方法得到分割结果之后采用一个固定的 阈值得到二值化的分割图,之后采用诸如像素聚类的启发式算法得到文本区域。 DB算法的流程如图中红色箭头所示,最大的不同在于DB有一个阈值图,通过网络去预测图片每个位置处的 阈值,而不是采用一个固定的值,更好的分离文本背景与前景。标准的二值化方法是不可微的,导致网络无法端对端训练。为了解决这个问题,DB算法提出了可微二值化(Differentiable Binarization,DB).

轻量级骨干网络

MobileNetV3_large 0.5x的结构

轻量级特征金字塔网络DBFPN结构

文本检测器的特征融合(neck)部分DBFPN与目标检测任务中的FPN结构类似,融合不同尺度的特征图,以提 升不同尺度的文本区域检测效果。 为了方便合并不同通道的特征图,这里使用 1×1 的卷积将特征图减少到相同数量的通道。 概率图和阈值图是由卷积融合的特征图生成的,卷积也与inner_channels相关联。因此,inner_channels对模型 尺寸有很大的影响。当inner_channels由256减小到96时,模型尺寸由7M减小到4.1M,速度提升48%,但精度只是略有下降。

移除了SE-Net

随着输入分辨率较大时,例如 640×640,使用SE模块较难估计通道的特征响应,精度提高有限, 但SE模块的时间成本非常高。

超参数
Cosine 学习率下降策略

Cosine学习率策略指的是学习率在训练的过程中,按照余弦的曲线变化。在 整个训练过程中,Cosine学习率衰减策略使得在网络在训练初期保持了较大的学习速率,在后期学习率会逐渐 衰减至0,其收敛速度相对较慢,但最终收敛精度较好。

学习率预热策略

学习率预热指的是将学习率从一个很小的值开始,逐步增加到初始较大的学习率。它可以保证模型在训练初 期的稳定性。使用学习率预热策略有助于提高图像分类任务的准确性。

模型裁剪策略:裁剪滤波器的方法FPGM

深度学习模型中一般有比较多的参数冗余,我们可以使用裁剪的方法,去除模型中冗余的参数,从而提升模 型推理效率。 模型裁剪指的是通过去除网络中冗余的通道(channel)、滤波器(filter)、神经元(neuron)等,来得到一个更轻量的网络,同时尽可能保证模型精度。 相比于裁剪通道或者特征图的方法,裁剪滤波器的方法可以得到更加规则的模型,因此减少内存消耗,加速模型推理过程。 之前的裁剪滤波器的方法大多基于范数进行裁剪,即,认为范数较小的滤波器重要程度较小,但是这种方法 要求存在的滤波器的最小范数应该趋近于0,否则我们难以去除。

针对上面的问题,基于几何中心点的裁剪算法 (Filter Pruning via Geometric Median, FPGM)被提出。FPGM将 卷积层中的每个滤波器都作为欧几里德空间中的一个点,它引入了几何中位数这样一个概念,即与所有采样点距离之和最小的点。如果一个滤波器的接近这个几何中位数,那我们可以认为这个滤波器的信息和其他滤波器重合,可以去掉。 FPGM与基于范数的裁剪算法的对比如下图所示。PaddleSlim/docs/zh_cn/api_cn/dygraph/pruners/fpgm_filter_pruner.rst at release/2.0.0 · PaddlePaddle/PaddleSlim · GitHub

方向分类器

方向分类器的任务是用于分类出文本检测出的文本实例的方向,将文本旋转到0度之后,再送入后续的文本 识别器中。PP-OCR中,考虑了 0 度和 180 度2个方向。

轻量级骨干网络

MobileNetV3

数据增强

BDA(Base Data Augmentation):色调变换,透明度变换,旋转,背景模糊,饱和度变换

其他的:

(1)图像变换类:

  • AutoAugment:

    AutoAugment是谷歌在2018年提出的一种自动搜索数据增强策略的方法,可以算是自动数据增强的开山之作。它采用强化学习的方式,和NAS(神经架构搜索)类似,只不过搜索空间是数据增强策略,而不是网络架构。在搜索空间里,一个policy包含5个sub-policies,每个sub-policy包含两个串行的图像增强操作,每个增强操作有两个超参数:进行该操作的概率和图像增强的幅度。每个policy在执行时,首先随机从5个策略中随机选择一个sub-policy,然后序列执行两个图像操作。

  • RandAugment:

    RandAugment是一种更为简单但有效的数据增强方法。其特点是提前列举出几种数据增强的方式,如下图中transforms所列举的,对应有一个参数N(表示数据增强的数量),参数M表示转换的强度,然后随机选择均匀概率为1/k的变换,这样就存在K^N种潜在的变换策略。在执行时,每个图像都可能被增强,并且增强操作的种类、强度以及顺序都是随机的。这种数据增强方法在很多情况下都能够取得很好的效果。

(2)图像裁剪类:CutOut、RandErasing、

Hide-And-Seek:

Hide-and-Seek是一种数据增强方法,其核心思想是将图像划分为若干小块的区域,并随机删除其中的一些区域,以增强模型的特征表达能力。具体来说,Hide-and-Seek将图片切分为S × S个网格,每个网格采用一定概率p hide = 0.5进行遮挡,可以模拟出随机擦除和cutout效果。这种数据增强方法可以使得模型通过其他区域的特征识别出物体,从而增强特征的表达能力,提高模型的泛化能力。在Hide-and-Seek中,每个网格被独立地选择是否进行遮挡,这意味着不同网格之间可能存在不同的遮挡情况。此外,作者推荐使用整个数据集的均值来填充被遮挡的区域,以保持训练和测试数据分布的一致性。

GridMask:

GridMask是一种数据增强技术,其核心思想是在图像中生成结构化的网格,并将网格中的像素值删除或修改,以增强模型的特征表达能力。具体来说,GridMask通过生成一个和原图相同分辨率的mask,然后将该mask与原图相乘得到一个图像。在mask中,灰色区域的值为1,黑色区域的值为0。这样,就实现了特定区域的information dropping,本质上可以理解为一种正则化方法。GridMask对应4个参数,为[x,y,r,d]。其中,[x]和[y]决定了一个dropped square的大小,[r]代表了保留原图像信息的比例,[d]决定了一个dropped square内需要填充的像素值。通过调整这些参数,GridMask可以在不同的数据集和任务上取得较好的效果。

(3)图像混叠类:Mixup、Cutmix

输入分辨率优化

一般来说,当图像的输入分辨率提高时,精度也会提高。由于方向分类器的骨干网络参数量很小,即使提高了分辨率也不会导致推理时间的明显增加。将方向分类器的输入图像尺度从 3x32x100 增加到 3x48x192, 方向分类器的精度从 92.1% 提升至 94.0%,但是预测耗时仅仅从 3.19ms 提升至 3.21ms。

模型量化策略-PACT

模型量化是一种将浮点计算转成低比特定点计算的技术,可以使神经网络模型具有更低的延迟、更小的体积 以及更低的计算功耗。 模型量化主要分为离线量化和在线量化。其中,离线量化是指一种利用KL散度等方法来确定量化参数的定点 量化方法,量化后不需要再次训练;在线量化是指在训练过程中确定量化参数,相比离线量化模式,它的精度损失更小。PACT(PArameterized Clipping acTivation)是一种新的在线量化方法,可以提前从激活层中去除一些极端值。在 去除极端值后,模型可以学习更合适的量化参数。

PaddleOCR/deploy/slim/quantization/README.md at release/2.4 · PaddlePaddle/PaddleOCR · GitHub

文本识别

CTC算法:CRNN

基于 CTC 最典型的算法是CRNN (Convolutional Recurrent Neural Network),它的特征提取部分使用主流的卷 积结构,常用的有ResNet、MobileNet、VGG等。由于文本识别任务的特殊性,输入数据中存在大量的上下文信 息,卷积神经网络的卷积核特性使其更关注于局部信息,缺乏长依赖的建模能力,因此仅使用卷积网络很难 挖掘到文本之间的上下文联系。为了解决这一问题,CRNN文本识别算法引入了双向 LSTM(Long Short-Term Memory) 用来增强上下文建模,通过实验证明双向LSTM模块可以有效的提取出图片中的上下文信息。最终 将输出的特征序列输入到CTC模块,直接解码序列结果。该结构被验证有效,并广泛应用在文本识别任务中。

CRNN属于规则文本识别,即文字不能弯曲。CRNN 的网络结构体系如下所示,从下往上分别为卷积层、递归层和转录层三部分:

Sequence2Sequence

Sequence2Sequence 算法是由编码器 Encoder 把所有的输入序列都编码成一个统一的语义向量,然后再由解码 器Decoder解码。在解码器Decoder解码的过程中,不断地将前一个时刻的输出作为后一个时刻的输入,循环 解码,直到输出停止符为止。一般编码器是一个RNN,对于每个输入的词,编码器输出向量和隐藏状态,并 将隐藏状态用于下一个输入的单词,循环得到语义向量;解码器是另一个RNN,它接收编码器输出向量并输 出一系列字以创建转换。

以上两个算法在规则文本上都有很不错的效果,但由于网络设计的局限性,这类方法很难解决弯曲和旋转的 不规则文本识别任务。

轻量级骨干网络

MobileNetV3

轻量级头部结构

CRNN中,用于解码的轻量级头(head)是一个全连接层,用于将序列特征解码为普通的预测字符。序列特征的 维数对文本识别器的模型大小影响非常大,特别是对于6000多个字符的中文识别场景(序列特征维度若设置 为256,则仅仅是head部分的模型大小就为 6.7M)。在PP-OCR中,针对序列特征的维度展开实验,最终 将其设置为48,平衡了精度与效率

数据增强

TIA是一种针对场景文字的数据增强方法,它在图像中设置了多个基准点,然后随机移动点, 通过几何变换生成新图像,这样大大提升了数据的多样性以及模型的泛化能力.

学习率策略和正则化

在识别模型训练中,学习率下降策略与文本检测相同,也使用了Cosine+Warmup 的学习率策略。 正则化是一种广泛使用的避免过度拟合的方法,一般包含L1正则化和L2正则化。在大多数使用场景中,都使用L2正则化。它主要的原理就是计算网络中权重的L2范数,添加到损失函数中。在L2正则化的帮助下, 网络的权重趋向于选择一个较小的值,最终整个网络中的参数趋向于0,从而缓解模型的过拟合问题,提高 了模型的泛化性能

特征图降采样策略

骨干网络一般都是使用的图像分类任务中的骨干网络,它的 输入分辨率一般设置为224x224,降采样时,一般宽度和高度会同时降采样。 但是对于文本识别任务来说,由于输入图像一般是32x100,长宽比非常不平衡,此时对宽度和高度同时降采样,会导致特征损失严重,因此图像分类任务中的骨干网络应用到文本识别任务中需要进行特征图降采样方面的适配

在PaddleOCR中,CRNN中文文本识别模型设置的输入图像的高度和宽度设置为32和320。原始MobileNetV3来 自分类模型,如前文所述,需要调整降采样的步长,适配文本图像输入分辨率。具体地,为了保留更多的水平信息,将下采样特征图的步长从 (2,2)修改为 (2,1),第一次下采样除外。最终如下图所示。

为了保留更多的垂直信息,进一步将第二次下采样特征图的步长从 (2,1)修改为 (1,1)。因此,第二 个下采样特征图的步长s2会显著影响整个特征图的分辨率和文本识别器的准确性。在PP-OCR中,s2被设置为 (1,1),可以获得更好的性能。同时,由于水平的分辨率增加,CPU的推理时间从 11.84ms 增加到 12.96ms。

PACT 在线量化策略

采用与方向分类器量化类似的方案来减小文本识别器的模型大小。由于LSTM量化的复杂性,PP-OCR中 没有对LSTM进行量化。使用该量化策略之后,模型大小减小 67.4%、预测速度加速 8%、准确率提升 1.6%, 量化可以减少模型冗余,增强模型的表达能力。

PP-OCRv2

相比于PP-OCR,PP-OCRv2 在骨干网络、数据增广、损失函数这三个方面进行进一步优化,解决端侧预测效 率较差、背景复杂和相似字符误识等问题,同时引入了知识蒸馏训练策略,进一步提升模型精度。具体地:

文字检测

CML知识蒸馏策略

知识蒸馏的方法在部署中非常常用,通过使用大模型指导小模型学习的方式,在通常情况下可以使得小模型 在预测耗时不变的情况下,精度得到进一步的提升,从而进一步提升实际部署的体验。 标准的蒸馏方法是通过一个大模型作为 Teacher 模型来指导 Student 模型提升效果,而后来又发展出 DML 互 学习蒸馏方法,即通过两个结构相同的模型互相学习,相比于前者,DML 脱离了对大的 Teacher 模型的依赖, 蒸馏训练的流程更加简单,模型产出效率也要更高一些。 PP-OCRv2 文字检测模型中使用的是三个模型之间的 CML (Collaborative Mutual Learning) 协同互蒸馏方法,既 包含两个相同结构的 Student 模型之间互学习,同时还引入了较大模型结构的 Teacher 模型。CML与其他蒸馏 算法的对比如下所示。

pp-ocrv2的文本检测任务中,CML的结构框图如下所示。这里的 response maps 指的就是DBNet最后一层的概率 图输出 (Probability map) 。在整个训练过程中,总共包含3个损失函数。这里的 Teacher 模型的骨干网络为 ResNet18_vd,2 个 Student 模型的骨干网络为 MobileNetV3。

两个 Student 模型中大部分的参数都是从头初始化的,因此它们在训练的过程中需要受到 groundtruth (GT) 信 息的监督。DBNet 训练任务的 pipeline 如下所示。其输出主要包含 3 种 feature map,具体如下所示。对这 3 种 feature map 使用不同loss function 进行监督

GT loss

最终GT loss可以表示为如下所示。

DML loss

对于 2 个完全相同的 Student 模型来说,因为它们的结构完全相同,因此对于相同的输入,应该具有相同的 输出,DBNet 最终输出的是概率图 (response maps),因此基于 KL 散度,计算 2 个 Student 模型的 DML loss, 具体计算方式如下,其中 KL(·|·) 是 KL 散度的计算公式,最终这种形式的 DML loss 具有对称性。

Distill loss

CML 中,引入了 Teacher 模型,来同时监督 2 个 Student 模型。PP-OCRv2 中只对特征 Probability map 进行蒸馏的监督。具体地,对于其中一个 Student 模型,计算方法如下所示,lp(·) 和 lb(·) 分别表示 Binary cross-entropy loss 和 Dice loss。另一个 Student 模型的 loss 计算过程完全相同。

数据增广

CopyPaste 是一种新颖的数据增强技巧,已经在目标检测和 实例分割任务中验证了有效性。利用 CopyPaste,可以合成文本实例来平衡训练图像中的正负样本之间的比 例。相比而言,传统图像旋转、随机翻转和随机裁剪是无法做到的

文本检测

PP-LCNet轻量级骨干网络

PP-LCNet了一种基于 MKLDNN 加速策略的轻量级 CPU 主干网络,大幅提高了轻量级模型在 图像分类任务上的性能,对于计算机视觉的下游任务,如文本识别、目标检测、语义分割等,有很好的表现。 这里需要注意的是,PP-LCNet是针对 CPU+MKLDNN 这个场景进行定制优化,在分类任务上的速度和精度 都远远优于其他模型.

PP-LCNet中共涉及到下面4个优化点。

  • 除了 SE 模块,网络中所有的 relu 激活函数替换为 h-swish,精度提升1%-2%
  • PP-LCNet 第五阶段,DW 的 kernel size 变为5x5,精度提升0.5%-1%
  • PP-LCNet 第五阶段的最后两个 DepthSepConv block 添加 SE 模块,精度提升0.5%-1%
  • GAP 后添加 1280 维的 FC 层,增加特征表达能力,精度提升2%-3%

PP-LCNet基于MobileNetV1改进得到,其结构图如下所示

U-DML 知识蒸馏策略

对于标准的 DML 策略,蒸馏的损失函数仅包括最后输出层监督,然而对于 2 个结构完全相同的模型来说,对 于完全相同的输入,它们的中间特征输出期望也完全相同,因此在最后输出层监督的监督上,可以进一步添 加中间输出的特征图的监督信号,作为损失函数,即 PP-OCRv2 中的 U-DML (Unified-Deep Mutual Learning) 知识蒸馏方法。 U-DML 知识蒸馏的算法流程图如下所示。Teacher 模型与 Student 模型的网络结构完全相同,初始化参数不 同,此外,在新增在标准的 DML 知识蒸馏的基础上,新增引入了对于 Feature Map 的监督机制,新增 Feature Loss。

Enhanced CTC loss 改进

中文 OCR 任务经常遇到的识别难点是相似字符数太多,容易误识。借鉴 Metric Learning 中的想法,引入 Center loss,进一步增大类间距离,核心公式如下所示。

这里 xt 表示时间步长 t 处的标签,cyt 表示标签 yt 对应的 center。

Enhance CTC 中,center 的初始化对结果也有较大影响,在 PP-OCRv2 中,center 初始化的具体步骤如下所示。

  1. 基于标准的 CTC loss,训练一个网络;

  2. 提取出训练集合中识别正确的图像集合,记为 G ;

  3. 将 G 中的图片依次输入网络,提取head输出时序特征的 xt 和 yt 的对应关系,其中 yt 计算方式如下:

4.将相同 yt 对应的 xt 聚合在一起,取其平均值,作为初始 center。

PP-OCRv3

具体的优化策略包括:

检测模块

LK-PAN:大感受野的PAN结构

LK-PAN (Large Kernel PAN) 是一个具有更大感受野的轻量级PAN结构,核心是将PAN结构的path augmentation中卷积核从3*3改为9*9。通过增大卷积核,提升特征图每个位置覆盖的感受野,更容易检测大字体的文字以及极端长宽比的文字。使用LK-PAN结构,可以将教师模型的hmean从83.2%提升到85.0%。

DML:教师模型互学习策略

PP-OCRv3检测模型是对PP-OCRv2中的CML(Collaborative Mutual Learning) 协同互学习文本检测蒸馏策略进行了升级。如下图所示,CML的核心思想结合了传统的Teacher指导Student的标准蒸馏与

Students网络之间的DML互学习,可以让Students网络互学习的同时,Teacher网络予以指导。PP-OCRv3分别针对教师模型和学生模型进行进一步效果优化。其中,在对教师模型优化时,提出了大感受野的PAN结构LK-PAN和引入了DML(Deep Mutual Learning)蒸馏策略;在对学生模型优化时,提出了残差注意力机制的FPN结构RSE-FPN。

RSE-FPN:残差注意力机制的FPN结构

RSE-FPN(Residual Squeeze-and-Excitation FPN)如下图所示,引入残差结构和通道注意力结构,将FPN中的卷积层更换为通道注意力结构的RSEConv层,进一步提升特征图的表征能力。考虑到PP-OCRv2的检测模型中FPN通道数非常小,仅为96,如果直接用SEblock代替FPN中卷积会导致某些通道的特征被抑制,精度会下降。RSEConv引入残差结构会缓解上述问题,提升文本检测效果。进一步将PP-OCRv2中CML的学生模型的FPN结构更新为RSE-FPN,学生模型的hmean可以进一步从84.3%提升到85.4%。

识别模块

SVTR_LCNet:轻量级文本识别网络

SVTR_LCNet是针对文本识别任务,将基于Transformer的SVTR网络和轻量级CNN网络PP-LCNet 融合的一种轻量级文本识别网络。使用该网络,预测速度优于PP-OCRv2的识别模型20%,但是由于没有采用蒸馏策略,该识别模型效果略差。此外,进一步将输入图片规范化高度从32提升到48,预测速度稍微变慢,但是模型效果大幅提升,识别准确率达到73.98%(+2.08%),接近PP-OCRv2采用蒸馏策略的识别模型效果。

由于 MKLDNN 加速库支持的模型结构有限,SVTR 在 CPU+MKLDNN 上相比 PP-OCRv2 慢了10倍。PP-OCRv3 期望在提升模型精度的同时,不带来额外的推理耗时。通过分析发现,SVTR_Tiny 结构的主要耗时模块为 Mixing Block,因此对 SVTR_Tiny 的结构进行了一系列优化

  1. 将 SVTR 网络前半部分替换为 PP-LCNet 的前三个stage,保留4个 Global Mixing Block ,精度为76%,加速69%,网络结构如下所示:

  2. 将4个 Global Mixing Block 减小到2个,精度为72.9%,加速69%,网络结构如下所示:

  1. 实验发现 Global Mixing Block 的预测速度与输入其特征的shape有关,因此后移 Global Mixing Block 的位置到池化层之后,精度下降为71.9%,速度超越基于CNN结构的PP-OCRv2-baseline 22%,网络结构如下所示:
GTC:Attention指导CTC训练策略

GTC(Guided Training of CTC),利用Attention模块CTC训练,融合多种文本特征的表达,是一种有效的提升文本识别的策略。使用该策略,预测时完全去除 Attention 模块,在推理阶段不增加任何耗时,识别模型的准确率进一步提升到75.8%(+1.82%)。训练流程如下所示:

TextConAug:挖掘文字上下文信息的数据增广策略

TextConAug是一种挖掘文字上下文信息的数据增广策略,主要思想来源于论文ConCLR,作者提出ConAug数据增广,在一个batch内对2张不同的图像进行联结,组成新的图像并进行自监督对比学习。PP-OCRv3将此方法应用到有监督的学习任务中,设计了TextConAug数据增强方法,可以丰富训练数据上下文信息,提升训练数据多样性。使用该策略,识别模型的准确率进一步提升到76.3%(+0.5%)。TextConAug示意图如下所示:

TextRotNet:自监督的预训练模型

TextRotNet是使用大量无标注的文本行数据,通过自监督方式训练的预训练模型,参考于论文STR-Fewer-Labels。该模型可以初始化SVTR_LCNet的初始权重,从而帮助文本识别模型收敛到更佳位置。使用该策略,识别模型的准确率进一步提升到76.9%(+0.6%)。TextRotNet训练流程如下图所示:

UDML:联合互学习策略

UDML(Unified-Deep Mutual Learning)联合互学习是PP-OCRv2中就采用的对于文本识别非常有效的提升模型效果的策略。在PP-OCRv3中,针对两个不同的SVTR_LCNet和Attention结构,对他们之间的PP-LCNet的特征图、SVTR模块的输出和Attention模块的输出同时进行监督训练。使用该策略,识别模型的准确率进一步提升到78.4%(+1.5%)。

UIM:无标注数据挖掘方案

UIM(Unlabeled Images Mining)是一种非常简单的无标注数据挖掘方案。核心思想是利用高精度的文本识别大模型对无标注数据进行预测,获取伪标签,并且选择预测置信度高的样本作为训练数据,用于训练小模型。使用该策略,识别模型的准确率进一步提升到79.4%(+1%)。实际操作中,我们使用全量数据集训练高精度SVTR-Tiny模型(acc=82.5%)进行数据挖掘,点击获取模型下载地址和使用教程。

PP-OCRv4

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

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

检测模块:

LCNetV3:精度更高的骨干网络

使用PP-LCNetV3替换MobileNetv3 backbone,PP-OCRv4学生检测模型hmean从78.24%提升到79.08%。

PFHead:并行head分支融合结构

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

DSR: 训练中动态增加shrink ratio

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

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

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%。

识别模块:

DF:数据挖掘方案

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

SVTR_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。

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

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

Multi-Scale:多尺度训练策略

动态尺度训练策略,是在训练过程中随机resize输入图片的高度,以增强识别模型在端到端串联使用时的鲁棒性。在训练时,每个iter从(32,48,64)三种高度中随机选择一种高度进行resize。实验证明,使用该策略,尽管在识别测试集上准确率没有提升,但在端到端串联评估时,指标提升0.5%。

DKD :DKD蒸馏策略

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

对于NRTR head,使用了DKD loss蒸馏,拉近学生模型和教师模型的NRTR head logits。最终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蒸馏策略,指标从74.72%提升到75.45%.

PP-StructureV1

PP-Structure是一个可用于复杂文档结构分析和处理的OCR工具包,旨在帮助开发者更好的完成文档理解相关任务

版面分析

版面分析主要用于文档检索,关键信息提取,内容分类等,其任务主要是对文档图像进行内容分类,内容的 类别一般可分为纯文本、标题、表格、图片和列表等。但是文档布局、格式的多样性和复杂性,文档图像质 量差,大规模的带标注的数据集的缺少等问题使得版面分析仍然是一个很有挑战性的任务。PP-StructureV1使用了PaddleDetection中开源的高效检测算法PP-YOLOv2完成版面分析的任务。

基于目标检测的方法

Soto Carlos在目标检测算法Faster R-CNN的基础上,结合上下文信息并利用文档内容的固有位置信息来提 高区域检测性能。Li Kai 等人也提出了一种基于目标检测的文档分析方法,通过引入了特征金字塔对齐 模块,区域对齐模块,渲染层对齐模块来解决跨域的问题,这三个模块相互补充,并从一般的图像角度和特 定的文档图像角度调整域,从而解决了大型标记训练数据集与目标域不同的问题。下图是一个基于目标检 测Faster R-CNN算法进行版面分析的流程图。

基于语义分割的方法

Sarkar Mausoom等人提出了一种基于先验的分割机制,在非常高的分辨率的图像上训练文档分割模型,解 决了过度缩小原始图像导致的密集区域不同结构无法区分进而合并的问题。Zhang Peng等人结合文档中的 视觉、语义和关系提出了一个统一的框架VSR(Vision, Semantics and Relations)用于文档布局分析,该框架使用一个双流网络来提取特定模态的视觉和语义特征,并通过自适应聚合模块自适应地融合这些特征,解决了现有基于CV的方法不同模态融合效率低下和布局组件之间缺乏关系建模的局限性。

表格识别

表格识别的难点总结如下:

  1. 表格种类和样式复杂多样,例如不同的行列合并,不同的内容文本类型等。

  2. 文档的样式本身的样式多样。

  3. 拍摄时的光照环境等

表格识别的任务就是将文档里的表格信息转换到excel文件中.

基于启发式规则的传统算法

早期的表格识别研究主要是基于启发式规则的方法。例如由Kieninger等人提出的T-Rect系统使用自底向上 的方法对文档图像进行连通域分析,然后按照定义的规则进行合并,得到逻辑文本块。而之后由Yildiz等 人提出的pdf2table则是第一个在PDF文档上进行表格识别的方法,它利用了PDF文件的一些特有信息(例如 文字、绘制路径等图像文档中难以获取的信息)来协助表格识别。而在最近的工作中,Koci等人将页面中 的布局区域表示为图(Graph)的形式,然后使用了Remove and Conquer(RAC)算法从中将表格作为一个子图 识别出来。

基于深度学习CNN的方法

Siddiqui Shoaib Ahmed 等人在DeepTabStR算法中,将表格结构识别问题表述为对象检测问题,并利用可变 形卷积来进更好的进行表格单元格的检测。Raja Sachin[6] 等人提出TabStruct-Net将单元格检测和结构识别在 视觉上结合起来进行表格结构识别,解决了现有方法由于表格布局发生较大变化而识别错误的问题,但是该 方法无法处理行列出现较多空单元格的问题。

之前的表格结构识别方法一般是从不同粒度(行/列、文本区域)的元素开始处理问题,容易忽略空单元格合 并的问题。Qiao Liang等人提出了一个新框架LGPMA,通过掩码重评分策略充分利用来自局部和全局特 征的信息,进而可以获得更可靠的对齐单元格区域,最后引入了包括单元格匹配、空单元格搜索和空单元格 合并的表格结构复原pipeline来处理表格结构识别问题。 除了以上单独做表格识别的算法外,也有部分方法将表格检测和表格识别在一个模型里完成,Schreiber Sebastian等人提出了DeepDeSRT,通过Faster RCNN进行表格检测,通过FCN语义分割模型用于表格结构行 列检测,但是该方法是用两个独立的模型来解决这两个问题。Prasad Devashish 等人提出了一种基于端到端。深度学习的方法CascadeTabNet,使用Cascade Mask R-CNN HRNet模型同时进行表格检测和结构识别,解决了 以往方法使用独立的两个方法处理表格识别问题的不足。Paliwal Shubham等人提出一种新颖的端到端深度 多任务架构TableNet,用于表格检测和结构识别,同时在训练期间向TableNet添加额外的空间语义特征,进一 步提高了模型性能。Zheng Xinyi[13] 等人提出了表格识别的系统框架GTE,利用单元格检测网络来指导表格 检测网络的训练,同时提出了一种层次网络和一种新的基于聚类的单元格结构识别算法,该框架可以接入到 任何目标检测模型的后面,方便训练不同的表格识别算法。之前的研究主要集中在从扫描的PDF文档中解析 具有简单布局的,对齐良好的表格图像,但是现实场景中的表格一般很复杂,可能存在严重变形,弯曲或者 遮挡等问题,因此Long Rujiao 等人同时构造了一个现实复杂场景下的表格识别数据集WTW,并提出了一 种Cycle-CenterNet方法,它利用循环配对模块优化和提出的新配对损失,将离散单元精确地分组到结构化表 中,提高了表格识别的性能。

基于深度学习GCN的方法

近些年来,随着图卷积神经网络(Graph Convolutional Network)的兴起,也有一些研究者尝试将图神经网络 应用到表格结构识别问题上。Qasim Shah Rukh等人将表格结构识别问题转换为与图神经网络兼容的图问题,并设计了一种新颖的可微架构,该架构既可以利用卷积神经网络提取特征的优点,也可以利用图神经网 络顶点之间有效交互的优点,但是该方法只使用了单元格的位置特征,没有利用语义特征。Chi Zewen等 人提出了一种新颖的图神经网络GraphTSR,用于PDF文件中的表格结构识别,它以表格中的单元格为输入, 然后通过利用图的边和节点相连的特性来预测单元格之间的关系来识别表格结构,一定程度上解决了跨行或 者跨列的单元格识别问题。Xue Wenyuan 等人将表格结构识别的问题重新表述为表图重建,并提出了一 种用于表格结构识别的端到端方法TGRNet,该方法包含单元格检测分支和单元格逻辑位置分支,这两个分 支共同预测不同单元格的空间位置和逻辑位置,解决了之前方法没有关注单元格逻辑位置的问题。

基于端到端的方法

和其他使用后处理完成表格结构的重建不同,基于端到端的方法直接使用网络完成表格结构的HTML表示输出,端 到 端 的 方 法 大 多 采 用Image Caption(看 图 说 话)的Seq2Seq方 法 来 完 成 表 格 结 构 的 预 测, 如 一 些 基 于Attention或Transformer的方法。

Ye Jiaquan在TableMaster中通过改进基于Transformer的Master文字算法来得到表格结构输出模型。此外, 还添加了一个分支进行框的坐标回归,作者并没有在最后一层将模型拆分为两个分支,而是在第一个 Transformer 解码层之后就将序列预测和框回归解耦为两个分支。其网络结构和原始Master网络的对比如下图所 示:

PP-StructureV2

PP-StructureV2在PP-StructureV1的基础上进一步改进,主要有以下3个方面升级:

  • 系统功能升级 :新增图像矫正和版面复原模块,图像转word/pdf、关键信息抽取能力全覆盖!
  • 系统性能优化
    • 版面分析:发布轻量级版面分析模型,速度提升11倍 ,平均CPU耗时仅需41ms
    • 表格识别:设计3大优化策略,预测耗时不变情况下,模型精度提升6%
    • 关键信息抽取:设计视觉无关模型结构,语义实体识别精度提升2.8% ,关系抽取精度提升9.1%
  • 中文场景适配 :完成对版面分析与表格识别的中文场景适配,开源开箱即用的中文场景版面结构化模型!

PP-StructureV2系统流程图如下所示,文档图像首先经过图像矫正模块,判断整图方向并完成转正,随后可以完成版面信息分析与关键信息抽取2类任务。版面分析任务中,图像首先经过版面分析模型,将图像划分为文本、表格、图像等不同区域,随后对这些区域分别进行识别,如,将表格区域送入表格识别模块进行结构化识别,将文本区域送入OCR引擎进行文字识别,最后使用版面恢复模块将其恢复为与原始图像布局一致的word或者pdf格式的文件;关键信息抽取任务中,首先使用OCR引擎提取文本内容,然后由语义实体识别模块获取图像中的语义实体,最后经关系抽取模块获取语义实体之间的对应关系,从而提取需要的关键信息。

从算法改进思路来看,对系统中的3个关键子模块,共进行了8个方面的改进。

整图方向矫正

由于训练集一般以正方向图像为主,旋转过的文档图像直接输入模型会增加识别难度,影响识别效果。PP-StructureV2引入了整图方向矫正模块来判断含文字图像的方向,并将其进行方向调整。直接调用PaddleClas中提供的文字图像方向分类模型-PULC_text_image_orientation,不同于文本行方向分类器,文字图像方向分类模型针对整图进行方向判别。

版面分析

轻量级版面分析模型PP-PicoDet

PP-PicoDet是PaddleDetection中提出的轻量级目标检测模型,通过使用PP-LCNet骨干网络、CSP-PAN特征融合模块、SimOTA标签分配方法等优化策略,最终在CPU与移动端具有卓越的性能。我们将PP-StructureV1中采用的PP-YOLOv2模型替换为PP-PicoDet,同时针对版面分析场景优化预测尺度,从针对目标检测设计的640*640调整为更适配文档图像的800*608,在1.0x配置下,模型精度与PP-YOLOv2相当,CPU平均预测速度可提升11倍。

FGD知识蒸馏

FGD(Focal and Global Knowledge Distillation for Detectors),是一种兼顾局部全局特征信息的模型蒸馏方法,分为Focal蒸馏和Global蒸馏2个部分。Focal蒸馏分离图像的前景和背景,让学生模型分别关注教师模型的前景和背景部分特征的关键像素;Global蒸馏部分重建不同像素之间的关系并将其从教师转移到学生,以补偿Focal蒸馏中丢失的全局信息。我们基于FGD蒸馏策略,使用教师模型PP-PicoDet-LCNet2.5x(mAP=94.2%)蒸馏学生模型PP-PicoDet-LCNet1.0x(mAP=93.5%),可将学生模型精度提升0.5%,和教师模型仅差0.2%,而预测速度比教师模型快1倍。

表格识别

基于深度学习的表格识别算法种类丰富,PP-StructureV1中基于文本识别算法RARE研发了端到端表格识别算法TableRec-RARE,模型输出为表格结构的HTML表示,进而可以方便地转化为Excel文件。PP-StructureV2中,对模型结构和损失函数等5个方面进行升级,提出了 SLANet (Structure Location Alignment Network) ,模型结构如下图所示:

CPU友好型轻量级骨干网络PP-LCNet

PP-LCNet是结合Intel-CPU端侧推理特性而设计的轻量高性能骨干网络,该方案在图像分类任务上取得了比ShuffleNetV2、MobileNetV3、GhostNet等轻量级模型更优的"精度-速度"均衡。PP-StructureV2中,我们采用PP-LCNet作为骨干网络,表格识别模型精度从71.73%提升至72.98%;同时加载通过SSLD知识蒸馏方案训练得到的图像分类模型权重作为表格识别的预训练模型,最终精度进一步提升2.95%至74.71%。

轻量级高低层特征融合模块CSP-PAN

对骨干网络提取的特征进行融合,可以有效解决尺度变化较大等复杂场景中的模型预测问题。早期,FPN模块被提出并用于特征融合,但是它的特征融合过程仅包含单向(高->低),融合不够充分。CSP-PAN基于PAN进行改进,在保证特征融合更为充分的同时,使用CSP block、深度可分离卷积等策略减小了计算量。在表格识别场景中,我们进一步将CSP-PAN的通道数从128降低至96以降低模型大小。最终表格识别模型精度提升0.97%至75.68%,预测速度提升10%。

结构与位置信息对齐的特征解码模块SLAHead

TableRec-RARE的TableAttentionHead如下图a所示,TableAttentionHead在执行完全部step的计算后拿到最终隐藏层状态表征(hiddens),随后hiddens经由SDM(Structure Decode Module)和CLDM(Cell Location Decode Module)模块生成全部的表格结构token和单元格坐标。但是这种设计忽略了单元格token和坐标之间一一对应的关系。

PP-StructureV2中,我们设计SLAHead模块,对单元格token和坐标之间做了对齐操作,如下图b所示。在SLAHead中,每一个step的隐藏层状态表征会分别送入SDM和CLDM来得到当前step的token和坐标,每个step的token和坐标输出分别进行concat得到表格的html表达和全部单元格的坐标。此外,考虑到表格识别模型的单元格准确率依赖于表格结构的识别准确,我们将损失函数中表格结构分支与单元格定位分支的权重比从1:1提升到8:1,并使用收敛更稳定的Smoothl1 Loss替换定位分支中的MSE Loss。最终模型精度从75.68%提高至77.7%。

其他

TableRec-RARE算法中,使用<td></td>两个单独的token来表示一个非跨行列单元格,这种表示方式限制了网络对于单元格数量较多表格的处理能力。

PP-StructureV2中,参考TableMaster中的token处理方法,将<td></td>合并为一个token-<td></td>。合并token后,验证集中token长度大于500的图片也参与模型评估,最终模型精度降低为76.31%,但是端到端TEDS提升1.04%。

版面恢复

版面恢复指的是文档图像经过OCR识别、版面分析、表格识别等方法处理后的内容可以与原始文档保持相同的排版方式,并输出到word等文档中。PP-StructureV2中,版面恢复系统,包含版面分析、表格识别、OCR文本检测与识别等子模块。 下图展示了版面恢复的结果:

关键信息抽取

关键信息抽取指的是针对文档图像的文字内容,提取出用户关注的关键信息,如身份证中的姓名、住址等字段。PP-Structure中支持了基于多模态LayoutLM系列模型的语义实体识别 (Semantic Entity Recognition, SER) 以及关系抽取 (Relation Extraction, RE) 任务。PP-StructureV2中,我们对模型结构以及下游任务训练方法进行升级,提出了VI-LayoutXLM(Visual-feature Independent LayoutXLM),具体流程图如下所示。

具体优化策略包括:

VI-LayoutXLM:视觉特征无关的多模态预训练模型结构

ayoutLMv2以及LayoutXLM中引入视觉骨干网络,用于提取视觉特征,并与后续的text embedding进行联合,作为多模态的输入embedding。但是该模块为基于ResNet_x101_64x4d的特征提取网络,特征抽取阶段耗时严重,因此我们将其去除,同时仍然保留文本、位置以及布局等信息,最终发现针对LayoutXLM进行改进,下游SER任务精度无损,针对LayoutLMv2进行改进,下游SER任务精度仅降低2.1%,而模型大小减小了约340M.

TB-YX:考虑人类阅读顺序的文本行排序逻辑

文本阅读顺序对于信息抽取与文本理解等任务至关重要,传统多模态模型中,没有考虑不同OCR工具可能产生的不正确阅读顺序,而模型输入中包含位置编码,阅读顺序会直接影响预测结果,在预处理中,我们对文本行按照从上到下,从左到右(YX)的顺序进行排序,为防止文本行位置轻微干扰带来的排序结果不稳定问题,在排序的过程中,引入位置偏移阈值Th,对于Y方向距离小于Th的2个文本内容,使用x方向的位置从左到右进行排序。

UDML:联合互学习知识蒸馏策略

UDML(Unified-Deep Mutual Learning)联合互学习是PP-OCRv2与PP-OCRv3中采用的对于文本识别非常有效的提升模型效果的策略。在训练时,引入2个完全相同的模型进行互学习,计算2个模型之间的互蒸馏损失函数(DML loss),同时对transformer中间层的输出结果计算距离损失函数(L2 loss)。使用该策略,最终XFUND数据集上,SER任务F1指标提升0.6%,RE任务F1指标提升5.01%

参考:

https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7

PaddleOCR/ppstructure/docs/PP-StructureV2_introduction.md at release/2.7 · PaddlePaddle/PaddleOCR · GitHub

相关推荐
2401_858286113 小时前
L7.【LeetCode笔记】相交链表
笔记·leetcode·链表
龙中舞王4 小时前
Unity学习笔记(2):场景绘制
笔记·学习·unity
青椒大仙KI115 小时前
24/11/7 算法笔记 PCA主成分分析
笔记·算法·信息可视化
光明中黑暗5 小时前
机器学习 笔记
人工智能·笔记·机器学习
明辉光焱7 小时前
Node.js笔记
javascript·笔记·node.js
RationalDysaniaer7 小时前
gin入门
笔记·gin
在下方方8 小时前
【快捷入门笔记】mysql基本操作大全-SQL表
笔记·sql·mysql
kjyzx669 小时前
期刊论文查重率多少,才会不被认定为学术不端?
笔记
CXDNW9 小时前
【网络面试篇】其他面试题——Cookie、Session、DNS、CDN、SSL/TLS、加密概念
网络·笔记·面试·cdn·dns·cookie
dal118网工任子仪9 小时前
web安全漏洞之xss(1)
笔记·学习·web安全·网络安全·xss