Faster RCNN
爲了解決Fast RCNN中region proposal生成與目標檢測速度不匹配的問題,在深度網絡中引入RPN,直接利用深度網絡直接計算得到region proposal,整個region proposal生成和目標檢測的過程都可以在GPU上完成。同時也實現region proposal生成網絡與目標檢測網絡的網絡權值共享。
RPN網絡結構
首先利用基網絡對圖像用一系列的卷積和池化操作進行特徵提取,得到原始的feature maps(灰色區域),然後在原始的feature maps後面再接一個con+relu層,得到將要用於生成region proposal的feature maps。將feature maps中的每個點映射回原圖回原圖中心,得到一個基準點。根據設置好的尺度大小和長寬比,並圍繞基準點,生成k個anchors。Feature maps的每個點都有關於k個anchors的輸出,包括是否有目標,以及迴歸k個region proposal的座標值。
具體過程分析
得到用於生成region proposal的feature maps:爲了生成region proposal,我們使用一個小的網絡在經過基網絡卷積池化計算得到的feature maps上滑動掃描,得到新的feature maps。將新的feature maps用來生成region proposal。
平移不變anchors:在feature maps上的每個點都可以預測得到k個region proposal。具體操作:將feature maps上的每個點映射到原圖,得到一個基準點,然後圍繞該基準點,通過設置好的固定的尺度大小和長寬比,生成k個anchors。在論文中,使用了3種尺度和3種長寬比的anchors,所以k=3*3=9,對於一個大小爲W*H的feature map,將會產生W*H*k個anchors。而通過這種不同尺度和不同長寬比的設置,同樣實現了anchors的平移不變性。
RPN的損失函數:在訓練RPN的時候,先需要對得到的W*H*k個anchors進行正負樣本的劃分。將與gt box具有最大IOU的anchor以及與任何一個gt box的IOU大於0.7的anchor作爲正樣本。將剩餘的與gt box的IOU小於0.3的anchor作爲負樣本,其餘anchors均被忽略。
對於每個anchor,後面會再接上一個用於二分類的softmax與用於bbox迴歸器。二分類softmax用於判斷anchor是否爲目標的概率,bbox迴歸器用於調整anchor的4個座標值。因此RPN的損失函數可定義爲:
其中表示第i個anchor的標籤,表示對第i個anchor預測的概率值,表示與正樣本anchor相關的gt box與anchor box的座標偏移,表示預測的box與anchor box的座標偏移。,的計算方式如下:
其中x,y,h,w分別表示box的中心座標,高度與寬度。
訓練Faster RCNN
整個訓練過程可分爲4步:
第一步:用在ImageNet數據集上訓練好的model初始化模型,訓練一個RPN網絡;
第二步:用在ImageNet數據集上訓練好的model初始化模型,同時用第一步中訓練好的RPN網絡生成的region proposal作爲輸入,訓練一個Fast RCNN;
第三步:用第二步訓練好的Fast RCNN的網絡參數初始化RPN網絡,但是將RPN與Fast RCNN共享的網絡層的learning rate設置爲0,僅微調RPN獨有的網絡層。
第四步:固定共享的網絡層,僅微調Fast RCNN所獨有的fc層。
參考鏈接:
https://zhuanlan.zhihu.com/p/24916624
http://blog.csdn.net/u011534057/article/details/51247371
http://blog.csdn.net/xyy19920105/article/details/50817725