1、PGNet网络结构
图1 PGNet算法流程图
该网络结构主要包括主干网络、TBO、TCL、TDO以及TCC。其中,TBO(Text Border Offset):文本边框偏移,TCL(Text Center Line): 文本中心线检测,TDO(Text Direction Offset):文本方向偏移,TCC(Text Character Classification):文本字符分类。
该算法的主要流程为:
(1) 首先利用FPN提取特征
(2) 利用FCN模型同时学习文本区域的各种信息,包括TBO,TCL,TDO和 pixel-level TCC。在TCL, TDO, TBO, TCC模块分别使用1×1得到输出维度为{1,2,4,37}
(3) 在后处理阶段,首先利用来自于TBO的边界偏移信息实现对每个文本实例的检测;然后从TCL中提取每个文本实例的中心点序列;利用来自于TDO的文本方向偏移信息进行排序,恢复正确的阅读顺序;最后利用PG-CTC Encoder将二维的文本字符序列化为字符概率序列,并解码为最终的文本识别结果。
2、PG-CTC
点采集(PG)操作在 PGNet 的训练和推理过程中都起着重要作用,有助于避免字符级标注。 PGNet 的 TCC map为 37 个字符,包括 26 个字母、10 个数字和 1 个背景。 采用点采集操作,根据每个文本区域中心的中心点,从TCC图中采集字符分类概率序列,可表示为:
其中,={1,2,⋯,}是长度为N的中心点序列,且=(,)。输出为大小为N*37的字符分类概率序列。
在训练过程中,提出的 PG-CTC loss 使得像素级 TCC 的训练不需要字符级别的标注。 典型的 CTC 损失函数解决了源序列和目标序列长度不一致的的训练问题。 CRNN是一种基于1D-CTC的算法,其原理决定无法识别2行或多行的文字,只能单行识别。2D-CTC 将 CTC 的搜索路径扩展到二维空间,但仍然无法处理具有多个文本实例的图像。 通过 PG-CTC 解决了这个问题。 对于有 M 个文本实例的图像,假设中心点坐标序列为 {π1, π1, ..., πM },对应的转录标签为 {L1, L1, ..., LM },定义 PG- CTC 损失为:
PGNet计算多边形词级标注的中心线,并在训练过程中对其进行密集采样以获得中心点序列πi,而不是使用字符级标注。 通过大数据的训练可以学习到TCC中每个像素的字符分类信息。
3、GRM(Graph Refinement Module)
为了提高识别性能,提出GRM。该模块将重构的语义图和视觉图进行拼接以用来字符分类。其中,语义图通过对TCC map和输入进行点集操作得到,视觉图通过对和输入进行点集操作得到。