ROI Pooling

概念
  • region of interest
  • 特征图上的框
  • 在Fast RCNN中, RoI是指Selective Search完成后得到的“候选框”在特征图上的映射
  • 在Faster RCNN中,候选框是经过RPN产生的,然后再把各个“候选框”映射到特征图上,得到RoIs。
input

输入有两部分组成:

  • 特征图:指的是图1中所示的特征图,在Fast RCNN中,它位于RoI Pooling之前,在Faster RCNN中,它是与RPN共享那个特征图,通常我们常常称之为“share_conv”;
  • rois:在Fast RCNN中,指的是Selective Search的输出;在Faster RCNN中指的是RPN的输出,一堆矩形候选框框,形状为1x5x1x1(4个坐标+索引index),其中值得注意的是:坐标的参考系不是针对feature map这张图的,而是针对原图的(神经网络最开始的输入)
Pooling 池化
Region of interest pooling example (pooling sections)

要做2×2的最大池化,原Roi是5×7的,那么无法均分:

h方向: 5/2 = 2 (2,3)

w方向:7/2 = 3 (3,4)

output
Region of interest pooling example (output)
Reference

https://blog.csdn.net/lanran2/article/details/60143861

https://github.com/deepsense-ai/roi-pooling

https://deepsense.ai/region-of-interest-pooling-explained/

ROI Align

线性插值

假设我们已知坐标 (x0, y0) 与 (x1, y1),要得到 [x0, x1] 区间内某一位置 x 在直线上的值。根据图中所示,我们得到

$\frac{y – y_0}{x – x_0} = \frac{y_1 – y_0}{x_1 – x_0}. \,!$

由于 x 值已知,所以可以从公式得到 y 的值

$y = y_0 + (x-x_0)\frac{y_1 – y_0}{x_1-x_0} = y_0 + \frac{(x-x_0) y_1 – (x-x_0) y_0}{x_1-x_0}$

已知 yx 的过程与以上过程相同,只是 xy 要进行交换。

Linear interpolation.png
双线性差值
img

即做三次线性插值 R1,R2,P

https://zh.wikipedia.org/wiki/%E5%8F%8C%E7%BA%BF%E6%80%A7%E6%8F%92%E5%80%BC

具体流程

如下图所示,虚线部分表示feature map,实线表示ROI,这里将ROI切分成2×2的单元格。

  • 如果采样点数是4,那我们首先将每个单元格子均分成四个小方格(如红色线所示),每个小方格中心就是采样点。
  • 这些采样点的坐标通常是浮点数,所以需要对采样点像素进行双线性插值(如四个箭头所示),就可以得到该像素点的值了。
  • 然后对每个单元格内的四个采样点进行maxpooling,就可以得到最终的ROIAlign的结果。