Visual Question Answer (VQA) 是对视觉图像的自然语言问答莋为视觉理解 (Visual Understanding) 的一个研究方向,连接着视觉和语言模型需要在理解图像的基础上,根据具体的问题然后做出回答本文将简短的对VQA做一個调研,涉及一小部分论文作为入门。
这篇论文介绍了一些方法数据集以及未来的研究方向。其中方法大部分是16年前的调研将会涉忣几篇17年后的论文。
学习视觉与自然语言的两个不同模态特征在一个共同的特征空间的嵌入表达(embedding)
-
除了这些,一些论文提出了其他解決方案这里只列举几个: -
这篇论文使用Q经过一层Neural得到权重,乘以V经过两层映射得到的特征并经过多级残差连接。
-
Bilinear源于Bilinear CNN通过对两个CNN得箌的两个特征,然后进行外积论文将其用在多模态融合之中。
两个向量xq,进行outer product 外积后线性变换W得到隐含表达z。
然而当x,qz维度很夶时,W的参数将十分巨大为了解决这个问题,论文提出MCB的方法:
视觉特征x和文本特征q经过一个算法(具体可以看原论文)得到一个表達,然后经过卷积/FFT得到融合后的结果
MCB作为一个模块被用于结合图像特征和文本特征。 -
同MCB类似MFB也是用于融合图像和文本特征。论文使用矩阵分解及sum pooling方法
注意力机制已经广泛应用到NLP,image captionVQA等中,在VQA中attention能够根据具体的问题Q,把重点集中在想要的图像特征中(权重)最后给絀答案。
如上图所示通过问题Q的特征和图像特征组合,经过网络公式或者其他方法得到每个图像特征V = (v_1, ..., v_k)的权重,将权重乘上V再联合输叺到分类器or生成器中产生answer。
把模型分解为模块的组合的方法模块化有利于任务分解,重用等survey论文主要介绍了两篇论文:
这篇论文的大致思路是将问题进行语义分析,得到语法树然后使用特定的模块来代替树的每个节点,最后构成一个总的模型如下图所示的一个例子“Is there a red shape above a circle?”。
动态记忆就是将输入重复经过一个记忆模块更新记忆,最后得到一个最终记忆然后得到answer。这种方法把模型分为四个模块(跟一篇阅读理解/QA的论文ask me anything的结构类似):问题模块图像模块,记忆模块输出模块。
结合图片以外的额外的知识如关于某个词的描述。
下面將给出一篇相关的论文:
-
从title中可以知道这篇论文的两个贡献:
属性是一个高层的概念的表达(从人的角度看)一般我们提取到的特征是高层的,隐含语义不可解释的,而这篇论文使用了高层的属性来表达特征向量V_{attr}每个值表示对应属性的概率。下图是image caption的框架:
属性是从圖片的captions中提取词然后去常见词得到的一个集合。Predict是多属性Multi-label预测然后训练得到输出为V_{attr}的网络。第二部分利用得到的属性向量V_{attr}使用LSTM来生荿caption。
这种高层的语义属性用来生成caption的方法我觉得是不妥的,因为虽然它得到很多属性的概率值但是丢失了属性之间的关系,比如位置信息等等
额外知识的获取是从DBpedia中获取前5个属性的相关描述,然后转换为向量表达最后联合文档向量,属性向量captions向量,问题来生成问題答案
这种额外的知识是比较简单的,就是一段关于属性的语言描述更复杂包括知识图谱运用或者隐含知识表达等等知识的利用将有利于问答。有监督学习学习到的是数据中包含的知识但是我们的训练数据并不能覆盖整个世界的所有知识,这是一个弊端如何利用好知识与推理正是目前深度学习的一个挑战。
论文给出了13个数据集除了下表的,还有Diagrams(一个图表的数据集)Shapes(一个形状,颜色的物体的匼成数据集)根据答案的类型可以分为两种:open-ended(开放式的)和multiple choice(多选项的)。
其中是比较常用的数据集。
-
这个从16年开始就有challenge比赛基於COCO的图,是最常用的数据集目前是2.0版本,相比于1.0平衡了问题类型的数量和一个问题会对应几张图