TextSpotter with Explicit Alignment and Attention

论文:

An end-to-end TextSpotter with Explicit Alignment and Attention 

Github:

https://github.com/tonghe90/textspotter

 

cvpr 2018 paper。阿德莱德大学沈春华老师和先进院乔宇老师分别为4,5作者。

Pipeline:

TextSpotter with Explicit Alignment and Attention_第1张图片

整个流程包括基于Pvanet的基础网络结构,类似于ROI pooling的Text alignment操作,然后基于attention方式的encode-decode方式的字符识别。

 

Network architecture :

网络基础结构采用的Pvanet,该网络结构最后一个卷积层的输出featuremap大小为原图的1/4。

 

Text detection :

该模块和EAST模块很类似,感觉区别就是EAST的基础架构师resnet50,这里换成了Pvanet。该模块主要进行文本/非文本的二分类任务和多角度边框的回归任务。分类任务使用softmax损失。回归任务输出点到边框上下左右的距离和角度,一共5个featuremap。回归任务的loss使用的是基于IOU的loss,其实也就是EAST中的dice loss。

 

Text-Alignment Layer :

TextSpotter with Explicit Alignment and Attention_第2张图片

该层类似于roi pooling,但是有着自己的优点。如上图所示,第一行表示的是roi pooling的结果,第二行表示的是Text-Alignment的结果。可以看出roi pooling只能应对水平方向的区域,对于多方向的文本,会引入好多无关背景区域。而Text-Alignment有角度的信息在里面,可以很好的pooling出带角度的文本区域。

Text-Alignment使用等间隔的bilinear 插值实现,最终输出固定大小的文本区域(w=64,h=8)。

 

Attention encoder-decoder:

TextSpotter with Explicit Alignment and Attention_第3张图片

在Text-Alignment出来的featuremap,首先经过conv,pool操作,最终变化为1*64的大小,然后经过一个双向lstm操作。再经过encode-decode操作,输出最终识别结果。

 

Loss:

最终的loss包括,

Lword:单词识别的loss

Lloc:文本检测的loss

Lalign:attention对齐的loss

TextSpotter with Explicit Alignment and Attention_第4张图片

w表示width,t表示时间步,pt,j表示第j列在时间t的值,at,j表示第j列在时间t的attention。

Kt为第t个字母的ground truth中心坐标,wt为第t个字母的width,T表示字符的个数,整个Lalign就表示归一化后的attention。

Lmask:表示字符的mask的loss。掩码的个数和字符类别的数目一样。

其中,Lalign和Lmask表示可选的loss,可以不使用。

λ1,λ2:平衡因子,取值都为0.1

 

总结:

(1)检测部分为使用pvanet代替resnet50的 EAST版本。

(2)text-alignment layer 是论文的创新,也是使得整个流程可以一起训练的关键一环。相比roi pooling更加适用于文本检测。

(3)识别部分,在原有的encoder-decoder基础上,加入了每个字符的attention和mask机制。

(4)一个新颖的训练策略。先使用synthetic images 数据集,固定检测,直接提供ground truth文本框训练识别,这样迭代120K次。然后放开检测部分,让其权重跟新,但是同样还是提供ground truth文本框,这样迭代80K次。最后整体一起训练,使用ICDAR2013,ICDAR2015的数据训练迭代60k次。

你可能感兴趣的:(OCR,OCR大趴踢)