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 池化

要做2×2的最大池化,原Roi是5×7的,那么无法均分:
h方向: 5/2 = 2 (2,3)
w方向:7/2 = 3 (3,4)
output

Reference
https://blog.csdn.net/lanran2/article/details/60143861
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}$
已知 y 求 x 的过程与以上过程相同,只是 x 与 y 要进行交换。

双线性差值

即做三次线性插值 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的结果。
