天天看點

ROI 詳解

SPPNet、roi pooling 和 average pooling之間的差別,都是起到對任意大小的輸入産生固定的輸出的作用。其中SPPNet、roi pooling是一樣的。

下面對ROI Pooling 進行詳解:

  • ROI是Region of Interest的簡寫,指的是在“特征圖上的框”;
  • POOling是一個池化操作。

可以再了解一下這個概念【region proposal】:

給定一張輸入image找出objects可能存在的所有位置。這一階段的輸出應該是一系列object可能位置的bounding box。這些通常稱之為region proposals或者 regions of interest(ROI)。

ROI Pooling的輸入

輸入有兩部分組成:

  1. 特征圖:通過神經網絡的特征圖feature map;
  2. rois:在Fast RCNN中,指的是Selective Search的輸出;在Faster RCNN中指的是RPN的輸出,一堆矩形候選框框,size為[1x5x1x1](4個坐标+索引index),其中值得注意的是:坐标的參考系不是針對feature map這張圖的,而是針對原圖的(神經網絡最開始的輸入)左上角和右下角坐标。

ROI Pooling的輸出

輸出是batch個vector,其中batch的值等于RoI的個數,vector的大小為channel * w * h;RoI Pooling的過程就是将一個個大小不同的box矩形框,都映射成大小固定(w * h)的矩形框。

ROI pooling具體操作

  1. 根據輸入image,将ROI映射到feature map對應位置;
  2. 将映射後的區域劃分為相同大小的sections(sections數量與輸出的次元相同);
  3. 對每個sections進行max pooling操作。

下面拿官網的圖來舉個栗子吧~假設我們要對一個8*8大小的feature map進行ROI pooling操作,其1含有一個ROI,需要輸出大小為2*2.

  1. 輸入的feature map 如下
ROI 詳解
  1. region proposal 投影之後位置(左上角,右下角坐标):(0,3),(7,8)。

    我們先把roi中的坐标映射到feature map上,映射規則比較簡單,就是把各個坐标除以“輸入圖檔與feature map的大小的比值”,得到了feature map上的box坐标。

ROI 詳解
  1. 将其劃分為(2*2)個sections(因為輸出大小為22),通過第二步,我們可以發現,所得到的矩形框大小為5x7,輸出為2x2,是以在57的特征圖劃分成2*2的時候不是等分的,行是5/2,第一行得到2,剩下的那一行是3,列是7/2,第一列得到3,剩下那一列是4。是以,我們可以把這個矩形這樣劃分:
    ROI 詳解
  2. 然後對這個2x2的區域進行max pooling操作。
    ROI 詳解

下面是一個動态圖,可以更形象的說明整個roi pooling的過程:

ROI 詳解

參考:

  1. Region of interest pooling explained
  2. ROI Pooling層解析

繼續閱讀