論文源址:https://arxiv.org/abs/1504.08083

參考部落格:https://blog.csdn.net/shenxiaolu1984/article/details/51036677

摘要

       該文提出了一個快速的基於區域框的卷積網路用於目標檢測任務。Fast RCNN使用深度卷積網路對proposals進行分類。相比先前的工作,Fast R-CNN在提高準確率的基礎上提高了訓練和測試的速度。在VGG19的網路中,Fast R-CNN訓練時間比R-CNN快9倍,而測試要快213倍。相比SPP net ,Fast R-CNN訓練VGG16要快3倍,測試時快10倍。

介紹

       深度卷積網路增強了影象的分類,和物體檢測的準確率。相比影象分類,目標檢測是一項更具挑戰性的工作,需要更加複雜的方法進行解決。由於複雜度,目前的方法採用多階段的方式進行訓練,效率十分低。

       複雜性主要來自於需要對物體位置的精確定位,這就造成了兩個挑戰,首先,大量的proposals需要被處理,其次,proposals只能提供粗略的物體位置,需要對其進行增強得到精細的位置,上述問題的解決需要計算速度,準確率和複雜度。

        該文簡化了基於卷積網路的目標檢測器的訓練處理過程。該文提出了單階段的訓練演算法,將proposals的分類和位置的增強進行聯合訓練。

        R-CNN與SPPnet:R-CNN基於深度卷積網路對proposals進行分類出色的實現了目標檢測,但仍存在一些問題。(1)訓練是多階段的:R-CNN利用proposlas基於log損失對卷積網路進行微調。然後,用卷積網路提取的特徵訓練SVM。最後第三階段,是框迴歸操作。(2)訓練佔用大量的時間和空間:SVM和框迴歸訓練,每一個proposal提取的特徵存入記憶體中。大量的proposals需要佔用大量的記憶體資源。(3)目標檢測的過程十分慢。基於VGG16每張圖要花47S的時間。

       R-CNN由於卷積網路需要處理每個proposal,沒有共享計算,而SPPnet提出通過共享計算來提速R-CNN。SPPnet將整個圖片送入卷積網路得到feature map,然後從feature map提取特徵向量,對每一個proposal進行分類。通過最大池化操作來提取特徵資訊,並將proposal內部的部分feature map進行固定尺寸的輸出。不同池化後的尺寸參考SPPnet進行拼接。SPPnet也存在缺點:與R-CNN相同都是一個多階段的處理過程。也是特徵提取,基於log損失對網路進行微調,訓練SVM,最後對框進行迴歸操作。特徵也是寫入記憶體。不像R-CNN,SPPnet在金字塔池化層之前的卷積網路無法進行微調。進而限制了深度網路準確率的提升。

       本文貢獻:Fast R-CNN具有以下優點:(1)比R-CNN,SPPnet有更高的檢測特性(mAP)(2)通過多工損失實現單階段的訓練。(3)訓練可以更新整個網路層。

Fast R-CNN結構與訓練

       結構如下,Fast R-CNN將一張圖片與多個proposals送入卷積網路中,網路首先通過幾個卷積和最大池化層處理整張圖片來提取卷積特徵。然後,針對每個目標物體,提出了ROI pooling用於從特徵中提取固定長度的特徵向量。每個特徵向量送入一系列的全連線層。最終,產生兩個分支:一個分支用於產生K+1個類別的softmax概率,另一個針對K個類別的每一個輸出四個值用於編碼框的位置資訊。       

ROI pooling

       ROI pooling通過使用最大池化層將每個ROI的有效區域變為具有固定尺寸的小型feature map(HXW,比如7X7),每個ROI通過一個元組(r,c,h,w)進行定義,分別代表框中左上角的座標(r,c),與框的高和寬(h,w)。

      ROI max pooling通過將hxw的ROI視窗分為HxW的網格,每個子視窗的大小為h/H x w/W。對每個子視窗取最大處理,得到相應的輸出。獨立的將池化操作應用至每個特徵通道上。ROI pooling 可以看作是金字塔池化層的特殊情形。只用了金字塔的一層,並利用池化處理後得到的值。

預訓練網路的初始化     

        本文基於三種網路進行預訓練,每個包含五層池化層和13層卷積層,將其改造為Fast R-CNN的預訓練網路做了三處改動。(1)將最後一個最大池化層替換為RoI pooling層通過設定H,W的值與全連線曾進行匹配。(對於VGG16,設定H=W=7)。(2)網路最後的全連線層和soft max層被替換為兩個分支。(3)網路包含兩個輸入,一個為圖片的輸入,另一個為圖片中ROIs的輸入。

微調檢測網路

        Fast R-CNN基於反向傳播演算法進行權重的訓練。首先,對SPPnet金字塔池化層之前的網路權重無法更新進行了說明。本質原因是SPP層中訓練來自不同圖片的Rois利用反向傳播演算法,其效率是低效的。這樣,會使每個RoI可能會有一個較大的感受野,一般會跨越整個輸入圖片。由於,輸入需要處理整個感受野的大小,因此,訓練的輸入是巨大的。

        該文利用特徵共享提出了一種高效的訓練的方法。在Fast R-CNN的訓練階段,使用SGD ,minibBatch進行分層次取樣。首先,取樣N個圖片,然後,從每張圖片中取樣R/N個RoIs。來自相同圖片的ROI在前向和反向傳播的過程中共享計算與記憶體。這種方法並不會造成訓練緩慢的收斂。本文采用N=2,R=128使用SGD優化方法迭代的效果優於R-CNN。

       Fast R-CNN同時實現單階段的訓練,將Softmax分類器與框迴歸進行結合訓練。

多工損失

       Fast R-CNN網路包含兩個分支,第一個分支為每個Roi對應K+1個類別的概率離散值。另一個分支輸出輸出框迴歸的偏差。針對每個類別,都會產生一組,k代表類別中對應的某個類(4xk個元組)。t_k確定尺寸不變性和相關目標proposal log空間的變換。每個訓練的ROI都存在一個類別為u的ground truth和目標為v的迴歸框。對每一個ROI,定義一個損失函式,用於聯合訓練分類和框迴歸。

 對於框迴歸,定義損失函式如下:

L1對異常值的敏感度要小於R-CNN與SPPnet中的L2損失。對L2進行訓練時,要注意學習率,防止梯度消失。

Mini-batch sampling

       本文選擇batch 為2,每張圖取樣64個ROIs。從ROIs中篩選出四分之一的框作為object proposals,這些與ground truth的IoU值大於0.5.。篩選出來的框用前景類別進行標記。從剩下的框中選出與ground Truth IOU([0.1,0.5))值最大的候選框作為背景。標記類別為0。IOU值在0.1以下的執行類似於hard example mining 的啟發式演算法。

RoI pooling 層的反向傳播演算法

        該文嘉定mini-batch 為1,對於多個batch,前向過程單獨的處理圖片。x_i作為第i個輸入RoI pooling的啟用值,y_rj代表第r個ROI對應的第j個輸出。

    

 

 

        對於每一個RoI r及pooling 輸出單元y_rj,通過最大池化操作中選擇出的i。對y_r,j進行求偏導操作。

SGD隱層參量

         全連線層使用0均值的高分佈初始化softmax分類器和框迴歸,偏差分別為0.01 ,0.001,偏差初始化為0,每一層的權重學習率為1,偏差為2,整體學習率為0.001。

尺寸不變性

         本文研究兩個針對目標檢測中的尺寸不變性的方式。(1)暴力方式解決,在訓練和測試時,事先將圖片調整為網路輸入的尺寸大小,網路直接從訓練數中學習尺寸不變性(2)使用影象金字塔。通過金字塔為網路提供一種相對較弱的尺寸不變性。測試時,影象金字塔用於規範化目標proposals。

Fast R-CNN檢測

         輸入為一張圖片和大量的目標proposals。測試時,proposals的數量大約為2000,針對每個測試的RoI r,前向過程輸出一個類別後驗概率分佈p和一些列有關RoIr的預測框。(K個類別中的每個類別都有一個增強的框)。最後單獨的對每個類別進行NMS處理。

基於階段奇異值分解加速檢測

         用SVD處理權重矩陣利於簡化網路的引數。

實驗

 

 

Reference

         [1] J. Carreira, R. Caseiro, J. Batista, and C. Sminchisescu. Semantic segmentation with second-order pooling. In ECCV, 2012. 5

          [2] R. Caruana. Multitask learning. Machine learning, 28(1), 1997.

         [3] K. Chatfield, K. Simonyan, A. Vedaldi, and A. Zisserman. Return of the devil in the details: Delving deep into convolutional nets. In BMVC, 2014. 5