视觉问答技术完全指南:从数据集到方法再到评估

来源:Tryolabs

编译:Bing

编者按:前几天我们介绍了中科大和美国几所高校联合推出的VizWiz数据集,旨在帮助盲人和有视力障碍的人群。VizWiz是一个典型的VQA数据集,将自然语言处理与计算机技术相结合。本文作者为知名技术公司Tryolabs的机器学习专家Javier,他为我们详细介绍了VQA的原理及常见数据库。以下是论智对原文的编译。

通常,建立一个能回答有关任何图像内容问题的系统都是极有挑战性的任务。假设一个系统看到下面的图像,可能会问到以下问题:

图像中有什么?

里面有人类吗?

他们在做什么运动?

谁在控球?

图中有几名运动员?

他们都是哪个队?

当时在下雨吗?

1986年,阿根廷对战英格兰

所以图中到底有几名运动员呢?嗯……动手数一下就知道共有11名运动员,因为我们足够聪明,不会把裁判(穿黑衣服那位)算在内对吧?

虽然人类能非常轻松地解决这些问题,但想要开发具有这类功能的系统似乎像科幻小说里的情节。然而,随着深度学习的出现,我们见证了视觉问题解答(VQA)领域取得的巨大研究进展,实验的结果让这些系统的出现有了希望。

在本文中,我将简要介绍目前VQA领域的数据集、方法和评估指标,以及如何将这一具有挑战性的任务应用到实际生活中。

一个多学科的问题

我们可以将VQA系统简单地定义为:输入一张图像和与其相关的自然语言问题,然后输出自然语言答案的系统。从本质上讲,这就是一个综合多学科的研究问题。举个例子,就上面那张图来说,想回答问题,我们就需要NLP知识。原因有二:首先要理解问题,其次要生成答案。在文字问答题中,下面是NLP领域常见的问题。比如下面这句话:

巴黎有多少座桥?

如果是用文字回答文字问题,那么这套Q&A系统通常会考虑一下几方面:

对问题进行分类:这是一个问某物有多少个的问题,所以答案一定是一个数字。

提取要统计的对象:桥。

提取统计的环境:在这个问题中,范围是“巴黎”。

分析完问题后,系统会建立某种查询系统(query),然后依靠基础知识得到答案。但这还远远不够精确,因为在美国就有至少22个名为Paris的城市。除此之外还有许多准备工作。

VQA与其他系统主要的区别在于,搜索和推理过程必须依靠图像的内容。因此,要回答“图中是否有人类”这种问题,系统必须能够检测物体。要回答“是否下雨”,就需要对场景进行分类。回答“是哪两个球队”,系统需要广泛的知识。最后,要说出“哪个队员正在控球”,不仅要进行常识推理,还需要相关的知识推理。计算机视觉领域已经解决了很多这类的任务(目标对象识别、目标检测、场景分类等等),他们在过去几年都取得了令人瞩目的结果。

所以,正如我们所看到的,一个好的VQA系统必须能解决典型的NLP和CV任务,以及具备对图像内容推理的能力,这显然是AI研究领域的多学科问题。

可用的数据集

与NLP或CV中的许多问题一样,例如机器翻译、图像标注或命名实体识别(NER),数据集的可用性是一个关键点。结合有明确定义的指标,这些数据集能够公平地比较不同方法、能够与人的结论相比较,并以客观方式评估方法的表现,即确定最新技术的实际局限性。

VQA领域非常复杂,一个好的数据及应该大到足以涵盖世界真实场景中所有可能的问题和图像内容。许多数据集都包含Microsoft COCO数据集中的图像。该数据集有328000个图像,具有91中对象类型(即使是4岁小孩也能轻易发现),总共有250万个被标记的实例。

COCO数据集中标记图像例子

COCO数据集能简化VQA数据集建立的过程。但是,这并不是一项简单的任务。例如,收集多样、实用、清晰的问题就是很难的。除了多样和精准的问题,一个好的数据集同样需要避免偏见,才能被利用好。例如,如果一个数据集中的答案只有“是”或“不是”两种,其中90%的答案都为“是”,那么VQA不用解决任何问题就可能有90%的准确率。

为了进一步了解VQA的复杂性,让我们看一下几个重要的数据集。

DAQUAR数据集

VQA第一个重要的数据集是DAtaset for QUestion Answering on Real-world images(DAQUAR)。它包括6794对训练问答题,以及5674对测试问答题,其中的图片都来自NYU-Depth V2数据集。这意味着平均每张图片有9对问答题。

虽然这是个很棒的开端,但NYU数据库只包括室内场景,有时光线会影响问题的回答。事实上,对人类识别检测的准确率只有50.2%。

人类对图像生成的问答题

DAQUAR数据集的另一个缺陷是它的尺寸不适合用作复杂模型的训练和评估。

COCO-QA数据集

COCO-QA数据集就比DAQUAR大得多了,它有123287张来自COCO数据集的图像,其中78736张用于训练,38948张用于测试。为了建立如此庞大的问答题,作者使用NLP算法从COCO的图像标注中自动生成了问答题。例如,如果有图片被标注成“房间里有两把椅子”,那么它会自动生成问题:“房间里有几把椅子?”需注意,答案必须是一个单词。

虽然这种方法很聪明,但是生成的问题仍然摆脱不了NLP固有的通病,即有时句子读起来很奇怪,或者有语法错误。在一些情况下简直难以理解:

问题中语法错误示例

另一个缺陷是,该数据集只有四种问题,而且分布得不均匀:物体(69.84%)、颜色(16.59%)、数字(7.47%)和位置(6.10%)。

VQA数据集

和其他数据集相比,VQA数据集更大一些。除了从COCO数据集中获取的204721张图片,它还包括50000张抽象的卡通图像。每张图有三个问题和十个答案,即总共有76万个问题和大约1000万个答案。

其中有趣的一点是,在测试时,他们提出了两种回答的模式:开放式和选择题。对于第一种模式,他们提出了如下公式:

这表示,如果有至少三个人回答了同样的答案,那么这个答案被认为是100%正确的。

对于选择题,他们为每个问题创建了18个备选答案(正确和不正确的):

正确的答案:十位标注者的答案都相同。

合理的答案:标注者没有看图像而做出的三个相同答案。

热门答案:数据集中最常见的十个答案(比如“是”、“否”、“2”、“1”、“白”、“3”、“红”、“蓝”、“4”)。

随机答案:为其他问题随机选择正确的答案。

尽管在设计数据集时采取了预防措施(即考虑热门答案时会让推断问题的类型更加困难),但我们仍然会发现一些问题,也许最明显的一个是有些问题过于主观而无法得到正确的答案。有时候,就像下面的图片:

绿色的答案是在标注者看到图片之后做出的,蓝色的是他们没有看到图片做出的

我们不能肯定这个男人有孩子,但是这也许是最可能的答案。然而,有些问题,比如在一张飞机图片上问道:“你愿意乘坐它吗?”这种就没有正确答案。

最后,一个重要的缺点就是有些问题不需要看图像就能得到正确的答案。例如:“狗有几条腿?”、“树是什么颜色?”虽然不总是正确,但“四条腿”和“绿色”是最常见和明显的答案。

目前的方法

通常,VQA的方法大致有以下三种:

提取问题的特征;

提取图片的特征;

将两种特征结合生成答案。

对于文字特征的提取,Bag-Of-Words或长短期记忆编码器可以派上用场。在图像特征方面,在ImageNet上预训练过得卷积神经网络是最常用的选择。对于答案的生成,人们常用的方法是将问题看作分类任务。

VQA方法的简化过程

所以,多种方法之间的主要差异就是它们如何把文字特征和图像特征结合在一起。例如,研究人员能简单的用串联将它们组合,然后输入到线性分类器中。或者可以用被疑似模型来推断问题、图像和答案的特征之间的基础关系。由于相关的许多算法超出了本文的范围,所以我只会提到几个。建议阅读由Kafle和Kanan撰写的有关VQA的调查报告,其中有更详细的分析。

标准(Baseline)

对于很多分类问题,一个普通的标准总能给出任何问题最常见的答案。另一个常见的标准是随机挑选一个答案。例如,2016年Antol等人的研究表明,在VQA数据集中的前1000个答案中挑选最常见的那个,准确率可达29.72%。除此之外,这可能与数据集偏差有关,这样的结果说明了有一个好的标准的重要性:它们决定了可接受性能的最低水平,并且还可以显示出任务或数据集的问题所在。

VQA中另一个更复杂的标准是输入代表特征组合的向量,训练线性分类器或多层感知器。这种组合可能是简单的连接或是各种元素的组合或特征的产物。

例如,之前引用的使用两种模型的工作:

一个多层感知器(MLP)神经网络分类器,每层有两个隐藏层和1000个隐藏单元(dropout 0.5),具有双曲线非线性。

一个LSTM模型后跟一个softmax图层来生成答案。

在第一种情况下,提取文字特征可以使用Bag-Of-Words,用问题中的前1000个单词和标注中的前1000个最常用单词来计算它们。对于图像特征,他们使用VGGNet的最后一个隐藏层。至于LSTM模型,他们使用one-hot编码解决问题,并使用与上述相同的图像特征,然后进行线性变换,将图像转换为1024维,已匹配问题的LSTM编码。问题和图像编码通过点乘法相结合。

这些标准取得的成绩非常有趣。例如,如果模型只在文字特征上训练,则准确度为48.09%,而如果只对视觉特征进行训练,则会降至28.13%。最好的LSTM模型在这两种特征上共同训练,准确度达53.74%。作者证实,选择题的结果优于开放式答案,并且所有方法都比人的水平差得多。

这个框架中的许多遍体可以被应用获得不同标准。

基于注意力的方法

基于注意力的方法目标是将算法的重点放在输入的最相关部分上。例如,如果问题是“球是什么颜色的”,图中包含球的部分则比其他区域更相关。同样,“颜色”比“球”更重要。

VQA常用的方法是利用空间注意力生成特定区域的特征来训练CNN。获取图像空间区域有两种常见的方法。首先,在图片上铺满网格。

网格布置好后,每个区域之间的相关度就由具体的问题决定了。

另一种方法是利用自动生成的边界框。

对于选定的区域,我们可以用问题判断每个特征之间的相关性,并仅仅选择那些能够回答问题的答案。

贝叶斯方法

贝叶斯方法背后的理念是模拟问题和图像特征的co-occurrence统计,作为推断问题和图像之间关系的一种方式。

例如在2016年Kafle和Kanan的研究成果中,作者用给出的问题特征和答案类别模拟出了图片的特征概率。他们这样做是因为他们发现只要给定问题的类型,答案的类型就能预测出来。例如,“图中有多少运动员”是一个问数量的问题,需要数字作为答案。为了模拟出概率,他们将贝叶斯模型与分类模型结合。对于特征,他们使用ResNet处理图像,用skip-thought向量处理文本。

评估标准

看起来可能很明显,但是要记住:任何系统的性能取决于评估它的标准。在VQA中,我们可以使用的最直接的指标是经典精度(classic accuracy)。虽然这对选择题系统来说是个合理的选择,但对于开放式答案来说,这往往是不利的。如果标准答案是“橡树”,那么是否意味着“树”这个答案是绝对错误的?如果问题是“图中有哪些动物?”,而图中显示了狗、猫、兔子,那么“狗和猫”这个答案该如何判定?

这些都是非常复杂的问题,为了尽可能精确地评估不同方法,我们必须解决这些问题。

WUPS

WUPS方法由Malinowski和Fritz在2014年提出,该方法是基于1994年Wu和Palmer提出的WUP方法。WUP方法计算了回答和标准答案之间的语义距离,该值是0到1之间的数字。他们用WordNet,计算语义树中回答和标准答案之间的术语的相似性。这样对于单个术语来说,我们可以得到以下结果:

WUPS(“橡树”,“树”)=0.94

WUPS(“狗、猫、兔子”,“猫和兔子”)=0.8

几乎与所有的语义测量一样,WUPS为完全不相关的术语分配了相对重要的值。为了解决这个问题,作者建议将0.9分以下的减少0.1个系数。

不可否认的是,对多数情况来说,WUPS比经典精度更合适。然而,由于它依赖于语义相似性,如果标准答案是“黑色”或“绿色”,那么如果回答“红色”则会具有非常高的分数。另一个问题是他只能在很少的术语中工作,并且只有当它们具有WordNet含义时才会起作用。

多个独立的标准答案

除了依靠语义测量,我们每个答案也许有多个标准答案。如果是这种情况,我们可以说,如果回答与最常出现的答案一样,那么它就是正确的。如果它与其中一个标准答案吻合,那么也是正确的。后者必须慎用,因为像那些答案为“是”或“不是”的问题没有常见答案,在这种情况下,任何答案都是正确的。

手动评估

最后,另一个解决评估问题的方法是让人类判断。当然这种方法十分昂贵,同时还要制定明确的规定。

现实生活应用

VQA有许多潜在的应用,最直接的可能是帮助盲人或视力有障碍的人士。VQA系统可以提供网络或任何社交媒体上的图像信息。另一个重要的应用是将VQA集成到图像检索系统中,这可能会给社交媒体和电子商务产生巨大影响。VQA也同样可以用于教育或娱乐目的。

VQA Corsortium网站有非常完整的关于VQA的信息、资源和软件。

结语

VQA是最近兴起的领域,需要理解文本和视觉。由于深度学习技术显著提高了NLP和CV领域的研究成果,VQA技术在未来几年也将越来越准确。

就像人工智能领域的许多其他任务一样,构建的数据集和定义的评估标准以某种方式塑造了目前为止所做的研究。评估VQA的最佳系统仍不确定,也许新的数据集和标准会带来改变。

除此之外,还有一些正待解决的问题。例如,假设VQA系统没有问题,用选择题的形式是好还是不好?在选择题数据集中表现良好的系统是否也能在现实中表现好?在得到的答复中生成问题的方式有什么影响?

虽然目前系统的表现与人类的选择相比还差得远,但结果仍然很有希望。随着VQA被大型公共平台、设备和工具所采用,它很可能会改变我们搜索数据和数据交互的方式。

原文地址:tryolabs.com/blog/2018/03/01/guide-to-visual-question-answering-datasets-approaches-and-evaluation/

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180305G1PHTH00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券