【ROI Pooling】Region of interest pooling

目录


先看看论文《Fast R-CNN》中怎么说的

【ROI Pooling】Region of interest pooling

【ROI Pooling】Region of interest pooling

【ROI Pooling】Region of interest pooling

h,w划分为H、W个格子,每个格子大小 h/Hw/W,格子里面做 max pooling,ROI pooling 在每个feature map 的channel上是独立的
eg:feature map 28*28 通过ROI pooling 变成 7*7, 先划分7*7个格子,每个格子大小4*4,在4*4里面做 max pooling。


目标检测typical architecture通常分为两个阶段:

  • region proposal:
    给定一个输入图像,找出可找到对象的所有可能位置。这个阶段的输出应该是bounding box列表,这些通常被称为 region proposal,或感兴趣的地区。

  • final classification:
    对于每一阶段的region proposal,决定属于目标类别还是背景,这里我们使用深度卷机网络。

如果在第一阶段不被检测到的话,那么就没有可能再成功的分类了,这也是为什么region proposal召回率这么高的原因。划分这么多region proposal ,但是大多数在检测算法的第二阶段将被划为背景。

问题是:

  • 生成大量region proposal可能会导致性能问题,这会使对实时对象检测实现加大难度;
  • 处理速度方面并不理想;
  • 不能做end-to-end 训练,也就是说,无法一次性训练出系统所有的组件。

1 描述region proposal

region proposal是用于我i提检测任务的神经网络层,保持高精度检测的情况下,实现了训练和测试的显著加速。
该图层需要两个输入:

  • 来自于有多个卷积层和最大池化层的深度卷积网络中的固定大小的feature map

  • 一个表示所有roi的N × 5 的矩阵,N是roi的数量,第一列表示图像索引,其余四个是该区域左上角和右下角的坐标。

【ROI Pooling】Region of interest pooling

2 流程

roi pooling具体操作如下:

  • 输入image,将roi映射到feature map对应位置;
  • 将映射后的区域划分为相同大小的sections(sections 数量与输出唯独相同);
  • 对每个sections进行max pooling操作;

这样我们就可以从不同大小的方框得到固定大小的相应的feature maps。 值得一提的是,输出的feature maps的大小取决于ROI 和卷积feature maps大小,roi pooling最大的好处就在于极大地提高了处理速度。

3 example

8×8的feature map ,一个roi,以及输出大小2×2
先看动图了解一下过程:

【ROI Pooling】Region of interest pooling

然后具体的过程

1)输入:
【ROI Pooling】Region of interest pooling

2)region proposal 投影之后位置(左上角,右下角比坐标):(0,3),(7,8)
【ROI Pooling】Region of interest pooling

3)将其划分为(2×2)个sections(因为输出大小为2×2),我们可以得到:
【ROI Pooling】Region of interest pooling

4)对每个sections做max pooling,可以得到:

【ROI Pooling】Region of interest pooling

4 Back-propagation through ROI pooling layers

【ROI Pooling】Region of interest pooling

【ROI Pooling】Region of interest pooling

简化下
RoI pooling层计算损失函数对每个输入变量x的偏导数,如下:

【ROI Pooling】Region of interest pooling

y是pooling后的输出单元,x是pooling前的输入单元,如果y由x pooling而来,则将损失L对y的偏导计入累加值,最后累加完R个RoI中的所有输出单元。下面是我理解的x、y、r的关系:

【ROI Pooling】Region of interest pooling

5 Roi pooling 总结

What are the most important things to remember about RoI Pooling?

  • It’s used for object detection tasks
  • It allows us to reuse the feature map from the convolutional network
  • It can significantly speed up both train and test time
  • It allows to train object detection systems in an end-to-end manner

参考
【1】Region of interest pooling explained

【2】ROI Pooling层解析

【3】ROI Pooling层详解

【4】 ROI (Region of interest pooling) Pooling 层详解

【5】【深度学习:目标检测】RCNN学习笔记(4):fast rcnn