ROIs Pooling顧名思義,是pooling層的一種,而且是針對ROIs的pooling;
整個 ROI 的過程,就是將這些 proposal 摳出來的過程,得到大小統一的 feature map。
什么是ROI呢?(https://www.sogou.com/link?url=DOb0bgH2eKh1ibpaMGjuyy_CKu9VidU_Nm_z987mVIMm3Pojx-sH_PfgfR9iaaFcn666hxi--_g.)
ROI是Region of interest的簡寫,指的是faster rcnn結構中,經過rpn層后,產生的proposal對應的box框。
ROI Pooling的輸入
輸入有兩部分組成:
1. data:指的是進入RPN層之前的那個Conv層的Feature Map,通常我們稱之為“share_conv”;
2. rois:指的是RPN層的輸出,一堆矩形框,形狀為1x5x1x1(4個坐標+索引index),其中值得注意的是:坐標的參考系不是針對feature map這張圖的,而是針對原圖的(神經網絡最開始的輸入)
ROI Pooling的輸出
輸出是batch個vector,其中batch的值等於roi的個數,vector的大小為channelxwxh;ROI Pooling的過程就是將一個個大小不同的box矩形框,都映射成大小為wxh的矩形框;
如圖所示,我們先把roi中的坐標映射到feature map上,映射規則比較簡單,就是把各個坐標除以輸入圖片與feature map的大小的比值,得到了feature map上的box坐標后,我們使用pooling得到輸出;由於輸入的圖片大小不一,所以這里我們使用的spp pooling,spp pooling在pooling的過程中需要計算pooling后的結果對應的兩個像素點反映社到feature map上所占的范圍,然后在那個范圍中進行取max或者取average。
---------------------
(https://www.sogou.com/link?url=44aejrzSKwWwrNJcKKLVtEK1rJUb32uHp37TwbVHvja5OaZX_AHBzQ..)
TensorFlow的pool layer是固定大小的
(https://www.sogou.com/link?url=DSOYnZeCC_rR_TP93bdO6GxT14t4sbuOSwJr4L_oLI5lf9NGYfOU6pULrym3hTBVtsCnpVGpPpA.)
RoI Pooling就是實現從原圖區域映射到conv5區域最后pooling到固定大小的功能。
輸入,b0 為卷積的feature map,b1 為rois。
Reshape
Forward(向前傳播)
backward(反向傳播)
(https://www.sogou.com/link?url=DSOYnZeCC_rR_TP93bdO6GxT14t4sbuOSwJr4L_oLI5lf9NGYfOU6pULrym3hTBVtsCnpVGpPpA.)
我們知道在Faster R-CNN中,對於每個ROI(文中叫candidate object)主要有兩個輸出,一個輸出是分類結果,也就是預測框的標簽;另一個輸出是回歸結果,也就是預測框的坐標offset。而Mask R-CNN則是添加了第三個輸出:object mask,也就說對每個ROI都輸出一個mask,該支路是通過FCN網絡(如Figure1中的兩個卷積層)來實現的。以上這三個輸出支路相互之間都是平行關系,相比其他先分割再分類的實例分割算法相比,這種平行設計不僅簡單而且高效。
---------------------
作者:AI之路
來源:CSDN
原文:https://blog.csdn.net/u014380165/article/details/81878644
大致回顧下ROI Pool層的操作:
ROI Pool的輸入是ROI的坐標和某一層的輸出特征,不管是ROI Pool還是ROIAlign,目的都是提取輸出特征圖上該ROI坐標所對應的特征。RPN網絡得到的ROI坐標是針對輸入圖像大小的,所以首先需要將ROI坐標縮小到輸出特征對應的大小,假設輸出特征尺寸是輸入圖像的1/16,那么先將ROI坐標除以16並取整(第一次量化),然后將取整后的ROI划分成H*W個bin(論文中是 7*7,有時候也用14*14),因為划分過程得到的bin的坐標是浮點值,所以這里還要將bin的坐標也做一個量化,具體而言對於左上角坐標采用向下取整,對於右下角坐標采用向上取整,最后采用最大池化操作處理每個bin,也就是用每個bin中的最大值作為該bin的值,每個bin都通過這樣的方式得到值,最終輸出的H*W大小的ROI特征。從這里的介紹可以看出ROI Pool有兩次量化操作,這兩步量化操作會引入誤差。
---------------------
作者:AI之路
來源:CSDN
原文:https://blog.csdn.net/u014380165/article/details/81878644