论文阅读:Factorizable Net: An Efficient Subgraph-based Framework for Scene Graph Generation
FactorizableNet(ECCV2018)
文章
Paper认为目前有两种生成scene graph的方法,一种是two-stage 的,先把object检测到(包括类别),然后再recognize他们之间的关系,另一种是基于region proposal对object的类别和他们之间的relation进行联合推理 。两种方法的共同之处是都会用到object pair的union box的特征作为phrase feature,这个特征包括cnn特征和spatial特征,后者往往由mask体现。一个很常见的事实是,很多object pair的union box非常接近,因此他们的cnn feature也就是很接近的,于是一个自然的想法是让具有相似region(union box)的object pair共享cnn特征 。

- 首先通过RPN得到region proposal
- 构建了fully-connected graph,可以看到图中这几个object pair的union box很接近,因此将它们cluster成了一个subgraph
- 将fully-connected graph转换成了基于subgraph的graph,红色圆形代表object box,绿色方形代表shared union box
- 用roi pooling得到object feature和subgraph feature
- 使用paper提出的spatial-weight message passing对这些特征进行refine
- 对object和relation进行recognize
要讲region proposal的数量控制得合适,虽然更多的proposal可能带来更高的recall和更复杂的scene graph,但是这可能会很影响模型的训练和推理速度,而合并subgraph的操作,可以减少这种复杂度,因为减少了图的节点的数目,大大缓解了message passing的运算复杂度和内存使用,增大运算速度,或者可以增加更多的proposal,保持运算速度不变的情况下,处理更多的proposal,提高scene graph的质量。
值得一提的是虽然paper删除了很多冗余的union box,但并没有prune掉任何object pair,因此和ViP-CNN还有Graph R-CNN等采用triplet NMS的方法不一样,不会减少object pair candidate,从而不会影响模型的potential。
还有,其它论文的phrase feature除了union box的卷积特征外,还有两个object的mask包含了spatial的信息。这对于每个object pair都是不一样的,paper为了实现shared representation,抛弃了显式地使用spatial mask的方法,而是使用内积注意力机制和2D的subgraph特征来保证spatial的信息 。
另外关于object feature和subgraph feature,前者和其他论文一样使用feature vector表示,而后者在本paper中则是使用2D feature表示。因此在RoI pooling之后object feature和subgraph feature分别使用全连接层和卷积层处理。
1)Object feature refining:
对于第i个object,假设与之相连的subgraph有m个,首先将m个subgraph的2D特征进行avg pooling,然后将其变换(FC)到object空间 并利用内积得到attention vector,将所有avg pooling之后的特征按attention vector加权求和并变换到object空间(FC) ,最后和object feature相加得到refined feature.

2)Subgraph feature refining:
假设一个subgraph与k个object相连,也就是说它的bbox会包含多个object,因此要用这些object的特征来refine该subgraph的特征的话,必须考虑每个object在subgraph中的位置,因此先**将每个object转换到subgraph空间(FC)后,用内积得到attention map,其通道数为k,attention map的每个位置对应的k维向量代表k个object在refine该subgraph feature时对该位置的贡献大小,于是按照这个attention map对k个object feature加权求和,然后 变换到subgraph空间(conv)**之后与原feature相加即可。

