论文阅读(42)The More You Know: Using Knowledge Graphs for Image Classification

1. 论文相关

2.摘要

人类与基于模型学习的计算机视觉算法区分开来的一个特点是,能够获取关于世界的知识,并利用这些知识对视觉世界进行推理。人类可以了解物体的特性以及它们之间的关系,从而学习各种各样的视觉概念,通常只用很少的例子。本文研究了结构化先验知识在知识图谱形式下的应用,表明利用该知识可以提高图像分类的性能。我们在最近关于图端到端学习的工作的基础上,引入了图搜索神经网络(Graph Search Neural Network)作为一种有效地将大的知识图谱合并到视觉分类管道中的方法。我们在许多实验中表明,对于多标签分类,我们的方法优于标准的神经网络基线。

image.png

2.2 主要贡献

(a)将GSNN()作为一种将潜在的大知识图谱合并到端到端的学习系统中的方法,该系统在计算上对大图是可行的;
(b)一个使用噪声知识图谱进行图像分类的框架;
(c)解释我们的图像分类的能力。使用传播模型。我们的方法明显优于多标签分类的基线。

3.方法

3.2 图搜索神经网络

将GGNN用于图像任务的最大问题是计算可伸缩性。例如,尼尔(NEIL)[4]有超过2000个概念,而内尔(NELL)[3]有超过200万个自信的信念。即使对我们的任务进行了删减,这些图仍然是巨大的。标准GGNN上的正向传播是(),是节点数,反向传播是(),其中是传播步骤数。我们在合成图上对GGNNs进行了简单的实验,发现在超过500个节点之后,一个向前和向后的传递在一个实例上会超过1秒钟,即使在做出大量参数假设时也是如此。在2000个节点上,单个图像需要一分钟多的时间。不可能在盒子外(out of the box)使用GGNN。

我们解决这个问题的方法是图搜索神经网络(Graph Search Neural Network ,GSNN)。顾名思义,我们的想法是,不要一次对图形的所有节点执行循环更新,而是从一些基于输入的初始节点开始,只选择扩展对最终输出有用的节点。因此,我们只计算图子集上的更新步骤。那么,我们如何选择要用哪个节点子集初始化图呢?在训练和测试期间,我们根据目标检测器或分类器确定的概念存在的可能性来确定图中的初始节点。在我们的实验中,我们对80个COCO类别中的每一个都使用了更快的R-CNN(Faster R-CNN)[28]。对于超过某个选定阈值的分数,我们选择图中的相应节点作为初始激活节点集。

一旦我们有了初始节点,我们还将与初始节点相邻的节点添加到激活集。考虑到初始节点,我们首先要将关于初始节点的信念传播到所有相邻节点。然而,在第一个时间步骤之后,我们需要一种方法来决定下一个扩展哪个节点。因此,我们学习了一个每个节点的评分函数,它估计该节点有多“重要”。在每个传播步骤之后,对于当前图中的每个节点,我们预测一个重要性得分

image.png

是一个学习网络,重要性网络(importance network)。

一旦我们有了的值,我们就将从未扩展到的得分最高的个节点添加到我们的扩展集(expanded set),并将与这些节点相邻的所有节点添加到激活集(active set)。图2说明了这种扩展。t=1时,仅扩展检测到的节点。t=2时,我们根据重要性值扩展所选节点,并将其邻居添加到图中。在最后一个时间步骤中,我们计算每个节点的输出,并重新排序和零填充(per-node-output and re-order and zero-pad)输出到最终分类网络中。

image.png

为了训练重要性网络(importance net),我们将目标重要性值分配给图中给定图像的每个节点。与图像中真值概念(ground-truth concepts)相对应的节点被赋予1的重要性值。这些节点的邻居被分配了一个值。两跳(two-hop)之外的节点具有值,以此类推等等。其思想是,最接近最终输出的节点是最重要的扩展。

现在我们有了一个端到端的网络,它将一组初始节点和注释作为输入,并为图中的每个激活节点输出每个节点的输出。它由三组网络组成:传播网、重要性网和输出网(the propagation net, the importance
net, and the output net)。图像问题的最终损失可以通过输出网络从管道的最终输出反向传播,而重要性损失则通过每个重要性输出反向传播。参见图3查看GSNN架构。首先,检测信任初始化(detection confidences initialize),初始检测到的节点的隐藏状态。然后我们初始化
相邻节点的隐藏状态,使用0。然后我们使用传播网络(propagation net)更新隐藏状态。然后使用的值预测重要性分数,该分数用于选择要添加到的下一个节点。.然后用初始化这些节点,并通过传播网络再次更新隐藏状态。T步之后,我们采取所有的累积隐藏状态来预测所有激活节点的GSNN输出。在反向传播过程中,二元交叉熵(binary cross entropy,BCE)损失通过输出层反馈,重要性损失通过重要性网络反馈,以更新网络参数。

最后一个细节是在GSNN中添加节点偏置(node bias)。在GGNN中,每个节点的输出函数接受节点的隐藏状态和初始注释,计算它的输出。在某种意义上,它与节点的意义不可知(agnostic)。也就是说,在训练或测试时,GSNN采用了一个可能从未见过的图,以及对于每个节点一些初始注释。然后,它使用图的结构通过网络传播这些注释,然后计算输出。图中的节点可以表示任何东西,从人际关系到计算机程序。然而,在我们的图网络中,一个特定的节点表示“horse”或“cat”这一事实可能是相关的,我们也可以将自己约束到一个静态图而不是图像概念。因此,我们引入节点偏差项,对于图中的每个节点,都有一些学习值。我们的输出方程, 是一个与整体图中的特定节点相关联的偏差项。该值存储在一个表中,其值由backpropagation更新。

image.png

3.3. 图像管道和基线(Image pipeline and baselines)
另一个使图形网络适应视觉问题的问题是如何将图形网络合并到图像管道中。对于分类,这是相当简单的。我们获取图形网络的输出,对其进行重新排序,使节点始终以相同的顺序出现在最终网络中,并对未展开的任何节点进行零填充。因此,如果我们有一个具有316个节点输出的图形,并且每个节点预测一个5维隐藏变量,那么我们将从该图形创建一个1580维特征向量。我们还将该特征向量与微调后的VGG-16网络的FC7层(4096 dim)连接起来[35],并将更快的R-CNN(80 dim)预测的每个COCO类别的最高得分连接起来。这个5756维特征向量被输入到一层最终分类网络中,该网络经过辍学训练。
对于基线,我们比较:(1)VGG基线-仅将FC7输入最终分类网;(2)检测基线将FC7和最高COCO分数输入最终分类网。

参考资料

[1] 论文笔记:GSNN: The More You Know: Using Knowledge Graphs for Image Classification
[2] The More You Know: Using Knowledge Graphs for Image Classification ——用知识图谱进行图像分类论文阅读笔记

代码

[1] KMarino/GSNN_TMYN
[2] SteinsGate9/gsnn_demo

你可能感兴趣的:(论文阅读(42)The More You Know: Using Knowledge Graphs for Image Classification)