目標檢測算法(一):R-CNN詳解


參考博文:https://blog.csdn.net/hjimce/article/details/50187029

R-CNN(Regions with CNN features)--2014年提出

算法流程

  1.輸入一張圖片,通過selective search算法找出2000個可能包括檢測目標的region proposal(候選框)

  2.采用CNN提取候選框中的圖片特征(AlexNet輸出特征向量維度為4096)

  3.使用SVM對特征向量分類

  4.bounding-box regression修正候選框位置

(一)候選框搜索

  通過selective search算法可以搜索出2000個大小不同的矩形框,得到對應的坐標

  遍歷候選框:

    對候選框進行篩選,去掉重復的、太小的方框等,假設剩余1500個。截取剩余的方框對應的圖片,得到了1500張圖片

    由於CNN對輸入圖片的大小有要求,需要對以上圖片進行縮放處理,方法有:各向異性縮放、各向同性縮放。縮放到CNN要求的大小

    根據IOU對每一張圖片進行標注,如IOU>0.5標注為目標類別(正樣本),否則為背景類別(負樣本)

  我的理解:每一張原始圖片都會生成1500個訓練樣本

(二)CNN提取特征

  可選網絡結構:AlexNet,Vgg-16

  預訓練:有監督預訓練

    物體檢測的一個難點在於,物體標簽訓練數據少,如果要直接采用隨機初始化CNN參數的方法,那么目前的訓練數據量是遠遠不夠的。

    這種情況下,最好的是采用某些方法,把參數初始化了,然后在進行有監督的參數微調,文獻采用的是有監督的預訓練

    有監督預訓練,我們也可以把它稱之為遷移學習。比如你已經有一大堆標注好的人臉年齡分類的圖片數據,訓練了一個CNN,

    用於人臉的年齡識別。然后當你遇到新的項目任務是:人臉性別識別,那么這個時候你可以利用已經訓練好的年齡識別CNN模型,

    去掉最后一層,然后其它的網絡層參數就直接復制過來,繼續進行訓練。這就是所謂的遷移學習,說的簡單一點就是把一個任務訓練好的參數,

    拿到另外一個任務,作為神經網絡的初始參數值,這樣相比於你直接采用隨機初始化的方法,精度可以有很大的提高。

    圖片分類標注好的訓練數據非常多,但是物體檢測的標注數據卻很少,如何用少量的標注數據,訓練高質量的模型,這就是文獻最大的特點,

    這篇paper采用了遷移學習的思想。文獻就先用了ILSVRC2012這個訓練數據庫(這是一個圖片分類訓練數據庫),先進行網絡的圖片分類訓練。

    這個數據庫有大量的標注數據,共包含了1000種類別物體,因此預訓練階段cnn模型的輸出是1000個神經元,

    或者我們也直接可以采用Alexnet訓練好的模型參數。

  fine-tuning

    將最后一層的輸出層單元數修改為目標檢測的類別數+1,多出的一類為背景。輸出層參數采用隨機初始化,之前的參數不變。繼續對網絡進行訓練。

(三)訓練SVM

  CNN最后的softmax層可以做分類,在論文中為什么要把softmax層換成SVM進行分類?

    因為SVM和CNN分類時的正負樣本定義不同,導致CNN+softmax輸出比SVM精度要低。由於CNN容易過擬合,需要大量的訓練樣本,

    所以CNN的樣本標注比較寬松,IOU>0.5即標記為正樣本。SVM適用於小樣本訓練,對樣本的IOU要求較高,在訓練時,IOU>0.7時標記為正樣本。

  由於SVM是二分類器,因此對每一個類別都需要訓練一個SVM

(四)Bounding Box Regression--邊框回歸

  詳解

  

  任務描述:G為目標邊框(人為標注),P為網絡計算得到的邊框。邊框回歸的任務是計算從P到G^的映射f,使P經過映射以后得到與真實窗口G

      更接近的G^

  思路:平移+尺度縮放

  輸入:(訓練時)CNN提取到的該邊框的特征+Ground Truth即G的坐標

     (預測時)CNN提取到的該邊框的特征

  輸出:需要進行的平移量和尺度縮放量,即P到G^的映射,包括4個值:Δx,Δy,Sw,Sh

  通過計算得到新的回歸框

  

    

 

  

 

  

 


免責聲明!

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



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