On Recognizing Texts of Arbitary Shapes with 2D Self-Attention(SATRN)
基本信息
- 论文链接
- 发表时间:2020
- 应用场景:自然场景场景文字识别
摘要
存在什么问题 | 解决了什么问题 |
---|---|
1. 现有识别模型对于大曲率弯曲或者旋转文本识别效果不佳。 2. crnn - 默认文字是水平排列的。 | 1. 提出SATRN网络结构,利用self-attention机制对场景文字图片下所有字符的2d空间关系进行建模,在面对文字不同的布局方式以及字符间隔较大的情况下有天然的优势。 2. 对于大曲率弯曲、大角度旋转文本以及多行文字也具备足够的识别能力。 3. 在非规则文本(irregular text)数据集上超过先前模型5.7个点,达到SOTA。 |
模型结构
能够明显看出整体结构与标准的transformer几乎一致,整体上遵循CNN -> transformer encoder -> transformer decoder架构。
在encoder上相比于原始的transformer encoder,有已下3点优化:
-
出于计算量的考虑,先用一个CNN(文中叫Shallow CNN)处理输入图像,抽取视觉特征的同时进行降采样操作,降低feature map的大小,为后续transformer encoder建模像素间的关系减轻计算负担。Shallow CNN采用简单的两层conv->bn->relu->pool堆叠即可,实现高和宽的4倍降采样。
-
经过CNN后,就准备将feature map送入transformer encoder中了,但是此时feature map是2D的,并不是一个序列,像素间是存在空间位置关系的,因此一个优秀的position encoding模块是非常有必要的,作者这里提出了adaptive 2D positional encoding(A2DPE)模块。
对于featurep map上的每一个像素点,首先是一个x,y方向的传统正、余弦position encoding(下图只列了一个方向的公式):
最终的position encoding是两者的加权叠加:
而权重 α ( E ) \alpha(E) α(E)和 β ( E ) \beta(E) β(E)是可学习的变量(E是feature map),具体求法也比较简单:
g ( E ) g(E) g(E)代表全局平均池化层, W 1 h 、 W 2 h W_1^h、W_2^h W1h、W2h代表竖直方向的两个不改变通道数目的卷积核,同理, W 1 w 和 W 2 w W_1^w和W_2^w W1w和W2w代表水平方向的两个不改变通道数目的卷积核。max函数只是代表了一个relu层而已。经过两次卷积,最后接一个sigmoid层,得到竖直方向PE和水平方向PE的自适应学习权重,加权求和两方向的正、余弦PE后得到最终的adaptive 2D positional encoding值。注意这个过程有一些broadcasting操作,在纸上画一画就能分析出来,比较简单,这里不再赘述。另外加完PE后,会将feature map拉平变成序列,送入transformer encoder中。
-
encoder中的self-attention模块中的FFN层优化,作者认为self-attention对于长程注意力的捕捉能力很优秀,但是也要兼顾局部注意力的捕捉。而且每个字符大概率和其周边的字符有更强的相关性,因此作者这里将FFN中的全连接层换成了conv->depthConv->conv几个卷积层,让模型同时兼顾长程注意力和局部注意力,其模型结构比较简单,如下所示:
decoder和标准transformer一致,无优化。
实验
-
Regular和Irregular benchmark上的识别实验,可以看到SATRN在Irregular test dataset上吊打了先前的所有识别方法,取得了SOTA。
训练数据集:MJ+ST;resize: 32x100;self-attention dim: 512;encoder层数:12;decoder层数6;输出类别94+1(有1个时SOS/EOS token)。
-
A2DPE消融实验,可以看到作者提出的A2DPE位置编码方法效果是最好的。这种自适应位置编码方式能够更好的适应字符间各种版面布局方式,加强模型表达能力。
- Encoder中FFN层的消融实验,出于效果和性能间的双重考虑,采用了卷积+深度可分离卷积代替了原先的全连接结构。
- shallow cnn降采样消融实验,降采样倍率越大,计算量就越小,但是识别效果也越差,在达到8倍降采样后,识别效果降低的就比较多了。作者最终采用的是4倍降采样。
-
SATRN在旋转文本、多行文本数据集上的效果验证:
对于旋转文本场景,基于IC13改造了个旋转测试集,训练的时候训练集随机[0,360]旋转,图片resize改为[64,64]。
对于多行文本场景,基于SJ和MT数据集构造了多行文本训练集,基于IC13改造了多行测试集。从encoder-decoder attention map的可视化上证明了SATRN具备跨行识别的能力
可以看到在这两个场景下SATRN指标都是最好的。
总结
- 为了解决识别弯曲程度大、旋转文本难度大的问题,提出了SATRN模型,模型整体架构依托transformer,并在encoder上做了一些优化以更好的适配STR任务,并在多个irregular test set上指标取得了SOTA。
- SATRN模型可挖掘的潜力很大,对于文字的布局没有任何人为的假设偏见,这也使得SATRN具备在旋转文本、多行文本上的识别能力。
- 缺点:速度慢,解码仍然要遵循auto regression解码范式,能够像DETR那样一次并行解码出全部的识别字符呢?以此来提升识别性能。所以模型落地还有一段路要走。