M4C:Iterative Answer Prediction with Pointer-Augmented Multimodal Transformers for TextVQA ---论文阅读笔记

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

Code : https://ronghanghu.com/m4c/

在这里插入图片描述

基于多模式 transformer 结构以及图像中文本的丰富表示形式。 通过将不同模态嵌入到共同的语义空间中,自然地将不同的模式融合在一起,在该空间中,自我注意被应用于模式间和模式内上下文。使用动态指针网络进行迭代答案解码,从而允许模型通过多步预测而不是一步分类来形成答案。

在三个数据集上验证:TextVQA,ST-VQA,OCR-VQA

Multimodal Multi-Copy Mesh ( M4C )

在这里插入图片描述

从三个模态中提取特征表示:问题,图像中的视觉目标,图像中出现的文字。这三个模态分别表示为问题单词特征表,从一个现成的目标检测器得到的视觉目标特征表,一个存在的OCR系统识别的OCR词表。

把三个模态的实体(问题单词,检测目标,OCR词)投影为一个公共嵌入空间的向量。然后,将所有投影特征的列表表输入到多层 transformer 中,以模态间和模态内上下文丰富它们的表示。 通过动态指针网络的迭代解码来学习预测答案。 在解码期间,它会以自动回归的方式输入前一个输出,以预测下一个答案分量。 在每个步骤中,它要么从图像中复制 OCR 词,要么从其固定答案词汇表中选择一个单词。

A common embedding space for all modalities

模型收到三个模态的输入(问题单词,视觉目标,OCR字段),提取每一个的特征表示并通过特定领域的嵌入方法把他们映射到公共的 d 维的语义空间内。

Embedding of question words

给定一个 K 个单词序列的问题,使用预训练好的 BERT 模型把这些单词嵌入到对应的 d 维的特征向量 { x k q u e s } \{x_k^{ques}\} { xkques} 序列中。在训练期间,使用问题答案损失微调 BERT 的参数。

Embedding of detected objects

给定一张图像,通过一个预训练好的检测器(Faster R-CNN)获得 M 个视觉目标。从第 m 个目标中提取外形特征 x m f r x_m^{fr} xmfr 。使用 4 维的位置特征 x m b x_m^b xmb 来表示第 m 个目标的相对框的坐标 [ x m i n / W i m , y m i n / H i m , x m a x / W i m , y m a x / H i m ] [x_{min}/ W_{im}, y_{min}/H_{im}, x_{max}/W_{im}, y_{max}/H_{im}] [xmin/Wim,ymin/Him,xmax/Wim,ymax/Him] W i m , H i m W_{im}, H_{im} Wim,Him 是图像的宽和高。然后,使用两个可学习的线性层 把外形特征和位置特征映射到 d 维的空间内
x m o b j = LN ( W 1 x m f r ) + LN ( W 2 x m b ) x_m^{obj} = \text{LN}(W_1 x_{m}^{fr}) + \text{LN}(W_2x_m^b) xmobj=LN(W1xmfr)+LN(W2xmb)
W 1 , W 2 W_1, W_2 W1,W2 是学习的投影矩阵。 LN ( ⋅ ) \text{LN}(\cdot) LN() 是 层归一化,添加在线性层后边,以确保目标嵌入与问题词嵌入具有相同的尺度。 在训练过程中微调了Faster R-CNN 检测器的最后一层。

Embedding of OCR tokens with rich representations

为了表示图像中文本,不仅要表示它的字符,也要表示它的外形(颜色,字体和背景)和在图像中的空间位置。使用由四种类型的特征组成的丰富的OCR表示形式(实验显示,这比以前的单独使用词嵌入(例如 FastText )要好得多)。通过 OCR 系统获得了一张图像的 N 个 OCR 字段后,从第 n 个字段中提取 1)一个 300 维的 FastText 向量 x n f t x_n^{ft} xnft ,这是一个带有子词信息的词嵌入,2)一个外形特征 x n f r x_n^{fr} xnfr ,使用与上边相同的 Faster R-CNN 检测器,通过 OCR 字段的边界框的 RoI-Pooling 提取,3)一个 604 维的金字塔直方图( PHOC )向量 x n p x_n^p xnp ,捕获字段中存在的字符–这对于 OCR 错误更鲁棒,可以看作是粗略的字符模型,4)一个 4 维的位置特征 x n b x_n^b xnb ,OCR 字段的相对边界框的位置 [ x m i n / W i m , y m i n / H i m , x m a x / W i m , y m a x / H i m ] [x_{min}/ W_{im}, y_{min}/H_{im}, x_{max}/W_{im}, y_{max}/H_{im}] [xmin/Wim,ymin/Him,xmax/Wim,ymax/Him] 。然后把每一个特征线性的映射到 d 维空间中,将它们相加作为最终的 OCR 字段的嵌入 { x n o c r } \{x_n^{ocr}\} { xnocr}
x n o c r = LN ( W 3 x n f t + W 4 x n f r + W 5 x n p ) + LN ( W 6 x n b ) x_n^{ocr} = \text{LN}(W_3 x_n^{ft} + W_4 x_n^{fr} + W_5x_n^p) + \text{LN}(W_6 x_n^b) xnocr=LN(W3xnft+W4xnfr+W5xnp)+LN(W6xnb)

Multimodal fusion and iterative answer prediction with pointer-augmented transformers

将每个模态的所有实体(问题词,目标对象和 OCR 字段)作为向量嵌入到 d 维联合嵌入空间中之后,将 { x k q u e s , } , { x m o b j } , { x n o c r } \{x_k^{ques},\}, \{x_m^{obj}\}, \{x_n^{ocr}\} { xkques,},{ xmobj},{ xnocr} 的所有 K + M + N 个实体输入到 L 个 transformer 层,其隐藏维度为 d 。通过 transformers 多头自注意力机制,每个实体都可以自由的加入到其他全部的实体,无论它们来自于相同的模态还是不同模态。例如,一个OCR字段允许加入到另一个 OCR 字段,一个检测目标或是一个问题单词中。这样就可以通过相同的一组 transformers 参数以同质方式对模态间和模态内的关系建模。我们的多模态 transformer 的输出是每个模态中实体的 d 维特征向量列表,可以看作是它们在多模态上下文中的丰富嵌入。

使用完全相同的 transformers 层作为一个解码器,通过迭代解码预测问题的答案。我们以自回归的方式逐字解码答案词,总共进行了 T 步,其中每个解码的词都可以是图像中的OCR字段,也可以是我们固定的常用答案词表中的词。在解码期间的每个步骤中,我们将嵌入先前预测的单词,并基于带有动态指针网络的 transformer 输出来预测下一个答案单词。

{ z 1 o c r , ⋯   , z N o c r } \{z_1^{ocr}, \cdots, z_N^{ocr}\} { z1ocr,,zNocr} 表示图像中的 N 个OCR字段的 d 维 transformer 输出。假设有一个经常出现在训练集答案中的 V个词的词汇。在 第 t 个解码步骤,transformer 输出一个 d 维的向量 z t d e c z_t^{dec} ztdec,对应于 t 步的输入 x t d e c x_t^{dec} xtdec 。从 z t d e c z_t^{dec} ztdec 中,在解码 t 步,预测出从一个固定的答案词汇中选择的 V 维的分数 y t v o c y_t^{voc} ytvoc 和 从图像中选择一个 OCR 字段的 N 维的分数 y t o c r y_t^{ocr} ytocr 。在实现中,固定的答案词汇的第 i 个单词的分数 y t , i v o c , i ∈ 1 , . . . , V y_{t,i}^{voc}, i \in {1, ..., V} yt,ivoc,i1,...,V 是通过一个简单的线性层预测的:
y t , i v o c = ( w i v o c ) T z t d e c + b i v o c y_{t,i}^{voc} = (w_i^{voc})^T z_t^{dec} + b_i^{voc} yt,ivoc=(wivoc)Tztdec+bivoc
w i v o c w_i^{voc} wivoc 是答案词汇中第 i 个单词的 d 维参数, b i v o c b_i^{voc} bivoc 是标量参数。

为了从图像中的 N 个OCR字段中选择一个字段,使用一个动态指针网络增强 transformer ,通过解码输出 z t d e c z_t^{dec} ztdec 和每一个 OCR 字段的输出表示 z n o c r z_n^{ocr} znocr 的双线性交互预测每一个字段的拷贝分数 y t , n o c r y_{t,n}^{ocr} yt,nocr
y t , n o c r = ( W o c r z n o c r + b o c r ) T ( W d e c z t d e c + b d e c ) y_{t, n}^{ocr} = (W^{ocr} z_n^{ocr} + b^{ocr})^T (W^{dec}z_t^{dec} + b^{dec}) yt,nocr=(Wocrznocr+bocr)T(Wdecztdec+bdec)
W o c r , W d e c W^{ocr}, W^{dec} Wocr,Wdec 是 d x d 矩阵, b o c r , b d e c b^{ocr}, b^{dec} bocr,bdec 是 d 维的向量。

在预测期间,我们对拼接 y t a l l = [ y t v o c ; y t o c r ] y_t^{all} = [y_t^{voc}; y_t^{ocr}] ytall=[ytvoc;ytocr] 固定答案词汇分数和动态OCR复制分数,从所有 V + N 候选者中选择得分最高的元素(词汇单词或者 OCR 字段)。

在迭代自回归解码流程中,如果在 t 步的预测是一个 OCR 字段,就把 OCR 表示 x n o c r x_n^{ocr} xnocr 作为 transformer 输入 x t + 1 d e c x_{t+1}^{dec} xt+1dec 输入到下一步 t+1。否则(前一个预测是固定答案词汇中的单词),就把公式3对应的权重向量 w i v o c w_i^{voc} wivoc 作为下一步的输入 x t + 1 d e c x_{t+1}^{dec} xt+1dec 。另外,添加了两个额外的 d 维向量作为输入,一个对应于 t 步的位置嵌入向量,一个类型嵌入向量(表示前一个预测是固定词汇的单词还是 OCR 字段)。使用字段 和 表示解码的开始和结束。

为了确保答案解码中的因果关系,我们屏蔽了 transformer 结构的自我注意层中的注意权重,以使问题词,检测目标和OCR字段无法参与任何解码步骤,而所有解码步骤只能添加到先前的解码步骤,除问题词,检测目标和OCR字段之外。

Training

在训练期间,我们在每个解码步骤都对多模态 transformer 进行监督。 与诸如机器翻译之类的序列预测任务相似,我们使用 teacher-forcing(即 使用解码器的 gt 输入)来训练我们的多步答案解码器,其中每个 gt 答案都被标记为单词序列。 一个答案词可以同时出现在固定答案词汇表和OCR中,那么我们对拼接分数 y t a l l y_t^{all} ytall 应用多标签 sigmoid 损失(而不是 softmax 损失)。

Experiments

Evaluation on the TextVQA dataset

使用 BERT-BASE (使用前三层的768维输出)提取问题词特征,在训练期间微调。

使用 Faster R-CNN(预训练在 Visual Genome)检测目标,每张图像取前 100 个分数高的目标。然后,从每个检测到的对象中提取 fc6 特征向量。 我们在提取的 fc6 特征上应用 Faster R-CNN fc7权重,以在训练过程中输出2048维 fc7 外观特征并微调 fc7 权重。

使用 Rosetta OCR 系统提取图像的文本。从每一个 OCR 字段中提取 FastText 特征,外形特征(Faster R-CNN),PHOC特征和 bbox 特征。

多模态 transformer,使用 L=4 层,12 个注意力头。其他的超参数和 BERT-BASE 一样。在答案预测使用了 T=12 步的最大的解码,可以覆盖大多数答案。

从训练集中的答案词汇中收集了前 5000 个经常出现的单词。训练期间的 batch-size 为128,训练 24000 迭代。使用 Adam 优化器,初始学习率 1e-4,在 14000 和 19000 步分别减小 0.1 倍。在4个 Nvidia Tesla V00 GPUs 上训练10 个小时。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Examples

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_38007695/article/details/107772675