NLP&NLU

通俗讲解看图说话(Image Captioning)和视觉问答(

2020-03-28  本文已影响0人  top_小酱油

“看图说话”之Image Captioning

  1. 问题介绍

Image Captioning 任务的定义是对一幅图片生成相对于图片内容的文本描述。一个AI系统不仅需要对图片进行识别,也需要理解和解释看到的图片内容,并且能够像人一样描述出图片中的对象之间的关系。- 输入:一张图片- 输出:一句文本描述最早的image captioning 系统是2014年Circa提出的,该系统使用多层感知系统(multi-layer perceptron MLP)提取图片特征和词向量特征,去输出一串连贯的文字描述。可以将image caption与机器翻译做一个类比: - image caption的输入是一张图片 - machine translation的输入是一句外语句子- 两者的输出都是一个句子常见的image captioning 系统的评估指标有:- BLEU,是常见的机器翻译系统的评估指标,计算的是一句预测的文字与人类标注的参考文字之间的n-gram 重合度(overlap)。- METEOR,也是常见的机器翻译系统的评估指标,其通过建立一个短语词表(phrase table),考虑了输出文本是否使用了相似短语。- CIDEr,考虑了句子中的文字与图片的相关性- ROUGE-L,是text summerization的评估指标常见的image captioning 系统的标准测试数据集包括:- Flickr 8k- Flickr 30k- MS COCO

  1. 模型描述
常见的image captioning 系统是由一个CNN+RNN的编码解码模型完成,类比一下machine translation系统,通常由一个RNN encoder + RNN decoder组成: 而image captioning系统,通常由一个CNN encoder + RNN decoder组成: 其中的CNN 能够提取一张图片的特征,其特征能用来做图片分类,目标识别,图片分割,及其他视觉任务。Vinyals et al. (2014) Show and Tell: A Neural Image Caption Generator 这篇文章将seq2seq模型中的LSTM encoder换成CNN encoder,用于提取图片的信息,得到一个固定长度的内容向量(context vector),之后通过一个RNN decoder,将信息使用文字的方式解码出来: Donahue et al. (2014) Long-term Recurrent Convolutional Networks for Visual Recognition and Description 这篇文章使用了VGG Net作为CNN 去提取图片信息,在输入到一个LSTM decoder中输出文本。同时该文章还将这项技术应用到video captioning中: 以下是对比视频识别,看图说话,看视频说话三个细分任务的对比图: Fang et al 2014, From Captions to Visual Concepts and Back, 提供了另一个image caption系统的思路:1. 预测文字: 使用一个CNN去做目标识别,并且根据bounding box生成可能出现的文字2. 生成句子:通过一个统计语言模型,生成很多个可能的句子集合3. 重新排序已经生成的句子: 通过学习一个Deep Multimodal Similarity Model (DMSM)去重新排序所有可能的句子集合,取最高分数的句子作为系统输出。
  1. 注意力机制的融入
Kelvin et al. (2014) Show, Attend and Tell: Neural Image Caption Generation with Visual Attention类比人看图说话:当人在解说一幅图片的时候,每预测一个字,会关注到图片上的不同位置。在解码器预测文字的时候,会关注到跟当前文字内容和图片最相关的位置。举例:a woman standing in a living room holding a Wii remote . 当前解码时间步时attention关注的名词会对应于图片中高亮的位置: 具体实现:一张图片作为输入,CNN不仅可以通过最后一层全连接层(fully-connected layer)抓取出一个固定长度的向量,也即是context vector。还可以抓取出中间卷积层中的向量:

视觉问答(VQA)

  1. 问题介绍
视觉问答任务的定义是对于一张图片和一个跟这幅图片相关的问题,机器需要根据图片信息对问题进行回答。- 输入:一张图片和一个关于图片信息的问题,常见的问题形式有选择题,判断题- 输出:挑选出正确答案 常见的VQA数据集:一个好的数据集需要尽量避免数据采集过程中的偏差(bias),比如说一个数据集中,90%的判断题的答案都是yes,那么一个只输出yes的系统的准确率有90%。- DAtaset for QUestion Answering on Real-world images (DAQUAR),第一个重要的VQA数据集,包含了6794个训练样本,5674个测试样本,图片都来自NYU-Depth V2数据集,平均一张图片包含了9个问题答案对(QA pair),这个数据集的缺点是数据太小,不足以训练一个复杂的VQA系统:
  1. 模型描述
这些基本方法的结果很有意思,如果一个模型只使用了文本特征,其正确率为48.09%,如果一个模型只使用了图片特征,其正确率为28.13%,而他们最好的模型是使用了LSTM去编码文本特征的,能达到53.74%的正确率。而且多选题的结果会显著好于开放式问题的效果。所有的模型预测的结果都远不如人类的表现:
  1. 注意力机制的融入
基于注意力的深度学习VQA方法是通过关注图片中相关的部位来获得答案,比如一个问题“what color is the ball?",则图片中包含了球ball这个object的小区域是比其他区域更具有信息量,比其他区域更相关。相似的,”color“ 和”ball“也比其他单词更加相关。另一个常见的VQA方案是使用位置注意力(spatial attention)去生成关于区域(region)的位置特征,并训练一个CNN网络。一般有两种方法去获得一张图片关于方位的区域: 1. 通过将一张图片划分成网格状(grid),并根据问题与图片特征去预测每一个网格的attention weight,将图片的CNN的feature通过加权求和的方式得到attention weighted feature,再通过attention weighted feature发现相对比较重要的区域:
   2. 通过目标识别的方式生成很多bounding box:![](https://img.haomeiwen.com/i4070307/12cb8729c5d52924?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

   最后,根据这些方法生成的区域(region),使用问题去找到最相关的区域,并利用这些区域去生成答案。具体实现:Yang et al. 2016  Stacked Attention Networks for Image Question Answering,提出了一个基于堆叠注意力的VQA系统:
Kazemi (2017 et al.) Show, Ask, Attend, and Answer: A Strong Baseline For Visual Question Answering,提出了一个基于注意力的VQA系统:
上一篇下一篇

猜你喜欢

热点阅读