PGNet是百度于2021年提出的1种网络结构-全卷积点聚集网络(fully convolutional Point Gathering Network-PGNet),实现了实时检测与识别任意形状的文本,同时避免了NMS(Non-Maximum Suppression),ROI(Region-of-Interest)和字符集标注操作。
论文:https://arxiv.org/pdf/2104.05458.pdf
代码:https://github.com/PaddlePaddle/PaddleOCR/blob/main/tools/infer/predict_e2e.py
目录
一.方法
PGNet的网络结构如下图所示。
输入图像经过特征提取后得到,并送入4个分支,分别是:文本边缘偏移量预测(text border offset,TBO),文本中心线预测(text center line,TCL),文本方向偏移量预测(text direction offset,TDO),以及文本字符分类图预测(text character classification ,TCC*)。 其中,TBO以及TCL的输出经过后处理后可以得到文本的检测结果,TCL、TDO、TCC*负责文本识别。
1.PG-CTC
point gathering 操作在PGNet的训练和推理过程中都起着重要作用,有助于去除字符级注释、NMS和RoI操作。PGNet的TCC特征图由37个字符组成,包括26个字母、10个阿拉伯数字和1个背景类。采用点聚集操作,根据每1文本实例的中心点的TCC特征图收集字符分类概率序列,可以表示为:
其中是1个长度为N的中心点序列,
。输出的
是大小为N×37的字符分类概率序列。
在训练过程中,所提出的PG-CTC loss使得像素级TCC的训练不受字符级注释的影响。对于1个有M个文本实例的图像,假设中心点坐标序列为, 相应的转录标签为
,PG-CTC loss定义为:
通过训练,可以学到TCC中每个像素的字符分类信息。
对于TCL图中的1个文本区域,提取1个中心点序列,并按照正确的阅读顺序进行排序,它可以被表示为π。具体来说,采用形态学方法来获得文本区域的骨干,并将其视为中心点序列。每个点的文本方向可以从TDO图中提取。计算出所有点的平均方向,并根据沿该方向的投影长度对其进行排序,得到中心点序列π。PG-CTC Decoder可以表示为:
其中表示π的转录。对于多边形的修复,可以利用TBO图得到π的对应边界点对,将所有的边界点顺时针连接起来,得到1个完整的多边形表示。与基于CTC的CRNN框架相比,PG-CTC可以处理具有任意形状的多文本实例的图像。
2.网络架构
考虑到不同场景下计算资源的限制,提出2个版本的PGNet:PGNet-Accuracy和PGNet-Efficient,分别用PGNet-A和PGNet-E表示。2个版本唯一的区别是主干网络,PGNet-A采用ResNet-50作为主干网络,而PGNet-E采用EfficientNet-B0作为主干网络。来自主干网络的不同层次的特征图以FPN的方式逐渐合并3次,产生尺寸为输入图像的1/4大小的特征图。对于TCL、TDO、TBO、TCC图,采用1×1卷积层,输出通道数分别设置为{1, 2, 4, 37 }。
3.标签生成
任意形状文本的标签生成如下图所示。(a)是黄色边框区域内弯曲文本的真值注释;(b)-(d)分别是TCL、TBO和TDO图的生成。
TCL图是文本区域的缩减版分割。TBO图表示TCL中的每个像素与其文本区域的上下边缘的相应点对之间的偏移量。遵循SAST来生成TCL和TBO图。受人类阅读机制的启发,即眼睛在阅读时沿着文本区域的中心线从一个字符移动到下一个字符,TDO图可以恢复场景文本组件的阅读顺序,这有利于检测和识别任务,特别是对于那些非传统阅读方向的场景文本。TDO图表示TCL图中每个像素到下一个读取位置的偏移向量。对于四边形区域的注释,偏移向量的方向是从左边缘的中心点到右边缘的中心点,其大小是以字符数为标准的文本区域的长度。4个以上顶点的多角形注释被视为一系列连接在一起的4边形,TBO图和TDO图可以从四边形中逐渐生成。
4.训练目标
多任务学习的loss可以表示为:
其中、
、
和
分别为TCL、TBO、TDO和TCC图的loss。通过最小化Dice损失来训练TCL分支;TBO和TDO图采用Smooth L1损失,TCC采用PG-CTC损失。损失权重
、
、
和
根据经验设置为{1.0,1.0,1.0,5.0}。
5.GRM
提出图优化模块来感知词级语义背景和视觉背景,以进一步提高GCNs的端到端阅读性能。为点序列π构建了1个视觉推理图和1个语义推理图,π中的点被认为是图中的节点。具体来讲,和TCC map作为图卷积层的输入。
是FPN的输出特征。对于1个点序列
,邻接矩阵被定义为:
其中,是
和
之间的L2距离,每个节点都是自连接的。下图为GRM的结构。
GCN layer 括号内的2个数字表示神经层的din和dout。
在语义推理图中,特征图通过TCC图的点收集操作得到的,并被embedding为尺寸N×256的
。通过3个GCN layer,输入的
被转换为尺寸为N×64的
。
在视觉推理图中,特征从
中收集,经过conv 层得到尺寸为N×256的
。然后,通过3个GCN layer,获取形状为N×64的视觉推理输出
。
最后,把和
串联起来,利用FC层产生概率序列。