论文:
An end-to-end TextSpotter with Explicit Alignment and Attention
Github:
https://github.com/tonghe90/textspotter
cvpr 2018 paper。阿德莱德大学沈春华老师和先进院乔宇老师分别为4,5作者。
Pipeline:
整个流程包括基于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 :
该层类似于roi pooling,但是有着自己的优点。如上图所示,第一行表示的是roi pooling的结果,第二行表示的是Text-Alignment的结果。可以看出roi pooling只能应对水平方向的区域,对于多方向的文本,会引入好多无关背景区域。而Text-Alignment有角度的信息在里面,可以很好的pooling出带角度的文本区域。
Text-Alignment使用等间隔的bilinear 插值实现,最终输出固定大小的文本区域(w=64,h=8)。
Attention encoder-decoder:
在Text-Alignment出来的featuremap,首先经过conv,pool操作,最终变化为1*64的大小,然后经过一个双向lstm操作。再经过encode-decode操作,输出最终识别结果。
Loss:
最终的loss包括,
Lword:单词识别的loss
Lloc:文本检测的loss
Lalign:attention对齐的loss
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次。