【Scene Graph and Visual Relationship论文总结】
-------------------------- 2019.4.4 更新 -----------------------------
2019_CVPR. Learning to Compose Dynamic Tree Structures for Visual Contexts
无耻的推荐下自己今年CVPR的文章把,其实performance不算高。主要是用了个动态的树结构+TreeLSTM 来给每个bounding box encode一下context信息。另外因为现在scene graph完全都是被大样本的类别主导(e.g. on, has, wearing,....),基本上只要预测对最高频的几个relationship类performance就很高,而完全不考虑低频类,所以我提出了个Mean Recall@K的metric,其实就是对50个relationship的类分别算Recall@K 然后求平均, 这样就可以看出模型学习小样本的能力,而我提出的VCTree可以大大提高学习小样本的能力(可见下图和Motif的对比)。我个人认为原因有二 (1)VCTree给每个bounding box encode了更相关的环境信息(而不是Motif的无脑BiLSTM),所以可以预测更复杂的relation,比如'covered in’(2) 我们的树结构,在training过程中一直在微调,这可以看成是网络结构(Tree LSTM结构)一直在微调,所以不容易轻易的过拟合。
关于详细的Mean Recall@K 分析可以参考我的Supplementary Material
具体的code可以参考我放出的代码,RL部分我做的不是太好,有兴趣的人可以优化下:
KaihuaTang/VCTree-Scene-Graph-Generationgithub.com
------------------------- 下面为之前的原文 -------------------------------------------------
因为最近开始接触这方面的研究,所以写下这个笔记为之后自己查阅和给他人参考提供便利。如果有对论文理解有问题的地方,欢迎指正。同时也会记录了一些或许可行的想法(多半是没有太大前途的,有前途的就自己发论文了)。也欢迎大家一起交流。
2016_ECCV. (Recommend) Visual Relationship Detection with Language Priors:
Pros: 在视觉模型的基础上加上从语言模型中获取的概率分布作为额外的监督。大多数方法可以用这个方式做后期提升。
Cons: 本质并没有提升视觉模块部分
2017_CVPR. (Recommend) Scene Graph Generation by Iterative Message Passing:
Pros: Faster-RNN提取object/Relationship feature的基础上,用Message Passing迭代,通过相邻的节点或边对目标节点或边进行约束,从而对这些特征进行提升。
Cons: Relationship feature提取方式过于原始(个人认为, 另一篇论文的提取方式就更加有说服力:Detecting Visual Relationship with Deep Relationship Networks)。
同时随着迭代效果下降的现象可以试试Attention model,或者在iterative message中引入残差的概念(下一篇中用了但是为什么没有用)。
2017_CVPR. (Recommend) Scene Graph Generation from Objects, Phrases and Region Captions
Pros: 和Visual Relationship Detection with Language Priors有异曲同工之妙,通过对三种任务进行联合训练,提供额外信息。
Cons: 同样是一篇胜在想法的文章
2017_CVPR. (Highly Recommend) Detecting Visual Relationship with Deep Relational Networks
Pros: 关于predicate的特征,并非只提取了一个region的特征,而是混合了的object和subject的空间信息(个人觉得目前看起来最靠谱)。利用一个类似条件随机场的DR-Net进行统计关系上的迭代优化,没有iterative message passing直观,但是似乎没有退化问题。
Cons: 目前来说,是在Region - Feature - Iterative Finetune框架下最符合我口味的一篇文章,几乎没看到明显问题,解决的了这类框架下比较明显的两个问题:(1)phrase特征提取太笼统,(2)在迭代优化中随迭代次数的退化问题。
2017_CVPR. Visual Translation Embedding Network for Visual Relation Detection:
Pros: 使用自然语言处理中的状态转移观念解读Visual Relation,非常有想象力的一个出发点。主语特征 - 宾语特征 ~~ Relationship
Cons: 低估了Visual Relationship的复杂度,另外不同于自然语言中的状态转换,Visual Relationship并不适合用状态转移,举例next to的subject和object几乎不存在任何特征上的联系。
2017_CVPR. ViP-CNN: Visual Phrase Guided Convolutional Neural Network
Pros: 实现了在Conv层的Message Passing,基本是个end-to-end
Cons: 除此之外并无太大亮点,相比于其他Message Passing,其机制也更为Naive
2017_CVPR. Deep Variation-structured Reinforcement Learning for Visual Relationship and Attribute Detection
Pros: 看到的第一个使用强化学习来做这方面研究的论文。且创新的使用很多数据构建了一个全局的语意图,这个很有意思。构建单张图片的Scene Graph其实是在一堆nodes中检索出一个sub-graph。做每一步的跳转决策时,同时检索中记录历史路径信息,而且陷入局部子图时也有跳出机制,具体细节参考论文。
Cons: 1. 构建语义图时只使用了常见关系和物体。2. 感觉很花哨但不落地,暂时看不到进一步研究的价值。
2018_CVPR. Neural Motifs: Scene Graph Parsing with Global Context
Pros: 对数据库中物体和关系的类别做了统计分析。发现relationship高度依赖subject和object的种类。个人对motif的理解:重复且相似的子结构(语义上)。然后用两个BiLSTM去Encode和Decode, 算是在特征提取上和别人不一样吧。
Cons: 挂arXiv上的文章,好像投CVPR 2018被拒了?实验细节还没有看,以后补。
2017_NIPS. Pixels to Graphs by Associative Embedding
Pros: 唯一一篇不基于Faster-RCNN的文章。而是引入了associative embedding的想法。这个设计最初是用在人的姿态识别上的,因为需要判断识别出来的每个肢体是否属于同一个人,所以需要embedding一个类似ID的东西,相似的ID就代表来自同一个人。本文利用这种思想实现objects & relationship的检测(每个像素都检测),object像素会生成一个ID判断来自哪个个体,relationship像素输出两个ID分别表示连接的两个物体。
Cons: 算是将一个其他领域的概念第一次引入这个领域,整个框架略显简陋。是否值得进一步更近值得商榷。
【Conclusion】
总的来说这两年主流框架是,Faster-RCNN + Region Feature + Iterative Feature Finetune。其他有趣的想法包括(1)用自然语言处理中的Embedded Vector迁移表示Relationship。(2)用强化学习实现从一个总的结构图中提取子图表示图片。(3)引入Human Pose Estimation中的associative embedding。
----------------------------------------持续更新----------------------------------------
【Idea】
1. 因为Scene Graph Generation by Iterative Message Passing有明显的随迭代次数退化问题,中加入Attention机制(应该有些许改进,但估计不会大)
2. 同理,按说在上文的迭代中加入Residual应该也可以解决退化的问题,但是为什么Scene Graph Generation from Objects, Phrases and Region Captions加了但没有用
------------------------- 2018.09.06 更新 ---------------------------
从今年三月开始,做到现在。正好ECCV也结束了,更新下论文吧。
【State-Of-The-Art】: 2018_CVPR.Neural Motifs : Scene Graph Parsing with Global Context
之前分析的时候低估了这篇文章的结果,这篇文章截止目前为止当之无愧的State-Of-The-Art。不过认真看过这篇文章的人大概也能发现了,这篇文章含蓄的指出了,当前基于Visual Genome数据集下作出的Scene Graph或者Visual Relationship Detection,其实说白了都是学习的数据集的bias,并没有真正学习到relationship。
如果有人打算现在开始做Scene Graph,最好的选择是从Motif的代码开始改进。
2018_ECCV. Graph R-CNN for Scene Graph Generation
本质还是message passing,其实graph cnn和message passing本来就是同一个东西。这篇文章只是加入了个小trick,把前人的dense graph(n*n) message passing变成sparse graph message passing。提了个新指标,但比较粗糙,而且举的例子有误导的嫌疑。如果核心object的分类有明显的错误,比如直接从human错分为bicycle,那么确实应该把所有他的relation都看成错的。
2018_ECCV. Factorizable Net : An Efficient Subgraph-based
和上文Graph R-CNN的核心想法很像。都是发现了原先的Message Passing是用的Dense Connect(n*n),这样做肯定是不好的。上文改成稀疏的,这篇文章把一些node整合成subgraph看成一个node。
------------------------- 2018.09.24 更新 ---------------------------
2018_NIPS. Mapping Images to Scene Graphs with Permutation-Invariant Structured Prediction
这篇哥们的文章都中NIPS我也是醉了,以下分析纯粹是出于自己没有中过NIPS的愤慨。(1)效果都没有完全超过motif就自称state-of-the-art。(2)sgdet实验直接没有做。(3)行的吧,NIPS主要搞理论,我们来看他自称if and only if的证明。充分性是没问题的,必要性就感觉证明的不是那么靠谱了,公式(1)中右半边个人感觉缺了一项的,补齐了才能证明必要性。这里就不赘述了。。。反正很感慨,这都中了,哎。
-------------------------- 2018.12.10 更新 -----------------------------
2018_NIPS. LinkNet: Relational Embedding for Scene Graph
新state-of-the-art,个人感觉和别的方法相比,最大的不同处在于给每个object的feature都并入一个global context feature。别的替换掉bilstm什么的,感觉没啥创新。不过我同学联系了原文作者,对方表示因为公司规定无法开源,所以一些具体的(炼丹)细节就不得而知了。
-------------------- The End -----------------------------
最后推荐大家一个更全的文章整理吧:PIC - Person In Context ,这个网上实时更新各种relationship的文章,还有他们的paper/code链接。