论文《Inside-Outside Net: Detecting Objects in Context with skip pooling and Recurrent Neural Networks》

收录于CVPR2016

1.Contribution

本文主要关注目标检测过程中的上下文信息以及多尺度信息两个方面,提出了Inside-Outside Net:
Inside Net: 采用skiping pooling的方式连接不同卷积层输出的feature map,实现多尺度特征的融合
Outside Net: 采用IRNN的结构,整合contextual infomation
Performance: 80.1% on VOC2007/ 77.9% on VOC2012/ 33.1% on COCO

2.网络的基本结构


采用的是Fast RCNN的基本框架,通过SS和EB提取Proposal,对于每一个ROI,提取conv3/conv4/conv5对应的特征,fix到固定的长度;然后将conv5输出的feature map输入到两个IRNN单元提取上下文信息,同样,在输出的context feature map上提取ROI对应的特征,fix到固定长度。然后将multi-scale特征和context特征先normalize/scale,然后concate到一起。通过1*1卷积进行降维。输出到分类器去进行cls和reg.

2.1.Multi-scale Pooling

multi-scale pooling主要需要考虑几个问题:
1.选择哪几个conv层的特征进行融合
2.如何在融合之前进行正则化
3.融合之后的尺度因子要怎么选择(scale)

实验结果如下:

首先,右边两列对比说明了进行不同层之间的特征的融合的时候,需要先做normalize,不然不同feature map激活值不一样,会导致unstable learning。
其次,左边pooling层的选择说明了只需要选择C3/C4/C5就可以达到最好的performance了。


正则化的话可以对于每一个spatial position进行跨channel的归一化,也可以对于ROI的每一个entries进行正则化。作者比较了这两种方法,差别不是很大。同时,作者也发现尺度因子学习和不学习得到的效果差不多。

2.2.Contextual features with IRNNS

神经网络里面整合contextual信息的方法有不少,这里首先介绍一下作者的办法:

1*1卷积降维过程如下

conv5出来的feature map通过一个1*1 conv输入到IRNN单元。IRNN单元由四个方向的转移运算实现四个方向的信息传播,具体如下所示,以向右为例:

相当于就是当前位置当前时刻的激活值等于左边位置当前时刻激活值,乘上一个转移矩阵,加上当前位置原来的激活值,再通过RELU。这个转移矩阵在训练的过程中可以简化成一个单位阵,作者发现这并没有太影响网络的性能。

在分别进行四个方向的信息传播之后,需要把这四个方向的信息进行融合(1*1conv)。经过两个IRNN单元之后,理论上来说原来CONV5上每一个点就搜集到了其他所有点的信息。

作者通过图示的方法比较了IRNN和其他几种结合上下文信息的方式:

可以看到,通过卷积的话得到的contextual信息还不是很global。另一个极端,通过global pooling的话每个点的激活值就变成一样了。通过两次IRNN的话,可以获取全局的信息,并且信息的融合是一种非线性的映射方式,相比global pooling来说要好一些。


作者比较了上面几种方法对于最终performance的影响。结果表明IRNN的效果要更好。

3.整体性能

你可能感兴趣的:(Computer,Vision,计算机视觉论文研读)