《Scene Text Recognition with Permuted Autoregressive Sequence Models》论文翻译
文章目录
- 《Scene Text Recognition with Permuted Autoregressive Sequence Models》论文翻译
- Abstract
- 1、Introduction
- 2、Related Work
- 3、Permuted Autoregressive Sequence Models
- 3.1、Model Architecture
- 3.2、Permutation Language Modeling
- 3.3、Decoding Schemes
- 4、Results and Analysis
论文链接: https://arxiv.org/abs/2207.06966
代码地址:https://github.com/baudm/parseq
Abstract
PARSeq通过排列语言建模来学习具有共享权重的内部自回归语言模型的集合。它统一了上下文无关的非自回归和上下文感知的自回归推理,并使用双向上下文的细化迭代。
1、Introduction
场景文本识别(STR)是一项重要的视觉任务,但在部分文本无法阅读的情况下,例如遮挡,图像特征本身不够做出准确的推断。在这种情况下,语言语义通常用于帮助识别过程。上下文感知的STR方法包含了来自词表示模型或字典,或从数据中学习来进行序列建模。
序列建模能够结合图像特征和上下文语义学习端到端可训练语言模型(LM)。通过自回归(AR)约束在上下文语义上进行训练,这个上下文语义来自于过去而不是反方向。AR模型有两个固有的限制。首先,该模型只能在一个方向上学习依赖关系——通常是从左到右(LTR)的方向。这种单向性导致AR模型偏向于单一的方向,容易导致错误的后缀或与方向相关的预测。其次,在推理过程中,AR模型只能以与训练相同的方向连续输出标记。这被称为下一个标记解码或单调的AR解码。
排列语言建模(PLM)最初是为大规模语言预训练而提出的,但最近的工作已经将其应用于基于Transformer的广义序列模型学习,能够采用不同的解码方案。本文中,我们将PLM用于STR。PLM可以被认为是AR建模的泛化,而PLM训练的模型可以被看作是具有共享架构和权重的AR模型的集合。通过使用注意掩模来动态指定token依赖关系,这样的模型,如图2所示,可以学习和使用给定输入上下文的任意子集的条件字符概率,从而实现单调的AR解码,并行的非AR解码,甚至迭代细化。
本文中,我们提出了一个针对STR的排列自回归序列(PARSeq)模型。使用PLM训练的PARSeq是一个统一的STR模型,结构简单,但能够进行上下文无关和上下文感知推理,以及使用双向(封闭)上下文进行迭代细化。PARSeq在所有字符集的合成和真实训练数据的STR基准测试上都获得了SOTA结果,同时在参数量、FlOPS和推理耗时等方面是最佳的。为了进行更全面的比较,我们还在更大、更困难的真实数据集上进行了基准测试,这些数据集包含封闭的和任意面向的文本)。PARSeq也同样在这些数据集中获得了SOTA的结果。
2、Related Work
3、Permuted Autoregressive Sequence Models
3.1、Model Architecture
多头注意力(MHA)被PARSeq广泛使用。我们将其表示为MHA(q、k、v、m),其中q、k和v表示所需的参数查询、键和值,而m表示可选的注意掩码。
PARSeq是一个编码器-解码器架构。编码器有12层,而解码器只有一层。这种深-浅层配置是一种刻意的设计选择,它尽量减少了模型的总体计算需求,同时对性能的影响可以忽略不计。
ViT编码器。一个ViT层包含一个用于自我注意的MHA模块,即q = k = v。该编码器是一个12层的ViT。图像 x ∈ R W × H × C x \in \R^{W \times H \times C} x∈RW×H×C,标记均匀分成 p w × p h p_{w} \times p_{h} pw×ph块,展平每个patch,然后embeding成 d m o d e l d_{model} dmodel维度的特征,从而产生 ( W H ) / ( p w p h ) (WH)/(p_{w}p_{h}) (WH)/(pwph)个token。在被第一个维ViT层处理之前,将学习到的等维位置嵌入添加到标记中。在输入到第一层ViT前需要向每个token中添加可学习的位置embeddings。
与标准的ViT相比,所有的输出token输入到解码器中:
z
=
E
n
c
(
x
)
∈
R
W
H
p
w
p
h
×
d
m
o
d
e
l
z = Enc(x) \in \R^{\frac{WH}{p_{w}p_{h}}\times d_{model}}
z=Enc(x)∈RpwphWH×dmodel
**Visio语言解码器。**解码器与前面Transformer解码器有相同的架构,但使用两倍的注意头数量,即nhead =
d
m
o
d
e
l
d_{model}
dmodel/32。它有三个输入,包括位置、上下文和图像token,以及一个可选的注意mask。
解码器的第一个MHA计算公式如下:
h
c
=
P
+
M
H
A
(
p
,
c
,
c
,
m
)
∈
R
(
T
+
1
)
×
d
m
o
d
e
l
h_{c}=P+MHA(p,c,c,m)\in\R^{(T+1)\times d_{model}}
hc=P+MHA(p,c,c,m)∈R(T+1)×dmodel
其中,T是上下文的长度,
P
∈
R
(
T
+
1
)
×
d
m
o
d
e
l
P\in \R^{(T+1)\times d_{model}}
P∈R(T+1)×dmodel是位置token,
c
∈
R
(
T
+
1
)
×
d
m
o
d
e
l
c\in \R^{(T+1)\times d_{model}}
c∈R(T+1)×dmodel是上下文位置的embeding,
m
∈
R
(
T
+
1
)
×
d
m
o
d
e
l
m\in \R^{(T+1)\times d_{model}}
m∈R(T+1)×dmodel是可选的attention的mask。
位置token是为了预测目标的位置,每一个都与输出中的特定位置有直接对应关系。这种参数化类似于双流attention的查询流。它将上下文与目标位置解耦,允许模型从PLM中学习。如果没有位置令牌,也就是说,如果上下文令牌像标准变形金刚中那样被用作查询本身,模型将不会从PLM学习到任何有意义的东西,功能类似于标准AR模型。
attention的mask根据模型的不同,在训练过程中,随机排列生成的。使用排列自回归序列模型进行推理的场景文本识别中,它可以是一个标准的从左到右的前向mask(AR解码),一个封闭mask(迭代细化),或者完全没有mask(NAR解码)。
第二个MHA用于图像位置注意:
h
i
=
h
c
+
M
H
A
(
h
c
,
z
,
z
)
∈
R
(
T
+
1
)
×
d
m
o
d
e
l
h_{i}=h_{c}+MHA(h_{c},z,z)\in\R^{(T+1)\times d_{model}}
hi=hc+MHA(hc,z,z)∈R(T+1)×dmodel
其中,没有使用attention的mask,最后的隐藏层通过MLP进行输出:
h
d
e
c
=
h
i
+
M
L
P
(
h
i
)
∈
R
(
T
+
1
)
×
d
m
o
d
e
l
h_{dec}=h_{i}+MLP(h_{i})\in\R^{(T+1)\times d_{model}}
hdec=hi+MLP(hi)∈R(T+1)×dmodel
最后,通过Liner层
y
=
L
i
n
e
a
r
(
h
d
e
c
)
∈
R
(
T
+
1
)
(
S
+
1
)
y=Linear(h_{dec})\in \R^{(T+1)(S+1)}
y=Linear(hdec)∈R(T+1)(S+1)得到输出logit。其中,S表示字典的长度,1为最后的结束符,总之解码层的公式计算如下:
y
=
D
e
c
(
z
,
p
,
c
,
m
)
∈
R
(
T
+
1
)
(
S
+
1
)
y=Dec(z,p,c,m)\in \R^{(T+1)(S+1)}
y=Dec(z,p,c,m)∈R(T+1)(S+1)
3.2、Permutation Language Modeling
给定一个图像x,我们希望在模型参数 θ \theta θ的集合下,最大化其文本标签 y = [ y 1 , y 2 , … … , y T ] y = [y_1,y_2,……,y_T ] y=[y1,y2,……,yT]的概率。在标准的AR建模中,根据排序使用链式分解, [ 1 , 2 , . . . , T ] [1,2,...,T] [1,2,...,T],得到模型 l o g p ( y ∣ x ) = ∑ t = 1 T l o g p θ ( y t ∣ y < t , x ) logp(y|x)=\sum^{T}_{t=1}log p_{\theta}(y_t|y<t,x) logp(y∣x)=∑t=1Tlogpθ(yt∣y<t,x)。但是,transformer是并行的处理所有的token,允许输出的token能够依赖于过去所有的token。为了拥有一个有效的AR模型,过去的token不能依赖未来的token。Transformer中的AR中被强制使注意mask。例如下表a,一个三元素序列y的标准AR模型将具有表中所示的注意mask。
PLM背后的关键想法是要训练好所有的T,那么概率的因式分解为:
l
o
g
p
(
y
∣
x
)
=
E
z
∼
z
T
[
∑
t
=
1
T
l
o
g
p
θ
(
y
z
t
∣
y
z
<
t
,
X
)
]
logp(y|x)=E_{z\sim z_{T}}\left[\sum^{T}_{t=1}logp_{\theta}(y_{z_{t}}|y_{z_{<t}},X)\right]
logp(y∣x)=Ez∼zT[t=1∑Tlogpθ(yzt∣yz<t,X)]
为了在transformer中实现PLM,我们不需要实际排列文本标签y。相反,我们通过制作注意力掩模来强制执行z所指定的顺序。作为一个具体的例子,上表中所示的是一个三元素序列的四种不同排列的注意掩码。请注意,虽然输入和输出序列的顺序保持不变,但所有四个序列都对应于由给定的排列或分解顺序指定的不同的AR模型。考虑到这一点,可以看出,标准的AR训练只是PLM其中一个排列
[
1
,
2
,
.
.
.
,
T
]
[1,2,...,T]
[1,2,...,T]的特殊情况。
在实际中,我们不能在所有的T上进行训练,这会导致由于因式分解而使计算需求的指数级增长。作为一种折中,我们只使用其中K种可能的T序列,我们以特定的方式选择K个排列,而不是均匀抽样。我们使用K/2个排列对。前半部分包括从左到右的排列, [ 1 , 2 , . . . , T ] [1,2,...,T] [1,2,...,T],和K/2−1随机抽样排列。另一半是第一个版本的翻转版本。我们发现,这种抽样过程导致了一个更稳定的训练。
对于K个排列和标签
y
^
\hat{y}
y^,训练损失是每个排列的注意mask
m
k
m_k
mk交叉熵损失的平均值:
L
=
1
K
∑
k
=
1
K
L
c
e
(
y
k
,
y
^
)
L = \frac{1}{K}\sum^{K}_{k=1}L_{ce}(y_{k},\hat{y})
L=K1k=1∑KLce(yk,y^)
3.3、Decoding Schemes
**自回归(AR)**解码每次迭代都会生成一个新的token。始终使用从左到右的注意mask(表2a)。对于第一次迭代,上下文设置为[B],只使用第一个位置查询标记 p 1 p_1 p1。对于任何后续的迭代i,使用位置查询 [ p 1 , … , p i ] [p_1,…,p_i ] [p1,…,pi],而上下文被设置为之前的输出。
**非自回归(NAR)**解码可以同时生成所有的输出token。使用了所有的位置查询 [ p 1 , … , p T + 1 ] [p_1,…,p_{T +1}] [p1,…,pT+1],但没有使用注意掩模(表2b)。上下文总是[B]。
迭代细化 无论初始解码方法(AR或NAR)如何,都可以执行。前面的输出(在[E]处被截断)作为当前迭代的上下文,类似于AR解码,但是所有的位置查询 [ p 1 , … , p T + 1 ] [p_1,…,p_{T +1}] [p1,…,pT+1]]都会被使用。使用了封闭式注意mask(表2c)。它从一个完整掩码开始,然后屏蔽匹配的token位置。