Faster R-CNN ~ FPN ~ RetinaNet ~ Mask R-CNN ~ LightHead

Faster R-CNN (來源:https://zhuanlan.zhihu.com/p/31426458 )

Faster RCNN其實可以分爲4個主要內容:

  1. Conv layers。作爲一種CNN網絡目標檢測方法,Faster RCNN首先使用一組基礎的conv+relu+pooling層提取image的feature maps。該feature maps被共享用於後續RPN層和全連接層。
  2. Region Proposal Networks。RPN網絡用於生成region proposals。該層通過softmax判斷anchors屬於positive或者negative,再利用bounding box regression修正anchors獲得精確的proposals。
  3. Roi Pooling。該層收集輸入的feature maps和proposals,綜合這些信息後提取proposal feature maps,送入後續全連接層判定目標類別。
  4. Classification。利用proposal feature maps計算proposal的類別,同時再次bounding box regression獲得檢測框最終的精確位置。
    在這裏插入圖片描述

在這裏插入圖片描述
(1) conv layers
在Faster RCNN Conv layers中對所有的卷積都做了擴邊處理( pad=1,即填充一圈0),導致原圖變爲 (M+2)x(N+2)大小,再做3x3卷積後輸出MxN 。正是這種設置,導致Conv layers中的conv層不改變輸入和輸出矩陣大小。
Conv layers中的pooling層kernel_size=2,stride=2。這樣每個經過pooling層的MxN矩陣,都會變爲(M/2)x(N/2)大小。
綜上所述,在整個Conv layers中,conv和relu層不改變輸入輸出大小,只有pooling層使輸出長寬都變爲輸入的1/2。
那麼,一個MxN大小的矩陣經過Conv layers固定變爲(M/16)x(N/16)!這樣Conv layers生成的feature map中都可以和原圖對應起來。
(2) RPN
在這裏插入圖片描述
可以看到RPN網絡實際分爲2條線,上面一條通過softmax分類anchors獲得positive和negative分類,下面一條用於計算對於anchors的bounding box regression偏移量,以獲得精確的proposal。而最後的Proposal層則負責綜合positive anchors和對應bounding box regression偏移量獲取proposals,同時剔除太小和超出邊界的proposals。其實整個網絡到了Proposal Layer這裏,就完成了相當於目標定位的功能。

(3) RoI Pooling
RoI Pooling layer forward過程:
由於proposal是對應MXN尺度的,所以首先使用spatial_scale參數將其映射回(M/16)X(N/16)大小的feature map尺度;
再將每個proposal對應的feature map區域水平分爲 [公式] 的網格;
對網格的每一份都進行max pooling處理。
這樣處理後,即使大小不同的proposal輸出結果都是 [公式] 固定大小,實現了固定長度輸出。
(4) Classification

  1. 通過全連接和softmax對proposals進行分類,這實際上已經是識別的範疇了
  2. 再次對proposals進行bounding box regression,獲取更高精度的rect box

FPN (來源:https://blog.csdn.net/u014380165/article/details/72890275 )

在這裏插入圖片描述
自底向上其實就是網絡的前向過程。在前向過程中,feature map的大小在經過某些層後會改變,而在經過其他一些層的時候不會改變,作者將不改變feature map大小的層歸爲一個stage,因此每次抽取的特徵都是每個stage的最後一個層輸出,這樣就能構成特徵金字塔。
自頂向下的過程採用上採樣(upsampling)進行,而橫向連接則是將上採樣的結果和自底向上生成的相同大小的feature map進行融合(merge)。在融合之後還會再採用3*3的卷積覈對每個融合結果進行卷積,目的是消除上採樣的混疊效應(aliasing effect)。並假設生成的feature map結果是P2,P3,P4,P5,和原來自底向上的卷積結果C2,C3,C4,C5一一對應。

作者:AI之路
來源:CSDN
原文:https://blog.csdn.net/u014380165/article/details/72890275
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

將FPN應用於Faster RCNN(RPN + Fast RCNN)
(來源:https://blog.csdn.net/u012426298/article/details/81516213 )
RPN是Faster R-CNN中用於區域選擇的子網絡,RPN是在一個13 * 13 * 256的特徵圖上應用9種不同尺度的anchor,本篇論文另闢蹊徑,把特徵圖弄成多尺度的,然後固定每種特徵圖對應的anchor尺寸,很有意思。也就是說,作者在每一個金字塔層級應用了單尺度的anchor,{P2, P3, P4, P5, P6}分別對應的anchor尺度爲{32^2, 64^2, 128^2, 256^2, 512^2 },當然目標不可能都是正方形,本文仍然使用三種比例{1:2, 1:1, 2:1},所以金字塔結構中共有15種anchors。
不同尺度的ROI使用不同特徵層作爲ROI pooling層的輸入,大尺度ROI就用後面一些的金字塔層,比如P5;小尺度ROI就用前面一點的特徵層,比如P4。那怎麼判斷ROI改用那個層的輸出呢?這裏作者定義了一個係數Pk,其定義爲:
在這裏插入圖片描述
224是ImageNet的標準輸入,k0是基準值,設置爲5,代表P5層的輸出(原圖大小就用P5層),w和h是ROI區域的長和寬,假設ROI是112 * 112的大小,那麼k = k0-1 = 5-1 = 4,意味着該ROI應該使用P4的特徵層。k值應該會做取整處理,防止結果不是整數。
然後,因爲作者把conv5也作爲了金字塔結構的一部分,那麼從前全連接層的那個作用怎麼辦呢?這裏採取的方法是增加兩個1024維的輕量級全連接層,然後再跟上分類器和邊框迴歸,認爲這樣還能使速度更快一些。

RetinaNet

Focal Loss中引入的兩個參數 alpha 和 gamma 分別用於抑制正負樣本和難易樣本的不平衡.

Mask R-CNN (來源: https://zhuanlan.zhihu.com/p/37998710 )

mask分支
ROI Align
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章