文本识别——ViTSTR阅读笔记

用于快速高效场景文本识别的视觉转换器
论文:Vision Transformer for Fast and Efficient Scene Text Recognition
创新点:在关于STR的工作中,重点一直放在准确性上,很少关注速度和计算要求。在准确率与速度、参数数量和计算负载(FLOPS)之间进行权衡,本文提出一种基于计算和参数高效视觉转换器(ViT)构建的简单单级模型架构的STR。

背景

在关于 STR 的工作中,重点一直放在准确性上,很少关注速度和计算要求。在这项工作中,我们试图平衡准确性、速度和效率。准确性是指识别文本的正确性。速度是通过单位时间内处理多少个文本图像来衡量的。效率可以通过处理一张图像所需的参数和计算(FLOPS)的数量来近似。参数的数量反映了内存需求,而 FLOPS 估计完成任务所需的指令数量。理想的STR是准确和快速的,同时只需要很少的计算资源。
image.png
最近,ViT证明了在ImageNet1k分类上,在非常大的数据集(如ImageNet21k和JFT-300M)上对其进行预训练,仅使用变压器编码器就有可能击败 ResNet 和 EfficientNet 等深度网络分类的性能。DeiT证明了ViT不需要大的数据集,甚至可以获得更好的结果,但必须使用知识蒸馏进行训练。利用DeiT的预训练权值,ViT是我们提出的快速高效STR (ViTSTR)的基础。

解决问题

为了平衡精度、速度和效率的重要性,我们建议利用视觉转换器(ViT)的简单性和高效性。ViTSTR是一个非常简单的模型,只有一个级,可以很容易地将基于变压器的STR的参数和FLOPS数量减半。

模型框架


ViTSTR的网络架构。输入图像首先转换为补丁。这些补丁被转换为1D矢量嵌入(扁平的2D补丁)。作为编码器的输入,可学习的补丁嵌入与每个嵌入的位置编码一起输入。该网络经过端到端的训练,以预测字符序列。[GO]是一个预先定义的序列符号的开始,而[s]代表一个空格或字符序列的结束。
ViT和ViTSTR之间的唯一区别是预测头。ViTSTR必须识别具有正确序列顺序和长度的多个字符,而不是单一对象类识别。预测是并行进行的。

编码器块内的层


每个输入都经过层归一化(LN)。多头自注意层(MSA)确定特征向量之间的关系。使用多个head可以让模型共同关注来自不同位置的不同表示子空间的信息。head数为h。多层感知器(MLP)进行特征提取。它的输入也是层规范化的。MLP由2层组成,GELU激活。LN的输出与MSA/MLP之间存在残差连接。
编译器的输入: z 0 = [ x c l a s s ; x p 1 E ; x p 2 E ; . . . ; x p N E ] + E p o s z_0 = [x_{class}; x^1_pE; x^2_pE; ...; x^N_pE] + E_{pos} z0=[xclass;xp1E;xp2E;...;xpNE]+Epos,where E ∈ R P 2 C × D E ∈ R^{P^2C×D} ERP2C×D and E p o s ∈ R ( N + 1 ) × D E_{pos}∈R^{(N+1)×D} EposR(N+1)×D
MSA块的输出: z l ′ = M S A ( L N ( z l − 1 ) ) + z l − 1 z_l' = MSA(LN(z_{l−1})) + z_{l−1} zl=MSA(LN(zl1))+zl1,for l = 1... L l = 1...L l=1...L
MLP块的输出: z l = M L P ( L N ( z l ′ ) ) + z l ′ z_l = MLP(LN(z_l' )) + z_l' zl=MLP(LN(zl))+zl,for l = 1... L l = 1...L l=1...L
头部由一系列线性投影组成,形成单词预测: y i = L i n e a r ( z L i ) y_i = Linear(z^i_L) yi=Linear(zLi),for i = 1... S i= 1...S i=1...S

数据增强

image.png
反转、弯曲、模糊、噪声、扭曲、旋转、拉伸/压缩、透视和收缩。使用专门针对STR的数据增强配方可以显著提高ViTSTR的准确性。

训练结果

数据集

  • 训练集:
    • MJSynth (MJ):由890万看起来逼真的文字图像合成而成的数据集。
    • SynthText (ST):由550万单词图像合成生成的数据集。
  • 测试集:
    • Regular Dataset
      • IIIT5K:包含3000张用于测试的图像。
      • SVT:有647个图像用于测试。
      • IC03:来自ICDAR2003稳健阅读竞赛的1110张测试图像。在删除长度小于3个字符的单词后,结果是867张图像。
      • IC13:使用了两个版本的测试数据集:857和1015。
    • Irregular Dataset
      • IC15:使用了两个版本:1811和2077图像。
      • SVTP:645张来自谷歌街景的测试图片。
      • CT:专注于从衬衫和产品标识中捕获的弯曲文本图像,有288张图像。

实验细节

image.png
重现了几个强基线模型的结果:CRNN、R2AM、GCRNN、Rosetta、RARE、STAR-Net和TRBA,以便与ViTSTR进行公平比较。使用不同的随机种子对所有模型进行了至少5次的训练。将测试数据集上表现最好的权重保存起来,得到平均评价分数。
对于ViTSTR,使用相同的训练配置,只是输入被调整为224 × 224以匹配预训练DeiT的尺寸。在训练ViTSTR之前,会自动下载DeiT的预训练权值文件。ViTSTR可以在没有参数冻结的情况下进行端到端训练。

指标

准确率 Accuracy:所有的预测正确的占总的比重。
精度 Precision:预测为正的样本中有多少是真正的正样本。
速度 Speed:基于2080Ti GPU上的模型运行时间。
参数数量 Parameters:是指模型训练中需要训练的参数总数。
计算量 FLOPS:每秒浮点运算次数。是一个衡量硬件性能的指标。

实验结果

  • 对比其他模型的准确率

image.png

  • 模型的精度、速度、参数数量和FLOPS

image.png

注意力

image.png
当注意力适当地集中在每个字符上时,ViTSTR也会关注相邻的字符。也许,上下文是在单个符号预测期间放置的。

性能惩罚

每次在STR模型中添加一个阶段时,精度都会提高,但代价是速度变慢,计算需求增加。与多阶段STR不同,额外的模块需要额外的前向传播顺序层,这些层不能并行化,从而导致显著的性能损失。

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刀二

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值