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

论文提出了一个 end2end 的文字识别模型,在识别阶段加入 attention 机制,并利用技巧加强 attention alignment。

Architecture

论文中的模型启发于 EAST 模型,其中用 PVAnet EAST 中的 ResNet50,在目标检测后面接一个 RNN 进行文字识别。



Figure 1. Model architecture


如 figure 1 所示,得到 proposals 后,送入 text-alignment 提取 RoI 的特征,再经过文字识别网络得到最终的结果。

文本检测部分跟 EAST 模型类似,无创新。

Text-Alignment Layer



Figure 2. Standard RoI pooling (Top) and text-alignment layer (Bottom)


文本定位会输出候选框的旋转角度。如 figure 2 所示,Text-Alignment 将 RoI 进行等间隔的进行双线性插值,得到 RoI 的特征。

Word Recognition



Figure 3. Sub-net structure for recognition branch


如 figure 3 所示,text-alignment 后得到特征 $w \times h \times C$,经过 inception 模块生成 $64 \times C$ 的特征,再送进一个 bi-direction LSTM 进行 encode,生成隐层 ${ h_1^e,h_2^e,\cdots,h_w^e}$。

Decoder 预测一个字符:
$$
y_t=Decoder(h_t^d,g_t,y_{t-1})
$$
其中 $h_t^d$ 是 decoder 在时刻 t 的隐层状态:
$$
h_t^d = f(y_{t-1},h_{t-1}^d,g_t)
$$
$g_t$ 是 context 向量, $g_t=\sum_{j=1}^w \alpha_{t,j} h_j^e$, attention 向量为 $\alpha_{t,j}=softmax(e_{t,j})$, $e_{t,j}=z(h_{t-1}^d,h_j^e)$ 是一个对齐因子,测量两者之间的相似度。

另外,论文中了几个技巧提升 attention 效果。

Attention alignment

为了解决 attention 模块中的 misalignment 问题,attention alignment 引入一个额外的损失指导编码字符的空间位置。

假设 $p_{t,1},p_{t,2},\cdots,p_{t,w}$ 是 text-alignment 中每列采样网格的中心点,那么在时刻 t,attention 对应的中心点为:
$$
\delta_t = \sum_{j=1}^w \alpha_{t,j} \times p_{t,j}
$$
那么定义的损失函数为:
$$
l_{align}=\sum_{t=0}^T || \frac{\delta_t - k_t}{0.5 \times \overline w_t}||
$$
其中, $k_t$ 是 GT 坐标, $\overline w_t$ 是当前字符的宽度。

Character mask

在最后的卷积层上生成字符掩码,掩码的个数是字符的个数,能够提供字符的空间信息。

Position embedding

从 attention 向量中生成一个 one-hot 向量, $u_k = \arg \min_j \alpha_{t,j}$,最后和 context 向量 $g_t$ 进行拼接。

Train

训练时,现在有 character-level 的数据集 synthetic images 上训练,再在 real-word images 上训练。

My Thoughts

  • 创新之一是 text-alignment 层,能够更好提取文本 RoI 的特征,可以与文献[2]中的 Bilinear Sampling 比较一下效果,能不能有进一步的改善呢?
  • 创新之二是针对 attention misalignment 做改进,但方法有些繁琐。
  • 论文不足之处就是在文字识别部分对 decoder 部分说明不够清楚,是如何进一步产生字符序列的呢?
  • character mask 部分使用了分割的思想,可以进一步研究在识别任务中使用分割来做,比如白翔团队最近的 mask textspotter。

References

请作者吃酒!