1、Faster-RCNN基本結構html
該網絡結構大體分爲三個部分:卷積層獲得高位圖像特徵feature maps、Region Proposal Network獲得候選邊框、classifier識別出物體及獲得準確bounding box。網絡
2、feature maps函數
最後一層卷積層輸出。.net
3、RPN3d
一、RPN(Region Proposal Networks)htm
feature maps再以3x3的卷積核進行卷積獲得256xHxW的高維特徵圖,每一個高維像素點對應原圖9個anchor boxes(長寬比3種狀況,boxes大小也有3種狀況),共有WH*9 個anchors。接着將256xHxW的高維特徵圖一方面用18通道輸出的1x1的卷積核將對應的anchor boxs進行前景背景分類,另外一方面用36通道輸出的1x1卷積覈對斷定爲前景的anchor進座標修正。blog
訓練前景背景分類的時候,須要獲取每一個anchor的標籤,當anchor box與ground truth的IOU在0.3如下,斷定爲背景,當anchor box與ground truth的IOU在0.7以上,斷定爲前景,其餘狀況不用於訓練。在訓練anchor屬於前景與背景的時候,是在一張圖中,隨機抽取了128個前景anchor與128個背景anchor。採用SoftmaxWithLoss進行訓練。get
訓練方框迴歸的時候,博客
也須要獲取每一個anchor的標籤,即每一個anchor到ground truth的Gx,Gy,Gw,Gh。訓練時只要訓練斷定爲前景的anchor就行了,採用SmoothL1loss進行訓練,具體能夠描述爲:it
總的損失函數爲:
在這裏λ被設置爲10,Ncls爲256(前景背景分類的正負樣本分別爲128),Nreg爲2400(通常feature map的寬高爲60x40)。這樣設置的話,RPN的兩部分loss值能保持平衡。
二、NMS
獲得斷定爲前景的anchor後,會進行一次非極大值抑制(Non-Maximum Suppression,NMS)去除重疊的proposal。NMS原理參考:https://www.cnblogs.com/makefile/p/nms.html
4、classifier
一、ROI pooling
對於每一個RoI而言,須要從共享卷積層上摘取對應的特徵,而且送入全鏈接層進行分類。所以,RoI Pooling主要作了兩件事,第一件是爲每一個RoI選取對應的特徵,第二件事是爲了知足全鏈接層的輸入需求,將每一個RoI對應的特徵的維度轉化成某個定值。例如將feature maps按水平和豎直方向六等分,再用最大池化轉換,獲得寬高爲6x6。
二、分類與邊框修正
將每一個ROI輸入進行分類及邊框修正。分類這時要識別具體物體了,共分爲C+1類(算上背景)。訓練邊框修正,一樣使用SmoothL1loss損失函數,整體損失函數以下,其中r取1:
5、參考:
實例分割模型Mask R-CNN詳解:從R-CNN,Fast R-CNN,Faster R-CNN再到Mask R-CNN - jiongnima的博客 - CSDN博客 http://www.javashuo.com/article/p-wfvgjziv-eh.html