1. 程式人生 > >目標檢測特殊層:RFCN中PSROIPooling層

目標檢測特殊層:RFCN中PSROIPooling層

    RFCN是基於Faster RCNN的工作,base net得到feature maps, 用RPN得到proposals。由於classification需要固定長度的feature vector,就需要ROI pooling layer + fully connected layer來獲得,但是這個過程會去除目標的位置資訊,而這個資訊對於檢測問題,至關重要。所以,RFCN提出position-sensitive score maps來解決這個問題。

position-sensitive ROI pooling layer的輸入是ROI features, 輸出是C+1維的特徵向量。 
以k=7, C=20為例,具體的資料形式如下:

    其實在第二個卷積的時候,它產生的7*7*21個輸出,是不知道具體所謂的位置資訊的,而是後面的position-sensitive roi pooling這一步的特定選取規則,使得對於每一類,這49個maps產生了差異,在訓練的時候,為了使最後的損失函式最小,這49輸出對應的kernel就慢慢地顯現出差異。

    rfcn的核心是延續fastRCNN的思想:對於每一個proposal,所有的卷積操作(費時的操作)都只做一次。fastRCNN提出baseNet,讓proposal從feature map上尋找roi,但是不同的proposal還是得重複進行後面的全連線層;rfcn提出psROIpooling, 讓proposal從bbox map和score map上尋找roi

,從而取消全連線層,這樣不同的proposal做的重複的事情,就只有後面的average pooling。其實,per roi map還是二維的,最後二維變成一維是通過average pooling來實現的。

示例圖如下:


RFCN解決的問題:

1:平移不變性指的是一個物體,不管在圖片的哪個位置,你都能準確的識別出來這個物體。因此在影象分類任務中,平移不變性非常重要。但是在物體檢測中,你識別到了一個物體之後,你需要準確地定位這個物體,這個時候你就需要在意物體在圖片中的位置(IoU)

2 :rcnn證明了cnn提取的特徵的有效性;而spp解決了如何應對不同尺度feature map的問題;fast rcnn通過roi pooling將需要應用到多個候選框上的基CNN模型進行共享,加快了速度並且提升了準確度;

而faster rcnn為了更進一步的共享基CNN,將本來需要由SS演算法提取候選框的任務一併放入基CNN中,從而提出了RPN子網路;

3:減少了全連線層,推薦視窗在位置敏感圖上直接提取特徵,這一點和fasterRCNN一樣,之後得到ROI的特徵,之後做一下全域性的平均,分類;貢獻就是得到了減少的二階段的計算量,提出了位置敏感特徵圖