ROI Align理解

1. 几个问题

  • Mask R-CNN中为何要使用ROI Align取代Faster R-CNN中的ROI Pooling
  • 何为线性插值,何为双线性插值?插值的意义?
  • ROI Align的具体步骤

2. ROI Pooling

  • 在Faster RCNN中(不懂Faster RCNN的点击这里),通过Achor生成的RPN Boxes经过一系列筛选后,会得到一系列ROIs用于后面的识别等工作。但是用于识别的网络需要输入固定维度的图像特征,而ROIs的大小不一致,故抽取的图像特征也不一致。为此,在Faster RCNN中,使用ROI Pooling来解决这个问题。

  • 首先,我们理解一下ROI Pooling的基本思路,如上图所示

    • 假设我们有一个8*9的feature map,2个ROI,且要求输出的固定维度大小为2x2
    • 我们经过坐标的变化,得到在特征图上的投影坐标(左上角x,左上角y,宽度,高度)为(0, 3, 3, 4),(4, 1, 4, 4),如图中的红框
    • 既然需要得到2x2的固定特征维度,那么我们需要对红框内的特征图做Pooling,Pooling方式也如图中所示,以及最后的结果,都一目了然。
    • 有的特征图在划分的时候不能整除,那就只能采取图中做法,类似于加了个zero-pooling
  • 其次,我们来说一下ROI Pooling存在的问题。我们在上面提到了”坐标变换“这四个字,我也特地加粗了,其实问题就出在这里。

    • 假设我们使用VGG16, feat_stride=32来提取图片特征。若原图大小为800x800,那么最后输出的特征图xxxxxxxxx……

未完待续~~~

参考文献