ROI (Region of interest pooling) Pooling 层详解

感兴趣区域(Region of interest)
原文链接
目标检测典型结构通常分为两个阶段:

1)region proposal:
给定一个输入图像,找出可找到对象的所有可能位置。这个阶段的输出应该是bounding box列表,这些通常被称为region proposal,或感兴趣的地区。
2)final classification:
对于每一阶段的region proposal,决定属于目标类别还是背景,这里我们使用深度卷机网络。
如果在第一阶段不被检测到的话,那么就没有可能再成功的分类了,这也是为什么region proposal召回率这么高的原因。划分这么多region proposal,但是大多数在检测算法的第二阶段将被划为背景。

问题是:

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

roi pooling具体操作如下:
1)输入image,将roi映射到feature map对应位置;
2)将映射后的区域划分为相同大小的sections(sections 数量与输出唯独相同);
3)对每个sections进行max pooling操作;
这样我们就可以从不同大小的方框得到固定大小的相应的feature maps。
值得一提的是,输出的feature maps的大小取决于ROI 和卷积feature maps大小,roi pooling最大的好处就在于极大地提高了处理速度。
example
8×8的feature map ,一个roi,以及输出大小2×2
具体的过程:
1)输入:
ROI (Region of interest pooling) Pooling 层详解

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

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

4)对每个sections做max pooling,可以得到:
ROI (Region of interest pooling) Pooling 层详解

Roi pooling 总结:
1)用于目标检测任务;
2)允许我们对CNN中的feature map进行重复使用;
3)能够显著加速训练和测试时间;
4)允许end-to-end训练