【ROI Pooling】Region of interest pooling
目录
先看看论文《Fast R-CNN》中怎么说的
把 h,w
划分为H、W
个格子,每个格子大小 h/H
、w/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的数量,第一列表示图像索引,其余四个是该区域左上角和右下角的坐标。
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
先看动图了解一下过程:
然后具体的过程
1)输入:
2)region proposal 投影之后位置(左上角,右下角比坐标):(0,3),(7,8)
3)将其划分为(2×2)个sections(因为输出大小为2×2),我们可以得到:
4)对每个sections做max pooling,可以得到:
4 Back-propagation through ROI pooling layers
简化下
RoI pooling层计算损失函数对每个输入变量x的偏导数,如下:
y是pooling后的输出单元,x是pooling前的输入单元,如果y由x pooling而来,则将损失L对y的偏导计入累加值,最后累加完R个RoI中的所有输出单元。下面是我理解的x、y、r的关系:
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