一、什么是ROI Pooling
ROI是Region of Intersect的简写,是指一张图的感兴趣区域,可以理解为目标检测的候选框也就是region of proposal,我们将原图进行特征提取的时候,就会提取到相应的特征图feature map。那么相应的ROI就会在feature map上有映射,这个映射过程就是ROI Pooling的一部分,一般ROI的步骤会继续进行max pooling,进而得到我们需要的feature map,送入后续计算中。
根据ROI提供的候选框坐标,映射到Feature map上,然后进行max-pooling,和普通的max-pooling的不同之处在于池化窗口的内部的各自包含的特征数量可能会不一样。
下面一组图就能很好的说明这个过程:
1、输入是特征图
2、特征图对应的region proposal
3、若想输出2*2的featureMap
我们需要将这个ROI区域分成4大块,每一块做一下max-pooling得到最终的值。
最终的值就是
再用一张动图体现一下整个过程:
二、ROI Pooling存在的问题
1、候选框从原图坐标映射到的feature Map坐标时,位置坐标可能存在浮点数,此时进行取整操作而出现第一次量化;
2、在ROI Pooling求取每个小网格的位置时也同样存在浮点数取整的情况,此时进行取证操作出现第二次量化。
三、ROI Align
为了解决ROI Pooling两次量化问题,ROI Align不再采用取整量化操作,而是保留了浮点数的运算,并使用双线性插值的方式求取像素值。
具体过程如下所示:
四、双线性插值计算方法
如上图,每一个蓝色点周围都有4个像素点,蓝色点的值为该4个点的加权平均,权重是距离像素点的距离,距离越近,权重越大。如下图所示:
圆圈代表像素值,色块面积代表权重。以红色点为例,待计算点(黑色点)距离红色点最远,因此它权重最小,反映在色块面积上就是红色色块面积最小。说明红色对黑色点的影响比较小。