讀RCNN論文筆記


 

1. RCNN的模型(如下圖)描述:

             RCNN相比傳統的物體檢測,還是引入傳統的物體檢測的基本流程,先找出候選目標物體,逐個的提取特征,不過rbg大神引入了當時炙手可熱的CNN卷積網絡取代傳統上的HOG,DPM,LBP,SIFT等算法來對圖像的特征進行提取,值得說道的是CNN由於可以放到GPU上,所以也大幅度的減少了了物體檢測需要的時間,然后在使用svm/softmax分類器進行分類識別.

  

  候選區域目標(RP) 特征提取 分類
RCNN   selective search CNN SVM
傳統的算法

objectness,

constrainedparametric min-cuts,

sliding window,edge boxes,....

HOG , SIFT,

LBP, BoW,

DPM,...

SVM

2. RCNN模型的三個組成部分:

     1.  先使用ILSVRC2012數據集訓練一個1000類的分類器模型,並將這個模型保存下來.

     2.  加載1步驟中的模型,使用這個模型中特征提取參數來初始化我們這里的CNN中的參數,並使用那些經過變形的區域目標來訓練模型,這里獲取到的區域目標指的是

和經過SS算法提取到的區域目標和我們標注的目標區域的IOU【兩張圖片的交集/兩張圖片的並集】>0.5時,我們將這個SS算法提取的區域目標作為我們標注的類(及該類的正樣本)進行訓練,否則作為負樣本進行訓練,並且值得注意的是對於每一個SGD(隨機梯度)迭代,我們使用一個128的小批次,其中使用32個當前類的樣本,和96個背景樣本作為負樣本。

 3. 訓練二分類目標分類器,作者列舉檢測車的例子,“對於那種沿着車邊緣分割出的車的區域,我們可以很清楚的知道這是一個正樣本,而對於那種不包含任何車信息的區域,我們也容易直到這是一個負樣本,但是對於那種包含了部分車的區域,我們切沒有明確的界限來定義”,這里作者經過一系列的實驗【0,0.1,0.2,0.3,0.4,0.5】,當為0.5時,MAP(平均APA)會下降5%,當為0時,會下降4%,只有當SS算法分割出的區域和我們打樣本時標注的區域的IOU大於0.3時,我們的MAP最高.對於每一個類,候選的正樣本使用ground-truth bounding boexs來定義,也就是大於IOU大於0.7認為是正樣本,小於0.3認為是負樣本,鑒於0.3~0.7之間的丟掉不用來訓練.而且對每一個類使用線性SVM進行分類,但是因為訓練數據有時會非常大,為了不爆內存,作者使用了[背景bg/前景fg(即樣本)]=3:1的比例進行.

 

2.1 關於圖片的轉換(warp):

   

圖片在經過CNN卷積網絡需要將圖片統一成固定大小,論文中給出了三種方法的對比A為原始圖片

一方法: 在原始區域目標周圍去一塊區域進行等比縮放到CNN需要的圖片大小,結果圖B

二方法: 去除原始目標區域然后對目標區域進行填充,在等比縮放到CNN需要的圖片大小,結果C

三方法: 直接將原始目標區域非等比縮放到CNN需要的圖片大小,圖D

3. 預測目標區域:

  在測試時,我們使用ss算法在每一張測試圖片上提取大約2000個區域目標,對每一個區域目標
進行變形放入到CNN提取特征向量.然后對每一個類,我們使用對這個訓練好的SVM來對每一個區域目標打分.
對一張圖片中的所有打分的區域目標,我們使用一種非極大值抑制算法(NMS)來去掉兩個區域目標中交集/並集大於閾值時,區中評分較低的那個區域.

4. 所以在訓練的過程中也需要進行分步驟訓練:

    1. 對CNN網絡進行微調.

    先使用ILSVRC2012數據集訓練一個1000類的分類器模型,然后使用該模型來初始化我們的CNN模型參數,使用我們的train和val數據集合進行微調.

 2. 對每一個樣本進行線性SVM分類模型訓練.

          來自於驗證集(val)和訓練集(train)中的所有目標區域被充當對應類的正樣本,而每一個的負樣本使用的是隨機取自驗證集val

    3. 邊框回歸訓練

  邊框回歸使用的也是val集合

5.  Positive vs. Negative examples and softmax

        關於正負樣本選取,在CNN訓練階段和SVM階段為什么或出現閾值不同[0.5和0.3],經過作者多次測試后得到的結果.至於為什么使用SVM而不是用softmax進行分類.

作者說如果使用softmax進行分類mAP會從54.2%掉到50.9%,作者給出的是sofxmax在取任意的樣本的負樣本,也就是是所有的負樣本共享,而SVM是只專門取對應類的負樣本.

6.邊框回歸 具體步驟:

   6.1 當使用SVM分類器對SS提供的候選區域目標[經過篩選后的]進行打分之后,模型會使用一個邊框回歸器會對這區域給出一個預測的區域坐標【我們稱之為bounding box】,並在經過CNN提取的特征圖上進行回歸.

         6.2 具體流程如下:

    6.2.1 輸入N(我們的類別為N) 對{P,Gi} i=1,....,N   其中P是預測區域,G為我們標注的區域 且P={Pix,Piy,Piw,Pih}表示的(x,y,w,h)分別是中心坐標:x,y坐標w,h寬高

    G和P擁有同樣的結構,我們的目的是學習一種變換能夠將預測的P映射到實際的G上.

            四個參數使用四個函數來表示dx(P),dy(P),dw(p),dh(p),其中前兩個使用x,y平移變換,w,h做縮放變換

       

 

--------------------------推導部分-------------------------- 

強調: P,G對應的點是原圖上的值,或者說對應的區域目標是未經過CNN處理過的.

那么將這些點映射到feature map 上如何計算呢?

  我們先計算出我們打的標簽位置G映射回feature map是(x,y,w,h)的變化量:

       tx = (Gx  - Px)/Pw    ; (1)

 注:  Gx 表示的是在原圖上的左上角x的坐標,Px表示的是SS算法等處理過后的區域目標在原圖上的中心坐標x. Pw表示SS算法等處理過后的區域目標在原圖上的寬度.   tx 表示x的變化量

                        ty = (Gy  - Py)/Ph   ; (2)

 注:  Gy 表示的是在原圖上的左上角y的坐標,Py表示是SS算法等處理過后的區域目標在原圖上的中心坐標y. Ph表示是SS算法等處理過后的區域目標在原圖上的高度.   ty 表示y的變化量

                       tw = log(Gw/Pw); (3)

 注:  Gw 表示的是在原圖上的寬度,Pw表示是SS算法等處理過后的區域目標在原圖上的寬度.   tw 表示w的變化量                  

                       th = log(Gh/Ph);  (4)

 注:  Gh 表示的是在原圖上的高度,Ph表示是SS算法等處理過后的區域目標在原圖上的高度.   th 表示h的變化量                  

   綜上,我們就得到了G'(tx,ty,tw,th)這一組,我們標注的標簽,從原圖映射回特征圖上的映射關系. 那么我們的預測值呢?

我們的預測值就是上圖公式中的P'(dx(P),dy(P),dw(P),dh(P))這一組,我們經過SS算法以及非極大抑制算法之后得到的區域目標從原圖映射回特征圖上的映射關系. 也就是說如果我們的預測值要和實際標注值趨近,那就需要G‘和P'兩個近似相等.

也就是使得:  

       dx(P)  ~   tx      (1)

       dy(P)  ~   ty      (2)

       dw(P)  ~  tw     (3)

          dh(P)  ~  th      (4)

那么我們的dx(P),dy(P),dw(P),dh(P)是如何得到的呢? 我們用d*(P)通用變量來代表這四個具體變量.

然后我們使用表示經過CNN提取之后的區域目標向量(即我們圖片抽象數據),我們設置一個學習模型參數W* 我們用使用目標向量和學習模型參數矩陣相乘,來得到我們的目標函數:

         

這樣的話,我們的損失函數也就可以得到了,這里我們使用一個通用的公式來表示:

        LOSS =  , 包含了(x,y,w,h)的損失函數,

知道了損失函數,我們就不難得到我們優化目標函數: 對於N個類,我們每次去損失值最小的那一組進行學習:

,並且我們設定入=1000.

有了優化目標,就可以使用SGD函數來的到最優的W參數了.

關於是不是在進行邊框回歸的時候,所有的區域目標都可以用來進行訓練?

      特別強調的是,模型在選取訓練樣本的時候,選擇的是離Ground Truth(我們標注的目標)較近的目標,要達到選擇的目標和GT目標的IOU值>0.6.

 

參考:

    Rich feature hierarchies for accurate object detection and semantic segmentation Tech report    [1]

    R-CNN  for  Object Detection [2]

    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM