PlugNet - yubo105139/paper GitHub Wiki

TOC

PlugNet: Degradation Aware Scene TextRecognition Supervised by a PluggableSuper-Resolution Unit (ECCV2020)

针对低质量的的场景文本图像识别任务,使用超分结构来辅助识别网络的训练,解决模糊和低分辨率的问题。

code:https://github.com/huiyang865/plugnet

贡献:

  • 对网络中间的特征进行超分,以提高文字识别效果。

  • 原始文本使用CNN压缩图像分辨率,该方法对空间特征不敏感。这里使用特征压缩模块(1×1卷积+向量转化层)获取到输入到识别模块的 1 维向量。来保留原始的空间位置信息。

  • 训练时添加超分块,推理时移除,减小了计算量。

所谓可插拔超分单元(pluggable super-resolution unit )?

PSU只参与训练过程。PSU主要用于辅助识别网络,从低质文本图获取更鲁棒的特征表达来用于识别。

process in code :

  1. lr-->encoder --> encoder_feats, sharing_feats

  2. sharing_feats-->rcan-->fake_HR

  3. fake_HR, hr -->loss_sr

  4. encoder_feats-->decoder-->rec_pred

  5. rec_pred,rec_target--->loss_rec

共享特征其实为ASTER识别encoder部分的中间特征。训练时,将这个中间特征传入超分网络得到fake_HR, 计算其和hr的loss。

特征压缩模块,以及特征增强模块都在encoder中,跟在共享特征后。

网络设计

PlugNet_network

四个部分组成:修正网络, cnn共享骨干,识别部分,PSU可插拔超分单元,

  • 修正网络(Rectification Network)

    用于纠正不规则的场景文字图像。

    • 定位网络( localization network):20个控制点来定位输入图像的文本边缘

    • 网格生成器(grid generator):根据定位结果,使用(Thin-Plate-Spline)计算每个相素的变形矩阵

    • 采样器(sampler): 通过连接生成矫正结果

  • cnn共享骨干(sharing cnn backbone)

用于特征的提取,这里用到了特征金字塔方法进行特征融合,以获取多元语义信息。

  • 使用resnet结构提取特征图

  • 与Aster识别器结构相似,为保留空间信息移除了最后的3个下采样层。原始结构得到的特征图大小为输入图的1/4

  • 识别部分(Recognition Part)

    用于文字识别。

    • 使用基于LSTM的文本识别方法
    • 上一步得到的特征图被输入Feature Squeeze 模块,生成一维向量。
    • 向量输入带注意力机制的sequence-to-sequence模型(LSTM构成的encoder-decoder)得到识别结果
  • 可插拔超分单元(Pluggable SR Unit)

    用于改善提取的低质图特征。

用于特征提取的共享骨干网络的结构

image-20201216174232277

可插拔超分单元

PSU将共享的特征恢复成原始图像对应的超分辨图像。使得共享特征骨干网络能够更好的表达低质图的特征。

  • 基于RCAN构建
  • 每个RG两个RCAB(残差注意力块),使用了两个RG。
  • 训练时使用,推断时可移除。

为了更好的训练超分辨单元、改善特征的表达,使用了两种特征增强的方式:高斯模糊和 4 倍上下采样。

特征增强设计

  • 特征压缩模块(FSM)

    包含一个1×1卷积,用于减小通道数;

    一个reshape层生成一维向量;

    不仅提高了文本识别,而且高分特征有利于超分单元。

  • 特征增强模块(FEM)

    参考特征金字塔网络;

    两个下采样层,将维度转为W/4×H/4;

    将底层到高层的维度连接;

训练和推断方法

  • 数据集

Synth90K (90k) :从9万个词的词典中生成的 900万张合成文本图像。

SynthText (ST):从文本检测的研究中生成,被切成单个文本

裁剪了400万张文本图片用于训练,训练时候不将训练和测试数据分开。

  • 训练时的超分单元

由于文本识别的数据没有高低分图像对,所以使用高斯模糊和上下采样去生成低质图。得到HR-LR。

而修正网络可能对这里的超分结果有影响。先模糊,然后修正,然后超分。

按照如下方法对一张图进行操作。

image-20201217091141853

为了保证修正网络不改变输入的图像和修正后图像的分布,使用了超分损失:

image-20201217091435564

image-20201217091503245

  • 损失函数

识别损失和超分损失组成。设置λ = 0.01.

image-20201217091605785

使用交叉熵的识别损失。

image-20201217091921981

超分损失使用L1损失:

image-20201217092041314

实验

使用不同数据集验证识别能力。

训练数据未进行数据增强和选择。

batch-size 128

lr 1, 0.1,0.01 adadelta 2*2080ti

test阶段22ms/per image, 训练阶段0.97s/per batch(128)

组件测试

FSM

使用四个不同的特征分辨率网络,1×1卷积层输出一样维度25×1024来验证。

image-20201217142215345

其他组件

image-20201217134351424

PSU的效果

分别使用生成数据和原始数据对没有添加超分组件的网络进行训练。结论:PSU生成的超分数据表现更好。

先ESRGAN超分+Plugnet(no PSU) 效果和TextSR相似。

PSU的添加在所有数据集上识别都有提升。

loss中权重λ 的设置实验

λ 越大,特征中的噪音和模糊越少,然而越大也越聚焦于图像底层信息的重建,对文本的识别造成了副效应。经过多组实验取最优的λ 。模型效果依赖于λ 取值,取值需要反复实验去权衡。

与不同SOA模型的对比