SPPNet、roi pooling 和 average pooling之间的区别,都是起到对任意大小的输入产生固定的输出的作用。其中SPPNet、roi pooling是一样的。
下面对ROI Pooling 进行详解:
- ROI是Region of Interest的简写,指的是在“特征图上的框”;
- POOling是一个池化操作。
ROI Pooling的输入
输入有两部分组成:
- 特征图:通过神经网络的特征图feature map;
- rois:在Fast RCNN中,指的是Selective Search的输出;在Faster RCNN中指的是RPN的输出,一堆矩形候选框框,size为[1x5x1x1](4个坐标+索引index),其中值得注意的是:坐标的参考系不是针对feature map这张图的,而是针对原图的(神经网络最开始的输入)左上角和右下角坐标。
ROI Pooling的输出
输出是batch个vector,其中batch的值等于RoI的个数,vector的大小为channel * w * h;RoI Pooling的过程就是将一个个大小不同的box矩形框,都映射成大小固定(w * h)的矩形框。
ROI pooling具体操作
- 根据输入image,将ROI映射到feature map对应位置;
- 将映射后的区域划分为相同大小的sections(sections数量与输出的维度相同);
- 对每个sections进行max pooling操作。
下面拿官网的图来举个栗子吧~假设我们要对一个8*8大小的feature map进行ROI pooling操作,其1含有一个ROI,需要输出大小为2*2.
- 输入的feature map 如下

- region proposal 投影之后位置(左上角,右下角坐标):(0,3),(7,8)。
我们先把roi中的坐标映射到feature map上,映射规则比较简单,就是把各个坐标除以“输入图片与feature map的大小的比值”,得到了feature map上的box坐标。

- 将其划分为(2*2)个sections(因为输出大小为22),通过第二步,我们可以发现,所得到的矩形框大小为5x7,输出为2x2,所以在57的特征图划分成2*2的时候不是等分的,行是5/2,第一行得到2,剩下的那一行是3,列是7/2,第一列得到3,剩下那一列是4。因此,我们可以把这个矩形这样划分:

- 然后对这个2x2的区域进行max pooling操作。

下面是一个动态图,可以更形象的说明整个roi pooling的过程:

参考:
- Region of interest pooling explained
- ROI Pooling层解析



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/36148.html