计算机视觉三大顶会之一CVPR2019在美国洛杉矶举办,此前接收结果已经公布,一共有1300篇论文被接收,接收率为25.2%。今天分享给大家的是其中一篇被接收的论文《Explainable and Explicit Visual Reasoning over Scene Graphs》。
视觉问答(Visual Question Answering)是近年来很受关注的一个跨模态任务,它的输入是一张图片和一个与图片有关的自然语言问题,目标是让模型自动回答该问题。视觉推理(Visual Reasoning)与视觉问答的形式类似,但输入的问题更难,且会涉及到物体之间的多跳关系,这就要求模型具有推理能力。
视觉推理任务最早由李飞飞等人在2017年提出,他们提出的CLEVR数据集是目前使用最多的。神经模块网络(Neural Module Networks,NMN)是解决视觉推理任务的一类有效方法。它定义了很多小的神经模块,每个模块负责特定的功能,然后将输入的问题解析为模块的组合从而得到一个由模块组成的程序,执行程序即可得到问题的答案。它充分利用了语言的可组合性,并且大大增加了模型的透明度。
论文提出了基于场景图(Scene Graph)来实现NMN进行视觉推理。Scene Graph是对图片进行解析后得到的结果,它的节点对应图片中的物体,它的边对应物体之间的关系。作者认为物体检测和场景推理任务应该分离开来,推理任务直接建立在检测出来的物体上,而不是像以往的方法那样建立在像素级别上。
基于Scene Graph,作者设计了以下四种基本操作,作为元模块:AttendNode输出一个在所有节点上的注意力向量,用来找到特定的物体节点;AttendEdge输出一个在所有边上的注意力矩阵,用来找到特定的关系;Transfer用来将注意力从一个节点转移到其他节点上,转移的路径由边上的注意力权重决定;Logic用来对注意力向量进行逻辑操作,即与或非。
只需要对这四种元模块进行组合,即可得到更加复杂的模块,以在CLEVR等数据集上使用,这大大简化了模块内部实现的设计。另外,所有的元模块都完全基于注意力机制,意味着在执行由模块组成的程序时,所有中间过程都可以进行可视化,这大大增强了模型的可解释性。论文在三个数据集上做了实验,分别是CLEVR、CLEVR-CoGenT和VQA2.0。
其中CLEVR和CLEVR-CoGenT是合成数据集,VQA2.0是真实数据集。下表给出了在CLEVR上的结果,其中XNM-GT表示使用的是标注好的Scene Graph,XNM-Det表示使用的是检测出来的Scene Graph,可以看到当Scene Graph完全正确时,论文方法可以达到100%的准确率。
由于论文提出的模块设计非常简单,模型只需要非常小的参数量,只是其他模型的几十分之一甚至几百分之一。下表给出了在CLEVR-CoGenT上的结果,该数据集有两种设定,分别是Condition A和Condition B,训练集全部都是Condition A,而测试集则既有A也有B。可以看到当Scene Graph完全正确时,在两种条件下论文方法均可以达到100%的准确率。
在VQA2.0上的结果,论文提出方法的效果要远远好于使用像素级特征的StackNMN,同时也表明了方法在真实数据集上同样适用。