Facebook Multimodal Multi-Copy Mesh (M4C) 阅读笔记

TextVQA 是什么

TextVQA 和传统 VQA 不一样, 旨在利用图片中的文本给出问题的答案

TextVQA 需要模型对 输入问题, 图片中的视觉对象, 图片中的文本 进行 查看, 阅读, 推理.

例子:

给定上图和问题 What is the danger?

Facebook 的 Multimodal Multi-Copy Mesh (M4C) 和传统的 TextVQA 模型的区别

  • 传统模型加入 OCR 注意分支, 讲 OCR 得到的 Tokens 加入答案分类器的词汇表, 允许答案从图片中获取一个 Token (一个单词). 在上图, 传统TextVQA会给出 water 作为答案. 这样的模型无法生成复杂答案.
  • Facebook 的 M4C 通过迭代预测, 通过指针解码. 在上图, 模型会给出 deep water 作为答案. 这个答案更加 reasonable.

 

M4C 网络结构

M4C 基于 Transformer, 伴随着基于指针的迭代解码, 由三个步骤组成:

  1. 将三种模态 (问题文本, 检测到的对象, 检测到的文本) 中得到的特征映射到一个经过学习得到的通用向量嵌入空间.
  2. 将这些映射后的特征输入到多层 Transformer.
  3. 在循环解码过程中, 采用自回归方式 (将前一个的输出作为当前的输入). 在单个解码步骤中, 模型会从 预定义码表 和 图中Token 中选择一个作为当前输出 (如图中的 “deep”).

接下来的部分将会介绍这几块的实现

 

全部模态的通用嵌入空间 (Paper Section 3.1)

本模型将三种模态 (问题文本, 检测到的对象, 检测到的文本) 映射到 d 维语义空间

  1. 问题文本: 使用预训练 Bert 获取到 K 个单词 \( x^{ques}_k \), 在训练过程中进行 fine-tuned.
  2. 检测到的对象: 通过 Faster R-CNN 进行目标检测, 获取到 M 个检测目标. 对于对象 m:
    1. 编码它的位置信息到 \( x^{b}_m = [x_{min}/W_{im},y_{min}/H_{im},x_{max}/W_{im},y_{max}/H_{im}] \)
    2. 从检测器中取得它的外观特征信息 \( x^{fr}_m \)
    3. 然后我们将 \( x^{fr}_m \)  和 \( x^{b}_m \) 通过两个线性变化映射到 d 维 $$ x^{obj}_m = LN(W_1 x^{fr}_m) + LN(W_2 x^{b}_m)  $$ 其中, \( W_1, W_2 \) 是学习得到的映射矩阵. \( LN \) 是 Linear Normalization.
  3. 检测到的文本 (OCR Tokens): 需要编码字符, 外观特征信息, 以及位置信息. 在获得 N 个 OCR Tokens 之后, 作者对每个 Token n 进行如下操作:
    1.  编码为 300 维 FastText 向量 \( x^{ft}_n \) (a word embedding with sub-word information.)
    2. 从检测器中取得它的外观特征信息 \( x^{fr}_n \), 并对 OCR Tokens 的 bounding box 进行 ROI Pooling.
    3. 通过 604 维的 Pyramidal Histogram of Characters (PHOC) 向量 \( x^{p}_n \) 来提取特征, 这样可以使得模型对 OCR 的错误更加健壮.
    4. 编码它的位置信息到 \( x^{b}_n = [x_{min}/W_{im},y_{min}/H_{im},x_{max}/W_{im},y_{max}/H_{im}] \)
    5. 然后我们将以上参数线性变化映射到 d 维嵌入空间 $$ x^{ocr}_n = LN(W_3 x^{ft}_n + W_4 x^{fr}_n + W_5 x^{p}_n) + LN(W_6 x^{b}_m) $$

 

基于指针增强型 Transformers 的多模态融合与循环答案预测 (Paper Section 3.2)

将 \( x^{ques}_k + x^{fr}_n + x^{ocr}_n \) 拼接为 K + M + N  输入到堆叠拥有 d 维隐藏层的 L 层 Transformers. 使得每一个实体都可以和其他实体一起参与运算无论他们是否属于同一个模态.

循环预测过程中, 我们仍然使用这个 L 层 Trasformers, 然后总共迭代 T 次. 如上图所示, 我们每一次迭代都输入之前的输出结果.

  • 令 \( { x^{ocr}_1, …, x^{ocr}_N } \) 成为对于 N 个 OCR Tokens 的 d 维 Transformer 输出. 假设我们有 V 个单词的词表.
  • 在第 t 轮, Transformer 输出 \( z^{dec}_t \) (对应 \( x^{dec}_t \), 后文介绍). 再从 \( z^{dec}_t \) 预测 V 维固定码表概率 \( y^{voc}_t \) 和 当前迭代的 OCR Token \( y^{ocr}_t \) .
  • 公式: \( y^{voc}_{t,i} = (w^{voc}_i)^T z^{dec}_t + b^{voc}_i \).
  • 为了从 N 个 OCR Tokens 中选出一个, 作者再 Transformer Model 外面附加了一个动态指针网络 (Dynamic Pointer Network). 通过 \( z^{dec}_t \) 和每个 Token 的输出表示 \( z^{ocr}_n\) 的 bilinear interaction 来预测 \( y^{ocr}_{t,n} \).
  • 公式: \( y^{ocr}_{t,n} = (W^{ocr} z^{ocr}_n + b^{ocr}) (W^{dec} z^{dec}_t + b^{dec}) \), 其中 \( W^{ocr} \) 和 \( W^{dec} \) 都是 d*d 矩阵, \( b^{ocr} \) 和 \( b^{dec} \) 是 d 维向量.
  • 在预测过程中, 拼接 \( y^{ocr}_{t,n} \) 和 \( y^{voc}_{t,i} \) 得到 \( y^{all}_t = [y^{ocr}_{t,n}; y^{voc}_{t,i}] \).
  • 从 \( y^{all}_t \) 即 V + N (V 个问题单词, N 个 OCR Tokens) 个候选中取出最高分的作为当前答案.

\( x^{dec}_t \) 的计算:

  1. 如果在 timestep t 输出的是一个 OCR Token, 则将 \( x^{ocr}_n \) 作为下一个步骤 \( x^{dec}_{t+1} \) Transformer 的输入.
  2. 如果是一个固定词表中的词, 输入 \( w^{voc}_i \) (见上一部分公式 \( y^{voc}_{t,i} \)).
  3. 如果是 OCR Token 再另外增加两个 d 维向量: 与 step t 相关的位置嵌入, 和类型嵌入 (表示是 OCR Token 还是固定词表).
  4. 和机器翻译模型一样, 作者也用了 <begin> 和 <end> 来分别作为模型第一轮输入和终止信号.

另外, 为了保证答案解码中的因果关系, 作者在 Transformer 上加了 Mask, 使得问题文本, 检测到的对象, 检测到的文本无法直接加入解码步骤.

训练

  • 在每一步监督多模态 Transformer.
  • 使用 Teacher Forcing 来训练多步解码器.
  • 在 \( y^{all}_t \) 上使用 multi-label sigmod loss.

实验结果展示

总结

Facebook 的这篇文章指出了使用 Transformer 进行多类的多模态学习的可能性, 即映射到同一个嵌入空间, 然后按顺序输入.

自循环 + Mask 是 Transformer 的一种高级用法, 可以有效迭代输出不定长和混合模态信息.

 

参考资料

论文原文: https://research.fb.com/wp-content/uploads/2020/04/Iterative-Answer-Prediction-with-Pointer-Augmented-Multimodal-Transformers-for-TextVQA.pdf

 

冷月版权所有, 严禁转载
冷月小站 » Facebook Multimodal Multi-Copy Mesh (M4C) 阅读笔记

发表评论