ROI pooling作用有两点:
(1)根据输入image,将ROI映射到feature map对应位置,映射是根据image缩小的尺寸来的;
(2)将得到的RoI映射在feature map上得到的RoI feature region输出统一大小的特征区域(由于区域提议得到的RoI大小和尺度比例不尽相同,无法输入FC层进行一维化操作)
ROI pooling layer具体操作
1. 根据输入image,将ROI映射到feature map对应位置
2. 将映射后的区域划分为相同大小的sections(sections数量与输出的维度相同)
具体过程:假设我们输入的RoI的尺寸大小为H x W,而我们经过RoI pooling layer操作后需要得到的统一尺寸大小为h x w,则有以下几步过程:
1) 输入的H x W需要被划分成h x w个网格块,然后对每个块进行max pooling操作;
2) 那么重要的是每个块需要被划分为多大的像素呢?采用平均分块得到每个块的像素尺寸大小为,但此时又存在问题,如果除不整呢?解决方法是除不整舍去小数保留整数,而最后一个行块或列块包含剩余没有包括在内的元素值。具体看下面的例子。
3. 对每个sections进行max pooling操作
这样我们就可以从不同大小的方框得到固定大小的feature maps
一个例子
考虑一个8*8大小的feature map,一个ROI投影后大小为5 x 7,以及输出大小为2 x 2
1. 输入固定大小的feature map
2. region proposal投影之后的位置(左上角(0,3),右下角坐标(7,8)),大小为5 x 7
3. 将其划分为2*2个sections(因为输出大小为2*2)
此时5/2 = 2.5,7/2 = 3.5,都除不整,则左上角第一个块的大小即为2 x 3,第一行右上角的块的大小即为2 x (7-3)= 2 x 4,
第二行第一列即为(5-2)x 3 = 3 x 3,最后一个块则为(5-2)x(7-3)= 3 x 4。
4. 对每个section做max pooling