对于单文本行的图片进行识别,另一种常用的网络模型为编码-解码模型(Encoder-Decoder),并加入了注意力模型(Attention model)来帮助特征对齐,故简称EDA。
从这篇文章来引入今天的学习,google提出的Attention-ocr论文。
文章名称:Attention-based Extraction of Structured Information from Street View Imagery
链接:https://arxiv.org/pdf/1704.03549.pdf
开源代码:https://github.com/tensorflow/models/tree/master/research/attention_ocr
我们用得到的经过矫正的单文本行作为文本识别的输入。下面我们一步步地去了解如何实现文本的识别输出。
使用在ImageNet上已训练好的模型,经过Inception-V3网络对图像编码后形成特征图, image x 通过已训练好的模型得到特征
i,j 代表特征图的位置信息,c是channel数。
难点是如何转换这些特征到一串字符的输出,结合sequence2sequence模型,我们已知CNN+RNN可以实现这一目的,但这篇论文的亮点是引入的Attention机制。先根据注意力模型给出的权重对不同位置的特征加权作为解码模型的输入。α是特征的attention分布,将α和cnn特征做内积
Attention feature vector,即u_t的值follow公式:
在时刻t对 RNN的输入有公式表示为:
C_t-1是在是对图片在时间点t对应的真实标签的一种OneHot 独热编码,比如酱紫的编码方式, [0,0,0,0,1,0,0,0,0,,,…,0]
Encoder方面接受的是每一个输入x ̂_t ,和上一个时间点的hidden stateS_t-1。输出的是这个时间点的hidden state S_t , 因此有RNN的输出:
最终的时刻t的输出公式
根据以上输出,找出概率最大的一个作为最终的识别结果,识别出的字符计算公式:
Attention 模型的特点是 Decoder 不再将要求编码器将所有输入信息都编码进一个固定长度的中间语义向量 C,而是根据当前生成的新单词计算新的 C_{i} ,使得每个时刻输入不同的 C,在产生每一个输出的时候,都能够做到充分利用输入序列携带的信息,这样就解决了单词信息丢失的问题。这种方法在翻译任务中取得了非常不错的成果。
引入了 Attention 的 Encoder-Decoder 模型如下图:
对包含文本的图片而言,文本的前后位置信息决定了识别结果输出的顺序,为了突出位置信息,这里采用了位置相关的注意力模型Spatial Attention。类似语音识别的attention机制,只是语音识别的是时间t上的维度,文本识别是宽度方向的w映射成t的概念,因此该方法可以对语言和图像序列建模,可以适应不同尺寸的行文本图片,文字排版位置分布不均匀的情况,并且不需要标注文本框的位置,真正实现了端到端的文本识别。
attention分布α的计算方式如下:
其中公式6内的双曲正切函数里面的内容改成公式(8)
为了保留图片特征的位置信息,这个模型将特征的每个坐标做了onehot编码输入模型,ei,ej为坐标x,y的onehot编码:
这样做的目的是为了解决一幅图片如果有多行文本的情况,如插图里的原图。
其中e_i 是对坐标在i位置的onehot编码。
设计目标函数,
Loss选用的sparse_softmax_cross_entropy_with_logits,这是因为seq2seq 在生成输出序列的时候是一个时刻生成一项,换句话说,在每个时间步他在解决一个分类问题。而交叉熵损失函数是分类问题中最常用的损失函数,
注明的是在训练的时候尽量保证训练集文本行的长度跨度别太大,并且尽量保证训练集高频词低频词差异别太大。
由于中文和英文语言本身存在的差异,导致英语的字典很多,而中文字典往往很长,而Attention-ocr中rnn的输出维度与字典长度有关(每个字对应一个类别)。导致Attention-ocr耗时很高。耗时也主要在RNN部分。调整cnn的base网络为mobilenet耗时变化不明显,反而准确率下降很快。 解决方案有:
优点:
1. 适应不同尺寸的行文本图片;
2. 适应文字排版位置分布不均匀的情况;
3. 不需要标注文本框的位置;
4. 真正实现了端到端的文本识别。
缺陷:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。