ROI (Region of interest pooling) Pooling 层详解

参考:https://blog.deepsense.ai/region-of-interest-pooling-explained/

目标检测typical architecture通常分为两个阶段:
1)region proposal:
给定一个输入图像,找出可找到对象的所有可能位置。这个阶段的输出应该是bounding box列表,这些通常被称为region proposal,或感兴趣的地区。
2)final classification:
对于每一阶段的region proposal,决定属于目标类别还是背景,这里我们使用深度卷机网络。

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

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

描述region proposal

region proposal是用于我i提检测任务的神经网络层,保持高精度检测的情况下,实现了训练和测试的显著加速。
该图层需要两个输入:
1. 来自于有多个卷积层和最大池化层的深度卷积网络中的固定大小的feature map
2.一个表示所有roi的N × 5 的矩阵,N是roi的数量,第一列表示图像索引,其余四个是该区域左上角和右下角的坐标。
这里写图片描述
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)输入:
这里写图片描述
2)region proposal 投影之后位置(左上角,右下角比坐标):(0,3),(7,8)
这里写图片描述
3)将其划分为(2×2)个sections(因为输出大小为2×2),我们可以得到:
这里写图片描述
4)对每个sections做max pooling,可以得到:
这里写图片描述
Roi pooling 总结:
1)用于目标检测任务;
2)允许我们对CNN中的feature map进行重复使用;
3)能够显著加速训练和测试时间;
4)允许end-to-end训练

猜你喜欢

转载自blog.csdn.net/acbattle/article/details/80219386