ACE:Aggregation Cross-Entropy for Sequence Recognition(聚合交叉熵) ---- 论文翻译

用于序列识别的聚合交叉熵

论文链接:https://arxiv.org/abs/1904.08364

摘要

  在本文中,我们从全新的角度提出了一种新的聚合交叉熵(ACE)方法,用于序列识别。 ACE损失函数表现出对CTC和注意机制的竞争性能,实现快得多(因为它只涉及四个基本公式),更快的推理\反向传播(大约O(1)并行),更少的存储要求(没有参数且可忽略运行时内存),方便使用(用ACE代替CTC)。 此外,所提出的ACE损失函数具有两个值得注意的特性:(1)它可以通过将2D预测展平为1D预测作为输入直接应用于2D预测。(2)它仅需要字符及其序列标注中的数字监督,它允许它超越序列识别,例如计数问题。该代码可在 https://github.com/summerlvsong/Aggregation-CrossEntropy 上公开获取。

1. 介绍

  序列识别或序列标记是将从固定字母表中抽取的标签序列分配给输入数据序列,例如语音识别,场景文本识别和手写文本识别,如图1所示。最近在深度学习和新的结构上的提高使得系统架构可以处理一维(1D)和二维(2D)的预测问题。对于1D预测问题,网络的最顶部特征图在垂直维度上折叠以生成1D预测,因为原始图像中的字符通常是顺序分布的。典型的例子是常规场景文本识别,在线/离线手写文本识别和语音识别。对于2D预测问题,输入图像中的字符分布在特定的空间结构中。例如,在数学表达式识别中,相邻字符之间存在高度复杂的空间关系。在段落级文本识别中,字符通常逐行分布,而在不规则场景文本识别中,它们通常分布在侧视或曲角模式中。

在这里插入图片描述

图1 序列识别和计数问题的例子

 对于序列识别问题,传统方法通常需要为输入序列中的每个片段或时间步骤分离训练目标,导致麻烦的预分割和后处理阶段 。最近出现的CTC 和注意机制通过规避输入图像与其相应标签序列之间的先前对齐,显着缓解了这种顺序训练问题。然而,尽管基于 CTC 的网络在一维预测问题中表现出了显着的性能,但 基础方法是复杂的 ;而且, 它的前向后向算法实现很复杂,导致大量的计算消耗 。此外, CTC很难应用于2D预测问题。 同时,注意机制依赖于其注意模块来进行标签对齐,从而导致额外的存储需求和计算消耗。 正如Bahdanau等人所指出的那样。 识别模型很难通过注意机制从头开始学习,因为ground truth 字符串与注意力预测之间存在不一致,特别是对于较长的输入序列。Bai等人也认为错位问题可能会混淆和误导训练过程,从而使训练成本高昂并降低识别准确度。尽管注意机制可以适用于2D预测问题,但在内存和时间消耗方面却令人望而却步,

 通过上述观察,我们为序列识别问题提出了一种新的聚合交叉熵(ACE)损失函数,详见图2。 鉴于网络的预测,ACE损失包括三个简单阶段: (1)沿时间维度聚合每个类别的概率; (2)将累积结果和标签标注标准化为所有类别的概率分布; (3)使用交叉熵比较这两个概率分布。 所提出的ACE损失函数的优点可归纳如下:

  • 由于其简单性,ACE损失功能实现得更快(四个基本公式),更快地推断和反向传播(大约 O ( 1 ) O(1) O(1) 并行),更少的内存要求(没有参数和基本运行时内存),以及与CTC和注意机制相比,使用方便(简单地用ACE替换CTC)。在表5,3.4部分和4.4部分说明。
  • 尽管简单,ACE损失功能实现了对CTC和注意机制的竞争性能,正如在常规不规则场景文本识别和手写文本识别问题的实验中所建立的那样。
  • 通过将2D预测平坦化为1D预测,ACE损失函数可以适应2D预测问题,如在不规则场景文本识别和计数问题的实验中所验证的。
  • ACE损失函数不需要用于监督的实例顺序信息,这使得它能够超越序列识别,例如计数问题。

2. 相关工作

2.1 CTC

  流行的CTC损失的优势首先在语音识别和在线手写文本识别中得到证实。 最近,提出了一种集成的CNN-LSTM-CTC模型来解决场景文本识别问题。还有一些方法旨在扩展应用中的CTC; 例如,张等人。 提出了一种适用于CTC的扩展CTC(ECTC)目标函数,即使只有字级注释可用,也可以训练基于RNN的音素识别器。黄等人开发了一种基于期望最大化的在线CTC算法,该算法允许RNN以无限长的输入序列进行训练,无需预分割或外部重置。然而,CTC的计算过程非常复杂且耗时,并且当应用于2D问题时需要大量工作来重新排列feature map 和标注。

2.2 注意力机制

  注意机制首先在机器翻译中提出,以使模型能够自动搜索源句的部分以进行预测。然后,该方法迅速在诸如(视觉)问答,图像标题生成,语音识别和场景文本识别等应用中变得流行。最重要的是,注意力机制也可以应用于2D预测,例如数学表达式识别和段落识别。 然而,注意机制依赖于复杂的注意力模块来实现其功能,从而产生额外的网络参数和运行时间。此外,缺失或多余的字符很容易导致错位问题,混淆和误导训练过程,从而降低识别准确度。

3. 聚合交叉熵(ACE)

  形式上,给定来自训练集 Q Q Q 的输入图像 I I I 及其序列标注 S S S ,序列识别问题的 一般损失函数评估 在模型参数 w w w 下以图像 I I I 为条件的长度 L L L 的标注 S S S 的概率如下
L ( w ) = − ∑ ( I , S ) ∈ Q l o g P ( S ∣ I ; w ) = − ∑ ( I , S ) ∈ Q ∑ l = 1 L l o g P ( S l ∣ l , I ; w ) (1) L(w) = - \sum_{(I,S) \in Q} log P(S | I;w) = - \sum_{(I,S) \in Q} \sum_{l=1}^L log P(S_l|l, I;w) \tag{1} L(w)=(I,S)QlogP(SI;w)=(I,S)Ql=1LlogP(Sll,I;w)(1)
其中 P ( S l ∣ l , I ; w ) ​ P(S_l|l, I;w)​ P(Sll,I;w) 代表预测序列的第 l ​ l​ l 个位置的预测字符 S l ​ S_l​ Sl 的概率。因此,这个问题是估计基于模型预测 { y k t , t = 1 , 2 , ⋯   , T , k = 1 , 2 , ⋯   , ∣ C ε ∣ } ​ \{y_k^t, t =1, 2, \cdots , T, k=1,2,\cdots, |C^{\varepsilon}|\}​ {ykt,t=1,2,,T,k=1,2,,Cε} 的一般损失函数,其中 C ε = C ∪ ε ​ C^{\varepsilon} = C \cup \varepsilon​ Cε=Cε C ​ C​ C 是字符集合, ε ​ \varepsilon​ ε 是空格。然而,在CTC损失函数出现之前,直接估计 P ( S ∣ I ; w ) ​ P(S | I;w)​ P(SI;w) 非常具有挑战性的。CTC损失函数使用前向后向算法优雅地计算 P ( S ∣ I ; w ) ​ P(S | I;w)​ P(SI;w),这消除了对预分割数据和外部后处理的需要。注意机制通过基于其注意模块直接预测 P ( S l ∣ l , I ; w ) ​ P(S_l|l, I;w)​ P(Sll,I;w) 来提供估计一般损失函数的替代解决方案。然而,CTC的前向 - 后向算法是高度复杂和耗时的,而注意机制需要额外的复杂网络以确保注意力预测和标注之间的对齐。

在这里插入图片描述

图2. ACE 损失函数

(左)通常,1D和2D预测分别由集成的CNN-LSTM和FCN模型生成。 对于ACE损失函数,2D预测进一步展平为1D预测 { y k t , t = 1 , 2 , ⋯   , T } ​ \{y_k^t, t =1, 2, \cdots , T\}​ {ykt,t=1,2,,T} 。在聚合期间,所有时间点的1D预测都是为每个类独立累积的,根据 y k = ∑ t = 1 T y k t ​ y_k = \sum_{t=1}^T y_k^t​ yk=t=1Tykt 。在归一化之后,将预测 y ‾ ​ \overline{y}​ y 与GroundTruth N ‾ ​ \overline{N}​ N 一起用于基于交叉熵的损失估计。(右)一个简单的例子表明ACE损失函数的标签的生成。 N a = 2 ​ N_a = 2​ Na=2 表明在 cocacola中有两个 “a”。

  在本文中,我们提出ACE损失函数来估计基于模型预测 y k t ​ y_k^t​ ykt 的一般损失函数。在公式(1)中,通过最大化序列标注的每个位置处的预测(例如 P ( S l ∣ l , I ; w ) ​ P(S_l|l, I;w)​ P(Sll,I;w) ),可以最小化一般损失函数。然而,基于 y k t ​ y_k^t​ ykt 直接计算 P ( S l ∣ l , I ; w ) ​ P(S_l|l, I;w)​ P(Sll,I;w) 是具有挑战性的,因为注释中的第 l ​ l​ l 个字符与模型预测 y k t ​ y_k^t​ ykt 之间的对齐不清楚。因此,不是精确地估计概率 P ( S l ∣ l , I ; w ) ​ P(S_l|l, I;w)​ P(Sll,I;w),而是通过仅监督每个类的累积概率来简化问题;不考虑标注的序列顺序问题。例如,如果一个类在标注中出现两次,我们要求它在 T ​ T​ T 时间步长上的累积预测概率恰好是两个,预计它的两个相应的预测接近于一个。因此,我们可以通过 要求网络精确预测标注中每个类的字符数来最小化一般损失函数 ,如下所示:
L ( w ) = − ∑ ( I , S ) ∈ Q ∑ l = 1 L log ⁡ P ( S l ∣ l , I ; w ) ≈ − ∑ ( I , S ) ∈ Q ∑ k = 1 ∣ C ϵ ∣ log ⁡ P ( N k ∣ I ; w ) (2) L(w) = - \sum_{(I,S) \in Q} \sum_{l=1}^L \log P(S_l|l, I;w) \approx - \sum_{(I,S) \in Q} \sum_{k=1}^{|C^\epsilon|} \log P(N_k|I;w) \tag{2} L(w)=(I,S)Ql=1LlogP(Sll,I;w)(I,S)Qk=1CϵlogP(NkI;w)(2)
其中 N k N_k Nk 代表字符 C k ϵ C_k^\epsilon Ckϵ 在序列标注 S S S 中出现的次数。请注意,这个新的损失函数不需要字符顺序信息,只需要用于监督的类及其数量。

3.1 基于回归的ACE损失函数

  现在,问题是将模型预测 y k t y_k^t ykt 连接到每个类的数字预测。我们提出通过把 T T T 时间步长的第 k k k 个字符的概率求和来计算每个类 y k t y_k^t ykt 的数量,例如 y k = ∑ y = 1 T y k t y_k = \sum_{y=1}^T y_k^t yk=y=1Tykt 。如图2中的聚合所示。注意:
max ⁡ ∑ k = 1 ∣ C ϵ ∣ log ⁡ P ( N k ∣ I ; w ) ⇔ min ⁡ ∑ k = 1 ∣ C ϵ ∣ ( N k − y k ) 2 (3) \max \sum_{k=1}^{|C^\epsilon|} \log P(N_k|I;w) \Leftrightarrow \min \sum_{k=1}^{|C^\epsilon|} (N_k - y_k)^2 \tag{3} maxk=1CϵlogP(NkI;w)mink=1Cϵ(Nkyk)2(3)
因此,我们从回归问题的角度调整损失函数(公式(2))如下:
L ( w ) = 1 2 ∑ ( I , S ) ∈ Q ∑ k = 1 ∣ C ϵ ∣ ( N k − y k ) 2 (4) L(w) = \frac{1}{2} \sum_{(I,S) \in Q} \sum_{k=1}^{|C^\epsilon|} (N_k - y_k) ^2 \tag{4} L(w)=21(I,S)Qk=1Cϵ(Nkyk)2(4)
另请注意,预计总共 ( T − ∣ S ∣ ) (T - |S|) (TS) 预测会产生零排放。 因此,我们有 N ϵ = T − ∣ S ∣ N_\epsilon = T - |S| Nϵ=TS

  为了找到每个例子 ( I , S ) (I, S) (I,S) 的梯度,我们首先根据网络输出 y k t y_k^t ykt 区分 L ( I , S ) L(I, S) L(I,S):
∂ L ( I , S ) ∂ y k t = Δ k (5) \frac{\partial L(I, S)}{\partial y_k^t} = \Delta_k \tag{5} yktL(I,S)=Δk(5)
其中 Δ k = ( y k − N k ) \Delta_k=(y_k - N_k) Δk=(ykNk) 。 回想一下,对于 S o f t m a x \rm Softmax Softmax 函数,我们有:
y i = e a i ∑ j e a j ,    ∂ y i ∂ a j = y i ( δ i j − u j ) (6) y_i = \frac{e^{a_i}}{\sum_j e^{a_j}}, \; \frac{\partial y_i}{\partial a_j} = y_i(\delta_{ij} - u_j) \tag{6} yi=jeajeai,ajyi=yi(δijuj)(6)
其中,如果 i = j ​ i=j​ i=j,则 δ i j = 1 ​ \delta_{ij} = 1​ δij=1 ,否则为 0 ​ 0​ 0。现在,我们可以将损失函数与 a t k ​ a_t^k​ atk 区分开来,通过输出层反向传播梯度:
∂ L ( I , S ) ∂ a k t = ∑ k ′ = 1 ∣ C ϵ ∣ ∂ L ( I , S ) ∂ y k ′ t ∂ y k ′ t ∂ a k t = ∑ k ′ = 1 ∣ C ϵ ∣ Δ k ′ ⋅ y k ′ t ( δ k k ′ − y k t ) = Δ k ′ ⋅ y k ′ t ( 1 − y k t ) − ∑ k ′ ≠ k Δ k ′ ⋅ y k ′ t y k t (7) \frac{\partial L(I,S)}{\partial a_k^t} = \sum_{k'=1}^{|C^\epsilon|} \frac{\partial L(I,S)}{\partial y_{k'}^t} \frac{\partial y_{k'}^t}{\partial a_k^t} = \sum_{k'=1}^{|C^\epsilon|} \Delta_{k'} \cdot y_{k'}^t(\delta_{kk'} - y_k^t) \\ = \Delta_{k'} \cdot y_{k'}^t(1 - y_k^t) - \sum_{k' \neq k}\Delta_{k'} \cdot y_{k'}^ty_k^t \tag{7} aktL(I,S)=k=1CϵyktL(I,S)aktykt=k=1CϵΔkykt(δkkykt)=Δkykt(1ykt)k=kΔkyktykt(7)

3.1 梯度消失问题

  从公式(7),我们观察到基于回归的ACE损失(公式(4))在反向传播方面不方便。在早期训练阶段,我们有 { y k ′ t ≈ 1 / ∣ C ϵ ∣ ,    ∀ k ′ , t } ​ \{y_{k'}^t \approx 1 / |C^\epsilon|, \; \forall k', t\}​ {ykt1/Cϵ,k,t}。 因此对于大的词汇序列识别问题, y k t ​ y_k^t​ ykt 可以忽略不计,其中 ∣ C ϵ ∣ ​ |C^\epsilon|​ Cϵ 是大的(例如HCTR问题中的7357)。虽然公式(7)中的其他项具有可接受的反向传播速度,但是梯度将通过 y k ′ t ​ y_{k'}^t​ ykt y k t ​ y_k^t​ ykt 缩放到非常小的尺寸,导致梯度消失问题。

3.2 基于交叉熵的ACE损失函数

  为了防止梯度消失问题,有必要抵消由公式(7)中的 S o f t m a x \rm Softmax Softmax 函数引入的项 y k ′ t y_{k'}^t ykt 的影响。我们从信息理论中借用交叉熵的概念,信息理论旨在测量两个概率分布之间的“距离”。因此,我们把第 k k k 个字符 y k y_k yk 的累计概率标准化为 y ‾ k = y k / T \overline y_k = y_k / T yk=yk/T,把字符数量 N k N_k Nk 标准化为 N ‾ k = N k / T \overline N_k = N_k / T Nk=Nk/T。然后,在 y ‾ \overline y y N ‾ \overline N N 之间的交叉熵可以表示为:
L ( I , S ) = − ∑ k = 1 ∣ C ϵ ∣ N ‾ k ln ⁡ y ‾ k (8) L(I, S) = -\sum_{k=1}^{|C^\epsilon|} \overline{N}_k \ln \overline{y}_k \tag{8} L(I,S)=k=1CϵNklnyk(8)
  关于 S o f t m a x ​ \rm Softmax​ Softmax 激活函数之前的 a k t ​ a_k^t​ akt 的损失函数导数具有以下形式:
∂ L ( I , S ) ∂ a k t = ∑ k ′ = 1 ∣ C ϵ ∣ ∂ L ( I , S ) ∂ y ‾ k ′ ∂ y ‾ k ′ ∂ y k ′ t ∂ y k ′ t ∂ a k t = ∑ C k ′ ϵ ∈ S − N ‾ k ′ y ‾ k ′ ⋅ 1 T ⋅ y k ′ t ( δ k k ′ − y K t ) = − 1 T ∑ C k ′ ϵ ∈ S N ‾ k ′ y k ′ t y ‾ k ′ ( δ k k ′ − y k t ) = − 1 T ∑ C k ′ ϵ ∈ S N ‾ k ′ y k ′ t y ‾ k ′ ( δ k k ′ − y k t ) (9) \frac{\partial L(I,S)}{\partial a_k^t} = \sum_{k'=1}^{|C^\epsilon|} \frac{\partial L(I,S)}{\partial \overline{y}_{k'}} \frac{\partial \overline{y}_{k'}}{\partial y_{k'}^t} \frac{\partial y_{k'}^t}{\partial a_{k}^t} \tag{9} \\ \qquad \qquad \qquad \qquad= \sum_{C_{k'}^\epsilon \in S} - \frac{\overline{N}_{k'}}{\overline{y}^{k'}} \cdot \frac{1}{T} \cdot y_{k'}^t (\delta_{kk'} - y_K^t) \\ \qquad\qquad\qquad = - \frac{1}{T} \sum_{C_{k'}^\epsilon \in S} \overline{N}_{k'} \frac{y_{k'}^t}{\overline{y}_{k'}}(\delta_{kk' - y_k^t}) \\ \qquad\qquad\qquad = - \frac{1}{T} \sum_{C_{k'}^\epsilon \in S} \overline{N}_{k'} \frac{y_{k'}^t}{\overline{y}_{k'}}(\delta_{kk' - y_k^t}) aktL(I,S)=k=1CϵykL(I,S)yktykaktykt=CkϵSykNkT1ykt(δkkyKt)=T1CkϵSNkykykt(δkkykt)=T1CkϵSNkykykt(δkkykt)(9)

3.2.1 讨论

接下来,我们讨论更新后的损失函数怎么解决梯度消失的问题:

  1. 在早期训练阶段, y k ′ t y_{k'}^t ykt 在所有时间步长具有大致相同的数量级。因此,标准化后的累计概率 y ‾ k ′ \overline{y}_{k'} yk 也有和 y k ′ t y_{k'}^t ykt 一致的数量级。即, y k ′ t y ‾ k ′ ≈ 1 \frac{y_{k'}^t}{\overline{y}_{k'}} \approx 1 ykykt1 ;因此通过第 k ′ k' k 类的梯度就是 − 1 T N ‾ k ′ ( δ k k ′ − y k t ) -\frac{1}{T} \overline{N}_{k'}(\delta_{kk'} - y_k^t) T1Nk(δkkykt) 。因此,梯度可以通过出现在序列标注 S S S 中的字符直接向后传播到 a k t a_k^t akt 。除此之外,当 k = k ′ k=k' k=k时,例如 C k ϵ ∈ S C_k^\epsilon \in S CkϵS ;相应的梯度大约为 − 1 T N ‾ k ′ ( 1 − y k t ) -\frac{1}{T} \overline{N}_{k'}(1 - y_k^t) T1Nk(1ykt) ,这将鼓励模型作出更大的预测 y k t y_k^t ykt ,而不在 S S S 中出现的字符变小。这是我们的初衷。
  2. 在后期训练阶段,在后面的训练阶段,只有少数预测 y k ∗ t ∗ ​ y_{k^*}^{t^*}​ ykt 会非常大,而其他预测则足够小,可以省略。在这种情况下,预测 y k ∗ t ∗ ​ y_{k^*}^{t^*}​ ykt 将占据 y k ∗ ​ y_{k^*}​ yk 的大部分,就会有 y k ∗ t ∗ y ‾ k ∗ = T ⋅ y k ∗ t ∗ y k ∗ ​ \frac{y_{k^*}^{t^*}}{\overline{y}_{k^*}} = T \cdot \frac{y_{k^*}^{t^*}}{y_{k^*}}​ ykykt=Tykykt 。因此,当 C k ∗ ϵ ∈ S ​ C_{k^*}^\epsilon \in S​ CkϵS 时,梯度可以直接反向传播到识别网络。
3.3 二维预测

  在诸如具有图像级标注的不规则场景文本识别的2D预测问题中,定义字符之间的空间关系是具有挑战性的。字符可能是多条线排列,沿弯曲或倾斜方向排列,或者甚至以随机方式分布。幸运的是,提出的ACE损失函数可以推广到2D预测问题,因为它不需要序列学习过程的字符顺序信息。

  假设,输出的2D预测 y ​ y​ y H ​ H​ H,宽 W ​ W​ W,那么在第 h ​ h​ h 行和第 w ​ w​ w 列的预测可以表示为 y k h w ​ y_k^{hw}​ ykhw 。需要计算 y ‾ k ​ \overline{y}_k​ yk N ‾ k ​ \overline{N}_k​ Nk 来进行边界调整, y ‾ k = y k H W = ∑ h = 1 H ∑ w = 1 W y k h w H W ​ \overline{y}_k = \frac{y_k}{HW} = \frac{\sum_{h=1}^H \sum_{w=1}^W y_k^{hw}}{HW}​ yk=HWyk=HWh=1Hw=1Wykhw N ‾ k = N k H W ​ \overline{N}_k = \frac{N_k}{HW}​ Nk=HWNk。然后,2D预测的损失函数可以表示为:
L ( I , S ) = − ∑ k = 1 C ϵ N ‾ k ln ⁡ y ‾ k = − ∑ k = 1 ∣ C ϵ ∣ N k H W ln ⁡ y k H W (10) L(I,S) = -\sum_{k=1}^{C^\epsilon} \overline{N}_k \ln \overline{y}_k = - \sum_{k=1}^{|C^\epsilon|} \frac{N_k}{HW} \ln \frac{y_k}{HW} \tag{10} L(I,S)=k=1CϵNklnyk=k=1CϵHWNklnHWyk(10)
在我们试验中,我们直接把2D预测 { y h w , h = 1 , 2 , ⋯   , H , w = 1 , 2 , ⋯   , W } ​ \{y^{hw}, h=1,2,\cdots,H,w=1,2,\cdots,W\}​ {yhw,h=1,2,,H,w=1,2,,W} 展平为1D预测 { y t , t = 1 , 2 , ⋯   , T } ​ \{y^t, t=1,2,\cdots,T\}​ {yt,t=1,2,,T} ,其中 T = H W ​ T=HW​ T=HW ,然后使用公式(8)计算最终损失。

3.4 实现和复杂性分析

实现 如图2所示, N = { N k ∣ k = 1 , 2 , ⋯   , ∣ C ϵ ∣ } ​ N = \{N_k|k=1,2,\cdots,|C^\epsilon|\}​ N={Nkk=1,2,,Cϵ} 代表 A C E ​ \rm ACE​ ACE 损失函数的标注;这里, N k ​ N_k​ Nk 代表在序列标注 S ​ S​ S 中字符 C k ϵ ​ C_k^\epsilon​ Ckϵ 出现的次数。在图2中描述了序列标注 cocacola转换为 A C E ​ \rm ACE​ ACE 的标注这么一个简单的例子。总的来说,给定模型预测 y k t ​ y_k^t​ ykt 和它的标注 N ​ N​ N,基于交叉熵的 A C E ​ \rm ACE​ ACE 损失函数的关键实现包括四个基本的公式:

  • y k = ∑ t = 1 T y k t ​ y_k = \sum_{t=1}^T y_k^t​ yk=t=1Tykt 通过对全部时间的第 k ​ k​ k 类的概率求和,计算每一个类的字符数量。
  • y ‾ k = y k / T ​ \overline{y}_k = y_k / T​ yk=yk/T 标准化累加的概率。
  • N ‾ k = N k / T ​ \overline{N}_k = N_k / T​ Nk=Nk/T 标准化标注。
  • L ( I , S ) = − ∑ k = 1 ∣ C ϵ ∣ N ‾ k ln ⁡ y ‾ k L(I,S) = - \sum_{k=1}^{|C^\epsilon|}\overline{N}_k \ln \overline{y}_k L(I,S)=k=1CϵNklnyk 估计在 N ‾ k \overline{N}_k Nk y ‾ k \overline{y}_k yk 之间的交叉熵。

  在实际工作中,模型预测 y k t ​ y_k^t​ ykt 通常是通过集成的 CNN-LSTM模型(1D预测)或者FCN模型(展平的2D预测)提供的。也就是说,ACE的输入假设与CTC的输入假设相同。因此,提出的ACE可以很方便的通过代替框架中的CTC层来应用。

复杂性分析 ACE损失函数的总体计算是基于上述的四个公式实现的,分别有 O ( 1 ) ,    O ( ∣ C ϵ ∣ ) ,    O ( ∣ C ϵ ∣ ) ,    O ( ∣ C ϵ ∣ ) O(1), \; O(|C^\epsilon|), \; O(|C^\epsilon|), \; O(|C^\epsilon|) O(1),O(Cϵ),O(Cϵ),O(Cϵ) 的计算复杂度。因此,ACE损失函数的计算复杂度是 O ( ∣ C ϵ ∣ ) O(|C^\epsilon|) O(Cϵ) 。但请注意,这四个公式中的逐元素乘法,除法和 log 操作可以在 GPU 以 O ( 1 ) O(1) O(1) 复杂度并行实现。相反,基于前向后向算法的CTC的实现有一个 O ( T ∗ ∣ S ∣ ) O(T*|S|) O(TS) 的复杂度。因为CTC的前向变量 α ( t , u ) \alpha (t,u) α(t,u) 和后向变量 β ( t , u ) \beta (t,u) β(t,u) 依赖于之前的结果(例如 α ( t − 1. u ) \alpha (t-1. u) α(t1.u) β ( t + 1 , u ) ​ \beta (t+1, u)​ β(t+1,u) )计算当前的输出,CTC很难在时间维度上并行加速。更多的,CTC的基本操作也是非常复杂的,导致总体消耗时间大于ACE。关于注意力机制,其计算复杂度与“注意力”的时间成比例。然而,每次注意模块的计算复杂度已经具有与CTC相似的量级。

 从内存消耗的角度来看,提出的ACE损失函数几乎不需要内存消耗,因为可以根据四个基本公式直接计算ACE损失结果。 但是,CTC需要额外的空间来保存与时间步长 T ​ T​ T 和序列标注长度成比例的前向后向变量。同时,注意机制需要额外的模块来实现“注意力”。 因此,其内存消耗量明显大于CTC和ACE。

  总的来看,与CTC和注意力比较,提出的ACE损失函数在计算复杂性和内存需求方面都表现出显着的优势。

4. 性能评估

  在我们的实验中,使用了三个任务来评估所提出的ACE损失函数的有效性,包括场景文本识别,离线手写中文文本识别和计算日常场景中的物体。对于这些任务,我们估计了1D和2D预测的ACE损失,其中1D表示最终预测是T 预测序列,2D表示最终特征图具有H×W的2D预测。

4.1 场景文本识别

  由于背景,外观,分辨率,文本字体和颜色的大变化,场景文本识别经常遇到问题,使其成为具有挑战性的研究课题。在本节中,我们通过利用此任务中丰富性和多样性的测试基准来研究场景文本识别的一维和二维预测。

4.1.1 数据集

  在场景文本识别使用了两种数据集:常规的文本数据集,例如 IIIT5K-Words,Street View Text,ICDAR2003和ICDAR2013 和不规则的文本数据集,例如SVT-Perspective,CUTE80和ICDAR2015。正规的数据集使用ACE损失函数的1D预测来评估,不规则的文本数据集使用2D预测来评估。

  IIIT5K-Words(IIIT5K)包含3000张剪切的单词图像用来测试。

  Street View Text(SVT)从 Google Street View收集来的,包含647张单词图像。其中许多都被噪音和模糊严重破坏,或者分辨率非常低。

  ICDAR2003(IC03)包含251张场景图像,使用文本边框标注。包含867张裁剪图像。

  ICDAR2013(IC13)继承了IC03中的大部分样本。包含1015个裁剪文本图像。

  SVT-Perspective(SVT-P)包含639张裁剪图像用来测试,是从Google街景中的侧视角快照中选择来的。 因此,大多数图像都是透视扭曲的。 每个图像都与50个单词的词典和一个完整的词典相关联。

  CUTE80(CUTE)包含80幅自然场景拍摄的高分辨率图像。 它专门用于弯曲文本识别。 该数据集包含288个裁剪的自然图像用于测试。 没有词典相关联。

  ICDAR 2015(IC15)包含2077张剪裁图像,包括超过200张不规则文本。

4.1.2 实现细节

 对于常规数据集上的1D序列识别,我们的实验基于CRNN网络,仅对Jaderberg等人发布的800万个合成数据进行了训练。对于不规则数据集上的2D序列识别,我们的实验基于ResNet-101,其中conv1变为3×3,步长为1,conv4_x作为输出。训练数据集由Jaderberg等人发布的800万个合成数据和从8万张图像中裁剪出来的4万个合成实例(不包括包含非字母数字字符的图像)组成。输入图像标准化为 (96, 100),最终的2D预测为 (12,13),如图5所示。为了解码2D预测,我们通过按照从左到右和从上到下的顺序连接每个列来平坦化2D预测,然后按照一般过程对平坦的1D预测进行解码。

  在我们的实验中,我们观察到直接将输入图像标准化为(96,100)的大小会使网络训练过程过载。因此,我们训练另一个网络来预测文本图像中的字符编号,并相对于字符编号对文本图像进行标准化,以使字符大小保持在可接受的限度内。

4.1.3 实验结果

  为了研究回归和交叉熵对ACE损失函数的作用,我们使用常规场景文本数据集进行了一维预测的实验,详见表1和图3。因为在场景文本识别中只有37个类,所以在公式(7)中的项 y k ′ t y_{k'}^t ykt 的负面影响没有HCTR问题那么严重(7357类)。如图3所示,基于回归的ACE损失,网络可以收敛但速度很慢,可能是由于梯度消失问题。基于交叉熵的ACE损失,WER和CER在早期训练阶段以相对较高的速率和更平滑的方式发展,并在随后的训练阶段获得明显更好的收敛结果。表1清楚地揭示了基于交叉熵的ACE损失函数优于基于回归的ACE损失函数的优越性。因此,我们对所有剩余的实验使用基于交叉熵的ACE损失函数。此外,使用相同的网络设置(CRNN)和训练集(800万个合成数据),所提出的ACE损失函数表现出与CTC以前的工作相当的性能。

在这里插入图片描述

表1. 回归和交叉熵的比较

在这里插入图片描述

图 3. 基于回归和交叉熵的ACE损失函数比较

在这里插入图片描述

表2. 场景文本识别和之前的方法比较

  为了验证所提出的ACE损失与字符顺序的独立性,我们使用ACE,CTC和注意力在四个数据集上进行实验;标注的字符顺序以不同的比例随机打乱,如图4所示。可以发现,注意力和CTC的性能随着打乱比例的增加在下降。特别地,因为错误问题很容易误导训练过程中的注意力,所以注意力比CTC更敏感,相比之下,所提出的ACE损失函数对于打乱比例的所有设置都表现出类似的识别结果,这是因为它只需要类别及其数量进行监督,完全省略字符顺序信息。

在这里插入图片描述

图4. ACE,CTC和注意力在不同的打乱比例下的性能

  对于不规则的场景文本,我们用2D预测进行了文本识别实验。在表2中,我们提供了和以前的方法的比较,这些方法仅考虑识别模型,没有进行公平比较的整改。如表2所示,所提出的ACE损失函数在数据集CUTE和IC15上表现出优异的性能,特别是在CUTE上,绝对误差减少5.8%。这是因为数据集CUTE是专门用于弯曲文本识别的,因此,充分展示了ACE损失功能的优势。对于数据集SVT-P,我们的解码结果不如Yang等人的有效。这是因为数据集SVT-P中的大量图像具有非常低的分辨率,这对语义上下文建模产生了非常高的要求。但是,我们的网络仅基于CNN,既没有LSTM / MDLSTM也没有注意机制来利用高级语义上下文。然而,值得注意的是,我们的识别模型在使用词汇时获得了最高的结果,语义上下文可以访问。这再次验证了所提出的ACE损失函数的稳健性和有效性。

  在图5中,我们使用ACE损失函数提供由识别模型处理的一些真实图像。 首先将原始文本图像标准化并放置在形状(96,100)的空白图像的中心。我们观察到,在识别之后,2D预测呈现出与原始文本图像中的字符高度相似的空间分布,这暗示了所提出的ACE损失函数的有效性。
在这里插入图片描述

图5. 使用ACE损失函数的识别模块处理的真实图像

左边两列代表原始图像和使用 (96, 100) 标准化后的版本。第三列展示了对文本图像的2D预测。在最右边的一列,我们重叠输入和预测图像,并观察2D空间中类似的字符分布。

4.2 离线手写中文文本识别

  由于其庞大的字符集(7,357个类),多样化的写作风格和人物风格问题,离线HCTR问题非常复杂且难以解决。因此,评估一维预测中ACE损失的稳健性和有效性是一个有利的试验平台。

4.2.1 实现细节

对于离线HCTR问题,我们的模型使用CASIA-HWDB 数据集进行训练,并使用标准基准ICDAR 2013竞赛数据集进行测试。

  对于HCTR问题,具有长度为70的预测序列的网络架构规定如下:(126,576)Input - 8C3 - MP2 - 32C3 - MP2 - 128C3 - MP2 - 5*256C3 - MP2 - 512C3 - 512C3 - MP2 - 512C2 - 3*512ResLSTM - 7357FC - Output,其中 x C y ​ xCy​ xCy 代表核数量 x ​ x​ x ,核大小 y ∗ y ​ y*y​ yy 的卷积层, M P y ​ MPy​ MPy 表示卷积核大小 y ​ y​ y 的最大池化层, x F C ​ xFC​ xFC 是有 x ​ x​ x 个核的全连接层,ResLSTM是 residual LSTM。HCTR问题的评估标准是ICDAR 2013竞赛规定的正确率(CR)和准确率(AT)。

4.2.2 实验结果

  在表3中,我们提供了ACE损失和之前方法的比较。证明了,提出的ACE损失函数比之前的方法有更好的表现,包括基于模型[34] [37]的MDLSTM,基于模型[10]的HMM和没有语言模型的超分割方法[27, 44, 45, 48]。和场景文本识别比较,手写中文文本识别问题具有独特的挑战,例如大的字符集(7357类)和字符书写问题。因此,ACE损失函数优于先前方法的优越性能可以正确验证其序列识别问题的鲁棒性和通用性。

在这里插入图片描述

表3. HCTR 之前方法的比较

4.3 计算日常场景中的目标

  计算自然日常图像中目标类的实例数量通常会遇到复杂的现实生活情况,例如,计数,外观和对象尺度的较大差异。因此,我们在日常场景中计算目标的问题上验证了ACE损失函数,以证明其通用性。

4.3.1 实现细节

  作为多标签目标分类和目标检测任务的基准,PASCAL VOC数据集包含每个图像的类别标签,以及可以转换为对象编号标签的边界框注释。在我们的实现中,我们通过对零处的计数进行阈值处理并将预测舍入到最接近的整数来累积类别 k k k 的预测以获得 a ^ i k \hat{a}_{ik} a^ik 。给定一个类别 k k k 和一张图像 i i i 的预测和ground truth 计数 c i k c_{ik} cik , 则 R M S E k = 1 N ∑ i = 1 N ( c ^ i k − c i k ) 2 RMSE_k = \sqrt{\frac{1}{N} \sum_{i=1}^N (\hat{c}_{ik} - c_{ik})^2} RMSEk=N1i=1N(c^ikcik)2 ,$RMSE_k = \sqrt{\frac{1}{N} \sum_{i=1}^N \frac{(\hat{c}{ik} - c{ik})^2}{c_{ik} + 1}} $。

4.3.2 实验结果

  表4显示了提出的ACE损失函数与之前用于PASCAL VOC 2007测试数据集的方法之间的比较,用于计算日常场景中的目标。提出的ACE损失函数优于先前的扫视和子化方法[6],相关损失方法[40]和Always-0方法(预测最常见的ground truth计数)。结果显示了ACE损失函数的通用性,因为它可以容易地应用于除序列识别之外的问题,例如计数问题,需要最小的领域知识。

  在图6中,我们在ACE损失下提供由计数模型处理的真实图像。如图所示,我们使用ACE损失训练的计数模型设法“关注”关键目标发生的位置。与文本识别问题不同,其中使用ACE损失函数训练的识别模型倾向于对字符进行预测,使用ACE损失函数训练的计数模型在目标上提供更均匀的预测分布。而且,它为对象的不同部分分配不同级别的“注意力”。例如,当观察图片中的红色时,我们注意到计数模型更注重人的面部。这种现象与我们的直觉相对应,因为面部是个体中最独特的部分

在这里插入图片描述

表4. 在PASCALVOC上的先前方法的比较

在这里插入图片描述

图6. 使用ACE损失函数的计数模型处理的真实图片

前四列图片显示我们的模型正确识别的示例。右上角图像已正确识别,但标注是错误的。

4.4 复杂度分析

  在表5中,我们将ACE的参数,运行时内存和运行时间与CTC和注意力的参数,运行时内存和运行时间进行比较。在12GB内存的单个NVIDIA TITAN X图形卡上使用minibatch 64和模型预测长度T = 144执行结果。与CTC类似,提出的ACE不需要任何参数来完成其功能。由于其简单性,ACE需要运行时内存,比CTC和注意力少五倍。此外,它的速度至少是CTC和注意力的30倍。值得注意的是,凭借所有这些优势,提出的ACE实现的性能与CTC和注意力相当或更高(括号中的标签提供了错误的预测)。

在这里插入图片描述

表5. CTC,Attention和ACE的参数运行内存和速度

5. 结论

  本文提出了一种新颖,直观的ACE损失函数,用于解决序列识别问题,对CTC和注意力具有竞争性能。由于其简单性,ACE损失函数很容易通过简单地用ACE替换CTC,快速实现只有四个基本公式,快速推断并在大约 O ( 1 ) ​ O(1)​ O(1) 并行传播,并显示边际内存要求。还研究了ACE损失函数的两个有效特性:(1)它可以很容易地处理边缘适应的2D预测问题(2)它不需要用于监督的字符顺序信息,这允许它超越序列识别问题,例如计数问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值