OCR端到端检测识别模型:PGNet论文阅读笔记

文章目录

  • 前言
  • 摘要(Abstract)
  • 1. 介绍(Introduction)
  • 2. 相关工作(Related Work)
  • 3. 方法(Methodology)
    • 3.1 点聚集CTC(Point Gathering CTC)
    • 3.2 网络架构(Network Architecture)
    • 3.3 标签生成(Label Generation)
    • 3.4 训练对象(Training Objectives)
    • 3.5 图强化模块(Graph Refinement Module)
  • 4 实验(Experiments)
  • 总结


前言

因项目需要,最近开始阅读PGNet论文,期望了解这一OCR端到端文本检测与识别模型原理与细节,期望能够应用到项目中带来OCR的提升。

论文题目:PGNet:Real-time Arbitrarily-Shaped Text Spotting with Point Gathering Network

论文link: https://arxiv.org/pdf/2104.05458.pdf


摘要(Abstract)

论文中提到,任意形状的文本的识别(包括检测)受到越来越多的关注。但是现有的文本识别器都是基于两阶段(two -stage)框架或者基于字符的方法(character-based)。这些方法都要用到NMS(Non-Maximum Suppression),ROI(Region-of-Interest)或者字符集标注操作(这些操作都是非常耗时的)。该论文提出的一种新颖的网络结构-全卷积点聚集网络(fully convolutional Point Gathering Network-PGNet),实现了实时检测与识别任意形状的文本,同时避免了上述提到的耗时操作。

PGNet是一阶段的文本识别器(包含检测),应用 PG-CTC损失 来学习像素级字符分类特征图,避免了应用字符级标注。论文通过使用PG-CTC解码器,可以从二维空间收集到高级别的字符分类向量,然后对这些向量进行解码转换为文本符号,因为这个过程中没有使用NMS或者ROI技术,所以保证了PGNet的高效执行。

PGNet也考虑了每个字符与它的临近字符的关系,应用 图强化模块(Graph Refinement Module, GRM) 来优化识别结果并提升端到端的(end-to-end) 性能。

实验证实了论文方法在保证识别准确率的同时提高了执行速度。尤其在 数据集 Total-Text, 实现了46.7 FPS, 超过了已有的识别器一大截。


1. 介绍(Introduction)

OCR端到端检测识别模型:PGNet论文阅读笔记_第1张图片

任意形状的文本检测与识别是很有挑战性的,目前大部分解决方案(如图Fig.2)都有如下劣势:
(1)两阶段网络通常都博爱阔NMS和RoI这两种非常耗时的操作,比如RoISlide 和 BezierAlign;
(2)训练时需要字符级标注,这是非常费时费力,比如 Mask TextSpotter;
(3)使用预定义规则对非常规文本方向进行识别,导致识别失败,比如 TextDragonMask TextSpotter 假设文本方向为从左到右或者从上到下,这些都阻碍了正确识别有挑战性的文本。

论文提出实时解析(检测与识别)文本的新框架,即PGNet, 它应用了一种成为点聚集的操作(point gathering)。PGNet是一种基于多任务学习的单阶段文本解读器, 架构如图Fig.3所示。
OCR端到端检测识别模型:PGNet论文阅读笔记_第2张图片
在模型推理阶段:论文中使用FCN(Fully convolutional network)模型来学习文本区域包含的各种信息,包括文本中心线(text center line, TCL, 1 通道特征图), 文本边界偏移(text border offset, TBO, 4通道特征图-TCL每一像素距离文本区域上、下边界点的偏移量),文本方向偏移(text direction offset, TDO, 2通道特征图-TCL每一像素到下一个文本阅读位置的偏移量)以及文本字符分类特征图(text character classification, TCC, n通道特征图-n为字符类别数)。基于像素的字符分类特征图由PG-CTC(Point Gathering CTC)损失函数训练得到,避免了字符标注操作。

在后处理阶段:在每一个文本实例中可以根据TCL和TBO特征图提取出带有文本方向的中心点序列;可以从TBO特征图获取文本检测的结果;应用PG-CTC解码器,论文将高级别的二维TCC特征图转换为字符分类概率向量序列,用这个概率向量序列可以解码出最终的文本识别结果。

受到 SRNGTC 的启发,论文提出使用 图强化模块(GRM) 来进一步提升端到端识别性能。文本序列中的点可视为图(graph)中的一个节点(node),每一个节点的表现能力可通过相邻的语义上下文(semantic context)和视觉上下文信息(visual context)来提升,字符分类结果理应更加准确。

论文贡献主要包括如下三点:
(1)提出PGNet,避免了字符集标注,NMS,RoI这些耗时的操作,实现了更好的端到端性能并且速度更快。
(2)提出一种重建文本解读方向的机制,在更有挑战性的场景和非传统文本方向上能够准确识别文本。
(3)提出GRM模块来提升CTC识别结果。


2. 相关工作(Related Work)

论文中主要对现有的端到端文本识别器(CharNet, TextNet, Mask TextSpotter, TextDragon, ABCNet)和 图神经网络(Graph Neural Networks) 进行简要介绍,这里就不赘述了。

这里特别提一下,论文使用空间图卷积网络(Spatial Graph Convolutional Networks)来对当前点和它的邻居的语义信息进行推理进而提升CTC识别结果。


3. 方法(Methodology)

论文首先介绍了PGNet的执行流程(如图Fig.3所示):
首先将图像输入带有FPN(Feature Pyramid Networks)的backbone中,输出特征图 F v i s u a l F_{visual} Fvisual。然后 F v i s u a l F_{visual} Fvisual被用来预测TCL, TBO, TDO, TCC这四个特征图(以并行多任务学习的方式),这四个特征图的宽和高为输入图像的 1 / 4 1/4 1/4。在训练阶段,TCL,TBO,TDO被相同尺度的标签特征图监督学习,PG-CTC损失被用于训练像素级的TCC特征图(PG-CTC解决了需要字符级标注的问题)。在推理阶段,从TCL特征图中提取每一文本实例的中心点序列,然后根据TDO特征图来对中心点序列进行排序进而恢复文本正确的识别顺序,让PGNet能够识别非常规文本方向的文本。根据TBO特征图提供的相应边界偏移信息,PGNet实现了对每一文本实例的多边形检测。同时,PG-CTC解码器能够将高级别的二维TCC特征图序列化成字符分类概率序列,对该概率序列解码即为最终的文本识别结果。

3.1 点聚集CTC(Point Gathering CTC)

PG(point gathering)操作在PGNet的训练和推理阶段扮演了重要的角色,它帮助摆脱了字符级标注,NMS, RoI操作。PGNet中的TCC是由37个字符(37通道)组成的特征图,包括26个字母,10个阿拉伯数字以及1个背景类。PG操作主要依据每一文本实例的中心点从TCC特征图中聚集字符分类概率序列,公式如下所示:
在这里插入图片描述
其中, π = { p 1 , p 2 , . . . , p N } \pi =\{p_{1}, p_{2},...,p_{N}\} π={p1,p2,...,pN}是长度为 N N N的中心点序列。 P π P_{\pi} Pπ是大小为 N × 37 N\times37 N×37的字符分类概率序列。

在训练阶段,使用PG-CTC损失能够让像素级的TCC特征图的训练免于字符集标注的需要。经典的CTC损失函数解决了源序列与目标序列长度不一致的问题。CRNN框架将特征图的高度转换为1,但是在识别弯曲文本时容易受到背景噪声的影响。2D-CTC将CTC的搜索路径扩展到二维空间,但是仍然不能处理一张图片含有多个文本实例的情况。论文提出的PG-CTC解决了这个问题,损失函数公式为 C T C _ l o s s ( P , L ) CTC\_loss(P,L) CTC_loss(P,L),这里 P P P表示字符分类概率序列, L L L表示对应的转录标签。对于一张图片含有 M M M个文本实例,中心点坐标序列表示为 { π 1 , π 2 , . . . , π M } \{\pi_{1}, \pi_{2}, ...,\pi_{M}\} {π1,π2,...,πM},对应的转录标签为 { L 1 , L 2 , . . . , L M } \{L_{1}, L_{2}, ..., L_{M}\} {L1,L2,...,LM}, 定义的PG-CTC损失公式为:
在这里插入图片描述
这里没有细说这个 C T C _ l o s s CTC\_loss CTC_loss计算公式是否和经典的 C T C CTC CTC一样,要看源码才能进一步确认
这里计算多边形文本实例级别的标注的中心线,对其进行密集采样得到训练过程需要的中心点序列 π i \pi_{i} πi。应用大量的训练数据,TCC中每一像素的字符分类信息都可以被学习。

在推理过程中,PG-CTC解码器简化了端到端任意形状文本识别器的步骤,PG-Net中去除了NMS和RoI操作。在TCL特征图中的文本区域中提取中心点序列 π \pi π,按照正确的阅读顺序进行排序。论文中使用形态学方法获得文本区域的骨架并把它作为中心点序列。中心点序列中的每个点的方向可以从TDO特征图中获得,根据所有点的方向计算一个平均方向,根据中心点序列在这一平均方向上投影长度来排序,最终获得中心点序列 π \pi π。字符分类概率序列 P π P_{\pi} Pπ可从公式(1)获得,PG-CTC解码器可以表示为:
在这里插入图片描述
这里 R π R_{\pi} Rπ表示中心点序列 π \pi π的转录。关于多边形重建,论文从TBO特征图中获得 π \pi π对相应边界点坐标,顺时针连接这些边界点就可以获得一个完整的多边形。论文中提到,关于多边形重建的细节可以在 S A S T SAST SAST这篇论文中获得。和基于CTC的CRNN识别框架相比,PG-CTC可以处理图像中任意形状的多文本实例,其实就是对CTC的应用进行了扩展。
论文中没有详细介绍 C T C _ d e c o d e r CTC\_decoder CTC_decoder的具体实现,所以只能后面阅读源码来扩充了)。

3.2 网络架构(Network Architecture)

出于计算资源的考虑,论文提出了2个版本的PGNet,即PGNet-A(PGNet-Accuracy), PGNet-E(PGNet-Efficient)。这两个版本的区别就在于backbone网络不同, PGNet-A使用ResNet-50特征提取网络, PGNet-E使用EfficientNet-B0特征提取网络。输出的特征图 F v i s u a l F_{visual} Fvisual宽度和高度为输入图像的 1 / 4 1/4 1/4,采用FPN方式融合不同层的特征。TCL和其它三个特征图通过并行方式预测,对TCL, TDO, TBO, TCC特征图分别采用采用 1 × 1 1\times1 1×1卷积层,输出通道为 { 1 , 2 , 4 , 37 } \{1,2,4,37\} {1,2,4,37},如图Fig.3所示。

3.3 标签生成(Label Generation)

OCR端到端检测识别模型:PGNet论文阅读笔记_第3张图片

任意形状的文本标签生成如图Fig.4所示。TCL特征图对文本区域分割结果进行向内收缩得到。TBO特征图表示为TCL每一个像素和相应的文本区域上、下边界点的偏移量,因此在推理阶段,TBO可以用来确定文本区域的边界。生成TCL和TBO特征图沿用SAST论文中的方法,详细过程参考这一论文。受人类阅读文本方式(沿着文本中心线从一个字符到下一个字符)的启发,TDO特征图可以用来恢复场景文本的阅读顺序,对文本检测和识别都有益,特别是场景文本具有非常规的文本方向。TDO特征图表示了TCL特征图中每一像素点到下一个阅读位置的偏移向量。对于四边形的标注,TDO偏移向量的方向为从左边缘的中心点到右边缘中心点,数量值(magnitude)为文本区域应用字符数来归一化后的长度。如果多边形标注的定点数超过4个,那么可将其视为多个四边形连接的结果,TBO特征图和TDO特征图可以按照上面的方法一个一个产生。
(Fig.4中就是多个四边形连接组成的一个文本区域,对每个四边形区域分别进行TBO和TDO计算,就可以得到文本区域的TBO和TDO结果)

3.4 训练对象(Training Objectives)

PGNet训练阶段就是对TCL, TBO, TDO, TCC这四类特征图进行学习的过程,所以这是一个多任务学习,损失函数计算也是对这四类特征图进行,公式如下:
在这里插入图片描述
这里 L L L表示损失计算结果。TCL损失应用 D i c e   l o s s Dice\ loss Dice loss, TBO和TDO损失应用 S m o o t h   L 1 Smooth\ L_{1} Smooth L1, TCC损失计算则采用论文提出的 P G − C T C PG-CTC PGCTC。这里损失权重根据经验取值: λ 1 = 1.0 , λ 2 = 1.0 , λ 3 = 1.0 , λ 4 = 5.0 \lambda_{1}=1.0 ,\lambda_{2}=1.0,\lambda_{3}=1.0,\lambda_{4}=5.0 λ1=1.0,λ2=1.0,λ3=1.0,λ4=5.0

3.5 图强化模块(Graph Refinement Module)

OCR端到端检测识别模型:PGNet论文阅读笔记_第4张图片
论文提出GRM通过引入单词级语义上下文和视觉上下文信息来提升端到端识别的性能。
论文为点序列 π \pi π构建了视觉推理图和语义推理图(序列中的点可视为图(graph)中的节点),论文中采用的图结构和已有的图卷积层(graph convolution layer)相同。该GRM将 F v i s u a l F_{visual} Fvisual和TCC 特征图作为输入。 F v i s u a l F_{visual} Fvisual为FPN网络的输出,如图Fig.3所示。对一个点序列 π = { p 1 , p 2 , . . . , p N } \pi=\{p_{1}, p_{2}, ...,p_{N}\} π={p1,p2,...,pN},邻接矩阵定义如下:
在这里插入图片描述
这里, D D D表示 p i , p j p_{i},p_{j} pi,pj间的 L 2 L2 L2距离,每一个节点(node)都是自连接的。GRM的结构如图Fig.5所示,GCN层括号中的两个数字表示当前层的输入与输出。

由Fig.5可知,GRM主要包括两个图结构,语义推理图和视觉推理图。
在语义推理图中,应用PG即对TCC和点序列应用点聚集操作得到 F s F_{s} Fs,然后以embed方法将其转变为 X s X_{s} Xs,形状是 N × 256 N\times256 N×256。紧接着就是三个图层(graph layer),输入 X s X_{s} Xs,输出 Y s Y_{s} Ys,形状为 N × 64 N\times64 N×64
在视觉推理图中,同样应用PG操作对 F v i s u a l F_{visual} Fvisual和点序列应用点聚集操作得到 F v F_{v} Fv,以卷积方法转换为 X v X_{v} Xv,其形状为 N × 256 N\times256 N×256。使用和语义推理图相似的图结构得到视觉推理输出 Y v Y_{v} Yv,其形状为 N × 64 N\times64 N×64
最后,拼接 Y v , Y s Y_{v},Y_{s} Yv,Ys,将其视为分类问题应用几个全连接层来产生强化的概率序列,这里的GRM也是通过CTC损失函数来优化的。这里有些值得关注的点,一个就是论文将相对粗糙的识别序列填充为相同长度,分批进行有效训练,最大长度为 64 64 64

这一小节主要对图Fig.5所示的图强化模块进行结构说明,但是没有详细阐述为什么能够提高识别结果,可能要学习下GCN-Graph Convolutional Network才能有所领悟

4 实验(Experiments)

这一章节主要介绍了实验的过程与实验的结果,这里就不细说了,大家如果感兴趣可以自行阅读,这里就简单粘贴下实验结果。
OCR端到端检测识别模型:PGNet论文阅读笔记_第5张图片
OCR端到端检测识别模型:PGNet论文阅读笔记_第6张图片
OCR端到端检测识别模型:PGNet论文阅读笔记_第7张图片

OCR端到端检测识别模型:PGNet论文阅读笔记_第8张图片
OCR端到端检测识别模型:PGNet论文阅读笔记_第9张图片


总结

到这里,论文就算阅读完成了,但是说实话,对于新手如果想要搞懂论文内容,有很多东西要学习,比如SAST论文, GCN相关论文,很多依赖的技术都是一笔概括,还有就是论文中只对英文进行训练,不知道对中文的支持情况如何。很多论文结果也只是针对论文应用的数据集,这是现在深度学习中存在的问题,当然这只是个人理解了。总的来说,读过论文也只是了解到PGNet用到了哪些技术,至于为什么会有这种提升,感觉不是很理解,具体的实现细节只能到源码中学习了,这也是接下来的工作了。

本文只是个人对论文的一些阅读记录,能力有限,如有错误,敬请原谅。

你可能感兴趣的:(论文阅读笔记,OCR,ocr,深度学习)