Paper : https://arxiv.org/abs/2012.05153v1
Code : https://github.com/ZephyrZhuQi/ssbaseline
该方法在注意力机制下,把 OCR 特征分为视觉和语言注意力分支,然后把它们送入到 Transformer 解码器中,生成答案或字幕。
方法比较
M4C 把文本和视觉对象统一对待,并将文本特征作为一个整体,一起输入到 Transformer 中。
SMA 使用异构图对图像中的object-object、object-text 和 text-text 关系进行编码,然后设计一个图注意网络对其进行推理。
MM-GNN 将图像表示为三个图,并引入三个聚合器来引导消息从一个图传递到另一个图。
与M4C相比,该方法首先用三个注意力块过滤掉无关的或者多余的特征并且将它们聚合成六个单独功能的向量。相对于 M4C,这 6 个向量有更少的计算量。与 MM-GNN 和 SMA 相比,该方法在网络设计、空间和时间上更简单。
Method
给定一个图像和一个问题,将三种特征(OCR visual-part,OCR linguistic-part,object features)和三个问题自注意力输出输入到 Attention Block 中融合成 6 个向量,然后进行逐元素乘积,把他们拼接起来。最后通过编码器输出预测答案的第一个字,其余答案由迭代解码器产生。
Feature Preparation
Question features 使用三层的 BERT 对问题进行编码。
OCR features 把 OCR 分成两部分:视觉和语言。
-
OCR visual-part. 视觉特征由外观特征和空间特征组成,包含了文字的字体、颜色和背景。视觉特征从 Faster R-CNN 中提取。
x i o c r , v = LN ( W f r x i o c r , f r ) + LN ( W b x x i o c r , b x ) \mathbf{x}_i^{ocr,v} = \text{LN}(\mathbf{W}_{fr}\mathbf{x}_i^{ocr,fr}) + \text{LN}(\mathbf{W}_{bx}\mathbf{x}_i^{ocr,bx}) xiocr,v=LN(Wfrxiocr,fr)+LN(Wbxxiocr,bx)
x i o c r , f r \mathbf{x}_i^{ocr,fr} xiocr,fr 是从 Faster R-CNN 的 fc6 层提取的外观特征,在训练时对 fc7 进行微调。 x i o c r , b x \mathbf{x}_i^{ocr,bx} xiocr,bx 是文本的边界框,表示为 [ x t l , y t l , x b r , y b r ] [x_{tl}, y_{tl}, x_{br}, y_{br}] [xtl,ytl,xbr,ybr] , t l tl tl 和 b r br br 分别表示左上角和右下角。 -
OCR linguistic-part. 语言特征包含
- FastText 特征 x i o c r , f t \mathbf{x}_i^{ocr, ft} xiocr,ft ,从预训练的 word embedding 中提取
- PHOC(字符金字塔直方图)特征 x i o c r , p h \mathbf{x}_i^{ocr, ph} xiocr,ph ,包含自然语言相关的信息
x i o c r , l = LN ( W f t x i o c r , f t ) + LN ( W p h x i o c r , p h ) \mathbf{x}_i^{ocr,l} = \text{LN}(\mathbf{W}_{ft}\mathbf{x}_i^{ocr,ft}) + \text{LN}(\mathbf{W}_{ph}\mathbf{x}_i^{ocr,ph}) xiocr,l=LN(Wftxiocr,ft)+LN(Wphxiocr,ph)
-
OCR 其他特征. 在识别OCR的 SBD-Trans 中,特定文本区域中的整体表征同时覆盖了OC的视觉和语言上下文,因此我们从该网络中引入 Recog-CNN 特征 x i o c r , r g \mathbf{x}_i^{ocr,rg} xiocr,rg 来丰富文本特征。
最后,把 Recog-CNN 特征同时加入到OCR视觉和语言特征中:
Visual features 在基于文本的任务中,可以利用图像中的视觉内容来辅助文本信息的推理过程。为了证明简单的注意力块(Attention Block)具有使用视觉特征的各种形式的能力,采用了基于网格的全局特征或基于区域的目标特征。
-
Global features 从 ResNet-152 (在ImageNet上预训练)提取图像全局特征,通过对 res-5c 块中的2048D特征进行平均池化,得到一张图像的14×14×2048特征。为了与其他特征保持一致,将特征的大小调整为196×2048,共196个均匀切割的网格。
x i g l o b = LN ( W g x i g l o b ) \mathbf{x}_i^{glob} = \text{LN}(\mathbf{W}_g \mathbf{x}_i^{glob}) xiglob=LN(Wgxiglob) -
Object features 从与 OCR 相同的 Faster R-CNN 中提取基于区域的目标特征。
x i o b j = LN ( W f r ′ x i o b j , f r ) + LN ( W b x ′ x i o b j , b x ) \mathbf{x}_i^{obj} = \text{LN}(\mathbf{W}_{fr}' \mathbf{x}_i^{obj,fr}) + \text{LN}(\mathbf{W}_{bx}' \mathbf{x}_i^{obj,bx}) xiobj=LN(Wfr′xiobj,fr)+LN(Wbx′xiobj,bx)
x i o b j , f r \mathbf{x}_i^{obj,fr} xiobj,fr 是外观特征, x i o b j , b x \mathbf{x}_i^{obj,bx} xiobj,bx 是边界框特征
Attention Block as Feature Summarizing
对于特征融合部分,可以直接将全部的特征统一对待全部输入到 Transformer 中(如M4C),但是这样会需要大量的计算消耗。为了把握模态之间的相互作用,以获得最大的收益,并在进入大型融合层之前过滤掉不相关或多余的特征,我们使用一个简单的注意力块,输入两个实体序列,输出两个处理过的向量,上图 Attention Block。
问题在最终的答案起主导作用, 问题的设计需要慎重考虑,它的存在应该在整个过程中做出贡献。文中将问题作为注意块中 query 的一个输入。问题词的序列在输入到注意块之前,要经过一个自注意力机制的处理。
首先,把问题单词序列 Q = { q i } i = 1 L Q = \{q_i\}_{i=1}^L Q={
qi}i=1L 通过一个全连接的前馈网络,包含两个线性转换层(或者两个核大小为1的卷积层)和一个 ReLU 激活函数
q i f c = conv ReLU[conv( q i )] , i = 1 , . . . , L ; q_i^{fc} = \text{conv{ReLU[conv($q_i$)]}}, i=1,...,L; qifc=convReLU[conv(qi)],i=1,...,L;
使用 softmax 层计算问题中每一个单词的注意力
a i = Softmax ( q i f c ) , i = 1 , . . . , L a_i = \text{Softmax}(q_i^{fc}), i=1, ..., L ai=Softmax(qifc),i=1,...,L
计算每一个单词的权重和,
Q s = ∑ i = 1 L a i q i Q^s = \sum_{i=1}^L a_i q_i Qs=i=1∑Laiqi
获取 OCR visual-part、OCR linguistic-part 和 object regions 对应的问题自注意力 Q v s , Q l s , Q o s Q_v^s,Q_l^s, Q_o^s Qvs,Qls,Qos
然后,把 Q s Q^s Qs 作为 query 计算对应特征过滤后的向量。计算注意力权重,然后得到权重和即过滤后的向量。以 Q v s Q_v^s Qvs 和 x i o c r , v \mathbf{x}_i^{ocr,v} xiocr,v 为例:
p i = W [ ReLU ( W s Q v s ) ∘ ReLU ( W x x i o c r , v ) ] p_i = \mathbf{W}[\text{ReLU}(\mathbf{W}_sQ_v^s) \circ \text{ReLU}(\mathbf{W}_xx_i^{ocr,v})] pi=W[ReLU(WsQvs)∘ReLU(Wxxiocr,v)]
s i = Softmax ( p i ) s_i = \text{Softmax}(p_i) si=Softmax(pi)
g o c r , v = ∑ i = 1 N s i x i o c r , v g^{ocr,v} = \sum_{i=1}^N s_i \mathbf{x}_i^{ocr,v} gocr,v=i=1∑Nsixiocr,v
g o c r , v g^{ocr,v} gocr,v 是 Attention Block 的输出,同样可以得到 g o c r , l , g o b j g^{ocr,l}, g^{obj} gocr,l,gobj
Stack-Block Encoder
TextVQA baseline model 把6个序列( Q v s , Q l s , Q o s , g o c r . v , g o c r , l , g o b j Q_v^s, Q_l^s, Q_o^s, g^{ocr. v}, g^{ocr, l}, g^{obj} Qvs,Qls,Qos,gocr.v,gocr,l,gobj)输入到融合编码器(Fusion Encoder) 中,得到的六个向量以一对一的方式进行逐元素乘法,得到相应的嵌入,并将它们拼接在一起,然后使用全连接层把拼接嵌入转换为适当维度的上下文嵌入(context embedding),在此基础上生成第一个答案。给定第一个答案,使用生成解码器生成剩余的答案。
TextCaps baseline model 在 TextCaps 中没有问题,使用 objects 作为 OCR 视觉和语言的 query,使用 OCR 作为 object 的 query,用 OCR 或 object 特征代替 question。其他与 TextVQA相同。
Answer Generation Module
使用基于 transformer 的生成解码器回答一个问题或者生成字幕。根据 context embedding 得到答案的第一个单词,然后使用解码器从预先建立的词汇表或从给定图像中提取的候选OCR中根据得分找到下一个词。
Training Loss 考虑到答案可能来自两个来源,使用多标签二元交叉熵(bce)损失。
p r e d = 1 1 + exp ( − y p r e d ) pred = \frac{1}{1+\exp(-y_{pred})} pred=1+exp(−ypred)1
L b c e = − y g t log ( p r e d ) − ( 1 − y g t ) log ( 1 − p r e d ) \mathcal{L}_{bce} = -y_{gt} \log(pred) - (1-y_{gt}) \log(1-pred) Lbce=−ygtlog(pred)−(1−ygt)log(1−pred)
Additional Training Loss 在某些情况下,模型的推理是正确的,然而,由于阅读(OCR)能力的缺陷,选取的单词与预期的略有不同。为了利用这些预测,受强化学习启发我们引入了一种新的策略梯度损失作为辅助任务。在这个任务中,奖励越多越好。采取 ANLS 指标作为奖励,衡量预测答案和真实答案之间的相似度。
r = ANLS ( ϕ ( y g t ) , ϕ ( y g r e d ) ) , y = I ( softmax ( y p r e d ) ) , L p g = ( 0.5 − r ) ( y g t log ( y ) ) + ( 1 − y g t ) log ( 1 − y ) ) , L = L b c e + α ⋅ L p g \begin{aligned} & r = \text{ANLS}(\phi(y_{gt}), \phi(y_{gred})), \\ & y = \mathbb{I}(\text{softmax}(y_{pred})), \\ & \mathcal{L}_{pg} = (0.5 - r)(y_{gt}\log(y)) + (1-y_{gt})\log(1-y)), \\ & \mathcal{L} = \mathcal{L}_{bce} + \alpha \cdot \mathcal{L}_{pg} \end{aligned} r=ANLS(ϕ(ygt),ϕ(ygred)),y=I(softmax(ypred)),Lpg=(0.5−r)(ygtlog(y))+(1−ygt)log(1−y)),L=Lbce+α⋅Lpg
ANLS \text{ANLS} ANLS 是计算两个短语之间的相似度, ANLS ( s 1 , s 2 ) = 1 − d ( s 1 , s 2 ) / max ( l e n ( s 1 ) , l e n ( s 2 ) ) , 其 中 d ( , ) 是 编 辑 距 离 \text{ANLS}(s_1, s_2) = 1 - d(s_1, s_2) / \max(len(s_1), len(s_2)), 其中 d(,)是编辑距离 ANLS(s1,s2)=1−d(s1,s2)/max(len(s1),len(s2)),其中d(,)是编辑距离。 ϕ \phi ϕ 是一个映射函数,给定预测分数返回一个句子。 I \mathbb{I} I 是选择最大概率元素的指标函数。
在引入策略梯度损失后,模型能够在学习语言信息的同时学习细粒度的字符组成。只在 ST-VQA 数据集上应用这个额外的损失,带来了大约1%的改进。
Experiments
在 TextVQA 数据集上的比较
在 ST-VQA 数据集上的比较
在 TextCaps 数据集上的比较
与M4C的比较效果图
Conclusion
本文方法将OCR特征分为视觉和语言特征分别处理,并且使用问题特征对OCR和object 特征进行过滤,去除冗余特征,减少计算消耗。在损失方面,添加了策略梯度损失来优化。