【RCNN系列】Fast RCNN目標檢測模型

    上篇文章闡述了SPPNet網絡模型,本篇文章詳細闡述Fast RCNN目標檢測模型。把Fast RCNN放在SPPNet之後不僅是遵循時間上前後順序,更因爲Fast RCNN也借鑑了SPPNet上面的一些技巧。

    Fast RCNN論文:https://arxiv.org/abs/1406.4729

    Fast RCNN論文翻譯:https://alvinzhu.xyz/2017/10/10/fast-r-cnn/

一、概述

    Fast RCNN (Fast Regions with CNN features)一種快速的基於區域的卷積網絡方法,用於目標檢測。該模型是在RCNN模型的基礎進行了優化,訓練時間快9倍,測試時間快213倍,相對於SPPNet訓練快3倍,測試快10倍。準確率方面mAP爲66%,RCNN爲62%(RCNN更換了特徵網絡結構,準確率較之Alexnet(53.3%)準確率提升了)。

【與圖像分類相比,目標檢測是一個更具挑戰的任務,需要更復雜的方法來解決。複雜性的產生是因爲檢測需要目標的精確定位,這就導致了兩個難點,首先必須處理大量的候選框目標位置(通常稱爲“提案”),其次相對於生成候選框的粗略定位,目標檢測必須實現精確定位。這兩點問題的解決方案經常會影響速度、準確性或簡單性。】

二、Fast R-CNN網絡模型 

    Fast RCNN物體檢測系統由三個模塊組成:

  • 卷積神經網絡提取特徵,搜索檢測算法提取候選框集合以及特徵映射
  • 區域歸一化(ROI Pooling),得到固定維度的特徵向量
  • Softmax類別概率估計與邊框位置修正迴歸

1、提取特徵、候選框集合、特徵映射 

    Fast RCNN提取特徵的主幹網絡是VGG16(ILSVRC 2014物體分類第二名),13層Conv+3層Fc,激活函數Relu。

       Fast RCNN候選框也是通過Selective Search算法選取的2000個候選框集合,候選框在特徵圖上的映射和SPPNet的模式是一樣的。

2、ROI(Region Of Interest) Pooling

    ROI Pooling的作用也是爲了適用用Fc網絡要求的固定尺寸的輸入特徵向量,功能和SPP-layer的作用一樣。

【ROI Pooling是SPP的一種特殊情況,SPP是採用多個尺度疊加,而ROI Pooling則是直接將特徵圖分成Fc層需要的7*7的網格,然後獲取每個cell裏面最大的那個值,組成7*7*512的特徵向量。】

 

3、Softmax分類和線性迴歸 

【Fast RCNN使用了一個精細的訓練過程,對比R-CNN或者SPPNet分別在三個獨立階段訓練特徵提取、SVM和迴歸器,其在微調階段聯合優化Softmax分類器和檢測框迴歸。Fast R-CNN網絡具有兩個同級輸出層。 第一個輸出在k+1個類別上的離散概率分佈(每個RoI),p=(p0, ...,pk)。 通常,通過全連接層的k+1個輸出上的Softmax來計算p。第二個輸出層輸出檢測框迴歸偏移, t^k = (t_x^k ,t_y^k, t_w^k, t_h^k),通過目標的真實目標框v,來計算t^k指定相對於候選框的尺度不變轉換和對數空間高度/寬度移位。】

【卷積神經網絡分爲前向傳播算法和反向傳播算法,前向傳播主要是評分函數(一系列的特徵向量與權重的積加上偏置,再經過激活函數最終得到的結果),而反向傳播算法主要依據損失函數,損失函數是用來量化評分函數和真實標籤之間的一致性的,越大則說明預測的情況越差】

   下面簡短介紹下SVM和Softmax的loss函數,如下圖前向傳播評分類別1的得分最高,但是正確的類別是2(三個類別按0,1,2)。

   右上角通過Hinge loss來演示SVM的損失計算過程。Hinge loss通常被用於最大間隔算法(maximum-margin),而最大間隔算法又是SVM用到的主要算法。。

 

 【Hinge loss專用於二分類問題。標籤值 y = \pm 1,預測值 y^ ∈ R。該二分類問題的目標函數要求如下:當y^大於等於+1或者小於等於-1時,都是分類器確定的分類結果,此時的損失函數loss爲0;而當預測值y^∈(−1,1)時,分類器對分類結果不確定,loss不爲0。顯然,當y^=0時,loss達到最大值。此處這隻1爲閾值。】

 

    右下角是利用cross-entropy loss來演示Softmax的損失計算過程。

【交叉熵損失函數Cross Entropy Loss】描述了兩個概率分佈之間的距離,當交叉熵越小說明二者之間越接近。儘管交叉熵刻畫的是兩個概率分佈之間的距離,但是神經網絡的輸出卻不一定是一個概率分佈。爲此我們常常用Softmax迴歸將神經網絡前向傳播得到的結果變成概率分佈。

 

 

     對比兩個loss函數,當改變得值不大時,對svm可能沒有影響,此時改變點沒有超過邊界,但是對softmax而言,無論大小的改變,結果都會發生相應的變化。【上面介紹了關於svm和softmax損失函數是爲了下面闡述Fast rcnn的多任務損失做鋪墊】

 Fast RCNN對於每個標記的ROI區域使用多任務聯合分類和檢測框迴歸損失函數L:

這裏是分類和邊框迴歸2個計算損失,後面的Faster RCNN4個計算損失,yolov1的5個計算損失等。

三、創新與挑戰

1、創新(沒有再提可以訓練不同尺度的圖片,因爲這個已成爲後面的標配)

  • 訓練使用多任務損失的單階段訓練,RCNN、SPPNet是多階段訓練;
  • 訓練可以更新所有的網絡參數,RCNN、SPPNet因爲是分階段,後面的loss函數不能更新前面特診提取網絡的參數;
  • 不需要磁盤空間緩存大量的特徵。
  • 截斷SVD加速訓練

2、挑戰

    區域提取成爲影響目標檢測性能的瓶頸,RCNN、SPPNet、Fast RCNN都選用搜索選擇算法產生2000個候選區域集合;

    訓練和測試耗時,0.3秒一張的檢測圖片不能滿足實時的需求。

總結:Fast RCNN將在RCNN和SPPNet上面的分階段訓練這一弊端,轉成多任務單階段的訓練,並且可以更新所有的網絡參數,這個在提高精度的同時,節省了很多預訓練等很多繁瑣的步驟,這個是Fast RCNN相對於以往的目標檢測模型的創新點。總的來說,Fast RCNN在RCNN系列中提供的最大可借鑑的地方可能就是就是多任務但階段訓練,以及softmax loss的引進,而候選區域提取借鑑的RCNN,ROI Pooling借鑑的是SPP。

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