Inside-Outside Net: Detecting Objects in Context with Skip Pooling and Recur(ION)学习笔记

时间:2024-05-23 12:50:22

题目:Inside-Outside Net: Detecting Objects in Context With Skip Pooling and Recurrent Neural Networks

摘要:

  • 上下文和多尺度表示对于精确识别任务很重要
  • inside-outside net是一种利用感兴趣区域内外信息的目标检测网络,利用空间递归神经网络将感兴趣区域以外的上下文信息进行整合,使用skip pooling在多尺度和层次上提取特征信息
  • 在PASCAL VOC 2012从最先进的73.9%提高到了77.9%;MS COCO从19.7%提高到了33.1%
  • 证据表明上下文和多尺度对于小目标检测有所改善

介绍:

  • 可靠的检测器需要大量的信息,包括目标的细粒度细节和上下文信息等,但目前的检测器只使用了ROI附近的信息,其限制了可能被检测到目标的类型和准确性。
  • 增加的方法有两种。一是多尺度表示,通过多个低级卷积网络获取细粒度信息;二是上下文信息,RNNs(空间递归神经网络),通过垂直或水平方向的变化提取上下文信息,而使用两个RNN层,可以确保信息可以传播到整张图上。
  • 对于每个ROI,多尺度和上下文信息被连接成一个单层,然后喂入全连接层。演示发现,多尺度和上下文信息的互补的。作者认为这与直觉契合:上下文特征在图像中具有广泛的外观,而多尺度特征捕获更细粒度的细节。
  • 发现在那些以前认为是difficult的目标里面,效果有了比较大的提升,比如小而杂乱的物体。且擅长小物体,如被遮挡的椅子(上下文信息)。

贡献:

  • 提出ION
  • PASCAL VOC 2007 mAP80.1% VOC 2012 mAP77.9% COCO mAP33.1%
  • 进行了广泛的实验,评估选择,如层数组合,使用分割损失,归一化特征振幅,不同的RNN结构,和其他变化
  • 分析了ION的性能,并发现了更好的准确性,特别是对于小对象。

以前的工作:

  • 讨论了ConvNets在目标检测取得的成功;
  • 讨论了空间RNN代替卷积在图像中进行执行;
  • 讨论了跳层连接中,L2正则和**归一化的使用。

ION:

Inside-Outside Net: Detecting Objects in Context with Skip Pooling and Recur(ION)学习笔记

概述流程是:

  • 图像通过深度卷积神经网络提取出特征,同时每一层卷积后的特征图将会被保存起来
  • 接着是连续两个4方向的IRNN,用于计算描述全局和局部图像的上下文特征,上下文特征拥有和conv5一样的维度
  • 另一方面,利用选择性搜索方法,将区域候选框(ROIs)被提取出来。
  • 对于每一个候选框,从conv3,conv4,conv5,context features中提取出固定长度的特征描述符(多层的ROI Pooling),描述符用L2归一化,连接,缩放,1x1卷积降维,最后两个全连接,softmax用于诞生k个类别概率值,bbox诞生候选框的偏移值

细节:

细节1:

多层的pooling。像SPPNet,Fast R-CNN,Faster R-CNN,都是在最后一层进行的pooling,为了扩展到多层,就要考虑维度和幅度。为了保持维度一致(512x7x7),因此最后一层特征也需要是512x7x7;使用L2归一化是为了匹配原始的幅度,连接缩放和1x1卷积降维是为了保持512x7x7维度;最后一个注意,随着更多的特征连接在一起,需要相应地降低1x1卷积的初始权重大小,因此使用“Xavier”进行初始化。

细节2:

4向IRNNs。IRNN是RNN使用ReLU作为**函数,RNN在图像中从左向右进行移动时,每消耗一个输入,更新一个隐藏单元,产生一个输出。用这种方法,左到右,右到左,上到下,下到上进行4个方向的扩展。在输入IRNN前,conv5会经过一个1x1卷积,是为了计算RNN更有效率。另一方面,本来由很多方法都可以,比如LSTM,GRU,传统的tanh作为**的RNN,这里用的ReLU,原因在于,在RNN初始化时,Le等人显示展现了使用权值恒等矩阵的初始化,会让训练变得更加轻松,而使用ReLU的RNN,实现简单方便,会比LSTMs和GRUs计算更快,存储的内存也更少,而性能效果也跟它们接近。

计算公式以向右方向计算为例,h就等于左边值乘以权重的加上自己的值。Inside-Outside Net: Detecting Objects in Context with Skip Pooling and Recur(ION)学习笔记
经过简化后,让W成为I,也就是单位矩阵,式子1就变成了式子2,这个就相当于是一个累加器了,更加简便
Inside-Outside Net: Detecting Objects in Context with Skip Pooling and Recur(ION)学习笔记

为了避免过拟合,论文在concat层加上了dropout,但后来发现没有必要,甚至是不合适,以及训练了rnn的偏置,但发现这也是没有必要的

两个4向的IRNN流程就如下图所示,输入的conv5特征图,输入1x1卷积,进行4方向递归转换,然后连接,再进行1x1conv,4方向递归转换,连接,最后再1x1conv,反卷积上采样得到21x16Wx16H
Inside-Outside Net: Detecting Objects in Context with Skip Pooling and Recur(ION)学习笔记

得到的concat值,实际上包含了目标附近的特征信息,如下图
Inside-Outside Net: Detecting Objects in Context with Skip Pooling and Recur(ION)学习笔记

论文链接:https://openaccess.thecvf.com/content_cvpr_2016/html/Bell_Inside-Outside_Net_Detecting_CVPR_2016_paper.html