Paper : https://arxiv.org/abs/2006.00753
SMA 首先使用结构图表示去编码图像中的 object-object,object-text 和 text-text 之间的关系,然后使用一 个多模态图注意力网络去理解,最后,由全局-局部注意回答模块处理来自上述模块的输出,以迭代地产生包含OCR和固定词汇的答案。
Pipeline
SMA 模型对具有多种关系类型的图进行推理。
- Question Self-Attention Module 把问题分解为六个子组件,包括 objects, object-object relations, object-text relations, texts, text-text relations and text-object relations。
- 使用 objects/text 节点构建一个 role-aware graph。节点之间的连接由相对距离决定。使用 question-conditioned graph attention module 更新这个图。在 SMA 中,没有使用整个问题指导图更新,只是使用了确定类型的问题组件更新对应的图组件。例如,与问题相关的 object 只更新object 节点,与问题相关的 object-text 只更新 object-text 边。
- 使用 global-local attentional module 产生一个不定长的答案。
Question Self-Attention Module
使用问题序列生成自注意权重,用于生成以问题为条件的 object 和 text 特征;和 6 个分解后的问题特征,用来指导 question conditioned graph attention.
因为问题 Q Q Q 不仅包含 object 和 text 节点信息,也包含他们之间的 4 类关系 ( object-object, object-text, text-object, text-object ),此模块把问题分解为 6 个子组件。
给定
T
T
T 个单词
q
=
{
q
t
}
t
=
1
T
q = \{ q_t\}_{t=1}^T
q={qt}t=1T 的问题
Q
Q
Q ,首先使用预训练的 BERT 把单词嵌入到特征序列
{
e
t
}
t
=
1
T
\{e_t\}_{t=1}^T
{et}t=1T 中获得
{
x
t
b
e
r
t
}
t
=
1
T
\{\mathbf{x}_t^{bert}\}_{t=1}^T
{xtbert}t=1T。然后使用 6 个单独的带有 softmax 层的双层 MLP 生成 6 组注意力权重,例如
{
a
t
o
}
t
=
1
T
,
{
a
t
o
o
}
t
=
1
T
,
{
a
t
o
t
}
t
=
1
T
,
{
a
t
t
}
t
=
1
T
,
{
a
t
t
t
}
t
=
1
T
,
{
a
t
t
o
}
t
=
1
T
\{a_t^o\}_{t=1}^T,\{a_t^{oo}\}_{t=1}^T,\{a_t^{ot}\}_{t=1}^T,\{a_t^{t}\}_{t=1}^T,\{a_t^{tt}\}_{t=1}^T,\{a_t^{to}\}_{t=1}^T
{ato}t=1T,{atoo}t=1T,{atot}t=1T,{att}t=1T,{attt}t=1T,{atto}t=1T 。使用这些权重计算 6 个
{
x
t
b
e
r
t
}
t
=
1
T
\{\mathbf{x}_t^{bert}\}_{t=1}^T
{xtbert}t=1T 的注意力权重和:
s
o
,
s
o
o
,
s
o
t
,
s
t
,
s
t
t
,
s
t
o
s^o, s^{oo}, s^{ot}, s^{t}, s^{tt}, s^{to}
so,soo,sot,st,stt,sto,为分解后的问题表示 object 节点,object-object ( oo ) 边,object-text ( ot ) 边,text 节点,text-text ( tt ) 边缘和 text-object ( to ) 边缘。以
{
a
t
o
}
t
=
1
T
\{a_t^o\}_{t=1}^T
{ato}t=1T 和
s
o
s^o
so 作为例子:
a
t
o
=
exp
(
M
L
P
o
b
j
a
(
x
t
b
e
r
t
)
)
∑
i
=
1
T
exp
(
M
L
P
o
b
j
a
(
x
t
b
e
r
t
)
)
,
t
=
1
,
.
.
.
,
T
;
s
o
=
∑
t
=
1
T
a
t
o
x
t
b
e
r
t
(1)
a_t^o = \frac{\exp(MLP_{obj}^a(\mathbf{x}_t^{bert}))}{\sum_{i=1}^T \exp(MLP_{obj}^a(\mathbf{x}_t^{bert}))}, t=1,...,T; \;\;\; s^o = \sum_{t=1}^T a_t^o \mathbf{x}_t^{bert} \tag{1}
ato=∑i=1Texp(MLPobja(xtbert))exp(MLPobja(xtbert)),t=1,...,T;so=t=1∑Tatoxtbert(1)
使用分解后的问题特征指导 question conditioned graph attention 。
还学习了分解后的子组件的两组自注意力权重,即
{
w
o
,
w
o
o
,
w
o
t
}
,
{
w
t
,
w
t
t
,
w
t
o
}
\{w^o, w^{oo}, w^{ot}\}, \{w^t, w^{tt}, w^{to}\}
{wo,woo,wot},{wt,wtt,wto},其中每个
w
w
w 是一个标量。 它们计算如下:
w
o
,
o
o
,
o
t
=
1
Z
o
b
j
exp
(
W
w
o
,
o
o
,
o
t
s
)
,
w
t
,
t
t
,
t
o
=
1
Z
t
e
x
t
exp
(
W
w
t
,
t
t
,
t
o
s
)
,
(2)
w^{o,oo,ot} = \frac{1}{Z^{obj}} \exp(\mathbf{W}_{w}^{o,oo,ot} \mathbf{s}), w^{t,tt,to} = \frac{1}{Z^{text}} \exp(\mathbf{W}_{w}^{t,tt,to} \mathbf{s}), \tag{2}
wo,oo,ot=Zobj1exp(Wwo,oo,ots),wt,tt,to=Ztext1exp(Wwt,tt,tos),(2)
其中
s
=
1
T
∑
t
=
1
T
x
t
b
e
r
t
,
Z
o
b
j
=
exp
(
W
w
o
s
)
+
exp
(
W
w
o
o
s
)
+
exp
(
W
w
o
t
s
)
,
Z
t
e
x
t
=
exp
(
W
w
t
s
)
+
exp
(
W
w
t
t
s
)
+
exp
(
W
w
t
o
s
)
\mathbf{s} = \frac{1}{T}\sum_{t=1}^T \mathbf{x}_t^{bert}, Z^{obj} = \exp(\mathbf{W}_w^o \mathbf{s})+ \exp(\mathbf{W}_w^{oo} \mathbf{s})+\exp(\mathbf{W}_w^{ot} \mathbf{s}), Z^{text} = \exp(\mathbf{W}_w^t \mathbf{s})+ \exp(\mathbf{W}_w^{tt} \mathbf{s})+\exp(\mathbf{W}_w^{to} \mathbf{s})
s=T1∑t=1Txtbert,Zobj=exp(Wwos)+exp(Wwoos)+exp(Wwots),Ztext=exp(Wwts)+exp(Wwtts)+exp(Wwtos) 在某种程度上,这些权重扮演着先验概率的角色,因为它们只能通过问题来计算。 两组问题自注意力权重将分别用于生成以问题为条件的 object 和 text 特征
g
o
b
j
\mathbf{g}_{obj}
gobj 和
g
t
e
x
t
\mathbf{g}_{text}
gtext
Question Conditioned Graph Attention Module
生成并理解一个 objects 和 texts 的异构图
Role-aware Heterogeneous Graph Construction
‘Role’ 表示节点的类型。首先构建一个节点为 objects 和 texts 的异构图,边表示在两个特殊节点之间的关系,每一个节点可以连接 5 个 object 节点和 5 个 text 节点,边可以分为四种类型表示不同的 role : object-object, object-text, text-text, text-object 。以构建 object-object 边为例,对于 object 节点 o i o_i oi ,对剩下的 object 根据它们到 o i o_i oi 的空间距离排序,把排名前 5 的 object 节点作为邻居 N i o o \mathcal{N}_i^{oo} Nioo。根据它们的相对位置关系建立两个节点的边的关系。 o i o_i oi 的位置表示为 [ x i c , y i c , w i , h i ] [x_i^c, y_i^c, w_i, h_i] [xic,yic,wi,hi] (中心坐标,高,宽),另一个节点 o j o_j oj 的位置表示为 [ x i t l , y i t l , x j b r , y j b r , w j , h j ] [x_i^{tl}, y_i^{tl}, x_j^{br}, y_j^{br}, w_j, h_j] [xitl,yitl,xjbr,yjbr,wj,hj] ( 左上角坐标,右下角坐标,宽,高 ),然后它们的边关系为 e i j = [ x j t l − x i c w i , y j t l − y i c h i , x j b r − x i c w i , y j b r − x i c h i , w j ⋅ h j w i ⋅ h i ] \mathbf{e}_{ij} = [\frac{x_j^{tl} - x_i^c}{w_i}, \frac{y_j^{tl} - y_i^c}{h_i}, \frac{x_j^{br} - x_i^c}{w_i}, \frac{y_j^{br} - x_i^c}{h_i}, \frac{w_j \cdot h_j}{w_i \cdot h_i}] eij=[wixjtl−xic,hiyjtl−yic,wixjbr−xic,hiyjbr−xic,wi⋅hiwj⋅hj]
Question Conditioned Graph Attention
使用分解的问题特征
s
\mathbf{s}
s 来理解 role-aware graph 。把当做一个注意力机制。用不同的问题特征根据它们的角色 ( role ) 更新图的不同部分。例如,使用与 object 相关的问题特征
s
o
\mathbf{s}^o
so 指导 object 节点的注意力权重,使用
s
t
o
\mathbf{s}^{to}
sto 指导 text-object 边的注意力权重。分别计算图中 6 个角色的注意力权重:object 节点 (
p
o
\mathbf{p}^o
po ),text 节点 (
p
t
\mathbf{p}^t
pt ),object-object 边 (
p
o
o
\mathbf{p}^{oo}
poo ),object-text 边 (
p
o
t
\mathbf{p}^{ot}
pot ),text-text 边 (
p
t
t
\mathbf{p}^{tt}
ptt ),text-object 边 (
p
t
o
\mathbf{p}^{to}
pto ),可以写成
p
m
=
Att
m
(
{
x
o
b
j
}
,
{
x
t
e
x
t
}
,
{
e
i
j
}
,
s
m
)
(3)
\mathbf{p}^m = \text{Att}_m (\{\mathbf{x}^{obj}\}, \{\mathbf{x}^{text}\}, \{\mathbf{e}^{ij}\}, \mathbf{s}^m) \tag{3}
pm=Attm({xobj},{xtext},{eij},sm)(3)
Att
m
\text{Att}_m
Attm 是使用问题特征和图中特殊的节点/边计算注意力权重的注意力机制,
m
=
{
o
,
o
o
,
o
t
,
t
,
t
t
,
t
o
}
m = \{o,oo,ot,t,tt,to\}
m={o,oo,ot,t,tt,to}。
-
object 节点注意力权重 object 表示为 2048 维的外形特征 { x f r , i o } i = 1 N \{\mathbf{x}_{fr,i}^o\}_{i=1}^N {xfr,io}i=1N 和相对位置坐标 { x b b o x , i o } i = 1 N \{\mathbf{x}_{bbox,i}^o\}_{i=1}^N {xbbox,io}i=1N ,在 s o \mathbf{s}^o so 的指导下计算 object 节点的注意力权重 :
{ x ^ i o b j = LN ( W f r o x f r , i o ) + LN ( W b o x b b o x , i o ) , p i o ′ = w o ⊤ [ ReLU ( W s o s o ) ∘ ReLU ( W x o x ^ i o b j ) ] , p i o = exp ( p i o ′ ) / ∑ j = 1 N exp ( p j o ′ ) , i = 1 , . . . , N , (4) \begin{cases} & \hat{\mathbf{x}}_i^{obj} = \text{LN}(\mathbf{W}_{fr}^o \mathbf{x}_{fr,i}^o) + \text{LN}(\mathbf{W}_{b}^o \mathbf{x}_{bbox,i}^o), \\ & p_i^{o'} = \mathbf{w}_o^{\top}[\text{ReLU}(\mathbf{W}_s^o \mathbf{s}^o) \circ \text{ReLU}(\mathbf{W}_x^o \hat{\mathbf{x}}^{obj}_i)], \\ & p_i^o = \exp(p_i^{o'}) / \sum_{j=1}^N \exp(p_j^{o'}), i =1,...,N, \end{cases} \tag{4} ⎩⎪⎨⎪⎧x^iobj=LN(Wfroxfr,io)+LN(Wboxbbox,io),pio′=wo⊤[ReLU(Wsoso)∘ReLU(Wxox^iobj)],pio=exp(pio′)/∑j=1Nexp(pjo′),i=1,...,N,(4)
其中 LN ( ⋅ ) \text{LN}(\cdot) LN(⋅) 是层正则化, W ∗ ∗ , w ∗ \mathbf{W}_*^*, \mathbf{w}_* W∗∗,w∗ 是要学习的线性转换参数。最后,获得 object 节点的注意力权重 p o = { p i o } i = 1 N \mathbf{p}^o = \{p_i^o\}_{i=1}^N po={pio}i=1N -
text 节点注意力权重 与 M4C 相似,使用多个特征的结合丰富 OCR 的表示。300 维的 FastText 特征 { x f t , i t } i = N + 1 N + M \{\mathbf{x}_{ft,i}^t\}_{i=N+1}^{N+M} {xft,it}i=N+1N+M,2048 维的外形特征 { x f r , i t } i = N + 1 N + M \{\mathbf{x}_{fr,i}^t\}_{i=N+1}^{N+M} {xfr,it}i=N+1N+M ,604 维的 PHOC 特征 { x p , i t } i = N + 1 N + M \{\mathbf{x}_{p,i}^t\}_{i=N+1}^{N+M} {xp,it}i=N+1N+M ,4 维的边框特征 { x b b o x , i t } i = N + 1 N + M \{\mathbf{x}_{bbox,i}^t\}_{i=N+1}^{N+M} {xbbox,it}i=N+1N+M ,除此之外还有 512 维的 CNN 特征 { x t r , i t } i = N + 1 N + M \{\mathbf{x}_{tr,i}^t\}_{i=N+1}^{N+M} {xtr,it}i=N+1N+M ( 来自于 RecogCNN ) 。 在 s t \mathbf{s}^t st 的指导下计算 text 节点的注意力权重 :
{ x ^ i t e x t = LN ( W f t t x f t , i t + W f r t x f r , i t + W p t x p , i t + W t r t x t r , i t ) + LN ( W b t x b b o x , i t ) , p i t ′ = w t ⊤ [ ReLU ( W s t s t ) ∘ ReLU ( W x t x ^ i t e x t ) ] , p i t = exp ( p i t ′ ) / ∑ j = N + 1 N + M exp ( p j t ′ ) , i = N + 1 , . . . , N + M , (5) \begin{cases}& \hat{\mathbf{x}}_i^{text} = \text{LN}(\mathbf{W}_{ft}^t \mathbf{x}_{ft,i}^t + \mathbf{W}_{fr}^t \mathbf{x}_{fr,i}^t + \mathbf{W}_{p}^t \mathbf{x}_{p,i}^t + \mathbf{W}_{tr}^t \mathbf{x}_{tr,i}^t) + \text{LN}(\mathbf{W}_{b}^t \mathbf{x}_{bbox,i}^t), \\& p_i^{t'} = \mathbf{w}_t^{\top}[\text{ReLU}(\mathbf{W}_s^t \mathbf{s}^t) \circ \text{ReLU}(\mathbf{W}_x^t \hat{\mathbf{x}}^{text}_i)], \\& p_i^t = \exp(p_i^{t'}) / \sum_{j=N+1}^{N+M} \exp(p_j^{t'}), i =N+1,...,N+M,\end{cases} \tag{5} ⎩⎪⎨⎪⎧x^itext=LN(Wfttxft,it+Wfrtxfr,it+Wptxp,it+Wtrtxtr,it)+LN(Wbtxbbox,it),pit′=wt⊤[ReLU(Wstst)∘ReLU(Wxtx^itext)],pit=exp(pit′)/∑j=N+1N+Mexp(pjt′),i=N+1,...,N+M,(5)最后,获得 text 节点的注意力权重 p t = { p i t } i = N = 1 N + M \mathbf{p}^t = \{p_i^t\}_{i=N=1}^{N+M} pt={pit}i=N=1N+M
-
边的注意力权重 边的注意力权重需要考虑两个节点之间的关系,以计算 object-object 的注意力权重 p o o \mathbf{p}^{oo} poo 为例,其他的类似。主要有两步,首先,计算所有连接节点 o i o_i oi 的边的注意力权重 q i o o = { q i j o o } j ∈ N i o o \mathbf{q}_i^{oo} = \{q_{ij}^{oo}\}_{j \in \mathcal{N}_i^{oo}} qioo={qijoo}j∈Nioo
{ x ^ i j o o = f o o ( [ e i j ; x ^ i o b j ] ) , q i j o o ′ = w o o ⊤ [ ReLU ( W s o o s o o ) ∘ ReLU ( W x o o x ^ i j o o ) ] , q i j o o = exp ( q i j o o ′ ) / ∑ k ∈ N i o o exp ( q i k o o ′ ) , j ∈ N i o o , (6) \begin{cases}& \hat{\mathbf{x}}_{ij}^{oo} = \text{f}^{oo} ([\mathbf{e}_{ij} ; \hat{\mathbf{x}}_i^{obj}]), \\& q_{ij}^{oo'} = \mathbf{w}_{oo}^{\top}[\text{ReLU}(\mathbf{W}_s^{oo} \mathbf{s}^{oo}) \circ \text{ReLU}(\mathbf{W}_x^{oo} \hat{\mathbf{x}}^{oo}_{ij})], \\& q_{ij}^{oo} = \exp(q_{ij}^{oo'}) / \sum_{k \in \mathcal{N}_i^{oo}} \exp(q_{ik}^{oo'}), j \in \mathcal{N}_i^{oo},\end{cases} \tag{6} ⎩⎪⎨⎪⎧x^ijoo=foo([eij;x^iobj]),qijoo′=woo⊤[ReLU(Wsoosoo)∘ReLU(Wxoox^ijoo)],qijoo=exp(qijoo′)/∑k∈Niooexp(qikoo′),j∈Nioo,(6)
f o o \text{f}^{oo} foo 是一个 MLP,编码初始化 o o oo oo 边特征 ( 由关系特征 e i j \mathbf{e}_{ij} eij 和连接节点特征 x ^ i o b j \hat{\mathbf{x}}_i^{obj} x^iobj 拼接 ),边的注意力权重 q i o o \mathbf{q}_{i}^{oo} qioo 。然后,计算所有 object 节点的 o o oo oo 边的注意力权重
{ x ~ i o o = ∑ j ∈ N i o o q i j o o x ^ i j o o , p i o o ′ = w o o ′ ⊤ [ ReLU ( W s o o ′ s o o ) ∘ ReLU ( W x o o ′ x ~ i o o ) ] , p i o o = exp ( p i o o ′ ) / ∑ j = 1 N exp ( p j o o ′ ) , i = 1 , . . . , N , (7) \begin{cases}& \tilde{\mathbf{x}}_{i}^{oo} = \sum_{j \in \mathcal{N}_{i}^{oo}} q_{ij}^{oo} \hat{\mathbf{x}}_{ij}^{oo}, \\& p_{i}^{oo'} = \mathbf{w}_{oo'}^{\top}[\text{ReLU}(\mathbf{W}_s^{oo'} \mathbf{s}^{oo}) \circ \text{ReLU}(\mathbf{W}_x^{oo'} \tilde{\mathbf{x}}^{oo}_{i})], \\& p_{i}^{oo} = \exp(p_{i}^{oo'}) / \sum_{j=1}^N \exp(p_{j}^{oo'}), i = 1, ...,N,\end{cases} \tag{7} ⎩⎪⎨⎪⎧x~ioo=∑j∈Niooqijoox^ijoo,pioo′=woo′⊤[ReLU(Wsoo′soo)∘ReLU(Wxoo′x~ioo)],pioo=exp(pioo′)/∑j=1Nexp(pjoo′),i=1,...,N,(7)
x ~ i j o o \tilde{\mathbf{x}}_{ij}^{oo} x~ijoo 是以问题为条件的节点 o i o_i oi 的 o o oo oo 边的特征。使用相同的方法计算 p o t , p t t , p t o \mathbf{p}^{ot}, \mathbf{p}^{tt}, \mathbf{p}^{to} pot,ptt,pto 。
Weighting Module
每个 object 和 text 节点通过图注意力模块输出三个注意力权重。每个 object 节点
o
i
o_i
oi ,都有
p
i
o
,
p
i
o
o
,
p
i
t
o
p_i^o, p_i^{oo}, p_i^{to}
pio,pioo,pito ;每个 text 节点
t
i
t_i
ti ,都有
p
i
t
,
p
i
t
t
,
p
i
t
o
p_i^t, p_i^{tt}, p_i^{to}
pit,pitt,pito 。使用问题自注意力权重和它们结合,每一个 object 节点,最终的权重分数通过三部分的权重和计算:
α
i
o
=
w
o
p
i
o
+
w
o
o
o
i
o
o
+
w
o
t
p
i
o
t
,
i
=
1
,
.
.
.
,
N
,
(8)
\alpha_i^o = w^o p_i^o + w^{oo} o_i^{oo} + w^{ot} p_i^{ot} , i=1,...,N, \tag{8}
αio=wopio+woooioo+wotpiot,i=1,...,N,(8)
每一个 text 节点最终的权重:
α
i
t
=
w
t
p
i
t
+
w
t
t
o
i
t
t
+
w
t
o
p
i
t
o
,
i
=
1
,
.
.
.
,
N
,
(9)
\alpha_i^t = w^t p_i^t + w^{tt} o_i^{tt} + w^{to} p_i^{to} , i=1,...,N, \tag{9}
αit=wtpit+wttoitt+wtopito,i=1,...,N,(9)
注意
∑
i
=
1
N
α
i
o
=
1
\sum_{i=1}^N \alpha_i^o = 1
∑i=1Nαio=1,因为
w
o
+
w
o
o
+
w
o
t
=
1
,
∑
i
=
1
N
p
i
o
=
1
,
∑
i
=
1
N
p
i
o
o
=
1
,
∑
i
=
1
N
p
i
o
t
=
1
w^o + w^{oo} + w^{ot} = 1, \sum_{i=1}^N p_i^o =1, \sum_{i=1}^N p_i^{oo} =1, \sum_{i=1}^N p_i^{ot} =1
wo+woo+wot=1,∑i=1Npio=1,∑i=1Npioo=1,∑i=1Npiot=1 。也有
∑
i
=
N
+
1
N
+
M
α
i
t
=
1
\sum_{i=N+1}^{N+M} \alpha_i^t = 1
∑i=N+1N+Mαit=1 。权重
{
α
i
o
}
i
=
1
N
\{\alpha_i^o\}_{i=1}^N
{αio}i=1N 和
{
α
i
t
}
i
=
N
+
1
N
+
1
\{\alpha_i^t\}_{i=N+1}^{N+1}
{αit}i=N+1N+1 计算了 object/text 节点和问题的相关性,用来生成以问题为条件的 object 和 text 特征:
g
o
b
j
=
∑
i
=
1
N
α
i
o
⋅
x
^
i
o
b
j
,
g
t
e
x
t
=
∑
i
=
N
+
1
N
+
M
α
i
t
⋅
x
^
i
t
e
x
t
(10)
\mathbf{g}_{obj} = \sum_{i=1}^N \alpha_i^o \cdot \hat{\mathbf{x}}_i^{obj}, \;\;\;\;\ \mathbf{g}_{text} = \sum_{i=N+1}^{N+M} \alpha_i^t \cdot \hat{\mathbf{x}}_i^{text} \tag{10}
gobj=i=1∑Nαio⋅x^iobj, gtext=i=N+1∑N+Mαit⋅x^itext(10)
Global-Local Attentional Answering Module
全局图特征
g
o
b
j
\mathbf{g}_{obj}
gobj 和
g
t
e
x
t
\mathbf{g}_{text}
gtext 不是直接和全局问题特征
s
o
,
s
o
o
,
s
o
t
,
s
t
,
s
t
t
,
s
t
o
\mathbf{s}^{o}, \mathbf{s}^{oo}, \mathbf{s}^{ot}, \mathbf{s}^{t}, \mathbf{s}^{tt}, \mathbf{s}^{to}
so,soo,sot,st,stt,sto 融合,而是通过和局部的 OCR 节点嵌入输入到 transformer 的答案模块中进行更新。与 object 相关的和与 text 相关的问题特征拼接在一起:
s
‾
o
=
[
s
o
;
s
o
o
,
s
o
t
]
,
s
‾
t
=
[
s
t
,
s
t
t
,
s
t
o
]
(11)
\overline{\mathbf{s}}^o = [s^o; s^{oo}, s^{ot}], \;\; \overline{\mathbf{s}}^t = [s^t,s^{tt}, s^{to}] \tag{11}
so=[so;soo,sot],st=[st,stt,sto](11)
s
‾
o
,
s
‾
t
,
g
o
b
j
,
g
t
e
x
t
\overline{\mathbf{s}}^o, \overline{\mathbf{s}}^t, \mathbf{g}_{obj}, \mathbf{g}_{text}
so,st,gobj,gtext 是一起输入到 transformer 层,更新为
s
~
o
,
s
~
t
,
g
~
o
b
j
,
g
~
t
e
x
t
\tilde{\mathbf{s}}^o, \tilde{\mathbf{s}}^t, \tilde{\mathbf{g}}_{obj}, \tilde{\mathbf{g}}_{text}
s~o,s~t,g~obj,g~text 。
然后,我们将更新的特征
g
~
o
b
j
\tilde{\mathbf{g}}_{obj}
g~obj 和
g
~
t
e
x
t
\tilde{\mathbf{g}}_{text}
g~text 与它们各自的问题表示形式融合在一起,如下所示
g
O
B
J
=
g
~
o
b
j
∘
s
~
o
,
g
T
E
X
T
=
g
~
t
e
x
t
∘
s
~
t
(12)
\mathbf{g}_{OBJ} = \tilde{\mathbf{g}}_{obj} \circ \tilde{\mathbf{s}}^o, \;\;\; \mathbf{g}_{TEXT} = \tilde{\mathbf{g}}_{text} \circ \tilde{\mathbf{s}}^t \tag{12}
gOBJ=g~obj∘s~o,gTEXT=g~text∘s~t(12)
在第一步预测答案概率
p
a
n
s
1
\mathbf{p}_{ans}^1
pans1
p
a
n
s
1
=
f
p
r
e
d
(
W
g
[
g
O
B
J
;
g
T
E
X
T
]
)
,
(13)
\mathbf{p}_{ans}^1 = \text{f}_{pred} (\mathbf{W}_g[\mathbf{g}_{OBJ}; \mathbf{g}_{TEXT}]), \tag{13}
pans1=fpred(Wg[gOBJ;gTEXT]),(13)
f
p
r
e
d
\text{f}_{pred}
fpred 是一个两分支分数函数,它解决了 TextVQA 任务中答案可能是动态文本在不同问题中发生变化的难题。答案空间是两部分的结合:一个包含 5000 个词的固定词典和从每个特定的图像中提取的动态 OOV OCR tokens。两个分支计算各自的分数。一个分支是一个简单的线性层,把输入映射到 5000 维的分数向量,另一个分支计算输入和每一个更新的 OCR 嵌入的点积。然后两个分支的分数拼接在一起,选择最高的分数作为结果。
在第一步,融合特征的拼接作为输入,在剩下的步骤,使用前一个更新的输出作为输入迭代解码:
p
a
n
s
t
=
f
p
r
e
d
(
g
d
e
c
)
,
t
=
2
,
.
.
.
,
T
,
(14)
\mathbf{p}_{ans}^t = \text{f}_{pred} (\mathbf{g}_{dec}), t=2,...,T, \tag{14}
panst=fpred(gdec),t=2,...,T,(14)
其中
g
d
e
c
\mathbf{g}_{dec}
gdec 是以前一个输出
g
d
e
c
\mathbf{g}^{dec}
gdec 作为输入的答案模块的输出。如果前一个输出来自于 OCR,则
g
d
e
c
\mathbf{g}^{dec}
gdec 是 OCR 嵌入,然后输入到答案模块。否则,通用词汇表的相应线性层权重将变为
g
d
e
c
\mathbf{g}^{dec}
gdec 。我们还将位置嵌入和类型嵌入添加到解码输入中,其中类型嵌入表示此输入是固定词汇还是OCR token。
Experiments
在 TextVQA 上的结果
使用 GT OCR 在 TextVQA 上的结果
在 ST-VQA 上的结果