当前位置:   article > 正文

曲形文字识别 - Transformer-based Convolutional-Attention Network for Irregular Text Recognition_transformer识别文字

transformer识别文字

和上一篇基于attention机制的不规则文字识别论文是同一批作者,博客链接: Show, Attend and Read

由于show attend and read是基于LSTM-encoder-decoder结构的翻译翻译模型(以前翻译的主流框架),隔壁翻译组的同事当时看到就说说不定可以用transformer(现在的主流翻译模型)做ocr,结果。。过了两三个月就真出了基于transformer的ocr paper。由于该论文作者没有给模型去特定的名字,姑且叫做 transformer-ocr 模型(标题的英文是自己起的。。)。

本文论文地址:A Simple and Robust Convolutional-Attention Network for Irregular Text Recognition

Transformer论文地址:Attention is all you need


总的来说这篇论文复刻的难度小很多,结构清晰直观,效果也有很不错的表现,在transformer的基础上把encoder部分改为ResNet34,将encoder输出从文本模型的三维(batch, seq, dim)转换为图像卷积后feature map的四维输出(batch, h, w, dim),解码器部分的Multi-Head Attention也同样改为 2D-Attention,git clone整个transformer的github源码稍加修改即可。

先给一下attention机制在图像上的可视化效果(对原图进行加权)就不难理解其为何对曲形文字识别有效了:

对比一下Transformer和本论文的网络结构图:

左图:Transformer                                                            右图:Transformer-OCR

网络结构高度一致,除了Encoder部分,几乎没什么变化。下面开始从左往右,自下而上一点一点分析网络结构。

首先是左侧 ResNet34的encoder部分,文中直接使用ResNet34的输出(除了最后一层average-pool层)作为encoder输出,由于网络的输入部分是将一个batch的图片全部resize成 128 x 400 x 3后的输入,所以此输出的尺寸也是固定的(4 x 13 x 512)。作者提到几个细节:

  • 一个是采用ResNet34的效果和尝试更深的网络(ResNet50, ResNet152)的效果相差无几,因此使用ResNet34就已经足够;
  • 另一个就是对比实验发现图像尺寸越大最后识别效果越好,所以输入时将图像resize成128x400;
  • 再就是图像resize成固定尺寸带来的问题,一些长条文本框的效果会变差,这也是此论文较大的一个问题,作者的意思是leave for future work,确实要想落地为实际应用这个问题是必须要解决的。

而右侧的decoder部分基本是基于Transformer(可以发现Transformer的encoder部分和decoder部分的设计也是高度相似),除了开始说到的Multi-Head Attention和2D Attention的区别,还有就是可以看到左侧transformer结构中灰色椭圆框边上有个Nx,表示这个部分可以叠加N次(论文中 N=6),而对于右侧的transformer-ocr模型,论文中称实验证明叠加一次的效果和叠加多次的效果并没有明显的差别,因此只需叠加一次即可。

对于decoder部分,从下往上看,训练时首先是将原始图像对应的字符label中的每一个字符从左往右经过embedding编码(即一个线性变换)后和其对应的位置索引(1,2,3,4...)经过位置编码(Positional Encoding)的输出相加作为decoder的一部分输入。其中 Positional Encoding (PE) 的公式如下:

其中的p是当前字符的位置(即是当前字符串的第几个字符),i 是从1到d的维度值,PE变换的维度和embedding输出的维度一致。

此部分输入至decoder后会依次经过以下三部分(sub-layer):

  • Masked Self-attention layer:用于寻找字符串不同字符间的关联;
  • 2D Attetention layer:用于连接encoder和decoder(也是唯一连接);
  • Point-wise Feed-Forward Layer:对每个字符单独的前馈输出;

上面说的三个sub-layer,每个都有一个残差连接(图中黑色的连接线),对于每个sub-layer的输出可以表示为:

LayerNorm(x+SubLayer(x))


一般的attention机制有两种,一种是 additive attention,另一种是 dot-product attention (点乘),二者最终的效果相似,但dot-product attention的速度更快,且更节省空间。对于本文的 Masked Self-attention layer 和 2D Attention,其都是继承自 Multi-Head Scaled Dot-Product Attention,其中Multi-Head表示将一组向量拆分为多个部分并行计算,而 Scaled Dot-Product Attention 直接体现了transformer中的attention机制的原理,attention的方程式可以表示为 query(Q) 和一组key-value(K-V之间的映射,这里的q,k,v都是向量。下图是 Scaled Dot-Product Attention 以及Multi-Head的解释示意图:

关于这三个向量 Q, K, V,一种理解就是对于一个输入X(前面说到的 embedding+PE 向量), 通过3个线性转换把X转换为Q,K,V。上图左侧的输入Q, K 是 dk 维度的,V 是 dv 维度的。Scaled Dot-Product Attention 总体的公式如下:

其中的QKT会得到一个 dk×dk 的矩阵,在语言模型中就是一个word2word的attention map,如下图(图片和部分描述参考:Transformer模型笔记):

左图: Self-Attention                                                    右图:Masked Self-Attention

  • QKT得到attention map 后再乘以一个V 就是想当于对原始输入的一个加权输出了,
  • Self-Attention 就是(transformer-ocr模型中)得到每一个字符对应另一个字符的权重;
  • Masked Self-Attention 就是不给当前字符对应位置看到后面的信息;
  • Multi-Head 就是把原始输入经过线性变化后(Q, K, V 分别对应 dk,dk,dv 维度)拆分成H (论文中H=8) 块,对每一块做上述操作,最后在叠加(concat)起来经过线性变换得到 dv 维度的输出;
  • 而Scaled一词在公示中的表示就是QKT表达式要除以dk,这么做的原因是当 dk 增大时,QKT的值增长幅度会大幅加大,导致softmax后的梯度很小,模型效果变差。

总的 Multi-Head Scaled Dot-Production Attention 公式如下:

其中的 Wiq,Wik,Wiv 表示线性变换矩阵,论文中的参数设定为:H=8,dmodel=512,dk=dv=dmodel/H=64


终于,回到开始的模型图中,Masked Self-Attention 主要的作用是使得每一个位置的字符可以注意(attend)到在它之前的字符的信息;2D Attention 的 Q 来自 Masked Self-Attention layer 的输出,K-V 来自encoder部分的输出,这使得decoder的每一个位置可以注意到所有输入特征的信息,这是对传统的encoder-decoder attention机制的一种模拟;

最后一个sub-layer是Position-wise Feed-Forward layer,顾名思义,是单独且同样的应用在每一个位置的前馈全连接网络,这层网络包含了两个线性变换,公式如下:

最后通过一个线性变化和softmax得到预测概率,损失函数是交叉熵损失(cross-entropy loss)。

还有一点要补充的就是用于训练的字典中要有几个额外的成员(除了字符外):

start token:‘BOS’,inference时用作预测第一个字符,不然没有前面字符的输入无法开始预测;

end token :‘EOS’,inference是作为预测结束的标志,否则模型会一直往后预测,无法停止;

pad:'PAD',用于填充不同长度的字符串,使其长度统一(等于最长的字符串长度);

unknown:‘UNK’,用于预测没在字典中出现过的字符(可选);

至此,结束。

附一下效果图和榜上结果:

GT: ground truth    Pred: prediction      Res: original image resolution

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/64679
推荐阅读
相关标签
  

闽ICP备14008679号