这篇文章的一个出发点也是希望VQA里面的视觉内容与人的结构化知识相联系起来,提出了一种visual
knowledge memory network (VKMN)来将结构化知识与视觉特征融合进端对端的学习框架。在经典VQA
数据集VQA v1.0与v2.0上在与知识推理相关的问题上取得不错效果。
对于上图这样一个VQA范例,在视觉内容中并不存在Monkey这样一种视觉对象,其需要外部知识来进行演
绎或者推理(deduction/reasoning)。
方法:
(1)Encoding of Image/Question Inputs
这儿值得关注的是其利用了MLB方法中的low-rank bilinear pooling对视觉特征与文本特征进行融合,对于
其它跨媒体问题也有一般性。
(2)Knowledge Spotting and Sub-graph Hashing
对于给定question,分析出相关实体与属性,基于其构造的知识库进行实体扩展,形成如上所示的triplet
关系群,作为Knowledge facts。
(3)Visual Knowledge Memory Network
对于triplet < s , r , t > <s,r,t> <s,r,t>,(即<主体,关系,客体>),构造Key-value这样的键值对,因为VQA不确定对
s , r , t s, r, t s,r,t中的哪一部分提问,故 ( s , r ) (s, r) (s,r) , ( s , t ) (s, t) (s,t), ( r , t ) (r, t) (r,t) 都可做为key,然后分别对key与value进行编码。
这篇文章的memory机制的流程比较直观与形象,简述如下:
对于一个query(这在记忆机制中是个很关键的一点,很多非QA的问题,如果能很好地定义query也可引
入记忆机制,比如可往跨媒体检索上面引),其与memory中的主键key进行相似度比较,然后进行value
的读取,进行问题的回答。
Knowledge base:
本文自身构造了一个visual knowledge base,即知识条目triplet的构造其主要有两种来源:
(1)从VQA v1.0中question与answer这样的pair中抽取 。
(2)直接从现有的Visual Genome Relationship(VGR)中获得knowledge triplet,通过这两种方式构造自
己的视觉知识库。
这篇文章的一些不足:
(1)虽然涉及memory的读,但我发现其并没有写机制。
(2)triplet的扩展。该文是基于question中的实体与属性,继而在知识库中进行关联扩展,对于VQA中
视觉信息的利用,该文仅仅只是提图像全局特征,其实另外一方面可以对图片进行属性/目标提取,与
前者question中分析出的概念共同作为query,来形成更为丰富与完备的知识条目。
实验结果
baseline
VQA 1.0
VQA 2.0
可视化
参考原文:Learning Visual Knowledge Memory Networks for Visual Question Answering