文字识别领域经典论文:ASTER

方法概述

本文方法主要解决不规则排列文字的文字识别问题,论文为之前CVPR206的paper(Robust Scene Text Recognition with Automatic Rectification,方法简称为RARE)的改进版。

1. 主要思路

  • 针对不规则文字,先矫正成正常线性排列的文字,再识别;
  • 整合矫正网络和识别网络成为一个端到端网络来训练;
  • 矫正网络使用STN,识别网络用经典的sequence to sequence + attention

2. 方法框架和流程

方法ASTER全称为Attentional Scene TExt Recognizer with Flexible Rectification,包括两个模块,一个用来矫正(rectification network),另一个用来识别(recognition work),如下图所示。

文字识别领域经典论文:ASTER_第1张图片

模型结构总览

ASTER是2018年提出的论文,论文的全称是《ASTER: An Attentional Scene Text Recognizer with Flexible Rectification》。ASTER基于encoder-decoder的方式,整体的模型架构以下三块:

  1. TPS(Thin-Plate-Spline):分为localization network和grid sampler,前者用于回归出控制点,后者用于在原图上进行网格采样;

  2. encoder:卷积神经网络用的是resnet,语言模型使用的是BiLSTM,需要说明的是在后续的DTRB论文中语言模型会单独拆分出来,在这里还是和原论文保持一致;

  3. decoder:使用的是基于bahdanau attention的decoder,这里用了两个LSTM decoder。一个从左到右,一个从右到左,进行双向的解码。

文字识别领域经典论文:ASTER_第2张图片

2.2 矫正器

从模型结构的总览可以看出,ASTER其实和FAN有诸多的相似之处,最大的不同就在于TPS模块。所以,我们就重点介绍一下这个模块究竟是怎么实现文字的矫正的。首先我们看一下TPS的整体结构,对于形状为(N,C,H_in,W_in)的输入图像I,经过下采样得到I_d,然后通过localization network得到控制点C’。有了C‘我们可以通过TPS得到一个矩阵变换T,接下来我们通过grid generator得到网格P,形状为 (N, H_out, W_out, 2),最后一维的2代表xy。接下来我们通过矩阵变换T将网格P映射至原图上得到P’,形状仍然为 (N, H_out, W_out, 2)。最后根据原图的网格P'采样得到I_r.下面我们进行一一讲解。

文字识别领域经典论文:ASTER_第3张图片

2.2.1 Localization Network

localization network就是一个卷积神经网络,里面都是3x3的conv block,最终通过全连接层得到控制点C‘,形状为(20, 2). 20代表上下各10个点,第二维是xy坐标。在这里需要注意全连接层的数值初始化的问题。作者通过对比试验证明,当全连接层的偏置项初始化为[(0.01, 0.01), (0.02, 0.01), ..., (0.01, 0.99), ..., (0.99, 0.99)]时,即在图片的上下边缘等距采样时,模型收敛的速度更快。

  • 定位网络(已经训练完进行测试时)的输入是待识别的未矫正前图像,输出是K个控制点的位置。
  • 该定位网络训练时没有用K个控制点(Control Point)作为annotation进行训练,而是直接接入后面的Grid Generator + Sample利用最后的识别结果,连成一个end-to-end的框架进行训练。
  • 网络结构采用一个自己设计的普通的卷积网络(6层卷积 + 5个max-pooling + 2个全连接)来预测K个control point的位置(K= 20),点对应关系如下图:

文字识别领域经典论文:ASTER_第4张图片

2.2.2 Thin Plate Transformation

由localization network我们得到了C’,然后我们同样用等距采样得到C,C的形状跟C‘一致,但是每两点的距离不是0.01,而是0.05.接下来我们通过如下的矩阵运算得到变换矩阵T

文字识别领域经典论文:ASTER_第5张图片

文字识别领域经典论文:ASTER_第6张图片

通过列相乘得到x'、y', 由下面公式得到上图C'矩阵公式

文字识别领域经典论文:ASTER_第7张图片

通过上述公式变换可得出论文最终的形式:

文字识别领域经典论文:ASTER_第8张图片

网格生成器的输入是已有的Control point点集 + 矫正后的图(还未生成,但给定图大小可以取点)上的某个点坐标,输出是该点在矫正前(原图)上的点坐标位置

     下面我们将上述公式进一步展开成流程图形式:

     网格生成器可以看成是一个矩阵变换操作(变换的几个参数a0-a2, b0-b2可以通过Control point位置利用优化问题求解方法求出,因为Control Point在矫正前后的图上的位置都是已知的,故可以计算出对应关系),实际做预测时也是计算该待测点与已知的control point的位置关系,通过一系列对应关系算出在原图的位置。贴个图感受一下这个对应关系如下,p为矫正后的点位置,C为矫正后的Control point的点位置,p'为矫正前的点位置,C’为Control point在矫正前的点位置:

文字识别领域经典论文:ASTER_第9张图片

2.2.3 Sampler

Sampler就是给定点映射关系及原图,生成一张新的矫正后的图,用到了简单的插值(二插值),以及当超出图外时直接clip掉。另外,Sampler采用可微的采样方法,方便梯度的bp。

输入是原图 + 矫正后的图上的点在原图上的对应位置关系, 输出是矫正后的图

首先利用grid generator得到网格P,然后通过下式我们将P映射到原图的P’.注意P和P‘数值范围都在0到1之间,但在最终进行插值输出的过程中,我们会将P’映射到-1到1之间,这个会在下面的代码看出。

文字识别领域经典论文:ASTER_第10张图片

文字识别领域经典论文:ASTER_第11张图片

 文字识别领域经典论文:ASTER_第12张图片

 总结:从下图可以看出,其实TPS就是要得到一个变换矩阵,其中C‘是需要进行学习的参数,而C是不变的,即手动调整的参数。根据C和C’可以得到T,然后在原图上采样就得到最终矫正之后的图像。

文字识别领域经典论文:ASTER_第13张图片

2.3 特征提取层

本文的特征提取层跟FAN一致,都是先经过resnet,然后经过双向的LSTM,最终得到形状为(B, W, C)的三维特征向量,其中B代表batch size, W是time steps,C是channels.比如说根据原文,当输入大小为(32, 100)时,输出就是(B, 25, 512)

文字识别领域经典论文:ASTER_第14张图片

2.4 解码

文字识别领域经典论文:ASTER_第15张图片

前文CRNN转录层的LSTM层后直接连接CTC函数,而ASTER则采用Attention机制,根据LSTM每个时刻输入ht进行attention计算,attention值经过softmax处理,最终针对从h0-ht每项进行加权求和,其中w和v为可学习参数,St-1为前一时刻的信息,具体计算公式如上。

本文的解码层和FAN基本类似,但有两处改进。第一点是将原先FAN的单向attention解码改成了双向的attention解码,这点改进的出发点是非常直观的。比如当解码到一个特定的字符时,该字符不仅与左边的语义信息相关,也与右边的相关。双向解码具体的做法如下,分别从左到右以及从右到左进行解码输出,然后去log-softmax得分高的作为最终的输出。这里使用的attention与FAN中的一致,都是bahdanau attention,公式如图示。

文字识别领域经典论文:ASTER_第16张图片

第二处改进是在最终预测输出的时候,原先我们一般取每个时间步概率最大的字符进行输出,本文改成了束搜索,搜索宽度一般设置成5

3. 代码解读

我们重点看看TPS以及attention decoder,这里的attention decoder用的还是单向的。如果想改成双向的话,直接将(B, L, C)中L的顺序改为从右至左就行。

3.1 TPS

首先我们看看如何回归得到C‘,注意是如何对最后一个全连接层进行初始化的。

3.2 attention decoder

这个实现是用GRU进行解码的,而FAN里使用的是LSTM。另外这个实现是将输入(B, L, W)中的L变成1,所以可以直接用GRU,而不是GRUCell进行解码。但其实我觉得用GRUCell解码更为直观一些。

4. 总结

ASTER在一般attention based的encoder-decoder基础上,加上了TPS作为矫正模块,可以部分缓解由于弯曲文字导致的识别不准确问题。后续也有不少论文是沿着这个方向进行改进的,比如说MORAN、ESIR等等。下一篇我会继续沿着识别弯曲文本的方向,介绍利用2d attention进行文字识别的论文SAR.

本文参考及学习资料推荐:

论文阅读(XiangBai——【PAMI2018】ASTER_An Attentional Scene Text Recognizer with Flexible Rectification ) - lilicao - 博客园

文字识别领域经典论文回顾第四期:ASTER_chibohe123的博客-CSDN博客

文字识别方法之ASTER_哔哩哔哩_bilibili

你可能感兴趣的:(深度学习,CV方向,深度学习,计算机视觉,神经网络,attention,注意力机制)