论文阅读:Mapping Images to Scene Graphs with Permutation-Invariant Structured Prediction

写在前面:

   最近做scene graph方面的工作,不停地搜索论文看,看到这是NIPS2018的本来还眼前一亮,抱着敬畏的心态仔仔细细地去看,但是看了一遍又一遍,感觉只有一个,文章写得又臭又长、不知所云、也没觉得有啥价值,也许是自己道行不够,看不懂文章的高明之处,但还是想写下看这篇文章的感受,如果有也做sg方向想看这篇文章的同学,也许可以让你们避免浪费时间阅读这篇“顶会文章”。

文章NIPS2018

   paper讨论了一种具有图置换不变性(graph-permutation invariant,GPI)的网络结构,给出了其充分必要条件,并以scene graph generation为例解释了如何在深度结构化预测中使用这样的结构。
   paper先介绍了graph labeling问题,即给定一个图(V,E),其中V为节点特征的集合[z1,…,zn],E为边特征的集合[z_1,2 , … ,z_i,j, … ,z_n,n-1],希望找到一个函数F:(V,E)–>Y,Y则是label的集合[y_1,…,y_n]。用通俗的话说就是,给定以点和边特征表示的图,函数F可以得到每个节点的label。一个很自然的对F的要求是,不管输入的图的节点顺序如何,都应该得到相同的labeling结果,这就是GPI。paper说不具备GPI的结构,在训练时会浪费更多的capacity。
论文阅读:Mapping Images to Scene Graphs with Permutation-Invariant Structured Prediction
   paper给出一个定理,假设F是一个graph labeling函数,那么F是GPI的充要条件是存在函数α,ρ,φ对k=1,…,n满足:
论文阅读:Mapping Images to Scene Graphs with Permutation-Invariant Structured Prediction
   paper接下来证明了这个定理,必要性好证,因为函数ρ的第二个参数是与k无关的整个graph的context,因此有 :
论文阅读:Mapping Images to Scene Graphs with Permutation-Invariant Structured Prediction
   充分性的证明则是给任意一个具有GPI的graph labeling函数,paper能构造出公式中的结构,主要的技巧在于使用了hash函数,使得无论输入的node顺序如何,hash函数都会根据node feature将输入重新整理成相同的形式,使得得到的context是一样的,这一步主要是构造了α和φ。
论文阅读:Mapping Images to Scene Graphs with Permutation-Invariant Structured Prediction
   将context即为M,假设F在M上的输出为y=y_1,…,y_n,直接令:
论文阅读:Mapping Images to Scene Graphs with Permutation-Invariant Structured Prediction
   上面的定理考虑的是完全图的情况,如果是不完全图,对定理稍作修改也可以成立,只需要
论文阅读:Mapping Images to Scene Graphs with Permutation-Invariant Structured Prediction
即对于单个node,只需要考虑其neighbor,而不用考虑除他外的所有node。
   下面,paper又引入了attention机制和RNN。首先是attention,attention就是上面的第二个求和操作,应该考虑node间的relativeness作为权重加权求和。通过一个β函数求两个node之间的relativeness,其输入和φ相同。然后就可以利用softmax得到权重:
论文阅读:Mapping Images to Scene Graphs with Permutation-Invariant Structured Prediction
比如最简单的可以使用z_i和z_j的内积作为attention score,然后α定义为z_ij的加权求和:
论文阅读:Mapping Images to Scene Graphs with Permutation-Invariant Structured Prediction
paper在保持
论文阅读:Mapping Images to Scene Graphs with Permutation-Invariant Structured Prediction
的同时,实现了attention,主要靠β函数以及对φ扩充了一个维度,φ的前e维为:
论文阅读:Mapping Images to Scene Graphs with Permutation-Invariant Structured Prediction
因为z_ij是e维的,第e+1维为:
论文阅读:Mapping Images to Scene Graphs with Permutation-Invariant Structured Prediction
然后便可定义:
论文阅读:Mapping Images to Scene Graphs with Permutation-Invariant Structured Prediction
   使用RNN则是基于组合多个GPI的函数,得到的函数还是GPI的性质。方式就是将一步F得到的输出作为下一步F的输入的一部分。
   接下来paper便以scene graph classification为例解释了如何使用自己提出的方法。第一个问题是,虽然scene graph往往非常稀疏,但是可以通过给不相关的node之间加入null连接,使之可以看作一个完全图。paper提出用于sgcls的模型包含两个组件,Label Predictor(LP)和Scene Graph Predictor(SGP),LP接收图片和bbox,输出node和edge的label分布,SGP接收LP的输出,产生更准确的label分布。
论文阅读:Mapping Images to Scene Graphs with Permutation-Invariant Structured Prediction
   首先是LP,LP又包含两个部分,分别预测node和edge的label。均直接使用restnet-50作为预测网络,而输入则分别是按bbox和union box裁剪的图片。
   至于SGP则需要用到paper提出的方法进行构造,输入为[…,y_i,…]和[…,y_ij,…]。node classification的部分可以参照最上面的定理给出的公式直接进行构造,但是为了classify edge,引入了另一个函数ρ_relation,它也会使用在node classification中生成的GPI表示。
   SGP的输入包括node和edge feature,node feature z_i是LP输出的第i个node的label分布拼接上这个bbox的坐标(x,y,w,h)而成的,edge feature则是直接用LP输出的edge的label分布。
   paper用两层FC实现φ,输入为[z_i,z_ij,z_j]的拼接,输出一个500维的向量,同时用一层FC实现β,输入和φ一样,不过输出的是一个标量,然后对于每个i,用β加权求和得到context s_i。
   paper同样用一个两层FC实现α,输入为z_i和其context s_i,同样也用一个单层FC得到权重score,将α的输出加权得到一个500维的向量g表示整个graph。
   ρ_entity是一个三层FC,输入为z_i,s_i和g,输出是node的label分布。ρ_relation的输入是z_i,z_j,z_ij和g,输出为edge的label分布。
   最后实验结果其实并不咋样,SGCLS不如neural-motif,虽然paper写的是比neural-motif好
论文阅读:Mapping Images to Scene Graphs with Permutation-Invariant Structured Prediction
   但实际上neural-motif论文中给出的这四项最高数据为35.8, 36.5, 65.2, 67.1。对比数据我们其实可以看出,word embedding vector对于predicate的识别很有帮助,同时本paper的结构在node classification的效果并不好。