1. 核心思想
之前的场景文字识别,通常需要两个模块(1-视觉模型用来提取特征,2-序列模型用来文本转译),这篇论文提出了只用1-视觉模型来进行场景文字识别,条件是视觉模型能够提取到--有判别力的字符特征(包含字符内形体特征和字符间的依赖特征)。为此,论文提出了一个特制的视觉模型SVTR。
2. 详细过程
整个网络如下图所示,对于输入的图片,首先进行Patch Embedding将图片转换成字符组块的token,然后接入3层高度渐进递减的混合blocks来行特征提取(blocks里面的核心是Local/Global Mixing),最后通过一个全连接层来进行文本接结果输出。
2.1 图片分块Patch Embedding模块
对于输入图片,第一步就是获取表征字符部件属性的特征块。对于获取特征块,传统的方法有两种:
1. 通过kenal、stride都为4的不交叠卷积层
2. 通过kenal=7、stride=4的交叠卷积层
这篇论文,采取了2层kenal=3、stride=2的CONV+BN+GELU模块,来获取特征块。相比传统的两种方式,在消融实验中有精度提升。
2.2 混合模块Mixing Blocks
- 混合模块Mixing Blocks中主要创新点为全局混合(global mixing)和局部混合(local mixing)
- 全局混合(global mixing),基本思想类似与自注意力机制。
- 局部混合(local mixing)的基本思想类似于卷积,也就是只关注像素点周围(论文中设置为7*11)的区域。具体实现方式如下:
1. 同全局混合(global mixing),得到自注意力相关系数attn
2. 制作一组mask(红点区域内的值设置为0,区域设置为-inf)
3. relationship = softmax(attn+mask)(softmax前,红点区域值不变,区域部分都变为-inf,经过softmax后,红点区域外的值均为0,红点区域内的值则为相关系数)
4. relationship和value进行矩阵乘积,在添加一个全连接的线性变化,得到混合结果
- 论文作者认为,局部混合(local mixing)模块擅长提取细粒度的特征,也就是一个字符内部的形体特征,而全局混合(global mixing)模块擅长提取粗粒度的特征,也就是字符间的相互关系等语言学的特征。
- 在每一组全局混合(global mixing)或局部混合(local mixing)完成后,还要跟上一组MLP(有两个fc和一个激活层组成),然后还有LN和shortcut,重复一定次数来组成一个block。
2.3 合并模块merge
- 在每一组混合模块Mixing Blocks完成后,需要加一个合并模块merge,它通过一个stride=(2,1)的3X3卷积,来达到使高度降低一半而宽度不变的特征尺寸变换,以及特征维度的变换。
- 高度减半不仅能降低整体的计算量,还可以融合高度方向的特征,来获取到不同颗粒度的图像特征。而增加特征维度,可以用来补偿高度降低带来的特征损失。
2.4 combine和predict
- 最后一个混合模块Mixing Blocks之后,会跟一个combine模块,内部有avgpool、全连接linner、激活层hardswish和一个dropout组成。
- avgpool会将高度继续浓缩到1,宽度保持W/4不变。这边采取avgpool而不是conv的原因,作者解释说是防止在特征高度特别小(h=2)情况下conv所产生的畸变。
- combine完成后,再接一个N个节点的全连接fc来直接进行预测,得到一个W/4宽度的特征序列。对于全连接fc,如果是英文,则N=37,如果是中文,则N=6625。
- 最终W/4宽度的特征序列,也是利用CTCdecode的解码方式解码得到最终识别结果。
2.5 实施参数
不同SVTR尺度模型的具体实施参数(中间的混合模块Mixing Blocks,都是先进行几个局部混合local mixing,再进行几个全局混合global mixing)
3. 消融实验
在消融实验中,作者研究了图片分块Patch Embedding、Merging操作以及局部混合local mixing和全局混合global mixing排列方式的影响。
4. 模型评估
- 作者将SVTR和现有的SOTA模型进行了对比。
- 英文数据集上,SVTR都能达到或接近最优的准确率水平,同时在推理速度上则有比较大的优势。
- 中文数据集上,SVTR则能领先SAR算法9.6%的精度,同时推理速度是它的1/6,相比SRN算法,推理速度略快,而精度上则领先了12%。