Heterogeneous Memory Enhanced Multimodal Attention Model for Video Question Answering git
2019-04-25 21:43:11
github
Paper:https://arxiv.org/pdf/1904.04357.pdf 网络
Code: https://github.com/fanchenyou/HME-VideoQA app
1. Background and Motivation: ide
用 Memory Network 作视觉问题回答并非特别新鲜,由于 CVPR-2018 已经有不少工做,都是用这种外部记忆网络来进行知识的读取,从而更好的辅助 VQA。可是本文作的是另一种 task,video question answer,相对来讲,视频的确定要更难一些。如何很好的根据问题,到视频中去定位相关的视频帧,从而更好的完成问题回答,是一个须要关注的问题之一。学习
现有的方法都尝试对视频或者问题进行 attend 处理,以获得更好的结果:测试
1. Jang et al. 对视频特征的空间和时间维度都进行加权处理(spato-temporal attention mechansim on both spatial and temporal dimension of video features);他们也提出用 VGG 和 C3D 来提取 appearance 和 motion feature 来更好的表达视频帧;可是他们采用前期融合的方法,而后输入到 video encoder 中,这种方式获得的效果,并非最优的;优化
2. Gao et al. 提出用更先进的 co-attention mechanism 来替换掉 Jang 的前期融合的方法;可是这种方法并无同速进行 appearance 和 motion feature 检测到的 attention;与此同时,这种方法也丢失了能够从表观和运动特征中获得的 attention;编码
做者认为:现有方法未能正确的识别 attention,是由于他们分开进行了特征的融合 (feature integration) 和注意力学习 (attention learning) 的步骤;为了解决这一问题,做者提出一种新的多种记忆(heterogeneous memory)来同时完成融合 appearance and motion features 以及 learning spatio-temporal attention。spa
另外,若是 question 有很是复杂的语义信息,那么 VideoQA 就会变得异常复杂,从而须要多个步骤的推理。现有的方法都是简单的用 Memory Network 来处理这种状况,可是做者认为他们的方法太多简单,用 LSTM 或者 GRU 获得的 single feature vector 缺少捕获问题中复杂语义的能力,如图 1 所示。因此,就须要设计一种新的模型来理解问题中复杂的语义信息。为了解决这一问题,做者提出一种新的网络结构,尝试将 question encoder 和 question memory 来互相加强。question encoder 学习问题的有意义表达,而后从新设计 question memory 来理解复杂的语义,而后经过存储和更新全局内容来强调检索的物体。
此外,做者也设计了一种多模态融合层,经过对齐相关视觉内容和关键问题单词,来同时对 visual 和 question hints 进行加权处理。在逐渐优化联合 attention 以后,再将其进行加权融合,而后进行 multi-step reasoning,以从复杂的语义中进行正确答案的推理。
2. The Proposed Method:
2.1 Video and Text Representation:
对于 video,做者用 Resnet, VGG 和 C3D 模型来提取 appearance and motion feature, $f^a, f^m$. 而后用两支 LSTM 模型分别对 motion and appearance features 进行处理,最终放到 memory network 中进行特征融合;
对于 question,先用 Glove 300-D 获得 embedding,而后用 LSTM 对这些向量进行处理。
2.2 Heterogeneous Video Memory:
与常规的 external memory network 不一样,做者新设计的网络处理多个输入,包括编码的 motion feature,appearance feature;用多个 write heads 来决定内容的写入,如图 3 所示。其中的 memory slots M = [m1, m2, ... , ms] 以及 三个 hidden states $h^m, h^a$ and $h^v$。前两个 hidden state $h^m$ 和 $h^a$ 用来表示 motion 和 appearance contents,将会写入到记忆中,$h^v$ 用于存贮和输出 global context-aware feature,该特征是融合了 motion 和 appearance information 的。
2.3 External Question Memory:
该问题记忆的目标是存贮 sequential text information,学习不一样单词之间的相关性,而且尝试从全局的角度来理解问题。
2.4 Multi-modal Fusion and Reasoning :
如上图所示,该模块的输入是 视频特征,问题的特征。核心之处在于 LSTM,其隐层状态记为 s,在每次迭代的过程当中,该控制器会尝试 attend 到 video feature 和 question feature 的不一样部分,而后将这些特征与学习到的权重,进行结合,而后更新其 hidden state $s_t$。
Temporal Attention:在第 t-th 迭代中,咱们首先经过 attend 不一样视觉特征,问题特征的不一样部分,产生两个 content vector。而后 temporal attention weights 能够计算以下:
而后,加权以后的 content vector c,以及转换的 d 计算以下:
Multimodal Fusion:经过将转换以后的 content vector d 和 以前的 hidden states $s_{t-1}$ 进行交互,获得多模态 attention weights:
最终融合的知识 $x_t$ 能够经过与权重的加权求和获得:
Multi-step reasoning: 为了获得第 t-th 迭代的推理结果,咱们用 LSTM 来更新 hidden state,即:$s_t = LSTM(x_t, s_{t-1})$。这个推理过程进行了 L 次(实验中设置为 3 次)。最后一次迭代的结果 $s_{L}$ 记为 distilled knowledge 的最终表达。咱们也采用了标准的 temporal attention 在编码的 video feature,而且将其与 $s_L$ 进行组合,获得最终的答案表达 $s_A$。
2.5 Answer Generation:
Multiple-choice: 是从多个候选答案中,选择一个正确的答案。咱们将 question 和 每个候选的 answer 分别组合起来,而且将 QA pair 进行前传,获得最终的 answer feature,咱们用 linear layer 来对全部的候选答案进行打分。在训练过程当中,咱们最小化 positive answer 和 each negative answer 的 pairwise hinge loss:
咱们能够端到端的进行网络的训练。在测试的时候,咱们选择一个具备最高得分的 answer 做为最终的答案。
Open-ended task is to choose one correct word as the answer from a pre-defined answer set of size C. 做者这里采用 linear layer 和 softmax function,来预测全部候选答案的几率。训练的偏差用交叉熵损失来衡量:
其中,y 是 gt label。测试的时候,也是从中选择一个最大得分的候选,做为 final answer:$c^* = arg max_c (P)$。
疑问:看到这里,我表示有点疑惑,都是从中选择一个响应最大的做为 final answer,为啥搞这两种看似不一样的方式?
3. Experiments:
==