Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks論文理解


一、創新點和解決的問題

創新點

設計Region Proposal Networks【RPN】,利用CNN卷積操作后的特征圖生成region proposals,代替了Selective Search、EdgeBoxes等方法,速度上提升明顯;

訓練Region Proposal Networks與檢測網絡【Fast R-CNN】共享卷積層,大幅提高網絡的檢測速度。

解決的問題

繼Fast R-CNN后,在CPU上實現的區域建議算法Selective Search【2s/image】、EdgeBoxes【0.2s/image】等成了物體檢測速度提升上的最大瓶頸。

 

二、整體框架

我們先整體的介紹下上圖中各層主要的功能:

1)、Conv layers提取特征圖:

作為一種CNN網絡目標檢測方法,Faster RCNN首先使用一組基礎的conv+relu+pooling層提取input image的feature maps,該feature maps會用於后續的RPN層和全連接層

2)、RPN(Region Proposal Networks):

    RPN網絡主要用於生成region proposals,首先生成一堆Anchor box,對其進行裁剪過濾后通過softmax判斷anchors屬於前景(foreground)或者后景(background),即是物體or不是物體,所以這是一個二分類;同時,另一分支bounding box regression修正anchor box,形成較精確的proposal(注:這里的較精確是相對於后面全連接層的再一次box regression而言)

3)、Roi Pooling:

該層利用RPN生成的proposals和VGG16最后一層得到的feature map,得到固定大小的proposal feature map,進入到后面可利用全連接操作來進行目標識別和定位

4)、Classifier:

會將Roi Pooling層形成固定大小的feature map進行全連接操作,利用Softmax進行具體類別的分類,同時,利用L1 Loss完成bounding box regression回歸操作獲得物體的精確位置.

 

三、網絡結構

 

現在,通過上圖開始逐層分析

1)Conv layers

Faster RCNN首先是支持輸入任意大小的圖片的,比如上圖中輸入的P*Q,進入網絡之前對圖片進行了規整化尺度的設定,如可設定圖像短邊不超過600,圖像長邊不超過1000,我們可以假定M*N=1000*600(如果圖片少於該尺寸,可以邊緣補0,即圖像會有黑色邊緣)

①   13個conv層:kernel_size=3,pad=1,stride=1;

卷積公式:

所以,conv層不會改變圖片大小(即:輸入的圖片大小=輸出的圖片大小)

②   13個relu層:激活函數,不改變圖片大小

③   4個pooling層:kernel_size=2,stride=2;pooling層會讓輸出圖片是輸入圖片的1/2

       經過Conv layers,圖片大小變成(M/16)*(N/16),即:60*40(1000/16≈60,600/16≈40);則,Feature Map就是60*40*512-d(注:VGG16是512-d,ZF是256-d),表示特征圖的大小為60*40,數量為512

 

2)RPN(Region Proposal Networks):

為了進一步更清楚的看懂RPN的工作原理,將Caffe版本下的網絡圖貼出來,對照網絡圖進行講解會更清楚

 

(2.1) rpn_cls、 rpn_bbox

Feature Map進入RPN后,先經過一次3*3的卷積,同樣,特征圖大小依然是60*40,數量512,這樣做的目的應該是進一步集中特征信息,接着看到兩個全卷積,即kernel_size=1*1,p=0,stride=1;

 

如上圖中標識:

①   rpn_cls:60*40*512-d ⊕  1*1*512*18 ==> 60*40*9*2 

         逐像素對其9個Anchor box進行二分類

②   rpn_bbox:60*40*512-d ⊕  1*1*512*36==>60*40*9*4

          逐像素得到其9個Anchor box四個坐標信息(其實是偏移量,后面介紹)

  如下圖所示:

  

 (2.2)、Anchors的生成規則

      前面提到經過Conv layers后,圖片大小變成了原來的1/16,令feat_stride=16,在生成Anchors時,我們先定義一個base_anchor,大小為16*16的box(因為特征圖(60*40)上的一個點,可以對應到原圖(1000*600)上一個16*16大小的區域),源碼中轉化為[0,0,15,15]的數組,參數ratios=[0.5, 1, 2]scales=[8, 16, 32]

   先看[0,0,15,15],面積保持不變,長、寬比分別為[0.5, 1, 2]是產生的Anchors box

 

如果經過scales變化,即長、寬分別均為 (16*8=128)、(16*16=256)、(16*32=512),對應anchor box如圖

 

綜合以上兩種變換,最后生成9個Anchor box

特征圖大小為60*40,所以會一共生成60*40*9=21600個Anchor box

源碼中,通過width:(0~60)*16,height(0~40)*16建立shift偏移量數組,再和base_ancho基准坐標數組累加,得到特征圖上所有像素對應的Anchors的坐標值,是一個[216000,4]的數組

(2.3)rpn-data

這一層主要是為特征圖60*40上的每個像素生成9個Anchor box,並且對生成的Anchor box進行過濾和標記,參照源碼,過濾和標記規則如下:

①    去除掉超過1000*600這原圖的邊界的anchor box

②    如果anchor box與ground truth的IoU值最大,標記為正樣本,label=1

③    如果anchor box與ground truth的IoU>0.7,標記為正樣本,label=1

④    如果anchor box與ground truth的IoU<0.3,標記為負樣本,label=0

     剩下的既不是正樣本也不是負樣本,不用於最終訓練,label=-1

 

除了對anchor box進行標記外,另一件事情就是計算anchor box與ground truth之間的偏移量

   令:ground truth:標定的框也對應一個中心點位置坐標x*,y*和寬高w*,h*

    anchor box: 中心點位置坐標x_a,y_a和寬高w_a,h_a

    所以,偏移量:

    △x=(x*-x_a)/w_a   △y=(y*-y_a)/h_a 

   △w=log(w*/w_a)   △h=log(h*/h_a)

通過ground truth box與預測的anchor box之間的差異來進行學習,從而是RPN網絡中的權重能夠學習到預測box的能力

(2.4)rpn_loss_clsrpn_loss_bboxrpn_cls_prob

rpn_loss_cls’、‘rpn_loss_bbox’是分別對應softmax,smooth L1計算損失函數,‘rpn_cls_prob’計算概率值(可用於下一層的nms非最大值抑制操作)

(2.5)proposal

源碼中,會重新生成60*40*9個anchor box,然后累加上訓練好的△x, △y, △w, △h,從而得到了相較於之前更加准確的預測框region proposal,進一步對預測框進行越界剔除和使用nms非最大值抑制,剔除掉重疊的框;比如,設定IoU為0.7的閾值,即僅保留覆蓋率不超過0.7的局部最大分數的box(粗篩)。最后留下大約2000個anchor,然后再取前N個box(比如300個);這樣,進入到下一層ROI Pooling時region proposal大約只有300個

 

(2.6)roi_data

為了避免定義上的誤解,我們將經過‘proposal’后的預測框稱為region proposal(其實,RPN層的任務其實已經完成,roi_data屬於為下一層准備數據)

主要作用:

①       RPN層只是來確定region proposal是否是物體(是/否),這里根據region proposal和ground truth box的最大重疊指定具體的標簽(就不再是二分類問題了,參數中指定的是81類)

②       計算region proposal與ground truth boxes的偏移量,計算方法和之前的偏移量計算公式相同

經過這一步后的數據輸入到ROI Pooling層進行進一步的分類和定位.

 

剩下的就是Fast R-CNN了。

 

參考:

https://www.cnblogs.com/wangyong/p/8513563.html

https://blog.csdn.net/WoPawn/article/details/52223282


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM