Graph-R-CNN-for-Scene-Graph-Generation

Graph R-CNN for Scene Graph Generation

论文来源:ECCV 2018
论文链接:https://openaccess.thecvf.com/content_ECCV_2018/papers/Jianwei_Yang_Graph_R-CNN_for_ECCV_2018_paper.pdf
代码链接:https://github.com/jwyang/graph-rcnn.pytorch

本文提出的三个主要的创新点就是:

1. Relation Proposal Network(RePN)用来做关系过滤

2. Attentional Graph Convolutional Network 用来做信息融合

3. 提出了一个新指标SGGen+,比原来的SGGen更科学

然后集合这些东西,本文的方法是目前最佳

Approach

本文的大致研究结构和主流操作一致,如下:

基本的想法还是按照先找点,再找边,再找点和边的label。找点采用常见的faster-rcnn,这也是大多数工作的做法。

Relation Proposal Network

这里的关系配对,作者采用物体分类概率作为主要的计算依据。一个直观的感觉就是person会和clothes产生关系,而elephant肯定不会和clothes产生关系,本文想利用这种先验知识,首先淘汰掉一批不可能的关系。

具体的做法肯定是构建一种由object分类概率和subject分类概率决定的函数关系

这个分数的高低决定了相关程度。最直观的想法肯定是用一个全连接去做,但是作者认为这样计算量太大。

所以作者换用如下的方法:

$\Phi(\cdot)$ 和 $\Psi(\cdot)$分别代表在关系中主语和宾语对映射函数。这个分解使得,仅使用$X^o$的两个投影过程,然后执行一次矩阵乘法就能获得分数矩阵$S=\left\{s_{i j}\right\}^{n \times n}$。

这样只需要两个 MLP,加一个矩阵乘法,这样的计算复杂度非常的小。

在获得分数矩阵后,我们将其降序排序,然后选择前K对。然后,我们使用非最大抑制(NMS)来过滤出与其他对象有明显重叠的对象对。每个关系都有一对边界框,组合顺序很重要。我们计算两个对象对$\{u, v\}$和$\{p, q\}$ 之间对重叠:

$I$计算两个box交集的区域,$U$计算并集区域。剩余的$m$个对象对被认为是具有意义关系$E$的候选对象。利用$E$,我们得到了一个图$G = (V,E)$,它比原来的全连通图稀疏得多。

Attentional GCN

GCN是图卷积网络,其实和传统的卷积网络的思路是一样的,不理解的同学可以看看下图。卷积可以看作九宫格的中心点和其他点都连接在一起,那图卷积的意思就是去掉部分连接,这样就形成了图特有的拓扑结构。图中每一个点都会有其相联的点,这样就可以用相联的点来更新本点。所有点都做一次这样的操作相当于进行了一次图卷积操作。

这个式子用来计算图卷积的结果:

这个式子的含义是,将节点信息用W做一个映射,再加权求和并累加到目标节点,经过激活函数就得出了新的节点信息。

想把这个式子应用到场景图中,存在一个问题。那就是我不知道边与边的权值啊,平均分肯定是不合适,所以本文作者就弄出了一个aGCN,来自动生成边上面的权值。

使用之前经过RePN的图,我们就得到了所有的物体边和点。作者受到《Relation networks for object detection.》这篇文章的启发,在所有的点之间也加入了快速连接,这样图中就存在着(点-点)(点-边)的连接。之后使用之前提出的图卷积的做法,作者指出了点与边更新的式子:

这个式子其实也很好理解,点的信息使用点和边信息来更新,边的信息只使用点的信息来更新,因为点之间存在着快速连接,而边之间没有。

接下来作者再次想到一个问题,如何初始化点与边的信息呢?作者的做法是使用了两种aGCN,一种初始化信息使用分类信息,第二种初始化信息使用视觉信息。

0%