Scene Graph Generation by Iterative Message Passing (CVPR 2017) 论文解读
简介
这篇文章在解决scene graph generation这个问题中更加偏向环境全局的上下文信息对于物体标签和关系预测带来的提升。为了获取和利用上下文信息,文章采用RNN-based的网络模型进行图推理。为了简化计算过程和提高计算效率,作者采用GRU(Gated Recurrent Unit)和Primal-Dual更新的做法。为了隐性的提取固定关系之间的关联,文章使用了一个message pooling层按照权重加权每个节点或者边对于下一次迭代的影响。
数学模型
p(x∣I,BI)=∏i∈V∏i!=jp(xicls,xibbox,xi→j∣I,BI)p({\bf x}|I,B_I)={\prod_{i\in V}}{\prod_{i!=j}}p(x_i^{cls},x_i^{bbox},x_{i\rightarrow j}|I,B_I)p(x∣I,BI)=∏i∈V∏i!=jp(xicls,xibbox,xi→j∣I,BI)
从上述的数学模型公式中可以看出,在使用Faster R-CNN给出bounding box之后,作者偏向于使用一个端到端的网络同时进行bounding box优化、区域标签预测和物体关系预测。在使用RNN-based方法时会引入隐变量,而隐变量的信息与bounding box区域中的特征向量有关。于是数学模型变为:
Q(x∣I,BI)=∏i=1nQ(xicls,xibbox∣hi)Q(hi∣fiv)∏j!=iQ(xi→j∣hi→j)Q(hi→j∣fi→je)Q({\bf x}|I,B_I)=\prod_{i=1}^{n}Q(x_i^{cls},x_i^{bbox}|h_i)Q(h_i|f_i^v)\prod_{j!=i}Q(x_{i\rightarrow j}|h_{i\rightarrow j})Q(h_{i\rightarrow j}|f_{i\rightarrow j}^e)Q(x∣I,BI)=∏i=1nQ(xicls,xibbox∣hi)Q(hi∣fiv)∏j!=iQ(xi→j∣hi→j)Q(hi→j∣fi→je)
网络模型
为了简化复杂图推理的过程,文章中使用了两个简化方法:使用GRU以及将原始图拆成以节点为中心和以边为中心的Primal-Dual两个子图。GRU是RNN的一个变种,RNN其中一个变种是非常有名的LSTM,即长短时记忆网络。而GRU的运算过程只有上一个时刻的信息传入,不需要对很久以前的信息用记忆门和遗忘门进行控制,可以看做是LSTM的简化版,效率更高。Primal-Dual更新机制的产生是由于作者观察到,如果将“物体”和“关系”都看成节点,那么由此构成的场景图是一个bipartie的图。
左边的就是场景图画的比较随意的形式,右边的就是画成二部图的形式了,其实只是调整了一下节点们的位置,其余的什么都没有变。例如,如果以节点Obj_1为中心,那么每次有信息传递的节点就是Rel_1,Rel_2和Rel_4。如果以Rel_4为中心,每次有信息传递的节点分别为Obj_1,Obj_4,Obj_2和Obj_3。这就是Primal-Dual图的更新模式啦。
可以看到对于每一个节点都有很多相邻接点作为输入,所以需要进行一个message pooling学习获得每一个输入节点所占的权重。对于“物体”节点来说:
mi=∑j:i→jσ(v1T[hi,hi→j])hi→j+∑j:j→iσ(v2T[hi,hj→i])hj→im_i=\sum_{j:i\rightarrow j}\sigma({\bf v}_1^T[h_i,h_{i\rightarrow j}])h_{i\rightarrow j}+\sum_{j:j\rightarrow i}\sigma({\bf v}_2^T[h_i,h_{j\rightarrow i}])h_{j\rightarrow i}mi=∑j:i→jσ(v1T[hi,hi→j])hi→j+∑j:j→iσ(v2T[hi,hj→i])hj→i
而对于“关系”节点来说:
mi→j=σ(w1T[hi,hi→j])hi+σ(w2T[hi,hj→i])hjm_{i\rightarrow j}=\sigma({\bf w}_1^T[h_i,h_{i\rightarrow j}])h_i+\sigma({\bf w}_2^T[h_i,h_{j\rightarrow i}])h_jmi→j=σ(w1T[hi,hi→j])hi+σ(w2T[hi,hj→i])hj
整体的网络模型就很清楚了~