Paper : https://arxiv.org/abs/2007.12146 [ECCV2020]
spatially aware self-attention layer : 使用空间图定义每一个视觉实体只看相邻的实体,多头自注意力层的每个头都专注于关系的不同子集。
在TextVQA数据集中大约有13% 的问题存在一个或多个空间词,SA-M4C构建一个空间图编码视觉实体之间的空间关系,使用此关系辅助多模态 transformer 的自注意力层,在多头注意力的每个头上每个实体只关注通过空间图定义的邻居实体,限制每个头只能看关系的子集,以防止学习冗余特征。
定义有向异构图 G = ( X , E ) \mathcal{G} = (X, \mathcal{E}) G=(X,E) ,每一个节点对应一个输入 x i ∈ X \Bbb{x}_i \in X xi∈X, E \mathcal{E} E 是全部边的集合 e i → j , ∀ x i , x j ∈ X e_{i \to j}, \forall \Bbb{x}_i, \Bbb{x}_j \in X ei→j,∀xi,xj∈X 。
映射函数 Φ x : X → T x \Phi_x : X \to \mathcal{T}^x Φx:X→Tx ,把一个节点 x i ∈ X \Bbb{x}_i \in X xi∈X 映射到一个模态,节点类型的数量等于输入模态的数量 ∣ T x ∣ = M |\mathcal{T}^x| = M ∣Tx∣=M
映射函数 Φ e : E → T e \Phi_e : \mathcal{E} \to \mathcal{T}^e Φe:E→Te ,把一个边 e i → j ∈ E e_{i \to j} \in \mathcal{E} ei→j∈E 映射到一个关系类型 t l ∈ T e t_l \in \mathcal{T}^e tl∈Te
问题 X ques = { x ∈ X : Φ x ( x ) = ques } X^{\text{ques}} = \{\Bbb{x} \in X:\Phi_x(\Bbb{x}) = \text{ques} \} Xques={x∈X:Φx(x)=ques} ,视觉内容 X obj = { x ∈ X : Φ x ( x ) = obj } X^{\text{obj}} = \{\Bbb{x} \in X:\Phi_x(\Bbb{x}) = \text{obj} \} Xobj={x∈X:Φx(x)=obj} ,OCR tokens X ocr = { x ∈ X : Φ x ( x ) = ocr } X^{\text{ocr}} = \{\Bbb{x} \in X:\Phi_x(\Bbb{x}) = \text{ocr} \} Xocr={x∈X:Φx(x)=ocr},答案 Y ans = ( y 1 a n s , . . . , y T a n s ) Y^{\text{ans}} = (\Bbb{y}_1^{ans}, ..., \Bbb{y}_T^{ans}) Yans=(y1ans,...,yTans)
需要对出现在图像上的所有的 object X obj X^{\text{obj}} Xobj 和 OCR tokens X ocr X^{\text{ocr}} Xocr 编码,全部的区域就是 r ∈ R = X obj ∪ X ocr r \in \mathcal{R} = X^{\text{obj}} \cup X^{\text{ocr}} r∈R=Xobj∪Xocr ,用所有的对应于全部的 objects 和 OCR tokens 构建空间图 G spa = ( R , E spa ) G_{\text{spa}} = (\mathcal{R}, \mathcal{E}_{\text{spa}}) Gspa=(R,Espa) ,映射函数 Φ spa : E spa → T spa \Phi_{\text{spa}}:\mathcal{E}_{\text{spa}} \to \mathcal{T}^{\text{spa}} Φspa:Espa→Tspa 将空间关系 t l ∈ T spa t_l \in \mathcal{T}^{\text{spa}} tl∈Tspa 分配给一个边 e = ( r i , r j ) ∈ E spa e = (r_i, r_j) \in \mathcal{E}_{\text{spa}} e=(ri,rj)∈Espa 。映射函数使用下图 (a) 规则。总共 12 种空间关系类型,图 G spa G_{\text{spa}} Gspa 是对称有向图,对于每一个边 e i → j e_{i \to j} ei→j 都有 e j → i e_{j \to i} ej→i 。
(a) 编码两个 objects 和 OCR tokens 之间的 12 种关系的空间图
(b) 表示不同模态之间的 attention mask 。在 spatially aware self-attention layer 中,objects 和OCR tokens 基于空间关系的子集 T h ⊆ T spa \mathcal{T}^h \subseteq \mathcal{T}^{\text{spa}} Th⊆Tspa 相互添加。通过 t imp t_{\text{imp}} timp 关系加入问题。 任何输入 x ∈ X x \in X x∈X 都不参答案 y ans ∈ Y y^{\text{ans}}∈Y yans∈Y ,而 y ans y^{\text{ans}} yans 可以参与 X X X 中以及先前的答案 y < t ans y^{\text{ans}}_{
y<tans
对于 TextVQA 任务,不同类型的空间关系可能对于不同的问题是有用的。因此,要将问题的语义信息注入到 object 和 OCR 表示中,我们允许 object 和 OCR tokens 加入到问题 tokens 中。通过一个二分图 G imp ( R , X ques , E imp ) G_{\text{imp}} (\mathcal{R}, X^{\text{ques}}, \mathcal{E}_{\text{imp}}) Gimp(R,Xques,Eimp) 使用一个隐含的关系类型 t imp t_{\text{imp}} timp 的边 e i → j e_{i \to j} ei→j 把全部的 object 和 OCR tokens r i ∈ R r_i \in \mathcal{R} ri∈R 与全部的问题 tokens x j ∈ X ques \Bbb{x}_j \in X^{\text{ques}} xj∈Xques 连接。因此,通过关注问题,每个 object 和OCR token 都学会了将问题的有用语义信息隐式地合并到其表示中。
在多头注意力的每个头上每个实体只关注通过空间图定义的邻居实体,限制每个头只能看关系的子集,以防止学习冗余特征。每个输入 x i \Bbb{x}_i xi 只关注通过关系类型 Φ e ( e i → j ) ∈ T h ⊆ T e \Phi_e(e_{i \to j}) \in \mathcal{T}^h \subseteq \mathcal{T}^e Φe(ei→j)∈Th⊆Te 的一个边 e i → j e_{i \to j} ei→j 连接的输入 x j \Bbb{x}_j xj 。
在 TextVQA 上下文中,使用两个图的结合 G spa ∪ G imp G_{\text{spa}} \cup G_{\text{imp}} Gspa∪Gimp 从全部的输入数据模态 x ∈ X \Bbb{x} \in X x∈X 定义所有的输入。每个头 h h h 所参与的关系 的子集 T h \mathcal{T}^h Th 是 ( x i , x j ) (\Bbb{x}_i,\Bbb{x}_j) (xi,xj) 和问题和图像之间的一种隐式关系之间 c c c 个空间关系的子集:
T h = { t imp , t h , t h + 1 , . . . , t ( h + c ) mod ∣ T spa } , t ∈ T e = T spa ∪ t imp (1) \mathcal{T}^h = \{t_{\text{imp}}, t_h, t_{h+1}, ..., t_{(h+c) \; \text{mod} | \mathcal{T}^{\text{spa}}}\}, t \in \mathcal{T}^e = \mathcal{T}^{\text{spa}} \cup t_{\text{imp}} \tag{1} Th={timp,th,th+1,...,t(h+c)mod∣Tspa},t∈Te=Tspa∪timp(1)
当 c > 1 c > 1 c>1 时,多个头关注给定的空间关系,因此我们鼓励模型共同关注来自不同表示子空间的信息。 当 c = 1 c = 1 c=1 时,每个头仅关注一种类型的空间关系。 类似地,当 c = ∣ T spa ∣ + 1 c = |\mathcal{T^{\text{spa}}}| + 1 c=∣Tspa∣+1时,每个头都处理所有空间关系以及隐式关系图。 根据经验,我们发现 c = 2 c = 2 c=2 最适合我们的设置。
如上图所示,为了根据空间关系的子集 T h \mathcal{T}^h Th 权衡每个头的注意力,我们引入一个偏差项定义为
b i , j h = { β t 1 h t l ∈ T h , x i , x j ∈ X − ∞ otherwise (2) b_{i,j}^h = \begin{cases} & \beta_{t1}^h & t_l \in \mathcal{T}^h, \Bbb{x}_i,\Bbb{x}_j \in X \\ & -\infty & \text{otherwise} \end{cases} \tag{2} bi,jh={βt1h−∞tl∈Th,xi,xj∈Xotherwise(2)
修改不同输入的注意力权重 α i j h \alpha_{ij}^h αijh 的计算。 具体来说,我们按以下方式计算注意力权重:
α i j h = Softmax ( q i h ( k j h ) T + b i , j h d h ) (3) \alpha_{ij}^h = \text{Softmax} \big(\frac{\Bbb{q}_i^h(k_j^h)^T + b_{i,j}^h}{\sqrt{d_h}} \big) \tag{3} αijh=Softmax(dhqih(kjh)T+bi,jh)(3)
如上图,如果在节点 x i \Bbb{x}_i xi 和 x j \Bbb{x}_j xj 之间没有关系 t l ∈ T h t_l \in \mathcal{T}^h tl∈Th 的边 e i → j e_{i \to j} ei→j ,然后相容性分数 q i h ( k j h ) T + b i , j h \Bbb{q}_i^h(k_j^h)^T + b_{i,j}^h qih(kjh)T+bi,jh 是负无穷大,则注意力权重 α i j h \alpha_{ij}^h αijh 为 0 。否则的话,注意力权重可以基于特殊的边 t l = Φ e ( e i → j ) t_l = \Phi_e (e_{i \to j}) tl=Φe(ei→j) 通过学习每个边的偏差 β t l h ∈ { β t 1 h , . . . , β ∣ T e ∣ h } \beta_{t_l}^h \in \{\beta_{t_1}^h, ..., \beta_{|\mathcal{T}^e|}^h\} βtlh∈{βt1h,...,β∣Te∣h} 项进行调整。如果不想基于两个输入的边类型调整注意力,可以设置 β t l h \beta_{t_l}^h βtlh 为 0 。
在解码期间,M4C 模型每个时间生成一个答案 y t ans ∀ t \Bbb{y}_t^{\text{ans}} \forall t ytans∀t 。 受到几种文本到文本模型成功的启发,M4C体系结构使用 causal attention mask ,其中 y t ans \Bbb{y}_t^{\text{ans}} ytans 使用所有问题,图像和OCR token 以及时刻 t t t 之前的答案 y < t ans \Bbb{y}_{
与M4C的不同:
在 TextVQA 数据集上的结果
与 M4C 对比的一些例子: