论文阅读 R-FCN: Object Detection via Region-based Fully Convolutional Networks
生活随笔
收集整理的這篇文章主要介紹了
论文阅读 R-FCN: Object Detection via Region-based Fully Convolutional Networks
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
本文轉(zhuǎn)載自:
http://www.cnblogs.com/lillylin/p/6277094.html
R-FCN論文閱讀(R-FCN: Object Detection via?Region-based Fully Convolutional Networks?)
?
目錄
- 作者及相關(guān)鏈接
- 方法概括
- 方法細(xì)節(jié)
- 實(shí)驗(yàn)結(jié)果
- 總結(jié)
- 參考文獻(xiàn)
?
?
作者及相關(guān)鏈接
- 作者:
- 作者鏈接:代季峰,何愷明,孫劍
- 論文鏈接:論文傳送門
- 代碼鏈接:matlab版,python版
方法概括
-
R-FCN解決問題——目標(biāo)檢測(cè)
-
整個(gè)R-FCN的結(jié)構(gòu)
- 一個(gè)base的conv網(wǎng)絡(luò)如ResNet101, 一個(gè)RPN(Faster RCNN來的),一個(gè)position sensitive的prediction層,最后的ROI pooling+投票的決策層
-
R-FCN的idea出發(fā)點(diǎn)(關(guān)鍵思想)
- 分類需要特征具有平移不變性,檢測(cè)則要求對(duì)目標(biāo)的平移做出準(zhǔn)確響應(yīng)。現(xiàn)在的大部分CNN在分類上可以做的很好,但用在檢測(cè)上效果不佳。SPP,Faster R-CNN類的方法在ROI pooling前都是卷積,是具備平移不變性的,但一旦插入ROI pooling之后,后面的網(wǎng)絡(luò)結(jié)構(gòu)就不再具備平移不變性了。因此,本文想提出來的position sensitive score map這個(gè)概念是能把目標(biāo)的位置信息融合進(jìn)ROI pooling。
-
- 對(duì)于region-based的檢測(cè)方法,以Faster R-CNN為例,實(shí)際上是分成了幾個(gè)subnetwork,第一個(gè)用來在整張圖上做比較耗時(shí)的conv,這些操作與region無關(guān),是計(jì)算共享的。第二個(gè)subnetwork是用來產(chǎn)生候選的boundingbox(如RPN),第三個(gè)subnetwork用來分類或進(jìn)一步對(duì)box進(jìn)行regression(如Fast RCNN),這個(gè)subnetwork和region是有關(guān)系的,必須每個(gè)region單獨(dú)跑網(wǎng)絡(luò),銜接在這個(gè)subnetwork和前兩個(gè)subnetwork中間的就是ROI pooling。我們希望的是,耗時(shí)的卷積都盡量移到前面共享的subnetwork上。因此,和Faster RCNN中用的ResNet(前91層共享,插入ROI pooling,后10層不共享)策略不同,本文把所有的101層都放在了前面共享的subnetwork。最后用來prediction的卷積只有1層,大大減少了計(jì)算量。
方法細(xì)節(jié)
- Backbone architecture:?ResNet 101——去掉原始ResNet101的最后一層全連接層,保留前100層,再接一個(gè)1*1*1024的全卷積層(100層輸出是2048,為了降維,再引入了一個(gè)1*1的卷積層)。
- k^2(C+1)的conv:?ResNet101的輸出是W*H*1024,用K^2(C+1)個(gè)1024*1*1的卷積核去卷積即可得到K^2(C+1)個(gè)大小為W*H的position sensitive的score map。這步的卷積操作就是在做prediction。k = 3,表示把一個(gè)ROI劃分成3*3,對(duì)應(yīng)的9個(gè)位置分別是:上左(左上角),上中,上右,中左,中中,中右,下左,下中,下右(右下角),如圖Figuire 3。
- k^2(C+1)個(gè)feature map的物理意義:?共有k*k = 9個(gè)顏色,每個(gè)顏色的立體塊(W*H*(C+1))表示的是不同位置存在目標(biāo)的概率值(第一塊黃色表示的是左上角位置,最后一塊淡藍(lán)色表示的是右下角位置)。共有k^2*(C+1)個(gè)feature map。每個(gè)feature map,z(i,j,c)是第i+k(j-1)個(gè)立體塊上的第c個(gè)map(1<= i,j <=3)。(i,j)決定了9種位置的某一種位置,假設(shè)為左上角位置(i=j=1),c決定了哪一類,假設(shè)為person類。在z(i,j,c)這個(gè)feature map上的某一個(gè)像素的位置是(x,y),像素值是value,則value表示的是原圖對(duì)應(yīng)的(x,y)這個(gè)位置上可能是人(c=‘person’)且是人的左上部位(i=j=1)的概率值。
?
- ROI pooling:?就是faster RCNN中的ROI pooling,也就是一層的SPP結(jié)構(gòu)。主要用來將不同大小的ROI對(duì)應(yīng)的feature map映射成同樣維度的特征,思路是不論對(duì)多大的ROI,規(guī)定在上面畫一個(gè)n*n 個(gè)bin的網(wǎng)格,每個(gè)網(wǎng)格里的所有像素值做一個(gè)pooling(平均),這樣不論圖像多大,pooling后的ROI特征維度都是n*n。注意一點(diǎn)ROI pooling是每個(gè)feature map單獨(dú)做,不是多個(gè)channel一起的。
?
- ROI pooling的輸入和輸出:ROI pooling操作的輸入(對(duì)于C+1個(gè)類)是k^2*(C+1)*W' *H'(W'和H'是ROI的寬度和高度)的score map上某ROI對(duì)應(yīng)的那個(gè)立體塊,且該立體塊組成一個(gè)新的k^2*(C+1)*W' *H'的立體塊:每個(gè)顏色的立體塊(C+1)都只摳出對(duì)應(yīng)位置的一個(gè)bin,把這k*k個(gè)bin組成新的立體塊,大小為(C+1)*W'*H'。例如,下圖中的第一塊黃色只取左上角的bin,最后一塊淡藍(lán)色只取右下角的bin。所有的bin重新組合后就變成了類似右圖的那個(gè)薄的立體塊(圖中的這個(gè)是池化后的輸出,即每個(gè)面上的每個(gè)bin上已經(jīng)是一個(gè)像素。池化前這個(gè)bin對(duì)應(yīng)的是一個(gè)區(qū)域,是多個(gè)像素)。ROI pooling的輸出為為一個(gè)(C+1)*k*k的立體塊,如下圖中的右圖。更詳細(xì)的有關(guān)ROI pooling的操作如公式(1)所示:
????
??
? ? ? ? ? ? ? ? ? ? ? ? ??
?
?
- vote投票:k*k個(gè)bin直接進(jìn)行求和(每個(gè)類單獨(dú)做)得到每一類的score,并進(jìn)行softmax得到每類的最終得分,并用于計(jì)算損失
- 損失函數(shù):和faster RCNN類似,由分類loss和回歸loss組成,分類用交叉熵?fù)p失(log loss),回歸用L1-smooth損失
- 訓(xùn)練的樣本選擇策略:online hard example mining (OHEM,參考文獻(xiàn)1) 。主要思想就是對(duì)樣本按loss進(jìn)行排序,選擇前面loss較小的,這個(gè)策略主要用來對(duì)負(fù)樣本進(jìn)行篩選,使得正負(fù)樣本更加平衡。
- 訓(xùn)練細(xì)節(jié):
- decay = 0.0005
- momentum = 0.9
- single-scale training:?images are resized such that the scale (shorter side of image) is 600 pixels [6, 18].
- 8 GPUs (so the effective?mini-batch size is?8×),?each GPU holds 1?image and selects?B?= 128?RoIs for backprop.
- fine-tune learning rate = 0.001 for 20k mini-batches, ?0.0001 for 10k mini-batches on VOC.
- the 4-step alternating training?between training RPN and training R-FCN.(類似于Faster RCNN)
- 使用atrous(hole算法)
實(shí)驗(yàn)結(jié)果
-
VOC2007和VOC2010上與Faster R-CNN的對(duì)比:R-FCN比Faster RCNN好!
-
深度影響對(duì)比:101深度最好!
-
候選區(qū)域選擇算法對(duì)比:RPN比SS,EB好!
?
?
-
COCO庫上與Faster R-CNN的對(duì)比:R-FCN比Faster RCNN好!
-
效果示例:
總結(jié)
- R-FCN是在Faster R-CNN的框架上進(jìn)行改造,第一,把base的VGG16換車了ResNet,第二,把Fast R-CNN換成了先用卷積做prediction,再進(jìn)行ROI pooling。由于ROI pooling會(huì)丟失位置信息,故在pooling前加入位置信息,即指定不同score map是負(fù)責(zé)檢測(cè)目標(biāo)的不同位置。pooling后把不同位置得到的score map進(jìn)行組合就能復(fù)現(xiàn)原來的位置信息。
?
參考文獻(xiàn)
總結(jié)
以上是生活随笔為你收集整理的论文阅读 R-FCN: Object Detection via Region-based Fully Convolutional Networks的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SSD论文阅读(Wei Liu——【EC
- 下一篇: R-FCN+ResNet-50 训练模型