《Bottom-Up and Top-Down Attention for Image Captioning and Visual Question Answering》——2018 CVPR论文笔记

        这是一篇2018年的CVPR的论文,使用自下而上和自上而下相结合的注意力机制实现了image captioning和VQA,作者使用这个注意力模型在image captioning上取得了非常好的效果,在2017年的VQA挑战赛中也取得了冠军。

 论文链接:CVPR 2018 Open Access Repository

关联论文:Tips and Tricks for Visual Question Answering: Learnings from the 2017 Challeng(这篇文章详细地介绍了2017年VQA挑战赛的冠军模型,对网络的架构和超参数的选择进行了大量的探索。)

        在image captioning和VQA中通常需要执行一些细粒度的操作,甚至是多步推理来生成高质量的输出,所以广泛地使用了注意力机制。

    以往的模型大都属于自上而下的类型,也就是提取问题作为输入这种方法的attention作用的图像对应于左图,没有考虑到图片的内容。对人类来说,注意力会更加集中于图片的目标或其他显著区域。因此本文作者引入了自下而上的注意力机制,如右图所示,使注意力作用于object proposal。

    本文灵感来源:在人类的视觉系统中,注意力可以由当前任务(如:寻找某物)使我们的注意力聚焦到与任务紧密相关的部分;也可以被一些显著的、突出的、新奇的事物吸引。所以这篇论文就提出了一种自下而上和自上而下相结合的注意力机制。

        这篇论文大部分篇幅在介绍image captioning,对于VQA模型的建立介绍较少,以下内容大部分来源于《Tips and Tricks for Visual Question Answering: Learnings from the 2017 Challeng》。

        整体上来说,模型就是联合输入问题和图像的特征,然后从一组候选答案中选一个最好的(多分类任务)。具体地,模型可以分成以下这些子部分,问题嵌入、图像特征、图像注意力、多模态融合等等。

模型

Question  embedding

        这一部分的操作包括对问题进行常规的预处理,比如把句子拆成单词,转成小写等,还有截取成固定长度,这里是把一个问题截成14个词。

        然后使用一个预训练好的GloVe模型对问题进行编码,GloVe模型就是一个基于全局词频统计的词表征工具,它的作用是将一个单词表达成一个由实数组成的向量,这里使用的是在Wikipedia/Gigaword corpus语料库上训练好的模型。通过Glove后,一个问题就被编码成了一个14*300的词嵌入序列。

        最后把这个词嵌入序列通过循环门控单元GRU(512维的内部状态),取其最终状态作为的问题嵌入q。

Image feature

         对于图像特征的提取,这里使用Faster R-CNN提取图像中的K个目标,实现一个自下而上的注意力,由于图像的复杂度不同,每张图像的K也根据目标检测中的固定阈值自适应调整,但最大不超过100。提取出来的对象表示为一个K*2048的图像特征v。

Image attention

         图像注意力部分,跟其他的注意力模型差不多,是基于问题进行引导注意力,不过将其命名为了自上而下的注意力。具体实现是:对于从1到K的每个位置的图像,它的特征向量vi与问题嵌入级联,然后它们共同通过一个非线性层和一个线性层来获得一个注意力权重,然后使用softmax对这个权重进行归一化,最后将归一化的注意力赋予图像特征获得一个2048维的注意力图特征。

Multimodal fusion

         多模态融合部分,将之前得到的问题嵌入和注意力图特征分别通过一个非线性层,都转为512维,然后使用哈达玛积(矩阵中对应位置元素相乘)将它们结合起来,得到h,这个h是最后的分类器的输入。

Output classifier

        输出分类器部分。对于在训练集中出现过8次的答案,我们将其选入候选答案集合(N=3129)。然后我们可以将VQA任务转化为一个多标签分类任务。将上一步得到的联合嵌入h通过一个非线性层和一个线性层,然后通过sigmoid激活函数计算每一个候选答案的得分。(在计算损失函数时,使用软分数。)

软分数的概念

         对数据集中的每一个问题,都有10个标注者来标注答案,对一些有歧义的问题,或者答案不唯一的问题,标注者之间难免会存在一些分歧。比如右边这张图,截取了某一个问题,标注者们标注的十个答案,其中有6个标注者标注的“homeless”,还有另外4个标注者标注的其他的。这就引出了软分数的定义,对于第i个问题的第j个候选答案,如果有三个及以上的人标注的是这个答案,那么这个答案的分数为1,否则的花就是标注人数除以3。比如对于右边这个例子,homeless的分数就是1,其他的各是1/3。与之对应的就是一种二值的硬分数,标注数最多的这个答案计分为1,其他都为0。

        有了这个软分数后,模型的目的就不只是选一个最优的答案,还需要预测每一个候选答案的正确性,对应的损失函数如上式。作者认为使用软分数有两个好处,一是允许模型优化每个问题的多个答案,二是提供了比二元目标(也就是硬分数)稍微丰富的信息。 

Non-linear layers imuestion embeddingQuestion embeddingQuestion embedding

         模型中的非线性层,都使用门控双曲正切激活,如下面公式所示。其中g作为一个激活门。比较类似LSTM和GRU中的门控操作。

Training 

        训练部分,使用随机梯度下降算法,使用AdaDelta优化算法,模型容易过拟合,在训练时要early stopping,这些都比较常规。

在训练的时候,除了使用VQA v2中的数据集,还用了30%的Visual Genome数据集作为额外的训练数据。

        在使用梯度下降算法时,使每个batch中的 数据保持平衡。也就是说对于同样一个问题,要有两个不同的图片,且两张图片针对这个问题有不同的回答。作者猜想这样做能使学习更加稳定,并促使网络辨别匹配的实例之间的细微差异。

        除此之外,对于测试部分,除了使用标准的VQA准确率作为评价指标外,作者还引入了一个新的度量指标,把他称为平衡对的准确率,这里就要求对于同一个问题的两张图片都预测对了,这个样本才算预测正确。

 实验

         随后就是一系列的对比实验,来查找哪些超参数是模型性能提升的关键。

 总结

本文认为:

  • 使用更好的图像特征仍能取得更显著的收益,特别是使用自底向上的注意力;
  • 从另外的VQA数据集中能使性能提升,但性能提升的上限还不明确,但是收集更大的数据集不太可能带来重大突破;
  • 使用其他信息来源和使用非VQA的数据集很有前景。

本文猜测:
        在实验中,还使用了词袋模型替代GloVe模型对问题进行编码,词袋模型在对问题编码时不考虑单词的顺序,最终达到的性能跟考虑单词顺序的GloVe相比差不多,那么这说明:①单词的顺序可能传达不了太多的信息;②模型仍然无法理解和有效使用语言结构。

本文提倡:
        本文提出了一种更严格的性能指标,这项指标要求对于同一问题的两张图像都需要回答正确,作者认为这项指标能反映模型视觉理解和分辨图像之间细微差别的能力。estion embedding

猜你喜欢

转载自blog.csdn.net/qq_40481602/article/details/125266389