大家好,我是CuddleSabe,目前大四在读,深圳准入职算法工程师,研究主要方向为多模态(VQA、ImageCaptioning等),欢迎各位佬来讨论!
我最近在有序地计划整理CV入门实战系列及NLP入门实战系列。在这两个专栏中,我将会带领大家一步步进行经典网络算法的实现,欢迎各位读者(da lao)订阅
论文下载: https://arxiv.org/pdf/1511.07394.pdf
我们提出了一种通过选择与文本相关的图像区域来学习视觉问答的模型。我们的方法通过将文本的query与图像不同区域的视觉特征映射到同一个空间并通过内积来计算它们的相关性。我们的方法在视觉问答中类似"what color"这种需要定位到确切位置和"waht room"这种进行相关区域识别的问题上的表现提高很多。我们的模型在最近发布的VQA数据集(人类标注)上进行测试。
视觉问答(VQA)任务是给定问题和图片来问答相关问题。VQA在语言表征、推理、识别、常识和阅读及查数这样的具体方向上还有很多挑战。在本篇文章中,我们集中关注VQA中的一个关键问题和其它视觉推理任务:让模型知道看哪里。参考上图图1,如果灯泡被定位那么它可以很容易回答"what color is the walk light?"这个问题而在问"is it raining?"时它将会更加集中在雨伞和天空颜色上。我们希望通过图片和问题/答案对来告诉模型在回答问题时更加关注哪些区域。例如,如果我们对于问题"what time of day is it?"或相似问题有好几个训练样本,系统应该学习什么样的答案是对的并且它在图片中哪里响应最高。
想要通过问题-图像对来让模型学习看哪里会面对不小的挑战。像"what sport is this?"这样的问题可以使用整张图片来回答问题。然而像"what is on the sofa?"或"what color is the humans shirt?"这样的问题需要关注特定区域。其余像"what does the sign say?"或"are the man and woman dating?"这种问题需要准确的外部知识或进行推理。系统需要去学习识别物体、推断空间关系、决定相关性并发现自然语言与视觉特征之间的相关性。我们的关键思想就是在共同的隐藏空间中去学习语言和视觉区域特征之间的非线性映射关系。相关区域用来和特定的问题-答案对打分。隐藏嵌入和打分函数通过使用基于margin的损失函数来联合学习。我们在VQA数据集上准备实验因为它通过下图图2中所示的广泛的问题种类来进行开放问题。具体的,我们集中注意多选形式因为它的评估相比开发性答案少了很多不确定性。
我们使得模型可以知道看哪里并提供游泳的基准模型并进行整体分析,我们的贡献如下:
最近许多文本生成图像的方法开拓了图像字幕生成领域任务。在某篇文章中,单词在图像的许多部分中被检测出来然后一起送入语言模型来生成字幕。同样的,有一篇文章使用一个循环神经网络来检测显著物体并一个接一个单词地生成字幕。我们的模型通过一个文字query作为输入来决定相关图像区域。这使得我们的模型可以通过图片来决定一个问题-答案对是否是好的。
由于字幕生成是比较难评估的,因此几种视觉问答数据集都依赖于自己提出的评估方法。我们选择在VQA数据集上进行实验,因为它的问题和答案标注都是开放性且比较自然的。我们在多选问题进行实验因为它的验证结果的模棱两可性弱一点。其它的视觉问答数据集大多数建立在将物体标识转换为问题但是这个需要很多抽象能力。
我们的模型受到端到端记忆网络(EMN)的启发。我们模型会去学习一个问题和隐藏特征的投影并将它们投影到一个公共子空间以通过内积来确定相关性。某篇文章中使用了与我们相同的架构,但它是使用零样本学习来对答案类别进行预测。他们将语言与视觉特征投影到公共子空间并和我们一样通过内积计算分数,然后这个分数用来指导生成物体类别而不是对图像区域进行排序。
现有的视觉问答方法倾向于使用循环神经网络来进行语言建模和预测答案,尽管简单的词袋特征模型被证明表现差不多。与我们的方法工作相同,我们发现了一种word2vec的特征向量方法来进行高效语言建模,并且很容易进行训练。
我们的方法可以通过将文本问题和图像区域嵌入到一个可以通过内积来产生相关权重的隐藏空间。上图图3所示为模型结构概览。输入一个问题和答案、自动选择的候选区域的图像特征,我们使用word2vec和一个两层神经网络来对问题答案对进行编码。每一个区域的视觉特征通过ImageNet训练的卷积网络的两层进行编码。语言和视觉特征随后进行嵌入并通过softmax处理相关权重后得到的相关系数进行比较。通过使用这些权重调整后的拼接的图像视觉特征和语言特征输入一个两层神经网络来输出预测的答案。
我们的模型在VQA数据集的多选任务上进行训练。对于一个给定的问题和相关的答案选项,我们的网络的目标是最大化正确选项和不正确选项之间的分数间隔。我们通过使用预测置信 y y y的hinge loss来达到这点。
在我们的设置中,多选答案可以当成一个变化的度,同时正确性可以由10个标注者来确定。例如,大多数标注者会回答围巾的颜色是"blue"小部分回答"purple"。我们通过以下公式作为损失函数:
L ( y ) = m a x ∀ n ≠ p ( 0 , y n + ( a p − a n ) − y p ) \mathcal{L}(y) = \mathop {max}\limits_{\forall n\neq p}(0, y_n+(a_p-a_n)-y_p) L(y)=∀n=pmax(0,yn+(ap−an)−yp)
上述目标需要正确答案的分数( y p y_p yp)至少与错误答案( n ≠ q n\neq q n=q)中分数最高的错误答案( y n y_n yn)间隔开来。例如,如果6/10的标注者回答答案 p ( a p = 0.6 ) p(a_p=0.6) p(ap=0.6)并且2个标注者回答答案 n ( a n = 0.2 ) n(a_n=0.2) n(an=0.2),那么分数 y p y_p yp至少比分数 y n y_n yn高出0.4。
我们的区域选择层选择性地结合文本特征和相关区域的图像特征。为了确定相关性,该层首先将图像特征和文本特征投影到一个共同的N维空间,然后计算每一个问题答案对和所有区域的内积。
设 G r G_r Gr为区域特征列向量 X r X_r Xr的投影,并且 g → l \overrightarrow g_{l} gl为问题-答案对的嵌入投影。然后通过如下公式计算相关权重:
G r = A X r + b → r G_r = AX_r + \overrightarrow b_r Gr=AXr+br
g → l = B x → l + b → l \overrightarrow g_l = B \overrightarrow x_l + \overrightarrow b_l gl=Bxl+bl
s → l , r = σ ( G r T g → l ) \overrightarrow s_{l, r} = \sigma(G^T_r\overrightarrow g_l) sl,r=σ(GrTgl)
σ ( z → ) = e z j Σ k = 1 K e z k f o r j = 1 , . . . K \sigma(\overrightarrow z) = \frac{e^{z_j}}{\Sigma^{K}_{k=1}e^{z_k}} for j=1,...K σ(z)=Σk=1Kezkezjforj=1,...K
其中,输出 s → l , r \overrightarrow s_{l,r} sl,r是经过softmax标准化的。
对于每张图像使用100个区域,这使得我们对于一个问题-答案对由100个区域权重。然后,文本特征直接和每一个区域的图像特征进行拼接来产生100个不同的特征向量。展示如下面带有 X r X_r Xr和 x → l \overrightarrow x_l xl的公式。每个特征向量通过 W W W进行线性投影,然后通过分数 s → r \overrightarrow s_r sr来获得均衡后的特征,然后经过relu激活函数和批归一化层。
P l , r = W [ X r − x → r − ] + b → o P_{l,r} = W[\begin{array}{cclr}X_r\\-\overrightarrow x_r-\end{array}] +\overrightarrow b_o Pl,r=W[Xr−xr−]+bo
a → l = P s → l , r \overrightarrow a_l=P\overrightarrow s_{l, r} al=Psl,r
我们尝试过直接使用图像特征和语言特征的拼接来预测分数而不是现在这种通过隐藏空间计算内积的方式。然而,结果是显著区域的权重变得很小。计算内积的方式是我们所尝试的方式中唯一成功的。
我们使用300维度的word2vec作为我们的单词表示。将相似单词表征为相似的向量,这有助于回答开放式问题。使用word2vec特征向量的平均作为嵌入,我们可以针对每一个问题答案对获得固定长度的特征向量。在我们展现结果的小节中,我们展现了我们模型比更复杂的LSTM类模型具有更出色的结果,这说明BOW模型可以针对VQA任务提供更为有效且简单的语言表征。
我们首先尝试对问题和答案的向量的平均进行拼接来产生一个600维度的向量,但是word2vec的表示是稀疏的,对几个单词进行平均是比较混乱的。我们使用斯坦福语法工具处理问题:
以上每个bin都是一个300维的表示,我们将它们进行拼接得到1500维度的问题/答案表征。下图图4展示了对于问题的处理。
图像特征直接通过预训练网络获得,然后送入区域选择层。我们首先通过提取99个候选区域的边缘框(NMS设置为0.2)。我们发现这个NMS对选择相关的小区域非常重要。最终,整张图片也会作为一个区域来确保模型至少可以学习到空间关系,这样每张图片就会有100个候选区域。
我们使用VGG类网络来提取图像特征,将最后一层全连接层的输出(4096维)与softmax层的输出(1000维度),这样每个区域都会获得一个5096维的向量。
我们的网络结构如图3所示。我们的全连接层使用Xavier进行初始化并且在每一个全连接层后面跟着relu激活函数和批归一化层。获取的word2vec文本特征送入网络的输入层同时图像区域特征送入区域选择层。
我们的网络尺寸设置如下。1500维度的语言特征首先依次经过3个全连接层分别输出2048维、1500维和1024维的特征。嵌入后的语言特征然后通过区域选择层来与视觉特征相结合。在区域选择层中,投影 A A A和 B B B将视觉特征和语言特征投影到900维然后计算它们的内积。最终依次通过两个全连接层分别输出900维和1维并将输出结果作为当前问题-答案对的分数。
区域选择层的初始化也很重要。投影 A A A、 B B B和 W W W初始化为0.001倍的标准正态分布。我们发现初始化较低的值是比较好的。
我们在MS COCO视觉问答数据集上验证我们的区域选择层。这个数据集包含82783张图片用来训练,40504张图片用于验证且81434张图片用于测试。每张图片有3个相关问题,每个问题有10个标注者回答问题。每个回答如果有3个以上的标注者回答,那么就考虑这个问题为正确答案。我们使用18-way多选任务因为它的验证相比开放式回答任务少了很多模棱两可性。我们值使用训练集进行训练,预留出10%用来进行模型选择和参数微调。我们在验证集上进行验证然后在测试集上使用提交工具进行进一步比较。
我们验证并分析了我们的区域权重相比于使用整张图片或仅使用语言的模型(表1,2,3)提升了多少准确率,见图8。我们也在图像子集上进行了简单的验证并展现了相关区域可以获得更高的权重(见图6)。我们也展示了我们的语言模型相比其它机制的优点(表4)。
我们训练了一个网络来对每一个只从语言表示中预测答案的分数。这使得模型展示了使用图像特征相比好的猜测能提升多少性能。
我们将整个图像的CNN图像特征与问题特征拼接后送入三层神经网络来得到分数。
为了测试区域权重是否重要,我们尝试对每个区域采用相同权重。
表1展示了在验证集上的对比。我们提出的区域选择模型是表现最好的。同样,我们可以看到对每个区域给定相同的权重并没有用。我们也使用了表现最好的LSTM模型作为对比。这个模型在多选任务上甚至比我们的基准模型低得多。
我们也在test-dev和test-standard上验证了我们的模型。我们的模型在训练集+验证集上重新训练来微调。注意我们的模型明显在"others"类问题中表现比其它模型好,并且它还是问题种类中占比最多的。
表3展现了性能对比的细节。图8展示了结果的质量对比,高亮区域与问题有着更强的关联性。这些可视化通过soft mask生成。一个小的模糊滤波器用来生成soft mask。在颜色问题中,定位到相关物体的效果是非常好的,这也导致了我们的表现较好。在有些像"how many birds are in the sky?"这类问题中,系统不能产生正确答案但是能集中到相关物体。第三行展现了不同的问题是如何导致不同的相关区域的。注意到第三行中模型是怎么通过聚焦在马桶上从而判断房间是浴室的。
在图5中,我们展现了区域选择是怎么随着不同的问题答案对变化的。在第一行,我们可以看到模型更加关注匹配的区域。在它发现一个匹配的绿色区域时,相关的置信程度就比较低。并且,我们可以看到不相关的答案选择获得了更少的注意力权重。
为了评估我们对于不同问题种类的区域权重的一致性,我们设置了一个非常规的实验来直接验证。我们手工标注了验证集中205张图片的边缘框以此来判断和权重是否是相一致的,如图6所示。为了验证,我们比较了我们标注的边缘框中的像素的平均权重和所有像素的平均权重。像素权重通过累计像素对应的每个区域的选择权重来求得。我们在图7中可以观察到148个实例的标注区域的平均权重明显比全局平均权重高的多(72.2%)。
我们也比较了我们的语法模型与两个bin的模型(一个bin时单词word2vec特征的平均;另一个是答案单词的平均)来评判我们的复杂的表征。每一个模型都在VQA真实图像子集的训练集上训练并在验证集上评估。对比结果在表4中展现可以发现我们的效果最好。
我们提出了一个可以在图像中选择区域的视觉问答模型。我们的模型表现超过所有的基准和显存模型(MS COCO VQA多选任务)。一个未来工作的方向是去改进例如查数和阅读这种具体工作上。其余方向包括为改进预训练模型用来物体和属性检测或者视觉推理,或者使用外部知识库来帮助识别苦难问题的相关区域。