⚠️本文为稀土掘金技术社区首发签约文章,30天内禁止转载,30天后未获授权禁止转载,侵权必究!
✨专栏介绍: 经过几个月的精心筹备,本作者推出全新系列《深入浅出OCR》专栏,对标最全OCR教程,具体章节如导图所示,将分别从OCR技术发展、方向、概念、算法、论文、数据集等各种角度展开详细介绍。
💙个人主页: GoAI |💚 公众号: GoAI的学习小屋 | 💛交流群: 704932595 |💜个人简介 : 掘金签约作者、百度飞桨PPDE、领航团团长、开源特训营导师、CSDN、阿里云社区人工智能领域博客专家、新星计划计算机视觉方向导师等,专注大数据与人工智能知识分享。
💻文章目录
《深入浅出OCR》前言知识(二):深度学习基础总结 (✨文末深度学习总结导图)
《深入浅出OCR》前言知识(一):机器学习基础总结 (✨文末机器学习总结导图)
👨💻本篇导读:
上一章我们介绍到OCR流程包括两阶段算法和端到端算法,本篇为 【《深入浅出OCR》第五章:端到端识别】,主要对深度学习端到端识别方法进行介绍,本人将从经典算法结构、代码、论文解读等角度展开,配合作者总结的思维导图,深入浅出OCR知识。
《《深入浅出OCR》第五章:端到端识别
一、端到端识别介绍
OCR识别流程可以分为两阶段识别算法和单阶段端对端识别算法。两阶段识别算法包括文本检测和文本识别两个步骤,而端对端识别算法可以在一个算法中同时完成文字检测和文字识别。端对端识别算法的主要思想是设计一个模型,它既有检测文字的功能,也能进行文字的识别,并且通过共享CNN特征进行联合训练。由于端对端OCR算法只用一个模型就能同时完成文字检测和识别,所以它具有模型小、速度快的特点。
二、端到端识别方法导图
这里作者主要从时间顺序出发,整理从最开始的TextBoxes系列基础进行逐步改进,直到目前ABCnet及其变种、PGNet等逐渐成为主流端到端识别算法。
三、基于深度学习的端到端识别方法分类
2.1 端到端识别分类:
从作者个人角度看,端到端规则文本识别出现的目的主要是为了解决平直文或着倾斜文本的检测和识别,然而弯曲、变形等文本在自然场景中大量出现,如印章等,在检测和识别这些文本需要使用端到端任意形状文本识别算法,与此同时这些算法也可以检测和识别平直和倾斜的文本。
深度学习端到端文本识别具有代表性的方法大致可分为两类:
-
端到端规则文本识别(平直文本或倾斜文本);
-
端到端任意形状文本识别(弯曲、变形、平直、倾斜文本)。
接下来,本人将按时间发展及方法分类对端到端识别方法进行详细介绍。
2.2 端到端的规则文本识别
FOTS
Fots: Fast oriented text spotting with a unified network [Liu et al., 2018]
方法介绍:
文本检测和识别网络都是为了找出输入图片中的文字,并提取出文字的特征。然而,使用不同的算法来处理这两个过程会导致计算两次相同信息的缺点。通过端到端可训练的算法FOTS,我们可以解决这个问题,它使用了EAST算法(一种高效准确的场景文字检测器)的卷积核来重复使用于CRNN+CTC解码器。这样整个模型就可以进行端到端的训练,而且不需要复杂的后处理和超参数调整。
- FOTS中文本框直接从同享特征中提取,而不是从原始图画中提取。在同享特征表明检测过程的倒数第二层生成的特征映射,即核算检测输出的映射。因而,辨认部分能够运用较小的CNN,由于它的输入已经被处理过了。
- FOTS十分高效。该算法还能够处理歪斜的文本实例,办法是将从同享特征中裁剪出来的相应文本框进行调整。此外,端到端办法提高了检测过程的鲁棒性。
FOTS算法由四个部分组成:共享卷积、文本检测分支、ROIRotate操作和文本识别分支。
首先,通过共享卷积特征来提取特征图,在减少计算开销的同时,实现了实时识别和检测文本。
接下来,在提取特征图的基础上,建立基于全卷积神经网络FCN的文本检测分支,用于预测文本的检测框;然后,使用RoIRotate算法从特征图中提取与检测结果相对应的文本候选特征,以实现将文本的检测和识别统一到端到端的训练流程;最后,将文本候选特征输入到递归神经网络RNN编码器和连接时序分类CTC解码器中,以实现文本的识别。
✨TextSpotter(2018)
Tong He等人在2018年提出了一种名为TextSpotter的简单而有效的模型。该模型的整体结构如下图所示。TextSpotter使用PVANet模型作为检测部分的基础网络,而识别部分则使用RNN模型。这个模型将文本检测和文本识别两个任务统一到同一个网络中进行训练。RNN分支由text-aligment层和LSTM组成,其中text-aligment层使用网格采样代替传统的RoI池化层,以计算具有固定长度的卷积特征。
为了验证TextSpotter方法的有效性,作者在ICDAR2013和ICDAR2015数据集上进行实验,TextSpotter可视化结果如下图所示。
2.3 端到端的不规则文本识别
✨Mask-TextSpotter系列
Mask-TextSpotter是白翔团队于2018年提出的一种可端到端训练的文本检测和识别方法。它能够处理任意形状的文本。这个模型主要由两部分组成:基于实例分割的文本检测器和基于字符分割的文字识别器。
Mask-TextSpotter通过分割文本的方式解决文本检测的问题,因此可以检测出任意形状的文本。
Mask-TextSpotter v1 :
模型整体结构如下:该方法受到Mask RCNN的启发,在特征提取之后介入两个分支,分别进行文本区域检测和生成文本实例分割图与字符分割图(字符分割图数量为字符集个数+1)
Mask-TextSpotter v2 :
2019年,Liao等人在Mask TextSpotter的基础上提出了Mask TextSpotter V2。相比V1版本,V2版本在识别分支上添加了一个空间注意力模块。Mask TextSpotter用于对单个字符进行识别,在训练时需要字符的位置信息,并通过后处理将这些字符组合成最终的文本识别结果。
总结:为缓解上述问题,V2版本提出空间注意力机制。在文本识别部分利用SAM预测文本序列,且在训练时只需要单词级的标注,这大大减少了训练时对字符级标注的需求。
Mask-TextSpotter v3 :
2020年,Liao等人在Mask TextSpotter V1和V2的基础上推出Mask TextSpotter V3。前两个版本都是基于Mask R-CNN用于文本检测,但由于RPN的局限性,对于长文本的检测效果不佳。为了解决这个问题,引入了一个新的结构叫做Segmentation Proposal Network(SPN),来替代以前的RPN网络。
总结: Mask-TextSpotter 系列可以将文本检测与识别放在同一个网络中进行端到端训练,可以避免两阶段OCR识别中的一定误差,但是该系列需要字符级标注,标注成本较高,需要标注文字的轮廓区域,对文字的阅读顺序不敏感,并且识别分支需要为每个字符生成一个分割图,用来识别汉字时,会生成大量的分割图,增加计算量与内存量。
CharNet
Char-Net:一种用于扭曲场景文本识别的字符感知神经网络
2019年,Linjie Xing等人提出了一个名为CharNet的方法,用于端到端的文字检测和识别任务,其网络结构如图所示。CharNet引入了新的字符检测和识别的分支,并与当前的文本检测模型结合起来。与现有的两阶段模型相比,CharNet将单个字符作为基本单元,避免了RoI Pooling和RNN识别模块带来的影响,从而解决了这两个模块导致的一些不足之处。
整体架构:
Char-Net整体结构包括词级编码器,字符级编码器以及基于LSTM的解码器。在词级编码器中,蓝色和黄色矩形分别代表了卷积块和最大池层。通过对来自CNN的不同级别的三个卷积特征映射进行归一化(局部响应归一化),级联和降维(1×1卷积)以产生特征映射F。两个红色矩形代表分层关注机制的两个层。 Ftc和Ftc-r的相应图像块,连同字符级注意一起在绿色矩形中显示。
本文提出了一种名为分层注意机制(HAM)的新方法,它由两个部分组成:循环的RoIWarp层和字符级注意层。
循环的RoIWarp层根据词级编码器生成的特征映射,逐个提取与字符对应的特征区域,然后将这些区域输入字符级编码器。字符级编码器通过简单的空间变换器去除字符失真,并对字符区域进行编码。在此基础上,字符级注意层关注字符级编码器生成的特征映射中最相关的特征,形成上下文矢量,之后被送到基于LSTM的解码器进行解码。这样的方法不仅能有效提高效率,还能够处理多种复杂的失真情况。
参考: char-net
✨ABCNet系列
ABCNet
Scene Text Spotting:Adaptive Bezier-Curve Network
ABCNet是由华南理工大学在2020年提出的一个方法。该方法使用了参数化的贝塞尔曲线,并设计了一个称为BezierAlign的对齐层,以精确提取任意形状文本实例的特征。相比于传统的基于边界框的文本检测方法,bezier曲线检测方法仅引入了一点点可忽略的额外计算量。整个检测框架使用了一种称为single-shot、anchor-free的卷积神经网络。在检测头部,将每个文本的检测转换为文本行上下两条曲线的检测。每条曲线使用了一个三阶贝塞尔曲线来拟合。而识别分支则使用了传统的CRNN网络加上CTC(连续字符转录)的方法。
Yuliang Liu等人在2020年提出了一种名为ABCNet的模型,可用于训练任意形状的文本检测和识别任务。这个网络结构如图所示。ABCNet首次使用参数化的贝塞尔曲线,能够自适应地拟合任意形状的文本。同时,他们还设计了一个新颖的BezierAlign层,用于精确地提取任意形状文本的卷积特征。与传统的标准检测方法相比,使用贝塞尔曲线进行检测引入的额外计算开销非常小。
模型框架如下:
参考资料:
zhuanlan.zhihu.com/p/116096473
zhuanlan.zhihu.com/p/146276834
ABCNet v2
在2021年,Yuliang Liu等人在ABCNet的基础上提出了ABCNet v2,并在四个方面进行了改进,以实现先进的性能同时保持高效率。
首先,他们改进了识别分支,采用了注意力机制的解码方式,这有助于提高识别的准确性。其次,他们对骨干网络进行了改进,使用了双向多尺度金字塔结构,可以有效地检测不同尺度的文字特征。这使得模型能够适应各种不同大小的文本。与此同时,他们还改进了v1版本中训练过程中的问题,即识别分支的特征图与检测分支没有共享的问题。他们首先使用NMS(非极大值抑制)方法消除冗余的框,然后通过计算文本实例的真实控制点与每个检测框的控制点之间的差异,得到最终的检测框,并进行识别。
ABINet++
(TextSpotting版本,TPAMI)
参考代码: github.com/FangShanche…
✨PGNet
论文地址:PGNet
在2021年,Pengfei Wang等人提出了一种名为全卷积Point Gathering Network(PGNet)的模型,它是一个多任务、单级的文本检测器。这个模型可以实时地识别任意形状的文本,并且提供了使用PaddlePaddle框架的源代码。PGNet的整体模型结构如图所示。
PGNet模型输入图像经过特征提取送入四个分支,分别是 :文本边缘偏移量预测TBO模块、文本中心线预测TCL模块、文本方向偏移量预测TDO模块以及文本字符分类图预测TCC模块。 其中TBO以及TCL的输出经过后处理后可以得到文本的检测结果,TCL、TDO、TCC负责文本识别。
同时,提出PG_CTC loss,避免字符级标注,使用PG_CTC loss,直接从2维空间得到 high-level 字符分类向量,提出GRM(图修正)模块,提高端到端表现。
- text center line(TCL,文本中心线检测)
- text border offset(TBO,文本边框偏移)
- text direction offset (TDO,文本方向偏移)
- text character classification map(TCC,文本字符分类map)
其检测识别效果图如下:
详细介绍:
在训练阶段: TBO,TCL,TDO使用相同尺寸大小的label map,pixel-level TCC map模块使用PG-CTC loss解决缺少字符级标注的问题。
在推理阶段: 从TCL中计算每个文本区域的中心线,按照TDO的文本可读方向排序,从而恢复阅读顺序,从TBO中提取边界偏移信息,通过多边形回归得到每个文本区域的检测结果,同时PG-CTC 编码器可以将二维的TCC map序列化为字符概率序列,对其进行解码,得到最终的文本识别结果。
优势:
- PGNet不需要NMS和RoI操作。TCL map中可以计算文本区域的中心点序列 ,并按照可读方向排序,特别的,还采取了一种形态学的方法,得到文本区域的骨干,作为中心点序列。从TDO map中得到每个点的检测结果,通过计算所有点的平均方向并根据投影长度方向进行排序,得到中心点序列。
- PGNet在训练中与Mask-TextSpotter类似,需要生成字符集个数级别的分割图,用来预测文字序列。在中文场景下,模型会变得臃肿,且在训练生成groundtruth时中,需要每条文字字段的上下两条包围曲线点的个数相同,生成不同任务对应的标签,需要比较麻烦的预处理工作。
总结: 近些年来,端对端OCR算法取得良好发展,包括MaskTextSpotter系列、TextSnake、TextDragon系列等算法。综合上述分析,PGNet算法具备其他算法不具备的优势,包括:
- 设计PGNet loss指导训练,不需要字符级别的标注
- 不需要NMS和ROI相关操作,加速预测
- 提出预测文本行内的阅读顺序模块;
- 提出基于图的修正模块(GRM)来进一步提高模型识别性能
- 精度更高,预测速度更快
注:PGNet在PaddleOCR中复现,下一章将具体介绍使用及具体算法流程。
TrOCR
微软亚洲研究院在2021年提出了一种名为TrOCR的端到端文本识别方法。其采用了Transformer结构,其中包含了两个部分:图像Transformer和文本Transformer。图像Transformer用于提取图像中的视觉特征,而文本Transformer则用于建模语言模型。这两个部分都经过预先训练,以便能更好地理解和处理图像中的文本。TrOCR使用标准的Transformer编码器-解码器模式,以实现文本识别的功能。该模型的结构如图所示。
TrOCR的编码器用于获取图像切片的特征,解码器以自回归方式生成文本序列,某一步的解码器输出会关注编码器的输出和之前已生成的文本序列。
-
对于编码器,TrOCR 采用 ViT 形式的模型结构,具体的参数初始化可以用DeiT或者BeiT。编码器归一化输入图像的尺寸,并将其切片成固定大小的正方形图像patch,以形成模型的输入序列。模型保留预训练模型中的特殊标记“[CLS]”代表整张图片的特征,对于 DeiT 的预训练模型,同样保留了对应的蒸馏token,代表来自于教师模型的蒸馏知识。
-
而对于解码器,TrOCR则采用原始的 Transformer 解码器结构,参数初始化使用RoBERTa。
TrOCR优点:
TrOCR不仅利用大规模无标注数据预训练的图像和文本Transformer初始化其模型,还基于大量PDF文件标注文字数据进行预训练,同时也开放提供了不同复杂度的TrOCR预训练模型,可在预训练模型上进行微调。
1.TrOCR使用预先训练好的图像Transformer和文本Transformer模型,它们利用大规模的未标记数据来进行图像理解和语言建模,而不需要一个外部语言模型。
2.TrOCR不需要任何卷积网络作为主干,也不引入任何特定于图像的归纳偏置。
3.在OCR数据集上的实验结果表明,TrOCR可以在印刷、手写和场景文本图像数据集上实现最先进的结果,而无需任何复杂的前后处理操作步骤。
总结:
Trocr与CRNN方案不同, 它没有采用cnn作为模型骨干, 而是采用ViT模型结构, 将图片切分成多个patch, 形成模型的输入序列。 使用Beit预训练模型作为编码器, 使用改进bert的Roberta作为解码器。实验表明,TrOCR模型在印刷、手写和场景文本识别任务上优于目前最先进的模型,达到SOTA。
SwinTextSpotter
论文地址:SwinTextSpotter: SceneTextSpotting via Better Synergybetween TextDetection and TextRecognition CVPR 2022
代码地址: github.com/mxin262/Swi…
SwinTextSpotter是一种基于Transformer的用于任意形状端到端场景文字识别的方法,它的具体结构见下图,该方法提出了一种新的识别转换机制,通过识别损失来清晰明确地引导文本定位,使检测器与识别器更加密切的耦合,以进行联合优化。
灰色箭头表示从图像中提取的特征。绿色箭头和橙色箭头分别表示检测阶段和识别阶段
参考学习:SwinTextSpotter: 基于文本检测与识别更好协同的场景文本识别
GLASS
Global to Local Attention for Scene-Text Spotting
论文地址:Global-to-Local Attention mechaniSm for text Spotting
GLASS模型主要用于端到端的场景文本识别任务,该模型结合了图像中的全局特征(大尺度,低分辨率)和局部特征(小尺度,高分辨率),并通过端到端训练来完成任务。此外,文章还提出了一种全新的基于旋转的损失函数,用于优化模型在旋转字体识别方面的性能。
通过实验结果可以看出,GLASS模型和新的损失函数能够显著提升现有模型的性能。
参考:zhuanlan.zhihu.com/p/553220889
SPTS
论文地址: Single-Point Text Spotting
参考代码: github.com/shannanyinx…
针对现有的端到端场景文本任务通常需要较细粒度的标注,并且效果更好的方法通常需要采用特殊的采样策略来获取共享特征。但这种方法需要复杂的后处理和采样策略。为了解决该问题,有人提出了一种自回归的Transformer Spotter模型SPTS。它将端到端的场景文本识别任务转化为一个类似于语言建模的任务。可以省去复杂的后处理和采样策略。
总结: SPTS自回归的Transformer Spotter模型在各个大型数据集上表现出与其他先进模型相近性能,实验结果对比如下,其能够通过处理文本任务的方式,让模型更加简单和高效地识别场景文本,并且不需要额外的复杂步骤。
部分实验结果:
2.4 端到端识别算法总结:
类别 | 论文 |
---|---|
端到端规则文本识别 | FOTS(2018)、TextSpotter(2018) |
端到端任意形状文本识别 | Mask TextSpotterv1、Mask TextSpotter2(2019)、Mask TextSpotterv3、TextDragon(2019)、CharNet、TUTS、ABCNet、ABCNetV2(2021)、Text Perceptron、PGNet、PAN++(2021) |
四、OCR端到端识别常见评估指标
- 端对端召回率:准确检测并正确识别文本行在全部标注文本行的占比;
- 端到端准确率:准确检测并正确识别文本行在检测到的文本行数量的占比;
- 准确检测的标准是检测框与标注框的IOU大于某个阈值,正确识别的检测框中的文本与标注的文本相同。
OCR端到端评估指标结果对比
通过对比上述方法在不同数据集上的的文字检测评估指标,参考其他资料如下结果。评价指标为准确率、召回率及F1值。
注:指标介绍可参考本专栏前几篇文章。
五、总结
本篇为 【《深入浅出OCR》第五章:OCR端到端识别】,主要对深度学习OCR段导弹方法进行介绍,本人将从经典算法结构、代码、论文解读等角度展开,配合作者总结的思维导图,深入浅出OCR知识,下一篇将对OCR文字识别技术进行详细介绍。