目标检测特殊层:PSROIPooling详解
1. Position Sensitive ROI-Pooling 簡介
Position Sensitive ROI Pooling(位置敏感的候選區域池化)是檢測框架R-FCN的主要創新點。一般來講,網絡越深,其具有的平移旋轉不變性越強,這個性質對于保證分類模型的魯棒性有積極意義。然而,在檢測問題中,對物體的定位任務要求模型對位置信息有良好的感知能力,過度的平移旋轉不變性會削弱這一性能。研究發現,對于較深的全卷積神經網絡(Inception、ResNet 等),Faster-RCNN檢測框架存在著一個明顯的缺陷:檢測器對物體的位置信息的敏感度下降,檢測準確度降低。一般來講最直觀的解決方法是將RPN的位置向淺層移動(比如在ResNet中將RPN嵌入到conv4_x的位置),但這樣做會明顯增加 Fast-RCNN 部分的計算量,使得檢測速度明顯變慢。?
有鑒于此,R-FCN 這篇文章的作者提出了一種全新的特征聚集方法:Position Sensitive ROI Pooling。其主要思想是在特征聚集時人工引入位置信息,從而有效改善較深的神經網絡對物體位置信息的敏感程度。同時,R-FCN的大部分操作都直接對整張圖片進行,這也大大優化了網絡的運行速度。PS-ROI Pooling 具體操作方法如下圖所示(這里僅顯示了分類分支,包圍框回歸分支操作類似,在通道數和損失函數形式上有一些區別):?
?
如上圖,每一個候選區域(ROI)被平均分割成 k^2 個矩形單元,前序特征圖先通過一層 1*1 的卷積核生成通道數為 k^2*(C+1) 的特征圖。這里,k^2 代表一個ROI里所有矩形單元的數量,C+1 代表所有的類別數加上背景。這 k^2*(C+1) 張特征圖每 C+1 張分成一組、共包含 k^2 組,每組負責向對應的矩形單元進行響應。池化每一個ROI時,各個點(一共 k^2 個),均由上一層中對應分組的對應位置區域通過平均池化獲得。由此獲得一組 C+1 張特征圖。最后,將這些特征圖經過全局平均池化,得到 C+1 維的向量,計算分類損失函數。?全圖卷積,降低第二階段的計算量,推薦窗口只需要經過全局的平均就可以分類;不同的卷積核提取不同位置的特征,可能是人體的一部分,能體現位置信息;
計算反向傳播時,遵循“向對應位置回傳梯度的原則”,池化后的每一個點回傳的梯度傳向池化前特征圖上對應通道對應區域的特征點上。具體實現可參見源碼:PSROI-Pooling 源碼
2. PS-ROI Align 的主要思路和實現細節
ROI Align的具體原理和實現細節已在博文中說明得很清楚了。在這一改進思路的啟發下,博主嘗試將 ROI Align 移植到 PS-ROI Pooling 中,實現了一個 Position Sensitive ROI Align 的算法。主要改進就是兩次量化的取消:ROI的邊界坐標值和每個ROI中所有矩形單元的邊界值保持浮點數形式,在每個矩形單元中計算出固定位置固定數量的采樣點的像素值作平均池化。具體的前向傳播和反向傳播細節如下:
- 前向傳播:?
a. 遍歷池化后特征圖上的每一個像素點,在池化前特征圖上尋找對應通道上的對應區域;?
b. 將每一個候選區域平均劃分成 n * n 個單元;?
c. 在每一個單元內,按照設置的采樣點數目計算出采樣點的坐標值;?
d. 使用雙線性內插的方法計算出特征圖上每一個采樣點處所對應的值;?
e. 依照平均池化的方式計算出 a 步驟中當前點的值,并且記錄下所有采樣點的位置坐標。 - 反向傳播:?
a. 遍歷池化后特征圖上的每一個像素點,在池化前特征圖上尋找對應通道上的對應區域;?
b. 在a步驟的當前區域中遍歷每一個點,分別和前向傳播中記錄下來的所有采樣點坐標比較,如果橫縱坐標都小于1,則回傳平均后的梯度值。
初步的實驗表明,PS-ROI Align 對模型的檢測性能有提升,對小物體的感知能力有明顯改善,具體的實驗結果將過段時間發出。
轉載請標明出處:目標檢測特殊層:PSROIPooling詳解
文章來源:?目標檢測特殊層:PSROIPooling詳解
總結
以上是生活随笔為你收集整理的目标检测特殊层:PSROIPooling详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 目标检测特殊层:ROI Align层详解
- 下一篇: Light-Head R-CNN相关资料