R-CNN、Fast R-CNN,Faster R-CNN

        最近正要看Contextual Action Recognition with R*CNN,學習基於動態圖像圖像的行爲識別,所以要惡補下它所需要的知識。

也就是目標檢測常見的幾種算法。

1、首先目標檢測是什麼?

        在給定的圖片中找到物體的所在位置,並且分辨出物體的類別。這實際上是兩個任務。

        圖像識別:image ----> cat/dog

        圖像定位:image ---->(x,y,w,h)

2、實現目標檢測的幾種方法:

1)傳統的目標檢測方法

          大概思路是:採用classification和regression相結合的方式,對一張圖片,用各種大小的框(遍歷整張圖片)將圖片截取出來,輸入到CNN,然後CNN會輸出這個框的得分(classification)以及這個框圖片對應的x,y,h,w(regression)。

          問題:基於滑動窗口的選擇策略沒有針對性,窗口冗餘,時間複雜度高

                     檢測多個物體很難進行。

2)候選區域+深度學習分類

R-CNN

        爲了防止基於滑動窗口的選擇策略沒有針對性,我們可以實現在途中找出目標可能出現的位置(利用顏色,紋理,邊緣等等),即候選區域。

簡要步驟:

(1) 輸入測試圖像

(2) 利用選擇性搜索Selective Search算法在圖像中從下到上提取2000個左右的可能包含物體的候選區域Region Proposal

(3) 因爲取出的區域大小各自不同,所以需要將每個Region Proposal縮放(warp)成統一的227x227的大小並輸入到CNN,將CNN的fc7層的輸出作爲特徵

(4) 將每個Region Proposal提取到的CNN特徵輸入到SVM進行分類

它的缺點也非常明顯,對每個候選框都要進行CNN特徵提取和SVM分類,計算量很大。

Fast R-CNN

原來的方法:許多候選框(比如兩千個)-->CNN-->得到每個候選框的特徵-->分類+迴歸

現在的方法:一張完整圖片-->CNN-->得到每張候選框的特徵-->分類+迴歸

   (1) ROI pooling layer實際上是SPP-NET的一個精簡版,SPP-NET對每個proposal使用了不同大小的金字塔映射,而ROI pooling layer只需要下采樣到一個7x7的特徵圖。對於VGG16網絡conv5_3有512個特徵圖,這樣所有region proposal對應了一個7*7*512維度的特徵向量作爲全連接層的輸入。

  (2) R-CNN訓練過程分爲了三個階段,而Fast R-CNN直接使用softmax替代SVM分類,同時利用多任務損失函數邊框迴歸也加入到了網絡中,這樣整個的訓練過程是端到端的(除去region proposal提取階段)。

Faster R-CNN

對Fast的加速,加入一個提取邊緣的神經網絡,也就說找到候選框的工作也交給神經網絡來做了。

所以,rgbd在Fast R-CNN中引入Region Proposal Network(RPN)替代Selective Search,同時引入anchor box應對目標形狀的變化問題。

30基於深度學習的迴歸方法

YOLO/SSD 以後再說

參考:https://cloud.tencent.com/developer/news/281788

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