R-FCN理解

RFCN的貢獻

  • 提出Position-sensitive score maps來解決目標檢測的位置敏感性問題;
  • 區域爲基礎的,全卷積網絡的二階段目標檢測框架;
  • 比Faster-RCNN快2.5-20倍(在K40GPU上面使用ResNet-101網絡可以達到 0.17 sec/image

faster-rcnn的問題

      base network用於做特徵的提取,生成對應的feature maps,利用rpn全卷積神經網絡提取對應的RP位置,在feature maps上得到我們最後可用的ROIs,再用這些ROIs做分類和迴歸。第一部分用於生產feature maps的network是可以共享計算的,而第二部分的ROI-wise subnetwork是不能共享計算,這個使得檢測速度變慢。

    其根本原因是分類不要具有平移不變性(translation-invariance)而檢測需要平移可變性(translation-variance)。意思是一張圖片不管物體的位置,顏色,紋理怎麼發生發生變化,我們都能識別這個物體時某一類別,這就是平移不變性,可變性是指檢測需要指出物體的位置,物體的位置發生改變時,其檢測座標也要隨之改變。

對此,r-fcn提出Position-sensitive score maps來解決這個問題。

Faster -RCNN

   Faster R-CNN系列的網絡都可以分成2個部分:ROI Pooling之前的共享全卷積網絡和ROI Pooling之後的ROI-wise子網絡(用來對每個ROI進行特徵提出,並進行迴歸和分類)。第1部分就是直接用普通分類網絡的卷積層,用來提取共享特徵,然後利用ROI Pooling在最後一層網絡形成的feature map上面提取針對各個RoIs的特徵向量,然後將所有RoIs的特徵向量都交給第2部分來處理(即所謂的分類和迴歸),而第二部分一般都是一些全連接層,在最後有2個並行的loss函數:softmax和smoothL1,分別用來對每一個RoI進行分類和迴歸,這樣就可以得到每個RoI的真實類別和較爲精確的座標信息啦(x, y, w, h)

 

RFCN 架構分析

  算法步驟:

     1.輸入圖片,第一部分子網(base network resnet101)進行特徵提取,得到feature maps

     2.在預訓練網絡的最後一個卷積層獲得的feature map上存在3個分支,第1個分支就是在該feature map上面進行RPN操作,獲得相應的ROI;第2個分支就是在該feature map上獲得一個K*K*(C+1)維的位置敏感得分映射(position-sensitive score map),用來進行分類;第3個分支就是在該feature map上獲得一個4*K*K維的位置敏感得分映射,用來進行迴歸

     3.在K*K*(C+1)維的位置敏感得分映射和4*K*K維的位置敏感得分映射上面分別執行位置敏感的ROI池化操作(Position-Sensitive Rol Pooling,這裏使用的是平均池化操作),獲得對應的類別和位置信息。

position-sensitive score map

 

    

    如果一個RoI含有一個類別c的物體,那麼作者將該RoI劃分爲 k\times k 個區域,分別表示該物體的各個部位,比如假設該RoI中含有人這個物體,k=3,那麼就將“人”劃分爲了9個子區域,top-center區域毫無疑問應該是人的頭部,而bottom-center應該是人的腳部,而將RoI劃分爲 k\times k 個區域是希望這個RoI在其中的每一個區域都應該含有該類別c的物體的各個部位,即如果是人,那麼RoI的top-center區域就必須含有人的頭部。而當這所有子區域都含有各自對應的該物體的相應部位後,那麼分類器纔會將該RoI判斷爲該類別。物體的各個部位和RoI的這些子區域是“一一映射”的對應關係。

 網絡如何判斷roi子區域是否含有物體的對應區域呢

 最後生成的(c+1)*k*k的矩陣,進行average pooling得到該roi屬於c+1個類別的概率再做softmax得到最可能的類別

 Position-Sensitive Regression

前面的position-sensitive score map和Position-sensitive RoI pooling得到的值是用來分類的,那麼自然需要相應的操作得到對應的值來進行迴歸操作。按照position-sensitive score map和Position-sensitive RoI pooling思路,其會讓每一個RoI得到(C+1)個數作爲每個類別的score,那麼現在每個RoI還需要 4個數作爲迴歸偏移量,也就是x,y,w,h的偏移量,所以仿照分類設計的思想,我們還需要一個類似於position-sensitive score map的用於迴歸的score map。

在ResNet的共享卷積層的最後一層上面連接一個與position-sensitive score map並行的score maps,該score maps用來進行regression操作,我們將其命名爲regression score map,而該regression score map的維度應當是 4*K*K ,然後經過Position-sensitive RoI pooling操作後,每一個RoI就能得到4個值作爲該RoI的x,y,w,h的偏移量了,其思路和分類完全相同。

網絡訓練

 爲什麼position-sensitive score map能夠具有“在含有某個類別的物體的某個部位的區域上有高響應值”(網絡訓練要求達到的效果)

首先根據網絡的loss公式,如果一個RoI含有人這個物體,那麼該RoI通過“position-sensitive score map”+“Position-sensitive RoI pooling”得到的 C+1 個值中的屬於人的那個值必然會在softmax損失函數的要求下“變得儘量的大”,那麼如何才能使得屬於人的這個值儘量的大呢?那麼我們現在就要想到,屬於人的這個預測值是怎麼來的?在前面的分析,我們已經知道它是通過Position-sensitive RoI pooling這種池化操作的來的,那麼也就是說使得 C+1 個值中屬於人的那個值儘量大,必然會使得position-sensitive score map中屬於人的那個score map上的“該RoI對應的位置區域的平均值”儘量大,從而也就是該score map上在該區域上的響應值儘量大,因爲只有該區域的響應值大了,才能使得預測爲人的概率大,纔會降低softmax的loss。

  損失函數:

   

    對於任意一個RoI,計算它的softmax損失,和“當其不屬於背景時的迴歸損失”。這很簡單,因爲每個RoI都被指定屬於某一個GT box或者屬於背景,即先讓GT box選擇與其IoU最大的那個RoI,然後再對剩餘RoI選擇與GT box的IoU>0.5的進行匹配,而剩下的RoI全部爲背景類別。那麼RoI有了label後,loss自然很容易計算出來。

 

在測試的時候,爲了減少RoIs的數量,作者在RPN提取階段就將RPN提取的大約2W個proposals進行過濾:

  1. 去除超過圖像邊界的proposals
  2. 使用基於類別概率且閾值IoU=0.7的NMS過濾
  3. 按照類別概率選擇top-N個proposals

所以在測試的時候,一般只剩下300個RoIs,當然這個數量是一個超參數。並且在R-FCN的輸出300個預測框之後,仍然要對其使用NMS去除冗餘的預測框。

ROI是如何映射到feature map的(第四個參考)

RoI的座標應該相對於原始image的真實座標,而Position-sensitive RoI pooling的池化操作卻是利用RoI在position-sensitive score map上完成的,那麼現在就必須有一個映射關係將輸入image上的RoI映射到position-sensitive score map上。

ROI Pooling :

 ROI pooling操作的輸入(對於C+1個類)是k^2*(C+1)*W' *H'(W'和H'是ROI的寬度和高度)的score map上某ROI對應的那個立體塊,且該立體塊組成一個新的k^2*(C+1)*W' *H'的立體塊:每個顏色的立體塊(C+1)都只摳出對應位置的一個bin,把這k*k個bin組成新的立體塊,大小爲(C+1)*W'*H'。例如,下圖中的第一塊黃色只取左上角的bin,最後一塊淡藍色只取右下角的bin。所有的bin重新組合後就變成了類似右圖的那個薄的立體塊(圖中的這個是池化後的輸出,即每個面上的每個bin上已經是一個像素。池化前這個bin對應的是一個區域,是多個像素)。ROI pooling的輸出爲爲一個(C+1)*k*k的立體塊。

  

參考:

  https://www.jianshu.com/p/409fd61db9db

 https://blog.csdn.net/WZZ18191171661/article/details/79481135

 https://zhuanlan.zhihu.com/p/30867916
 https://zhuanlan.zhihu.com/p/24780433

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