Paper Reading  | Visual Question Answering

[读论文]Explicit Knowledge-based Reasoning for Visual Question Answering

Metadata

文章标题:Explicit Knowledge-based Reasoning for Visual Question Answering
作者:Peng Wang, Qi Wu , Chunhua Shen, Anton van den Hengel, Anthony Dick
发表于:IJCAI 2017,(arXiv 2015.11)
下载连接:IJCAI, arXiv

Intro

这篇文章提出的VQA方法融入了在外部知识库上的“推理”。这个方法不但能使用图片中未出现的内容来回答自然语言的问题,还能解释清给出这个答案的依据是什么。这比之前使用LSTM的方法能够回答更多更复杂的问题。

现在有不少关于VQA的研究,但是现有的方法都存在一些问题。首先,这些方法很难解释清为什么就能给出这些答案。也就没法说清楚这个答案是基于图片中信息得到的?还是由于training set的变差而学到的prevalence(总是给出特定的答案)。其次,由于现在的model大多都是用一个又一个的question answr pairs进行训练的,所以能够被准确回答的问题的种类是有限的。而想要回答那些由人类提出的很general的问题,通常需要很多图片中并没有体现的信息(common sense)。而且想要捕捉到这些信息会导致LSTM非常庞大,这就需要海量的训练数据。

这篇文章的一个contribution就是提出了一种叫做“Ahab”的方法,它能回答非常多种关于图片的而且需要额外信息才能回答的问题。与其他将图片和question直接映射到answer的方法不同,Ahab通过将图片和问题映射到一个query上,而这个query是可以在knowledge base上被执行来得到最终答案的。

所以这个模型学习到的是在给定图片和问题后,如何找到答案的方法,而不是直接去学习它们之间的关联。使用Knowledge Base意味如果某些question或者answer中的concept在KB中出现过,那它们之间就可以产生一定的联系,从而大大地扩展可以回答的问题的范围。(说白了就是把原本相互独立的一条一条的知识(QA pair等),通过KB联系在了一起,达到“触类旁通”的效果。)

这种方法的缺点是问题种类受限于在KB上做查询的方式数量。因此要求自然语言的question必须能够消解(reducible)成为一种可行的查询模板(文中提出了23个模板)。

除此之外作者提出了一个新的VQA数据集,这个数据集中的问题是通过几个pre-defined模板生成好的。问题根据答案所需的信息类型被标记成了三个不同的类别:Visual、Common-sense和KN-knowledge。例如下图:

FnwmJfxVt7MSx2J29HaEgAwAVjA4

关于KB-VQA数据

作者从MS-COCO validation images中选择了700张富含上下文信息,而且object类别比较diverse的图片。这些图片包含了150种object class和100个scene class,每张大约包含6-7个objects。然后由五个人每个人对700张图片标注了3-5个QA pairs。

详细内容在原文章能找到。标注的问题大约就是上面的形式。

The Ahab VQA approach

为了能够让image的内容在KG上进行推理,需要先将图种的内容映射到Visual Concepts上。每张图需要用不同的CNN模型来抽取三类不同的Visual Concepts,包括:objects,scenes和attributes。在得到这些Visual Concepts之后,需要将它们关联到KB上。图中的visual concepts用RDF三元组的方式存储。比如说,如果图片中包含了一个长颈鹿,则这些visual concepts包括(Img, contain, Obj-1)和(Obj-1,name,ObjCat-giraffe)。每一个visual concept都可以被link到DBpedia上的entit(通过一个same semantic。比如说(ObjCat-giraffe, same-concept, KB:Giraffe))。

在得到图像和DBpedia上的全部相关信息之后,接下来要用它们来回答问题。

首先,给定一个自然语言的question,要先将它转换成为能够在KB上执行的query。这里用了一个叫做Quepy的Python框架来完成这个工作。实际上就是一个通过正则表达式匹配模板然后填空的过程。

在转换完question之后,填到模板slot中的信息,仍然是自然语言形式的,所以接下来需要找到这个slot和构建的graph中具体实体之间的联系。<obj> slot中的那个obj能够通过location、size和名字等信息被找到。而<concept> slot则可以通过DBpedia中的predicate wikiPageRedirect来找到。

在得到所有问题中信息的结构化数据后,可以根据模板生成对应的SPARQL。

然后最后一步就是根据query得到的结果来生成答案。

其他

感觉这篇文章用的方法其实直观:从图片中解析visual concepts->将这些concepts映射到KB中的entities->解析问题,将问题转换成为一个可以在KB上query的SPARQL->执行这个查询->利用结果生成答案。

感觉现在纯粹基于模板的方法比较少了,所以借鉴意义并不大,就没有继续写这篇文章的实验部分。