論文地址:
R-FCN: Object Detection via Region-based Fully Convolutional Networks?arxiv.org筆者讀論文的學習筆記,本人水平有限,如有錯誤,請指出。
碼字不易,如果您覺得寫得不錯,請點個贊,謝謝。
一、背景介紹
先說兩個性質:轉換不變性(translation invariance)和轉換可變性(translation variance)。轉換不變性是指在圖像分類時,圖像的平移、旋轉不會給網路的結果帶來影響,卷積神經網路都具備這個性質;轉換可變性是指目標檢測時,物體的偏移應當被網路檢測到,但當網路層數較深時,最後一層輸出的feature map解析度太低,原圖上物體的小偏移難以被檢測到,所以深網路不具備轉換可變性。
two-stage的目標檢測模型分為兩個部分:
- 全卷積子網路backbone
- 針對RoI的子網路
Faster R-CNN原文用的backbone是ZFNet和VGGNet,網路較淺所以具備轉換可變性,例如VGG16將原圖下採樣16倍所以還可以接受;ResNet原文中使用的backbone是Res101,由於層數太深,如果在網路的最後一層(即stage5,下採樣32倍)加入RoI層就會導致轉換可變性很差,於是原文在stage4後面加入RoI層,以此保證轉換可變性。但這樣做帶來的問題是:得到每個RoI之後還要分別經過10層網路,即後面的網路對於RoI是不共享計算的,這導致訓練和預測的時間顯著變長。這個問題也是在此之前的two-stage模型的通病,R-FCN通過引入position-sensitive score map既保證了共享計算(每個RoI無需經過可學習的卷積層或全連接層),又保證了檢測的轉換可變性。
二、模型細節
論文中R-FCN的backbone仍然使用Res101,先在ImageNet上預訓練,之後去除最後的全局平均池化層和全連接層,此時網路最後輸出的feature map的channel數為2048,後面加一層1 x 1卷積將其降維到1024維,後面再加上三個分支:
- RPN
- 用 個卷積核卷積,得到position-sensitive score maps(用於分類)
- 用 個卷積核卷積,得到用於bounding box回歸的maps
第一個分支無需多說,Faster R-CNN中已經解釋得很清楚了,這個分支會產生很多RoI,這些RoI對應到第二個和第三個分支上直接使用,如圖1所示: