基於深度學習的目標檢測方法:fast R-CNN

fast R-CNN

       論文:fast R-CNN


       R-CNN存在的缺點:

       1、R-CNN是multi-stage pipeline。首先利用CNN提取特徵,然後利用SVM進行分類,最後利用bounding-box regressors 修正目標框。

       2、訓練的時間開銷、空間開銷比較大。用於SVM、bounding-box regressors的特徵需要存儲到磁盤中,這將需要佔用大量的磁盤空間,而且提取這些特徵也會耗費好多時間。

       3、測試的時間開銷比較大。提取每張圖像的每個region proposal的特徵,這將浪費很多時間。關於這個問題,SPP-net提出瞭解決方法,也就是先提取整張圖像的特徵圖,然後從該特徵圖中提取各個region proposal的特徵。
       

       SPP-net存在的缺點:
       1、SPP-net也multi-stage pipeline

       2、SPP-net也需要將特徵寫入到磁盤中

       3、SPP-net不能微調spatial pyramid pooling layer之前的convolutional layers,這將影響深層網絡模型的準確度。


       針對R-CNN、SPP-net存在的缺點,該論文提出了 fast R-CNN,其結構如下圖所示。在 fast R-CNN中,1、將最後一個池化層替換爲RoI pooling layer; 2、最後一個全連接層與softmax替換爲兩個兄弟層,一個是全連接層+softmax,另一個是全連接層+bbox regressor;3、模型的輸入爲一系列圖像以及這些圖像的RoIs 。


------------------------------------------------------------------------------------------------------------------------------------------------------  

RoI pooling layer

       該層有兩個作用:1、將圖像的RoI定位到feature map中對應位置,採用SPP-net中的定位方法; 2、對該RoI對應的特徵進行max pooling, 也就是把每個候選區域均勻分成M×N塊,對每塊進行max pooling,將特徵圖上大小不一的候選區域轉變爲大小統一的數據,再傳入到全連接層,這個過程本質上是單層的SPP layer,如下圖:

這裏寫圖片描述

       該層的反向傳播過程

       首先考慮普通max pooling層。設xi爲輸入層的節點,yj爲輸出層的節點,則有: 

Lxi={0Lyjδ(i,j)=falseδ(i,j)=true

       其中判決函數δ(i,j)表示i節點是否被j節點選爲最大值輸出。不被選中有兩種可能:xi不在yj範圍內,或者xi不是最大值。

       然而,對於roi max pooling,一個輸入節點可能和多個輸出節點相連。設xi爲輸入層的節點,yrj爲第r個候選區域的第j個輸出節點。 

這裏寫圖片描述 

Lxi=Σr,jδ(i,r,j)Lyrj

        其中,判決函數δ(i,r,j)表示i節點是否被候選區域r的第j個節點選爲最大值輸出;代價關於xi的梯度等於所有相關的後一層的梯度之和。

------------------------------------------------------------------------------------------------------------------------------------------------------  

multi-task loss

       Each training RoI is labeled with a ground-truth class and a ground-truth bounding-box regression target v 

       對於分類loss, softmax層輸出K+1維的數組,表示屬於K類和背景的概率。分類loss由真實類別u所對應的概率決定,也就是:Lcls=logpu

       對於迴歸loss,bbox regressors層輸出K個regression offsets(tx, ty, tw, th) , 也就是爲每一個類別都會訓練一個單獨的regressor。迴歸loss也是

由真實類別u所對應的預測參數(tx, ty, tw, th)決定的,這裏採用的是smooth L1誤差,即:

 

 

       總的loss計算如下,如果分類爲背景,不需要計算迴歸loss。


------------------------------------------------------------------------------------------------------------------------------------------------------  

分層數據

     

在調優訓練時,每一個mini-batch中,首先加入N張完整圖片,然後加入從這N張圖片中選取的R個候選框,也就是從每張圖片中選取R/N個候選框。 

實際選擇N=2, R=128

------------------------------------------------------------------------------------------------------------------------------------------------------  

全連接層加速

      全連接層的計算比較耗時,全連接層參數爲W,尺寸爲u×v,計算複雜度爲u * v,  該論文中提出了利用Truncated SVD來加速計算,即:

W=UΣVTU(:,1:t)Σ(1:t,1:t)V(:,1:t)T

      原來的前向傳播分解成兩步,計算複雜度變爲u×t+v×t: 

y=Wx=U(ΣVT)x=Uz
      在實現時,相當於把一個全連接層拆分成兩個,中間以一個低維數據相連。 
這裏寫圖片描述




發佈了81 篇原創文章 · 獲贊 51 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章