SRN: Towards Accurate Scene Text Recognition with Semantic Reasoning Networks ---论文阅读笔记
Paper : https://arxiv.org/abs/2003.12294
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),融合视觉信息和语义信息,获得最终结果
- 使用主干网络提取图像特征
- 使用 PVAM 生成 个对齐的 1-D 特征 ,每一个特征对应于一个字符;并且捕获对齐的视觉特征
- 使用 GSRM 捕获全局语义信息
- 使用 VSFD 融合视觉特征 和语义信息 ,预测 N 个字符。
Backbone Network
使用 FPN 从 ResNet50 的 stage-3, stage-4 和 stage-5 聚合特征图,ResNet50+FPN 的特征图大小为输入图像的 1/8 ,通道数是 512 。还使用了 transformer unit ( 位置编码,多头注意力,前馈网络 ) 捕获全局空间依赖。将特征图输入到 2 个 transformer units 中 ( 多头注意力头为 8 ),提取出增强的视觉特征 表示为
Parallel Visual Attention Module ( PVAM )
与普通的 attention 机制不同,文中使用 parallel visual attention 来提高效率,其实就是 self-attention
key-value 为输入的 2D 视觉特征 ,普通的 attention 使用上一时刻的隐藏状态生成当前时刻的特征,为了并行计算,文中使用阅读顺序 ( reading order ) 作为 query 代替上一时刻的隐藏状态,比如第一个字符为 0,第二个字符为 1 等等。如下公式:
其中 是训练参数, 是字符的阅读顺序 , 是 embedding 函数。
生成全部的视觉特征,第 t 时间步的对齐视觉特征表示为:
因为计算方法与时间无关,所以 PVAM 可以并行输出全部时间的对齐视觉特征 ( )
所获得的 attention map 可以正确注意相应字符的视觉区域,很好地验证了 PVAM 的有效性
Global Semantic Reasoning Module ( GSRM )
单向串行传输 ( 类 RNN 结构 ) : 首先它只可以感知到局部信息,甚至在解码第一步没有使用语义信息;其次,当在较早的时间步上产生错误的解码时,它可能会传递错误的语义信息并导致错误累积,很大可能造成之后的解码产生错误的结果。
提出 GSRM 克服以上问题,以一种新颖的多路并行传输方式来考虑全局语义上下文,多路并行传输可以同时感知全部字符的语义信息,此外,单个字符的错误语义内容只能对其他步骤造成非常有限的负面影响。其实也是 self-attention
此模块分为两部分 visual-to-semantic embedding block 和 semantic reasoning block
Visual-to-semantic embedding block
作用:生成 semantic reasoning block 模块的输入
把 PVAM 的输出 输入到全连接层中,经过 softmax,然后通过 argmax 运算和嵌入层,基于 的最可能的输出字符计算嵌入向量 作为 semantic reasoning block 的输入。
经过 softmax 的输出使用 GT 字符监督,使用交叉熵损失:
Semantic reasoning block
作用:生成每一个视觉特征对应的语义信息
以上一步的输出为 transformer units 的输入 ( 4 个多头注意力,每个多头注意力的头为 8 ) ,得到每一步的语义特征
在每一个 上使用理解损失 :
Visual-Semantic Fusion Decoder
视觉信息和语义信息在最终的结果中所占的比重应该是不同的,文中使用了门控单元平衡特征的贡献:
其中 是训练权重, 是第 t 个融合向量 。全部的融合特征可以表示为 ,用来预测最终的字符,目标函数:
结合 GRSM 和 VSFD 的损失函数,最终的损失可以写成:
设置为
总结
- 觉得本文的方法有些复杂,在 Backbone network 中加入了 transformer encoder 去增强视觉特征,学习到的视觉特征又再一次通过 self-attention 学习得到对齐的视觉特征,为什么不在 CNN 得到的视觉特征之后直接加入位置编码输入到 transformer encoder 中,这样也可以学习到对齐的视觉特征,也不需要两次对视觉特征处理了。
- 由于要达到并行的作用,文中提到的字符数量 是提前固定好的,可以设置为比较大的数字,类似与 DETR 中提前设置好目标的数量一样。但是对于文本,提前设置好字符的数量是否有些不妥。