Iterative Message Passing(CVPR2017)
文章
问题是最开始的graph怎么得到?代码里还是用的full-connected graph作为初始化。
本方法中,如果有C种关系,那么网络中是C+1个关系的概率,多的一个代表none-relation,物体类别也一样,多出来一类代表background。
代码里,先将所有可能的relation都列出来了(任意两个不相同的box都认为可能有关系),因此还是有n*(n-1)对关系。GRU每次的输入为context,隐藏状态每次迭代都被更新。代码中的context是一种soft的:
(1)对于edge,将其subject和object的特征(从GRU的隐藏状态得到),分别与该edge的GRU当前迭代的输出concat,分别经过不同的fc和relu得到一个0到1的compatibility score,对于每个edge,它的context就由他的s和o分别乘以它们对应的score的和。
(2)对于vertex,一个vertex可能会在多个rel中充当sub或者obj,充当sub则称该rel为outbounds,反之为inbounds。同