Faster R-CNN 筆記

概述:

一些基本概念(IOU,NMS)等請看這里。
摘要:算法主要解決兩個問題:

1、提出區(qū)域建議網(wǎng)絡(luò)RPN,快速生成候選區(qū)域;

2、通過交替訓(xùn)練,使RPN和Fast-RCNN網(wǎng)絡(luò)共享參數(shù)。

RPN是Faster R-CNN提出來的,是為了進(jìn)行最后的box預(yù)測的預(yù)先粗選框架。

在虛線之上是基礎(chǔ)網(wǎng)絡(luò)類似VGG16,ZF網(wǎng)絡(luò)。這里的target是背景。
首先是3x3的卷積(圖中有256個輸出),然后通過1x1卷積輸出分為兩路,其中一路輸出是目標(biāo)和非目標(biāo)的概率,另一路輸出box相關(guān)的四個參數(shù),包括box的中心坐標(biāo)x和y,box寬w和長h。

在這里,對于每一個位置來說,分類層從256維特征中輸出屬于前景和背景的概率;窗口回歸層從256維特征中輸出4個平移縮放參數(shù)。

關(guān)于9種anchor

這是rpn網(wǎng)絡(luò)的核心,對于特征圖中的每個點(diǎn),這里給出9種box框架,論文中基準(zhǔn)窗大小為16,給了(8、16、32)三種倍數(shù)和(0.5、1、2)三種比例,這樣能夠得到一共9種尺度的anchor。如圖:

訓(xùn)練RPN網(wǎng)絡(luò)

RPN網(wǎng)絡(luò)的loss function是對RPN提取的框進(jìn)行訓(xùn)練的,也就是針對box框中,是否有物體,和box坐標(biāo)的粗略回歸。這里的訓(xùn)練,每次針對一張圖片,這里需要給RPN網(wǎng)絡(luò)中預(yù)測box框進(jìn)行標(biāo)記。怎么標(biāo)記:
論文中采用了這樣的規(guī)則:

  • 1)假如某anchor與任一目標(biāo)區(qū)域的IoU最大,則該anchor判定為有目標(biāo);
  • 2)假如某anchor與任一目標(biāo)區(qū)域的IoU>0.7,則判定為有目標(biāo);
  • 3)假如某anchor與任一目標(biāo)區(qū)域的IoU<0.3,則判定為背景。所謂IoU,就是預(yù)測box和真實(shí)box的覆蓋率,其值等于兩個box的交集除以兩個box的并集。其它的anchor不參與訓(xùn)練(跨越圖像邊界的anchor棄去不用,跨越圖像邊界的anchor棄去不用)。
    于是,代價函數(shù)定義為:

bbox回歸只對包含目標(biāo)的anchor計算誤差,如果anchor不包含目標(biāo),box輸出位置無所謂。所以對于bbox的ground truth,只考慮判定為有目標(biāo)的anchor,并將其標(biāo)注的坐標(biāo)作為ground truth。此外,計算bbox誤差時,不是比較四個角的坐標(biāo),而是tx,ty,tw,th,具體計算如下:

作者采用四步訓(xùn)練法:

1) 單獨(dú)訓(xùn)練RPN網(wǎng)絡(luò),網(wǎng)絡(luò)參數(shù)由預(yù)訓(xùn)練模型載入;

2) 單獨(dú)訓(xùn)練Fast-RCNN網(wǎng)絡(luò),將第一步RPN的輸出候選區(qū)域作為檢測網(wǎng)絡(luò)的輸入。具體而言,RPN輸出一個候選框,通過候選框截取原圖像,并將截取后的圖像通過幾次conv-pool,然后再通過roi-pooling和fc再輸出兩條支路,一條是目標(biāo)分類softmax,另一條是bbox回歸。截止到現(xiàn)在,兩個網(wǎng)絡(luò)并沒有共享參數(shù),只是分開訓(xùn)練了;

3) 再次訓(xùn)練RPN,此時固定網(wǎng)絡(luò)公共部分的參數(shù),只更新RPN獨(dú)有部分的參數(shù);

4) 那RPN的結(jié)果再次微調(diào)Fast-RCNN網(wǎng)絡(luò),固定網(wǎng)絡(luò)公共部分的參數(shù),只更新Fast-RCNN獨(dú)有部分的參數(shù)。

5 ) 實(shí)現(xiàn)細(xì)節(jié),比如RPN網(wǎng)絡(luò)得到的大約2萬個anchor不是都直接給Fast-RCNN,因?yàn)橛泻芏嘀丿B的框。文章通過非極大值抑制的方法,設(shè)定IoU為0.7的閾值,即僅保留覆蓋率不超過0.7的局部最大分?jǐn)?shù)的box(粗篩)。最后留下大約2000個anchor,然后再取前N個box(比如300個)給Fast-RCNN。Fast-RCNN將輸出300個判定類別及其box,對類別分?jǐn)?shù)采用閾值為0.3的非極大值抑制(精篩),并僅取分?jǐn)?shù)大于某個分?jǐn)?shù)的目標(biāo)結(jié)果(比如,只取分?jǐn)?shù)60分以上的結(jié)果)。

如下圖所示這是訓(xùn)練RPN網(wǎng)絡(luò):

roi_pool層

roi_pool層是最接近全連接層的一個特征圖。這要作用就是把RPN網(wǎng)絡(luò)推薦的區(qū)域進(jìn)行池化,reshape到一個固定的尺寸。

roi_pool層將每個候選區(qū)域均勻分成M×N塊,對每塊進(jìn)行max pooling。將特征圖上大小不一的候選區(qū)域轉(zhuǎn)變?yōu)榇笮〗y(tǒng)一的數(shù)據(jù),送入下一層。

整體的流程:
來自Faster RCNN論文解讀

參考:
Faster-RCNN算法精讀

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容