一、網絡介紹
參考文章:R-FCN詳解
論文地址:Object Detection via Region-based Fully Convolutional Networks
R-FCN是Faster-RCNN的改進型,其速度提升了2.5倍以上,並略微提高了准確度。
二、論文創新
提出Position-sensitive score maps來解決目標檢測的位置敏感性問題
位置敏感性
分類網絡的位置不敏感性
檢測網絡的位置敏感性
三、R-FCN思路
如下圖所示,主體部分和Faster-RCNN一樣:
- 圖片首先進入特征提取網絡
- 然后進行分支操作:
- RPN部分沒什么改變,輸出兩個損失函數判斷anchor是否是前景,然后篩選出特定個數的候選框
- 下面支路進行卷積輸出即為position-sensitive score map,本層不改變大小,輸出維度是重點:K*K*(C+1)
- 下圖並未畫出來,還需要一個卷積支路輸出K*K*4通道的特征,稱作位置敏感得分映射,用於回歸位置修正
position-sensitive score map 分類信息處理
下面我們來着重講解下面支路的處理。
接前一段所述,我們的到K*K*(C+1)維的features,這里的C+1表示的就是分類數(包含背景類別),而K我們可以理解為Faster-RCNN的ROIing后輸出的尺度K*K,以下圖為例,這里我們的K實際就是3,對應着ROIPooling后輸出3*3的小圖,了解了這個事實,我們來講解為什么這樣做。
看到上圖,了解Faster-RCNN的同學可能疑惑:K*K*(C+1)的features為什么ROIPooling后維度變為C+1了?實際上這里的操作並不是標准的ROIPooling:我們的features實際被分成K*K組,每組C+1層,每組對應ROIPooling后的結果的一個位置(如圖ROIPooling輸出3*3共九個點,所以我們需要9組)。
RPN獲取候選框后,我們在position-sensitive score map找到對應的位置,然后對應位置ROI操作對應的features組,以上圖來看,輸出左上角的橙色數字來源於第一組的C+1層features的候選框區域的左上角(比較拗口,對比顏色很容易理解)。
這么做的目的就是:我們希望這K*K組features,每組對應於候選物體的對應部分(比如識別一匹馬,其中一組對應一匹馬圖片的左上角位置,這里經常出現馬頭、馬尾巴這樣),使得分類任務具有位置敏感性。
ROI示意如下:
和Faster-RCNN類似,從RPN產生后開始,各個候選區域的處理(ROI及其之后)不再共享,有多少候選框,計算多少次。
分類信息ROI結果處理
ROI之后獲得的K*K*(C+1)特征對應於C+1個分類,直接求和(或者平均池化)為C+1向量即可,softmax處理一下,獲取最終的分類信息。
回歸信息處理
我們的到的是K*K*4通道的features,類似分類,使用ROI處理,獲取K*K大小4通道的特征,進而類似獲取4個值作為該ROI的x,y,w,h的偏移量,其思路和分類完全相同。
Loss計算及其分析
這個Loss就是兩階段目標檢測框架常用的形式。包括一個分類Loss和一個回歸Loss。lamdy用來平衡兩者的重要性。對於任意一個RoI,我們需要計算它的softmax損失,和當其不屬於背景時的回歸損失。這很簡單,因為每個RoI都被指定屬於某一個GT box或者屬於背景,即先選擇和GT box具有最大重疊率(IOU)的Rol,然后在剩余的Rol中選擇與GT box的重疊率值大於0.5Rol進行匹配操作,最后將剩余的Rol都歸為背景類。即每個Rol都有了對應的標簽,我們就可以根據監督學習常用的方法來訓練它。