ROI Pooling解析

    ROI Pooling最早由Ross Girshick在2015年的论文fast rcnn中提出,是对ROI(Region of Interest)的Pooling操作,广泛应用于物体检测的研究领域。该操作旨在对输入特征图中不同大小的ROI利用池化方法获得固定大小的输出特征图。

ROI Pooling层的输入

  1. 经过基础网络卷积和池化后的固定大小的特征图;
  2. 表示ROI信息的N*5维的矩阵,其中N表示ROI数目,纵坐标的第一列表示图片在输入特征图batch中的索引,之后四位是ROI的左上角和右下角坐标的信息。如下图表示一张图片中的ROI信息。

ROI Pooling解析

ROI Pooling解析

                                                                            图1 VOC数据集中带ROI标注的图片

ROI Pooling层的操作

    将特征图中的ROI缩放到预定义的大小,如7*7的尺寸,缩放的处理流程包括:将ROI均分为等大的子区域,其数量与网络层的输出大小相同;计算每个子区域中的最大值或平均值;将每个子区域中的计算结果作为该层输出中的一个元素。

ROI Pooling层的输出

    经过该层后获得N*3维的矩阵,其中N表示ROI数目,纵坐标的第一列表示输出特征图batch中的索引,最后两位表示pooling后的输出大小。

    由该层的实际处理过程可知,ROI Pooling的输出维度实际上不依赖于特征图和其上产生ROI的大小,仅由ROI等分后的子区域的数目决定。整个处理过程可以通过一个例子近似展示。下图表示一个8*8的feature map,黑色框表示其中的一个ROI,ROI Pooling后的大小为2*2,也就是黑色框中水平和垂直线分割后的区域数目。

ROI Pooling解析

图片来自这里

    若Pooling中执行的是最大化操作,则ROI Pooling后的输出如下。此处之所以说该例子是ROI Pooling的一个近似操作,是因为ROI大小为7*5,Pooling的输出大小为2*2,上图中没有对ROI区域进行等分。

 

ROI Pooling解析

参考文献:

  1. https://blog.deepsense.ai/region-of-interest-pooling-explained/
  2. http://blog.csdn.net/lanran2/article/details/60143861
  3. https://github.com/jakebelew/roi-pooling/blob/master/tensorflow/core/user_ops/roi_pooling_op.cc