Paper : https://arxiv.org/abs/2006.00753

SMA 首先使用结构图表示去编码图像中的 object-object,object-text 和 text-text 之间的关系,然后使用一 个多模态图注意力网络去理解,最后,由全局-局部注意回答模块处理来自上述模块的输出,以迭代地产生包含OCR和固定词汇的答案。

SMA :Structured Multimodal Attentions for TextVQA --- 论文阅读笔记

Pipeline

SMA 模型对具有多种关系类型的图进行推理。

  1. Question Self-Attention Module 把问题分解为六个子组件,包括 objects, object-object relations, object-text relations, texts, text-text relations and text-object relations。
  2. 使用 objects/text 节点构建一个 role-aware graph。节点之间的连接由相对距离决定。使用 question-conditioned graph attention module 更新这个图。在 SMA 中,没有使用整个问题指导图更新,只是使用了确定类型的问题组件更新对应的图组件。例如,与问题相关的 object 只更新object 节点,与问题相关的 object-text 只更新 object-text 边。
  3. 使用 global-local attentional module 产生一个不定长的答案。

Question Self-Attention Module

SMA :Structured Multimodal Attentions for TextVQA --- 论文阅读笔记

使用问题序列生成自注意权重,用于生成以问题为条件的 object 和 text 特征;和 6 个分解后的问题特征,用来指导 question conditioned graph attention.

因为问题 QQ 不仅包含 object 和 text 节点信息,也包含他们之间的 4 类关系 ( object-object, object-text, text-object, text-object ),此模块把问题分解为 6 个子组件。

给定 TT 个单词 q={qt}t=1Tq = \{ q_t\}_{t=1}^T 的问题 QQ ,首先使用预训练的 BERT 把单词嵌入到特征序列 {et}t=1T\{e_t\}_{t=1}^T 中获得 {xtbert}t=1T\{\mathbf{x}_t^{bert}\}_{t=1}^T。然后使用 6 个单独的带有 softmax 层的双层 MLP 生成 6 组注意力权重,例如 {ato}t=1T,{atoo}t=1T,{atot}t=1T,{att}t=1T,{attt}t=1T,{atto}t=1T\{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 。使用这些权重计算 6 个 {xtbert}t=1T\{\mathbf{x}_t^{bert}\}_{t=1}^T 的注意力权重和:so,soo,sot,st,stt,stos^o, s^{oo}, s^{ot}, s^{t}, s^{tt}, s^{to},为分解后的问题表示 object 节点,object-object ( oo ) 边,object-text ( ot ) 边,text 节点,text-text ( tt ) 边缘和 text-object ( to ) 边缘。以 {ato}t=1T\{a_t^o\}_{t=1}^Tsos^o 作为例子:
ato=exp(MLPobja(xtbert))i=1Texp(MLPobja(xtbert)),t=1,...,T;      so=t=1Tatoxtbert(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}
使用分解后的问题特征指导 question conditioned graph attention 。

还学习了分解后的子组件的两组自注意力权重,即 {wo,woo,wot},{wt,wtt,wto}\{w^o, w^{oo}, w^{ot}\}, \{w^t, w^{tt}, w^{to}\},其中每个 ww 是一个标量。 它们计算如下:
wo,oo,ot=1Zobjexp(Wwo,oo,ots),wt,tt,to=1Ztextexp(Wwt,tt,tos),(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}
其中 s=1Tt=1Txtbert,Zobj=exp(Wwos)+exp(Wwoos)+exp(Wwots),Ztext=exp(Wwts)+exp(Wwtts)+exp(Wwtos)\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}) 在某种程度上,这些权重扮演着先验概率的角色,因为它们只能通过问题来计算。 两组问题自注意力权重将分别用于生成以问题为条件的 object 和 text 特征 gobj\mathbf{g}_{obj}gtext\mathbf{g}_{text}

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 节点 oio_i ,对剩下的 object 根据它们到 oio_i 的空间距离排序,把排名前 5 的 object 节点作为邻居 Nioo\mathcal{N}_i^{oo}。根据它们的相对位置关系建立两个节点的边的关系。oio_i 的位置表示为 [xic,yic,wi,hi][x_i^c, y_i^c, w_i, h_i] (中心坐标,高,宽),另一个节点 ojo_j 的位置表示为 [xitl,yitl,xjbr,yjbr,wj,hj][x_i^{tl}, y_i^{tl}, x_j^{br}, y_j^{br}, w_j, h_j] ( 左上角坐标,右下角坐标,宽,高 ),然后它们的边关系为 eij=[xjtlxicwi,yjtlyichi,xjbrxicwi,yjbrxichi,wjhjwihi]\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}]

Question Conditioned Graph Attention

SMA :Structured Multimodal Attentions for TextVQA --- 论文阅读笔记

使用分解的问题特征 s\mathbf{s} 来理解 role-aware graph 。把当做一个注意力机制。用不同的问题特征根据它们的角色 ( role ) 更新图的不同部分。例如,使用与 object 相关的问题特征 so\mathbf{s}^o 指导 object 节点的注意力权重,使用 sto\mathbf{s}^{to} 指导 text-object 边的注意力权重。分别计算图中 6 个角色的注意力权重:object 节点 ( po\mathbf{p}^o ),text 节点 ( pt\mathbf{p}^t ),object-object 边 ( poo\mathbf{p}^{oo} ),object-text 边 ( pot\mathbf{p}^{ot} ),text-text 边 ( ptt\mathbf{p}^{tt} ),text-object 边 ( pto\mathbf{p}^{to} ),可以写成
pm=Attm({xobj},{xtext},{eij},sm)(3) \mathbf{p}^m = \text{Att}_m (\{\mathbf{x}^{obj}\}, \{\mathbf{x}^{text}\}, \{\mathbf{e}^{ij}\}, \mathbf{s}^m) \tag{3}
Attm\text{Att}_m 是使用问题特征和图中特殊的节点/边计算注意力权重的注意力机制,m={o,oo,ot,t,tt,to}m = \{o,oo,ot,t,tt,to\}

  1. object 节点注意力权重 object 表示为 2048 维的外形特征 {xfr,io}i=1N\{\mathbf{x}_{fr,i}^o\}_{i=1}^N 和相对位置坐标 {xbbox,io}i=1N\{\mathbf{x}_{bbox,i}^o\}_{i=1}^N ,在 so\mathbf{s}^o 的指导下计算 object 节点的注意力权重 :
    KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ & \hat{\mathbf…
    其中 LN()\text{LN}(\cdot) 是层正则化,W,w\mathbf{W}_*^*, \mathbf{w}_* 是要学习的线性转换参数。最后,获得 object 节点的注意力权重 po={pio}i=1N\mathbf{p}^o = \{p_i^o\}_{i=1}^N

  2. text 节点注意力权重 与 M4C 相似,使用多个特征的结合丰富 OCR 的表示。300 维的 FastText 特征 {xft,it}i=N+1N+M\{\mathbf{x}_{ft,i}^t\}_{i=N+1}^{N+M},2048 维的外形特征 {xfr,it}i=N+1N+M\{\mathbf{x}_{fr,i}^t\}_{i=N+1}^{N+M} ,604 维的 PHOC 特征 {xp,it}i=N+1N+M\{\mathbf{x}_{p,i}^t\}_{i=N+1}^{N+M} ,4 维的边框特征 {xbbox,it}i=N+1N+M\{\mathbf{x}_{bbox,i}^t\}_{i=N+1}^{N+M} ,除此之外还有 512 维的 CNN 特征 {xtr,it}i=N+1N+M\{\mathbf{x}_{tr,i}^t\}_{i=N+1}^{N+M} ( 来自于 RecogCNN ) 。 在 st\mathbf{s}^t 的指导下计算 text 节点的注意力权重 :
    KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲& \hat{\mathbf{…
    最后,获得 text 节点的注意力权重 pt={pit}i=N=1N+M\mathbf{p}^t = \{p_i^t\}_{i=N=1}^{N+M}

  3. 边的注意力权重 边的注意力权重需要考虑两个节点之间的关系,以计算 object-object 的注意力权重 poo\mathbf{p}^{oo} 为例,其他的类似。主要有两步,首先,计算所有连接节点 oio_i 的边的注意力权重 qioo={qijoo}jNioo\mathbf{q}_i^{oo} = \{q_{ij}^{oo}\}_{j \in \mathcal{N}_i^{oo}}
    KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲& \hat{\mathbf{…
    foo\text{f}^{oo} 是一个 MLP,编码初始化 oooo 边特征 ( 由关系特征 eij\mathbf{e}_{ij} 和连接节点特征 x^iobj\hat{\mathbf{x}}_i^{obj} 拼接 ),边的注意力权重 qioo\mathbf{q}_{i}^{oo} 。然后,计算所有 object 节点的 oooo 边的注意力权重
    KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲& \tilde{\mathb…
    x~ijoo\tilde{\mathbf{x}}_{ij}^{oo} 是以问题为条件的节点oio_ioooo 边的特征。使用相同的方法计算 pot,ptt,pto\mathbf{p}^{ot}, \mathbf{p}^{tt}, \mathbf{p}^{to}

Weighting Module

每个 object 和 text 节点通过图注意力模块输出三个注意力权重。每个 object 节点 oio_i ,都有 pio,pioo,pitop_i^o, p_i^{oo}, p_i^{to} ;每个 text 节点 tit_i ,都有 pit,pitt,pitop_i^t, p_i^{tt}, p_i^{to} 。使用问题自注意力权重和它们结合,每一个 object 节点,最终的权重分数通过三部分的权重和计算:
αio=wopio+woooioo+wotpiot,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}
每一个 text 节点最终的权重:
αit=wtpit+wttoitt+wtopito,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}
注意 i=1Nαio=1\sum_{i=1}^N \alpha_i^o = 1,因为 wo+woo+wot=1,i=1Npio=1,i=1Npioo=1,i=1Npiot=1w^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 。也有 i=N+1N+Mαit=1\sum_{i=N+1}^{N+M} \alpha_i^t = 1 。权重 {αio}i=1N\{\alpha_i^o\}_{i=1}^N{αit}i=N+1N+1\{\alpha_i^t\}_{i=N+1}^{N+1} 计算了 object/text 节点和问题的相关性,用来生成以问题为条件的 object 和 text 特征:
gobj=i=1Nαiox^iobj,         gtext=i=N+1N+Mαitx^itext(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}

Global-Local Attentional Answering Module

SMA :Structured Multimodal Attentions for TextVQA --- 论文阅读笔记

全局图特征 gobj\mathbf{g}_{obj}gtext\mathbf{g}_{text} 不是直接和全局问题特征 so,soo,sot,st,stt,sto\mathbf{s}^{o}, \mathbf{s}^{oo}, \mathbf{s}^{ot}, \mathbf{s}^{t}, \mathbf{s}^{tt}, \mathbf{s}^{to} 融合,而是通过和局部的 OCR 节点嵌入输入到 transformer 的答案模块中进行更新。与 object 相关的和与 text 相关的问题特征拼接在一起:
so=[so;soo,sot],    st=[st,stt,sto](11) \overline{\mathbf{s}}^o = [s^o; s^{oo}, s^{ot}], \;\; \overline{\mathbf{s}}^t = [s^t,s^{tt}, s^{to}] \tag{11}
so,st,gobj,gtext\overline{\mathbf{s}}^o, \overline{\mathbf{s}}^t, \mathbf{g}_{obj}, \mathbf{g}_{text} 是一起输入到 transformer 层,更新为 s~o,s~t,g~obj,g~text\tilde{\mathbf{s}}^o, \tilde{\mathbf{s}}^t, \tilde{\mathbf{g}}_{obj}, \tilde{\mathbf{g}}_{text}

然后,我们将更新的特征 g~obj\tilde{\mathbf{g}}_{obj}g~text\tilde{\mathbf{g}}_{text} 与它们各自的问题表示形式融合在一起,如下所示
gOBJ=g~objs~o,      gTEXT=g~texts~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}
在第一步预测答案概率 pans1\mathbf{p}_{ans}^1
pans1=fpred(Wg[gOBJ;gTEXT]),(13) \mathbf{p}_{ans}^1 = \text{f}_{pred} (\mathbf{W}_g[\mathbf{g}_{OBJ}; \mathbf{g}_{TEXT}]), \tag{13}
fpred\text{f}_{pred} 是一个两分支分数函数,它解决了 TextVQA 任务中答案可能是动态文本在不同问题中发生变化的难题。答案空间是两部分的结合:一个包含 5000 个词的固定词典和从每个特定的图像中提取的动态 OOV OCR tokens。两个分支计算各自的分数。一个分支是一个简单的线性层,把输入映射到 5000 维的分数向量,另一个分支计算输入和每一个更新的 OCR 嵌入的点积。然后两个分支的分数拼接在一起,选择最高的分数作为结果。

在第一步,融合特征的拼接作为输入,在剩下的步骤,使用前一个更新的输出作为输入迭代解码:
panst=fpred(gdec),t=2,...,T,(14) \mathbf{p}_{ans}^t = \text{f}_{pred} (\mathbf{g}_{dec}), t=2,...,T, \tag{14}
其中 gdec\mathbf{g}_{dec} 是以前一个输出 gdec\mathbf{g}^{dec} 作为输入的答案模块的输出。如果前一个输出来自于 OCR,则 gdec\mathbf{g}^{dec} 是 OCR 嵌入,然后输入到答案模块。否则,通用词汇表的相应线性层权重将变为 gdec\mathbf{g}^{dec} 。我们还将位置嵌入和类型嵌入添加到解码输入中,其中类型嵌入表示此输入是固定词汇还是OCR token。

Experiments

在 TextVQA 上的结果

SMA :Structured Multimodal Attentions for TextVQA --- 论文阅读笔记

使用 GT OCR 在 TextVQA 上的结果

SMA :Structured Multimodal Attentions for TextVQA --- 论文阅读笔记

在 ST-VQA 上的结果

SMA :Structured Multimodal Attentions for TextVQA --- 论文阅读笔记

相关文章: