社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

一文看懂深度学习的VOA(视觉问答)技术

深度学习与神经网络 • 7 年前 • 756 次点击  

视觉问答(Visual Question Answering,VQA)是一个需要理解文本和视觉的新领域。由于深度学习技术显著地改善了自然语言处理和计算机视觉结果,我们可以合理地预期VQA将在未来几年变得越来越准确


前言

最近Amusi一直在follow最新的计算机视觉方向的论文,经常在arXiv上看到关于VOA方向的论文。这个方向研究的人越来越多,Amusi觉得很有必要对VOA进行了解。在此分享一下,我在tryolabs上看到的一篇文章Introduction to Visual Question Answering: Datasets, Approaches and Evaluation"[1],这里大致对该文的翻译,其内容真的是满满干货。



VOA

历史上看,建立一个能够回答关于图像的自然语言问题的系统一直被认为是一个很有前景的方向。根据下面图像,想象一个系统,它可以回答这些问题:

  • 图像中有什么?

  • 有人类吗?

  • 什么运动正在进行?

  • 谁在踢球?

  • 图像中有多少球员?

  • 参赛者有哪些人?

  • 在下雨吗?


1986年阿根廷VS英格兰


那么,图像中有多少玩家?那么,我们可以数一数,可以看到有十一名球员。因为我们足够聪明,所以不会将裁判员也计数。

尽管作为人类,我们通常可以轻松地执行此任务,但研发具有这些功能的系统似乎更接近于科幻小说,而非当然人工智能(AI)所能实现的。然而,随着深度学习(DL)的出现,我们目睹了视觉问答(VQA)方面的巨大研究进展,使得能够回答这些问题的系统正在出现,并带来很有希望的成果。


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




多学科问题

通常,我们可以将VQA系统定义为一种算法,将图像和关于图像的自然语言问题作为输入,并生成自然语言答案作为输出。这本质上是一个多学科的研究问题。举个例子来说,关于前面提到的图片问题。我们需要自然语言处理(NLP)至少有两个原因:理解问题和产生答案。这些是基于文本的问答中的常见问题,这是一个在NLP中深入研究的问题。给出以下句子:


巴黎有几座桥梁?


NLP问答系统通常会:

  • 分类或输入问题:这是一个“多少”问题,因此答复必须是一个数字。

  • 提取对象以计数:桥梁。

  • 提取必须执行计数的上下文:在这种情况下,巴黎市。


在对问题进行分析后,系统建立某种查询并依靠知识库来获得答案。这并非是一件轻松的事情(例如,美国至少有22个城市称为巴黎pairs),but a lot of work has been done since the 1970s(不知道这句英文放在此处的含义)。


VQA的主要区别在于搜索和推理部分必须在图像内容上执行。因此,要回答是否有人类,系统必须能够检测到物体。要回答是否下雨,就需要对场景进行分类。要回答团队有哪些人,那么系统需要一些"常识"。最后,要说出哪个球员在踢球,此时常识性推理以及可能性的知识推理是必要的。在计算机视觉(CV)领域已经解决了这些任务中的许多任务(目标识别,目标检测,场景分类等),其在过去几年中取得了令人瞩目的成果。


所以,正如我们所看到的,一个好的VQA系统必须能够解决广泛的典型NLP和CV任务,以及图像内容的推理。这显然是一个涉及CV,NLP和知识表示与推理(KR)的多学科AI研究问题。




可用的数据集

与NLP或CV中的许多问题一样,例如机器翻译(Machine Translation),图像描述(Image Caption)或命名实体识别(Named Entites Recognition),数据集的可用性是一个关键问题。它们允许结合明确定义的指标(参见下面的“评估指标”部分),用不同的方法将它们与人的决策进行比较,并以绝对方式衡量它们的表现,即确定经验最新技术的局限性。


VQA领域非常复杂,一个好的数据集应该足够大以捕捉真实世界场景中问题和图像内容中的各种可能性。许多数据集都包含来自Microsoft公共对象上下文(COCO)的图像[1],该数据集包含328,000个图像,具有91种对象类型,共有250万个标记实例,这些对象很容易被一位4岁的孩子识别。



来自COCO数据集的注释图像示例


COCO数据集可以简化并加速构建VQA数据集的过程。然而,这不是一件容易的事。例如,收集各种各样,方便和没有歧义(ambiguous)的问题是一个很大的挑战。除了变化和精确性问题外,一个好的数据集也必须避免可能被利用的偏见。例如,如果数据集仅包含“是/否”答案,其中90%的答案为“是”,那么最简单的最常见的类策略将获得90%的准确性,而不解决VQA方面的任何问题。


为了深入了解VQA的复杂性,我们来看看已发布的一些最重要的数据集。




DAQUAR数据集

第一个重要的VQA数据集是DAQUAR((The DAtaset for QUestion Answering on Real-world images))数据集[3],翻译过来就是用于回答真实世界图像数据集。它包含6794个训练和5674个测试QA(question-answer) 对,基于NYU-Depth V2数据集的图像[4]。这意味着平均每个图像大约有9对。


虽然这是一项很棒的举措,但纽约大学NYU数据库仅包含室内场景,而如果在室外的情况,那么会难以回答问题。事实上,对人类的评估,NYU数据集显示了50.2%的准确率。

人为图像生成的QA对的例子


DAQUAR数据集的另一个缺点是其不适合训练和评估复杂模型。



COCO-QA数据集

在COCO-QA数据集比DAQUAR大很多。它包含来自COCO数据集的123,287幅图像,78,736次训练和38,948次测试QA对[5]。为了创建如此大量的QA对,一篇叫做《Exploring Models and Data for Image Question Answering》的作者使用NLP算法从COCO图像描述自动生成它们。例如,对于“房间里的两把椅子”等给定的标题,它们会产生一个问题,例如“有多少椅子?”。必须注意的是,所有的答案都是一个单词。


虽然这非常聪明,但这里的一个明显问题是,这些问题受到固有的NLP限制的困扰,所以它们有时是奇怪的形式或者有语法错误。在某些情况下,它们简直难以理解:

问题中的语法错误的例子


另一个不便之处是数据集只有四种问题,不是均等分布的:对象(69.84%),颜色(16.59%),计数(7.47%)和位置(6.10%)。




VQA数据集

与其他数据集相比,VQA数据集相对较大。除COCO数据集的204,721张图像外,它还包含50,000张抽象卡通图像。每个图像有三个问题,每个问题有十个答案,即超过760K个问题,其中有大约10M个答案。为了达到这个目的,亚马逊土耳其机器人的工作人员提出了问题,另一个小组写了答案。


有趣的一点是,为了测试,他们提出了两种答案模式:开放式和多项选择。对于第一种模式,他们提出以下度量标准:

这意味着如果至少有3名工作人员提供了确切的答案,则答案被认为是100%准确的。


对于多选模式,他们为每个问题创建18个候选答案(正确和不正确):

  • 正确答案:通过十个注释给出的最常见的答案。

  • 合理的答案:从注释者那里收集三个答案,而不看图像。

  • 热门答案:数据集中最受欢迎的十大答案(如“是”,“否”,“2”,“1”,“白”,“3”,“红”,“蓝”,“4”用于真实图像的“绿色”)

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


尽管在设计数据集时采取了预防措施(例如,包含常见的答案使得从答案集中推断问题的类型更加困难),但我们可以观察到一些问题。也许最引人注目的是有些问题过于主观而无法得到正确的答案。有时候,就像下面的图片一样,可能会给出最可能的答案。

棘手问题的例子。绿色字体表示查看图像时给出的答案。蓝色字体表示不看图像随便给出答案的情况。


我们不能说这个人有孩子,但毫无疑问,这是最可能的答案。然而,有些问题比如“你愿意用那种方式飞行吗?”在飞机的图像上,没有一个正确的答案。


最后,一个主要的缺点是我们可以称之为微不足道的问题,那就是那些通常不需要图像就能得到好的(或可能的)答案的问题。例如:“狗有多少条腿?”或“树是什么颜色?”,虽然并不总是正确,但四条和绿色是最常见和最明显的答案。




目前的方法

一般来说,我们可以概述VQA中的方法如下:

  1. 从问题中提取特征。

  2. 从图像中提取特征。

  3. 结合这些特征来生成答案。


对于文本特征,可以使用诸如Bag-Of-Words(BOW)或Long Short Term Memory(LSTM)编码器等技术。就图像特征而言,在ImageNet上预先训练的CNN是最常用的选择。关于答案的生成,这些方法通常将问题建模为分类任务。


因此,几种方法的主要区别在于它们如何将文本特征和图像特征结合起来。例如,它们可以简单地使用串联将它们组合,然后提供一个线性分类器。或者它们可以使用贝叶斯模型来推断问题,图像和答案的特征分布之间的基础关系。由于过去几年提出的大量算法超出了本文的目的,所以我只会提到其中的一些。对于更详细的比较分析,我建议您阅读由Kafle和Kanan撰写的关于VQA的优秀调查[6]。




基线(Baselines)

至于许多分类问题,一个似乎微不足道的基线总是对任何问题给出最常见的答案。另一个微不足道的基准是挑选一个随机答案。例如,Antol等人的工作[7]。(2016年)显示,始终从VQA数据集中最高的1K答案中选择最受欢迎的答案(答案是“是”),可以获得29.72%的准确性。除此之外,这可能与不希望的数据集偏差有关,这样的结果说明了具有良好基线的重要性:它们确定可接受的最低性能水平,并且还可以暗示该任务的固有复杂性和/或数据集。


在VQA中广泛使用的更复杂的基线包括使用代表特征组合的向量作为输入来训练线性分类器或多层感知器。这种组合可以是简单的连接或元素明智的总和或特征的产物(element wise sum or element wise product)。


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

  1. 一个多层感知器(MLP)神经网络分类器,每层具有2个隐藏层和1000个隐藏单元(丢失0.5),使用tanh作为激活函数。

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


在第一种情况下,对于文本特征,使用词袋模型(BOW)方法,使用问题中的前1000个单词和字幕中的1000个最常用单词来计算它们。对于图像特征,他们使用VGGNet的最后一个隐藏层。至于LSTM模型,他们使用单一热点编码解决问题,并使用与上述相同的图像特征,然后进行线性变换,将图像特征转换为1024维,以匹配问题的LSTM编码。问题和图像编码通过元素明智(element-wise)的乘法相结合。


这些基线所取得的成绩非常有趣。例如,如果仅对文本特征训练模型,则准确度(accuracy)为48.09%,而如果仅对视觉特征进行训练,则将降低至28.13%。他们最好的模型,LSTM训练这两种功能,有53.74%的准确性。作者证实,多项选择的结果优于开放式结果,并且正如所料,所有方法都比人的表现差得多。


这个框架中的许多变体可以被实现,以获得不同的基线。




基于关注(attention)的方法

基于关注的方法的目标是将算法的重点放在输入的最相关部分上。例如,如果问题是“球是什么颜色?”,则包含球的图像区域比其他球体更相关。用同样的方式,“颜色”和“球”这两个词,比其他的词更加attention。


VQA中最常见的选择是利用空间注意力来生成特定区域的特征来训练CNN。有两种常见的方法来获取图像的空间区域。首先,通过在图像上投射网格。

使用网格将注意力集中到一起


网格应用后,每个区域的相关性由具体问题决定。

另一种方法是提出自动生成的边界框。


使用边框的proposed regions的示例


鉴于提出的区域,我们可以使用该问题来确定每个特征的相关性,并仅挑选那些回答问题所必需的。

这些只是将注意力纳入VQA系统的两种技术,还有更多可以在文献中找到。




贝叶斯方法

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

例如,在Kafle和Kanan(2016)所攥写的《Answer-Type Prediction for Visual Question Answering 》论文中[8],作者给出了问题特征和答案类型的图像特征概率。他们这样做是因为他们观察到给定一个问题,答案的类型可以经常预测。例如,“图像中有多少玩家?”是一个“多少”的问题,需要一个数字作为答案。为了对这些概率进行建模,他们将贝叶斯模型与鉴别模型相结合。关于这些功能,他们使用ResNet[9]来处理图像,并跳级思考向量(skip-thought vectors)来处理文本。




评估指标

这看起来很明显,但要记住:任何系统的性能(以及因此在给定域中的最新技术水平)取决于所评估的度量标准。在VQA中,我们可以使用的最直接的指标是经典精度(classic accuracy)。虽然这对于多选答案系统来说是一个合理的选择,但对于开放式答案来说,这往往是非常不利的。如果基础答案是“橡树”,这是否意味着答案“树”是绝对不正确的?如果问题是“图像中出现了什么动物?”,并且图像显示了狗,猫和兔子,那么“猫和狗”的答案是不正确的吗?


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




WUPS

Malinowski和Fritz在2014年提出的WUPS测度[10]是基于Wu和Palmer于1994年提出的WUP测度[11],它估计了答案和ground truth之间的语义距离,即0和1之间的值。他们依赖于WordNet使用语义树中包含在答案和基本事实中的词语的距离来计算相似度。这样,对于单项来说,我们可以得到如下结果:


与几乎所有语义测量一样,WUPS为绝对断开(absolutely disconnected)的术语分配相对重要的值。为了解决这个问题,作者建议将低于0.9的分数乘以0.1。


不可否认的是,对于许多情况,WUPS比经典精度更适合。但是,由于它依赖于语义相似性,因此如果基础事实是“黑色”或“绿色”或其他颜色,则“红色”答案将具有非常高的分数。另一个问题是它只能在小的条件下工作,并且只有在它们具有WordNet含义时才起作用。




多个独立的ground truth答案

正如我们对VQA数据集所看到的,不是依赖语义度量,而是每个问题都可以有多个ground truth答案。然后,例如,我们可以说,如果一个给定的答案与频率高的答案匹配,或者至少它与可能的ground truth答案中的一个相匹配,那么它是正确的。后者必须慎重应用,因为是/否问题没有共识答案:在这种情况下,任何答案都是正确的。




手动评估

最后,解决评估阶段的另一种方法是使用人类judges来评估答案。当然,这是一种成本非常高方法。此外,必须制定明确标准的指导方针,以便judges能够正确评估答案。应该预见到一些类型的培训,旨在评估的质量和judges之间的良好协议。




真实生活应用

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


该VQA联盟[12]与信息,资源和软件上VQA一个非常完整的和有用的网站。他们举办VQA挑战赛以及VQA挑战研讨会,值得关注任务,会谈和论文,因为他们对该领域的未来发展方向提供了良好的线索。您还可以尝试CloudCV[13],这是一个非常有趣的VQA系统在线演示。




最后的想法

VQA是一个需要理解文本和视觉的新领域。由于深度学习技术显著地改善了NLP和CV结果,我们可以合理地预期VQA将在未来几年变得越来越准确。


与IA中的许多其他任务一样,构建的数据集和定义的度量标准以某种方式塑造了迄今为止所做的研究工作。评估VQA系统的最佳方式仍然是一个悬而未决的问题,很有可能新的数据集和度量标准将有助于加深和改进质量概念。

问题的措辞如何偏倚VQA系统。


还有几个问题和正在进行的讨论。例如,考虑到VQA系统可能是正确的,那么使用多选数据集是好还是不好?在多项选择数据集中性能卓越的系统是现实生活中的一个很好的系统,在这些系统不可用的情况下?在获得的答复中提出问题的方式会产生什么影响?(见上图)

虽然目前的表现远不是人为的决定,但结果已经可以被利用,而且事实上非常有希望。由于VQA被大型公共平台,设备和工具所采用,它很可能会改变我们搜索数据和与数据交互的方式。




参考

[1]原文:https://tryolabs.com/blog/2018/03/01/introduction-to-visual-question-answering/

[2]Microsoft Common Objects in Context (COCO):http://cocodataset.org/#home

[3]DAQUAR数据集:https://www.mpi-inf.mpg.de/departments/computer-vision-and-multimodal-computing/research/vision-and-language/visual-turing-challenge/

[4]NYU-Depth V2数据集:https://cs.nyu.edu/~silberman/datasets/nyu_depth_v2.html

[5]COCO-QA数据集:http://www.cs.toronto.edu/~mren/imageqa/data/cocoqa/

[6]Visual Question Answering: Datasets, Algorithms, and Future Challenges

:https://arxiv.org/abs/1610.01465

[7]VQA: Visual Question Answering:https://arxiv.org/abs/1505.00468

[8]Answer-Type Prediction for Visual Question Answering:http://www.chriskanan.com/wp-content/uploads/Kafle2016.pdf

[9]ResNet:https://arxiv.org/abs/1512.03385

[10]A Multi-World Approach to Question Answering about Real-World Scenes based on Uncertain Input:https://arxiv.org/abs/1410.0210

[11]WUP measurehttps://dl.acm.org/citation.cfm?id=981751

[12]VQA Consortium:http://www.visualqa.org/

[13]CloudCV:http://vqa.cloudcv.org/



这里附上Amusi找到的关于VOA资料汇总的资源

github:https://github.com/JamesChuanggg/awesome-vqa



-------我是可爱的分割线-------      

若喜欢“深度学习与神经网络”推送的文章,请扫描下方二维码关注公众号!


-------我还是可爱的分割线-------   

您好,欢迎关注深度学习与神经网络。本公众号会定期推送深度学习的教程以及人工智能最新发展情况。感谢大家的支持!
回复“教程”可以看到最新的深度学习教程。
回复“加群”可以加入深度学习交流群。
投稿或合作请加微信:sdxxqbf。


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/xPUwF2QP6D
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/9964
 
756 次点击