在rcnn中,是在原图上将region proposals 提取,然后再依次送进CNN中做卷积,但是由于proposals之间像素是重叠的,因此就多了很多卷积运算,因此,在fast_rcnn,先将原图送到CNN中进行卷积,得到一个feature map图,然后将原图上的region proposals映射到feature map,但是映射之后的region proposals大小尺寸不一样,我们在feature map上提取之后,得到的向量长度不一样,没有办法做后续的卷积或是全连接,因此需要ROI pooling,将大小不一样的region proposals 池化为大小一样的,即HXW。
下图是roi pooling 层的作用:
下图是roi pooling 层的做法:
feature map中选取channel 0,然后将region proposals映射到feature map 上,例如映射之后的是8x8,那么在channel 0上的pooling 是这样的,将8x8分成WXH个子块,这里是2x2,那么每个子块就是4x4,在这4x4中只取最大值来替代这个子块,这样就得到了WXH的大小,这里是2x2;feature map的每个channle 都按照下面的方式进行roi pooling ,这样每个region proposals就得到了pooling 过的feature map。