Adaptive Text Recognition through Visual Matching —— 论文阅读笔记

官方链接:https://www.robots.ox.ac.uk/~vgg/research/FontAdaptor20/

Paper:https://arxiv.org/pdf/2009.06610.pdf

Code&Data:https://github.com/Chuhanxx/FontAdaptor

文中提出了几个目前主流识别方法的限制:

  1. 识别模型专门针对训练集中的字体和纹理,因此对新的视觉风格的通用性较差。
  2. 解码器对固定的字母/字符数进行辨别。
  3. 编码器和解码器是相互绑定的,因此不能在新的视觉风格的编码器和新语言的解码器之间相互操作。

因此,目前的文本识别方法泛化能力较差,需要对新的字母和语言进行重新初始化或微调。此外,微调通常需要针对目标领域提供新的训练数据,并不能克服这些固有的限制。

该模型抛弃了现有主流识别模型基本框架,通过文本的视觉特征匹配来进行文本行识别。通过视觉匹配的方式,该模型比起其他主流识别模型具有更强的泛化性,可以较好地泛化到新的字体、新的语言,甚至可以不需要额外数据进行Fine-tuning。

Method

在这里插入图片描述

左图:整体结构。视觉编码器 Φ \Phi Φ 对字形行 g g g 和文本行 x x x 进行编码,并且生成相似图 S \mathcal{S} S,表示每一个字形和文本行的每一个位置的相似度。然后,解决(潜在的)不完全视觉匹配中的歧义,产生增强的相似图 S ∗ \mathcal{S}^* S。最后,利用 M \mathcal{M} M 中的 GT 字形宽度,将相似度分数进行聚合,输出类概率 P \mathcal{P} P

右图: 字形宽度如何被编码到模型中的说明。字形宽度带(上图)的高度与对应字形示例的宽度相同,它们的标量值是以像素为单位的字形宽度。字形宽度图(下图)是一个二进制矩阵,字母表 A \mathcal{A} A 中的每个字符都有一列;通过将相应的行设置为非零值(=1),列表示字形线图像中的字形范围。

模型通过视觉匹配定位其中的字形示例来识别给定的文本行图像。它需要文本行图像和包含一系列字母的图像作为输入,并预测 N 个类的概率序列作为输出,其中 N 等于字母图像中给出的示例数量。推理阶段,字形图像是由参考字体的单个字符字形通过简单的并排连接组装而成,然后就可以读出该字体的文本行。

模型有两个主要的部分:

扫描二维码关注公众号,回复: 13000418 查看本文章
  1. Encoder 提取出模板文本和输入文本的特征,在特征层面计算输入文本与模板文本的相似性矩阵;
  2. Decoder 分为两步,首先通过Similarity Disambiguation模块对Encoder中得到的相似性矩阵进行歧义消除,然后使用Class Aggregator将相似度矩阵映射成概率矩阵进行文本行的输出。

Visual Similarity Encoder

输入:所有目标字母的字形,要识别的文本行图像

目的:确定目标字母的字形在要识别的文本行图像中的位置

使用视觉编码器 Φ \Phi Φ 对字形 g g g 和文本行 x x x 进行编码,并且生成相似图 S \mathcal{S} S,表示每一个字形和文本行的每一个位置的相似度。使用余弦距离计算相似度。
S i j = ⟨ Φ ( g ) i , Φ ( x ) j ⟩ = Φ ( g ) i T Φ ( x ) j ∣ ∣ Φ ( g ) i ∣ ∣ ⋅ ∣ ∣ Φ ( x ) j ∣ ∣ S_{ij} = \langle \Phi(g)_i, \Phi(x)_j \rangle = \frac{\Phi(g)_i^T\Phi(x)_j}{||\Phi(g)_i|| \cdot ||\Phi(x)_j||} Sij=Φ(g)i,Φ(x)j=Φ(g)iΦ(x)jΦ(g)iTΦ(x)j
编码器使用有两个残差块的 U-Net 实现,视觉相似度图由文本行和字形行图像沿编码特征宽度的所有位置之间的余弦距离得到。

Alphabet Agnostic Decoder

沿文本行图像宽度的所有空间位置,将相似度图分解为示例中每个字形的概率。即给定视觉相似图 S \mathcal{S} S ,输出文本行每个位置上的示例字形的概率 P i j = log ⁡ p ( y i ∣ x j ) \mathcal{P}_{ij} = \log p(y_i|x_j) Pij=logp(yixj) ,其中 x j x_j xj 是文本行图像的第 j j j 列, y i y_i yi 是示例图像中的第 i i i 个示例。

一个简单的实现是预测相似度图中每个字形范围内汇总的argmax或相似度分数的总和。然而,这种策略并不能克服相似性中的模糊性,也不能产生平滑/一致的字符预测。因此,使用两步处理:首先相似性歧义消除(Similarity disambiguation)解决字母表中字形的歧义,通过考虑字形的宽度和在文本行图像中的位置,产生一个增强的相似图 S ∗ \mathcal{S}^* S;第二,分类聚合器(Class aggregator)将 S ∗ \mathcal{S}^* S 中各字形的空间范围内的分数汇总,计算字形类别概率。

Similarity disambiguation

理想的相似度图会有高相似度的方形区域。这是因为字形和文本行图像中的字符宽度是相同的。因此,我们将字形宽度与局部的x、y坐标一起使用小型MLP编码到相似度图中。将 S \mathcal{S} S 、两个通道的 x , y x,y x,y 坐标(归一化到 [ 0 , 1 ] [0,1] [0,1]) 和字形宽度堆叠起来输入到 MLP 中。使用一个自注意力模块对 S 消除歧义。输出最终增强后的与 S \mathcal{S} S 大小相等的相似图 S ∗ \mathcal{S}^* S

Class aggregator

将相似图 S ∗ \mathcal{S}^* S 映射到每个字形对应的示例字形的概率 S ∗ → P \mathcal{S}^* \to \mathcal{P} SP。通过乘一个矩阵 M M M 实现 P = M S ∗ \mathcal{P} = M \mathcal{S}^* P=MS,其中 M = [ m 1 , m 2 , . . . , m ∣ A ∣ ] T M = [m_1, m_2, ..., m_{|A|}]^T M=[m1,m2,...,mA]T m i ∈ { 0 , 1 } = [ 0 , . . . , 0 , 1 , . . . , 1 , 0 , . . . , 0 ] m_i \in \{0, 1\} = [0, ...,0,1,...,1,0,...,0] mi{ 0,1}=[0,...,0,1,...,1,0,...,0] ,非0值对应字形示例图中的第 i i i 个字形的跨度。

首先对 S \mathcal{S} S 的列和 M T M^T MT 分别进行嵌入编码。在矩阵乘积之前,这些嵌入是 L2 正则化(相当于余弦相似性)。还扩展类,使用学习到的 m ∣ A ∣ + 1 m_{|A|+1} mA+1 增加了一个额外的 "边界 "类(用于CTC)。由于解码器对字母表中的字符数不可知,所以它可以用于生成新的字母。

Inference

在推理时使用贪婪算法进行解码。除了在文中实验VS-3中,没有使用额外的语言模型(LM),在其他实验中,使用了 6-gram LM 和 beam-search。

Training Loss

使用CTC损失( L C T C \mathcal{L}_{CTC} LCTC)对字形示例 P \mathcal{P} P 进行监督,使预测结果与输出标签一致。还利用每个位置的辅助交叉熵损失( L s i m \mathcal{L}_{sim} Lsim)来监督视觉编码器 S \mathcal{S} S 的相似度图输出。使用真值字符边界框来确定每个字符的空间跨度。训练损失由两部分组成:
L p r e d = L C T C ( SoftMax ( P ) , y g t ) \mathcal{L}_{pred} = \mathcal{L}_{CTC}(\text{SoftMax}(\mathcal{P}), y_{gt}) Lpred=LCTC(SoftMax(P),ygt)

L s i m = − ∑ i j log ⁡ ( SoftMax ( S y i j ) ) \mathcal{L}_{sim} = - \sum_{ij} \log (\text{SoftMax}(S_{y_ij})) Lsim=ijlog(SoftMax(Syij))

L t o t a l = L p r e d + λ L s i m \mathcal{L}_{total} = \mathcal{L}_{pred} + \lambda \mathcal{L}_{sim} Ltotal=Lpred+λLsim

y g t y_{gt} ygt 是字符标签, y i y_i yi 是字形示例图中第 i i i 个位置对应的真值字符。 λ = 1 \lambda=1 λ=1

Experiments

  1. 有/没有已知的测试字形,对新字体的泛化性,增加训练字体的数量。在FontSynth测试集上的错误率。Ours-cross代表交叉字体匹配,其中测试字形是未知的,而训练字体被用作字形示例,当示例字体从训练集中随机选择时,mean 和 standard-dev 报告,而 selected 则显示了基于置信度测量自动选择的最佳匹配示例的结果。R、B、L和I对应于 FontSynth 训练集中的 Regular,Bold,Light,Italic;OS代表 Omniglot-Seq 数据集。

在这里插入图片描述

  1. 当使用不同的示例进行交叉字体匹配时,在 FontSynth 上的表现。当使用其他字体的字形(如常规、粗体等)作为示例时,准确性对属性不敏感。此外,使用测试字形作为示例可以显著提高性能。在x轴上,显示了FontSynth的训练集组成。

    通过不断累加训练数据,在所有字体风格的测试集上,CER都呈递减的趋势。对于固定数量的训练集,在不同字体风格测试集上的CER都是接近的。表明模型对字体风格是不敏感的

在这里插入图片描述

  1. 从合成数据到真实数据的泛化。仅在合成数据 FontSynth+Omniglot-Seq 上训练的模型在 Google1000 英文文档上的平均错误率。LM代表6-gram语言模型。

    表明模型有更好的泛化性。

在这里插入图片描述

  1. 在 FontSynth + Omniglot-Seq 的英文数据集上训练,在 Google1000 的其他语言(法语,意大利语和西班牙你语)上验证。CTC模型,通过在增加的训练样本上对最后一个线性分类器层进行Fine-tuning。文中所提模型并不需要额外的数据进行Fine-tuning,仅需要有一个新的字母表来合成对应的模板文本。而基于CTC的SOTA文本识别模型,每个字符则需要至少5张(意大利语)、至多16张(法语)来Fine-tuning才能达到差不多的效果。证实了模型在语种间的泛化能力。

    在这里插入图片描述


仅供自己学习记录,如有侵权请联系删除。


猜你喜欢

转载自blog.csdn.net/m0_38007695/article/details/112218578
今日推荐