SRN: Towards Accurate Scene Text Recognition with Semantic Reasoning Networks ---论文阅读笔记

Paper : https://arxiv.org/abs/2003.12294

SRN: Towards Accurate Scene Text Recognition with Semantic Reasoning Networks ---论文阅读笔记

Pipeline

Semantic Reasoning Networks ( SRN) : Backbone Network + Parallel Visual Attention Module ( PVAM ) + Global Semantic Reasoning ( GSRM ) + Visual-Semantic Fusion Decoder ( VSFD )

Backbone network : 主干网络,使用 ResNet50 + FPN 提取视觉特征,使用 transformer encoder 增强视觉特征

PVAM : 视觉编码 ( Visual Encoder ),使用 self attention 机制提取每个时间步的视觉特征

GSRM : 语义编码 ( Semantic Encoder ),使用 transformer encoder 编码全局信息

VSFD : 视觉语义解码 (Visual-Semantic Fusion Decoder),融合视觉信息和语义信息,获得最终结果

  1. 使用主干网络提取图像特征 VV
  2. 使用 PVAM 生成 NN 个对齐的 1-D 特征 GG ,每一个特征对应于一个字符;并且捕获对齐的视觉特征
  3. 使用 GSRM 捕获全局语义信息 SS
  4. 使用 VSFD 融合视觉特征 GG 和语义信息 SS ,预测 N 个字符。

Backbone Network

使用 FPN 从 ResNet50 的 stage-3, stage-4 和 stage-5 聚合特征图,ResNet50+FPN 的特征图大小为输入图像的 1/8 ,通道数是 512 。还使用了 transformer unit ( 位置编码,多头注意力,前馈网络 ) 捕获全局空间依赖。将特征图输入到 2 个 transformer units 中 ( 多头注意力头为 8 ),提取出增强的视觉特征 表示为 V,vijRd,d=512V, v_{ij} \in \Bbb{R}^d, d = 512

Parallel Visual Attention Module ( PVAM )

与普通的 attention 机制不同,文中使用 parallel visual attention 来提高效率,其实就是 self-attention

key-value 为输入的 2D 视觉特征 (vij,vij)(v_{ij}, v_{ij}) ,普通的 attention 使用上一时刻的隐藏状态生成当前时刻的特征,为了并行计算,文中使用阅读顺序 ( reading order ) 作为 query 代替上一时刻的隐藏状态,比如第一个字符为 0,第二个字符为 1 等等。如下公式:
{et,ij=WeTtanh(Wofo(Ot)+Wvvij)αt,ij=exp(et,ij)i,jexp(et,ij)(1) \begin{cases} e_{t,ij} = W_e^T tanh(W_o f_o (O_t) + W_v v_{ij}) \\ \alpha_{t,ij} = \frac{\exp(e_{t,ij})}{\sum_{\forall i,j}\exp(e_{t,ij})} \end{cases} \tag{1}
其中 WW_{*} 是训练参数,OtO_t 是字符的阅读顺序 [0,1,...,N1][0, 1, ..., N-1]fof_o 是 embedding 函数。

生成全部的视觉特征,第 t 时间步的对齐视觉特征表示为:
gt=i,jαt,ijvt,ij(2) g_t = \sum_{\forall i,j} \alpha_{t,ij} v_{t, ij} \tag{2}
因为计算方法与时间无关,所以 PVAM 可以并行输出全部时间的对齐视觉特征 ( G,gtRdG, g_t \in \Bbb{R}^{d})

所获得的 attention map 可以正确注意相应字符的视觉区域,很好地验证了 PVAM 的有效性

SRN: Towards Accurate Scene Text Recognition with Semantic Reasoning Networks ---论文阅读笔记

Global Semantic Reasoning Module ( GSRM )

单向串行传输 ( 类 RNN 结构 ) : 首先它只可以感知到局部信息,甚至在解码第一步没有使用语义信息;其次,当在较早的时间步上产生错误的解码时,它可能会传递错误的语义信息并导致错误累积,很大可能造成之后的解码产生错误的结果。

提出 GSRM 克服以上问题,以一种新颖的多路并行传输方式来考虑全局语义上下文,多路并行传输可以同时感知全部字符的语义信息,此外,单个字符的错误语义内容只能对其他步骤造成非常有限的负面影响。其实也是 self-attention

SRN: Towards Accurate Scene Text Recognition with Semantic Reasoning Networks ---论文阅读笔记

此模块分为两部分 visual-to-semantic embedding blocksemantic reasoning block

SRN: Towards Accurate Scene Text Recognition with Semantic Reasoning Networks ---论文阅读笔记

Visual-to-semantic embedding block

作用:生成 semantic reasoning block 模块的输入

把 PVAM 的输出 GG 输入到全连接层中,经过 softmax,然后通过 argmax 运算和嵌入层,基于 gtg_t 的最可能的输出字符计算嵌入向量 ete'_t 作为 semantic reasoning block 的输入。

经过 softmax 的输出使用 GT 字符监督,使用交叉熵损失:
Le=1Nt=1Nlogp(ytgt)(3) L_e = - \frac{1}{N} \sum_{t=1}^{N} \log p(y_t|g_t) \tag{3}

Semantic reasoning block

作用:生成每一个视觉特征对应的语义信息

以上一步的输出为 transformer units 的输入 ( 4 个多头注意力,每个多头注意力的头为 8 ) ,得到每一步的语义特征 S,stRd,d=512S, s_t \in \Bbb{R}^{d}, d=512

在每一个 ss 上使用理解损失 LrL_r :
Lr=1Nt=1Nlogp(ytst)(4) L_r = - \frac{1}{N} \sum_{t=1}^{N} \log p(y_t|s_t) \tag{4}

Visual-Semantic Fusion Decoder

视觉信息和语义信息在最终的结果中所占的比重应该是不同的,文中使用了门控单元平衡特征的贡献:
{zt=σ(Wz[gt,st])ft=ztgt+(1zt)st(5) \begin{cases} z_t = \sigma(\mathbf{W_z} \cdot [g_t, s_t]) \\ f_t = z_t * g_t + (1- z_t) * s_t \end{cases} \tag{5}
其中 Wz\mathbf{W_z} 是训练权重,ftf_t 是第 t 个融合向量 t[1,N]t \in [1, N] 。全部的融合特征可以表示为 F,ftRdF, f_t \in \Bbb{R}^d ,用来预测最终的字符,目标函数:
Lf=1Nt=1Nlogp(ytft)(6) L_f =- \frac{1}{N} \sum_{t=1}^{N} \log p(y_t|f_t) \tag{6}

结合 GRSM 和 VSFD 的损失函数,最终的损失可以写成:
Loss=αeLe+αrLr+αfLf(7) Loss = \alpha_e L_e + \alpha_r L_r + \alpha_f L_f \tag{7}
αe,αr,αf\alpha_e, \alpha_r, \alpha_f 设置为 1.0,0.15,2.01.0,0.15, 2.0

总结

  1. 觉得本文的方法有些复杂,在 Backbone network 中加入了 transformer encoder 去增强视觉特征,学习到的视觉特征又再一次通过 self-attention 学习得到对齐的视觉特征,为什么不在 CNN 得到的视觉特征之后直接加入位置编码输入到 transformer encoder 中,这样也可以学习到对齐的视觉特征,也不需要两次对视觉特征处理了。
  2. 由于要达到并行的作用,文中提到的字符数量 NN 是提前固定好的,可以设置为比较大的数字,类似与 DETR 中提前设置好目标的数量一样。但是对于文本,提前设置好字符的数量是否有些不妥。