1. 程式人生 > 其它 >Faster R-CNN小結

Faster R-CNN小結

1. 從Fast R-CNN到Fast R-CNN

 

由圖可見,Faster-RCNN引入了RPN網路(region proposal network)來代替selective-search,

這使得整個網路實現了端到端,即在統一的架構處理所有問題。這也是比Fast更快的原因,避免了selective-search的過程,而全替換為CNN網路。

2. 細節

  很多相似的步驟在上一節Fast R-CNN敘述過,這節主要了解一下它的RPN的步驟和在後面它做分類與迴歸是怎麼迴歸邊框的。

  下面是整個流程圖。

 

 

 

  2.1 Backbone

      也就是經過Backbone得到Feature Map的網路,其中Backbone有很多可以選擇,比如Resnet,VGG等等,這裡圖中給的是VGG16。

      輸出是1 * 256 * 38 * 50的大小

 

  2.2 FPN

    

      它的目的就是為了生成region proposal,

      首先,它通過3 * 3卷積,這裡這個3 * 3卷積相當於是一個承接上面步驟的一個操作,可有可無,

      其次,分兩條支路,上面一條做分類,下面一條做迴歸。

        先說上面這條,它先通過1 * 1卷積,改變特徵的通道數變為 1 * 18 * 38 * 50,為什麼這裡是18,可理解為2 * 9 ,把每個特徵點映射回映射回原圖的感受野的中心點當成一個基準點,然後圍繞這個基準點選取k個不同scale、aspect ratio的anchor。論文中3個scale(三種面積),3個aspect ratio( {1:1,1:2,2:1} ),在這一步它產生anchor,每個特徵畫素點要產生9種不同的anchor,然後每個anchor分類為0或者1,故為2,所以將生成2 * 9 * 38 * 50 = 17100 anchors。然後經過reshape,這裡因為要方便softmax做迴歸,所及將它reshape成2通道的(38 * 9) * 50,可以理解為它本來是橫著放的形狀,通過reshape,將它豎著放,便於分類。然後第二個reshape再單純地將它變回去1 * 18 * 38 * 50。

 

        再說下面這條迴歸,它也是先通過1 * 1卷積,改變特徵的通道數變為 1 * 36 * 38 * 50,這裡為什麼是36呢, 可理解為4 * 9, 9是9個anchor,4則是4個targets,分別對應proposal的中點座標和它的寬高即(x,y,w,h)。但這裡它迴歸的並不是(x,y,w,h),而是它的偏移量Δx和Δy,為什麼呢,因為不均衡,假如迴歸x和y的話,有一個大物體,預測與目標之間相距30pixel, 而小物體可能只差5 pixel,因此損失會比較偏向於大物體。

        具體迴歸方法:

         

          解釋一下,粉色圈起來的是網路生成的偏移量,即predict box 對anchor的偏移,灰色的是我們自己算的偏移量,即ground truth 對anchor的偏移,稱為Encode,而學習目標自然就是讓前者接近後者的值。藍色的圈則是我們想要的稱為Decode。

    2.3 ROI Pooling &分類與迴歸

        與上一節Fast R-CNN相似,就不贅述了。

 

3. 總結

   對比Fast R-CNN,Faster現在增加的RPN網路可以與其他3個階段共用同一個特徵提取結果了,省掉了selective-search的時間。

 

 

 

 

參考目錄:

      RCNN系列———LogM’s Blog

      Faster R-CNN———大熊的機器夢的文章