Paper Reading  | Visual Question Answering

[读论文]FVQA: Fact-based Visual Question Answering

Metadata

论文标题:FVQA: Fact-based Visual Question Answering
论文作者:Peng Wang, Qi Wu, Chunhua Shen, Anthony Dick, Anton van den Hengel
发表于:TPAMI 2017.09.19
论文地址:TPAMI, arXiv

Intro

现有的VQA任务的数据集大多对Q的类型都有不少的限制,很多Q只能实现对图片内容的浅层的理解。比如“how many giraffes are in the image?”这样的问题,是不需要外部关于长颈鹿的知识就能回答的。

作者统计了VQA数据集,其中只有5.5%需要“adult-level”的知识才能回答。这就是说大多数问题都是“不需要仔细思考”就能得到答案的。因为人类在回答问题的时候不可避免地会引用到自身的知识储备(哪怕是个纯视觉问题)。所以用这个数据集并不能证明机器真的理解了图片的内涵。

而想要开发能够对图片深层次了解的算法,需要一个更加有挑战性的Question数据。于是这篇文章提出了一个叫做“Fact-based VQA”的数据集。它支持更深入的reason能力。FVQA中的问题大多需要利用外部知识来回答。所以作者扩展了现在常用的VQA数据集,并且在image-question-answer的三元组中额外添加了“supporting fact”这一元素。这些support fact本身则是三元组的形式,例如“<Cat, CapableOf, ClimbingTrees>”。

下图是一个case:

FvyUjtnsPccnCKMXN3S--ARjq9nT

作者用很多baseline model在这个数据集测试后发现效果都一般,所以提出了一个新的model,它能根据这些supporting facts进行推理并回答问题。

构建FVQA数据集

其他的VQA数据集都是在没有任何限制的情况下让标注者根据蹄片产生问题。而FVQA数据集中要求问题的答案必须通过一些常识知识才能得到。这就意味着不能简单地将图片扔给标注者,而是需要让提供大量的supporting-facts(commonsense knowledge)。而这些facts还应该被link到图片中的visual concept中去。文章作者build了一个在线问题收集系统,允许标注者自由地选择图片、visual concept和candidate supporting-facts。

作者从MS-COCO和ImageNet中挑选了2190张图片。这些图片中主要包含三类visual concepts:

  • Object: 图片中的真实实体(例如人、汽车、狗等)。它们是由两个分别在MS-COCO和ImageNet上训练的Fast-RCNN模型得到的。同时还利用了一个image attribute model在没有在图像中定位的情况下标注了92个objects。一共由326个不同的object class。
  • Image Scene: 关于图像中的场景信息(例如办公室、卧室、海滩、森林等)。这是通过VGG-16在MIT Place 205-class数据集上训练得到的,同时使用了包含25个scene class的attribute classifier。最终一共包含221个不同的scene class。
  • Action: Attribute model提供了24类不同的人或动物的动作,例如走路、跳跃、冲浪、游泳等。

而关于这些visual concept的knowledge则是从DBpedia、ConceptNet、WebChild等已有的外部KB中抽取的:

  • DBpedia: 在DBpedia中存储的数据是从Wikipedia中抽取的到的。在这个KB中,concepts根据SKOS Vocabulary被link到它们各自的categories或者super-categories。
  • ConceptNet: 这个KB是由几个commonsense关系组成的,例如UsedFor, CreatedBy和IsA。这篇文章中作者使用了11个common relationships来产生问题和答案。
  • WebChild: 这个数据库中包含了一些比较级关系,例如Faster、Bigger和Havier。

所有这些从KB中搜集的结构化信息都以RDF三元组的形式存储,并且可以通过SPARQL查询。从这三个KB中抽取的fact的模板如下图:

FuXc0vcd8YMuj1V0zniHjdoocS13

为了完成数据集的构建的够做,作者提出了下面收集数据的流程:

  1. 选择Concept: 标注者在给定一张图片和一些visual concept之后,他们需要从中选择出一个与这张图片有关系的visual concept。
  2. 选择Fact: 一旦一个visual concept被选定,与之对应的facts将会以一个句子包含两个entity的形式显示出来。例如一个fact (Train,Slower,Plane)会被表达成"train is slower than plane"。而标注者需要自己选择一个正确并且相关的fact。
  3. 提出问题并给出解答: 这一步要求标注者问一个问题,然后根据image和所选的fact提出解答。也就是说,answer必须直接是图片的visual concept,或者从KB发现的concept中得到的。

这个数据集一共包含了5826个question(对应4216个不同的facts)。下表是这个数据集和其他一些数据集之间的对比:
FoD4GNHTAcMsqgMGXM1-7eBXP17r

VQA Approach

接下来说一说原文中提到的进行VQA的方法。这篇文章与传统方法不同,它是对问题到一组KB-queries进行建模,所以也就不受answer的词表大小的限制,甚至连answer本身都不一定出现在answer中。

工作的第一步,就是将各种来源的信息同意到同一个框架下。尤其是将图像、visual concept统一到同一个Unified KB上。假定有一个concept X,它的类型是T(T=Object, Scene或者Action),它是从图像I中抽取出来的。那么这样就会有下面两个三元组:(X, Grounded, I)和(X, VC-Type, T)。多个KB中包含的意义相同的同一个Concept在Link的时候会当成同一个entity.

第二部是将Question Mapping到Query上。

作者首先定义了几个components:

  1. Key Visual Concept: 这种visual concept需要出现在给定问题的supporting-fact中。这个concept的类别记为\(T_{KVC}\),它的值只能是Object, Scene或者Action。
  2. Key Relationship: 即在supporting-fact中出现的relationship,它的类型是\(T_{REL}\),它一共有13种不同的取值(表1)
  3. KB Source: 表示存储了supporting-fact的外部KB。表示为\(T_{KS}\)在这篇文章中,只能取DBpedia, ConceptNet或者Webchild。
  4. Answer Source: 表示为\(T_{AS}\),即这个答案是怎么来的?答案是图片中的一个visual concept(\(T_{AS}=Image\))?或者是从外部的KB知道的(\(T_{AS}=KB\))?

有了这些之后,作者使用\(T_{KVC}\)、\(T_{REL}\)和\(T_{AS}\)作为Query的形式,然后用一个LSTM的sequence to sequence模型来建模。在训练时,作者将Query三个成分的不同取值相互组合,最后形成了32个类别。也就是说,模型在输入question sequence之后,decoder会生成一个上面query的序列。这个序列又被接入到了一个32分类的分类器,所以能产生一个query sequence。

下面是整个流程的示意图:

FlZLR0Er7s6-MZvRBVZSurz_f2tn

在得到这个query序列之后,可以将其转换成为SPARQL类似的形式,然后在KB上去查询得到答案。并且同时能够通过文中介绍的一种相似度算法,找到与给出这个answer的supporting-facts最接近的那个。

后面实验部分略(原文中有详细解释)。