目标检测系列:SIN(Structure Inference Net)
1. Introduction
很多的论文都有考虑过上下文内容对目标检测的影响,例如FPN网络,通过融合大感受野的特征图,有效利用上下文的语义,本文提出了两种上下文信息1. scene上下文 2. 物体关系的上下文。本文将每个物体当做一个图中的节点,物体之间的关系表示成一条边,主干网络使用了Faster Rcnn,在PASCAL VOC,MS COCO上的表现都很不错。
2. SIN
2.1 主干网络
主干的网络使用Faster RCNN,本文提出模型,在RPN网络后会有很多个推荐框ROIs,然后使用非极大线性抑制进行过滤,筛选出固定数量的ROIs,对每个ROI,利用接在后面的FC网络提取特征得到特征向量,将整张图片也进行特征提取得到,任意两个节点之间都会有连接的边,以为例,这是两个从两个物体中提取的特征向量,连接两者的边为
2.2 信息传递
因为本文提出的亮点是使用上下文信息,那关键问题是对于每个节点(特征向量)如何将上下文信息和其他节点的信息结合进来,因此设计一个将外部信息和自己的特征融合起来的函数就非常必要了,作者认为这个过程和RNN中的memory操作相似,因此使用RNN融合自身和其他外部信息,同时考虑到效率问题本文使用GRU作为融合函数。时刻,有两个输入,和LSTM不同GRU有两个控制门,重置门和更新门,得到的,其中,这些公式里面都是需要学习的参数,GRU和LSTM差不多,将遗忘门和输入门合成了一个单一的重置门(reset gate),也就是说多大程度上擦除以前的状态state,另外细胞更新操作变为更新门(update gete),它的作用是多大程度上要用candidate 来更新当前的hidden layer。通常来说,GRU 的初始值都是一个随机的向量,但是在本文中,对于sence GRU,将每个节点的特征向量作为初始值,上下文向量作为输入
2.3 Structure Inference
- sence GRU:对每个节点的GRU,以为初始 的隐藏状态,全局特征作为输入。
- edge GRU:对每个的GRU,以为初始 的隐藏状态,而输入是,这里要解释一下为什么用maxpooling而不是avgpooling,因为作者认为物体只是和其他一部分物体有关系,和其余的没啥直接联系,通过maxpooling可以过滤掉那些相关性不大的消息,如果使用avgpooling则会将所有的信息都考虑进来,效果不好。
其中
是要学习的参数,其中是物体之间的空间位置关系
是ROI的中心点坐标,分别表示ROI的宽,高,面积。
接下来要将融合起来,通过实验验证发现,mean-pooling的效果最好
接下来会有几个同样结构的senceGRU,edgeGRU组合,只不过初始状态变成上一时刻的隐藏状态。
3. 总结
最初看到这篇论文的时候有点激动,因为我曾经也有过同样想法,但始终没想好该怎么做。
-
本文优点:
- 利用了上下文语义
- 探索物体间的关系对目标检测的影响,包括包括位置关系和潜在逻辑关系
-
本文不足
- 很明显的一点,时间复杂度太高,Faster RCNN之所以不是那么完美就是因为他的时间问题,而本文在Faster Rcnn的基础之上又加了那么多操作,时间问题无法避免
- GRU的使用无法确定好坏,RNN是用来处理链式模型的问题,可以记录远处的语义信息,而本文在组合使用GRU的时候并没有明显的链式关系,这样强行使用GRU不知道效果是好是坏。