天天看點

論文提要“You Only Look Once: Unified, Real-Time Object Detection”

轉載于:http://blog.csdn.net/cv_family_z/article/details/46803421

版權歸原作者所有.

項目首頁:http://pjreddie.com/darknet/yolo/

這篇文章着重在檢測的速度提升,差別于之前的方法是用分類器來做檢測,文章對bbox和對應的類機率進行回歸,檢測速度可以達到45f/s,mAP與原始的R-CNN差不多。

出現原因: 

CNN在分類上已經可以達到實時,而在檢測上R-CNN需要幾秒的時間處理一張圖檔,主要是由于proposal的提取時間需要約1~2s的時間,然後還有很多後續步驟:proposal的特征學習,矯正bbox,消除虛警等,最好的方法需要2~40s時間處理完畢。并且R-CNN的每個檢測步驟是分離的不便整體優化。

一體化的檢測: 

輸入圖像劃分為7*7的網格,如果一個物體的中心落在某個格子内,則對應的格子負責檢測該物體。每個網格預測一個bbox和對應的類機率,系統流程如下: 

論文提要“You Only Look Once: Unified, Real-Time Object Detection”

系統使用cnn實作并在VOC上測試,初始卷積層從圖像中提取特征,全連接配接層預測機率和坐标。網絡架構與GoogleNet類似,擁有24個卷積層和2個全連接配接層,網絡如下圖所示,最終的輸出是對7*7網格的預測,每個網格預測20類的機率和坐标。 

論文提要“You Only Look Once: Unified, Real-Time Object Detection”

網絡訓練: 

使用ImageNet進行初始訓練,使用圖3中的前20層加一個maxpooling層及兩個全連接配接層進行訓練,1星期訓練得到top-5error為86%。由于檢測需要更為精細的資訊,作者将網絡輸入由224*224調整至448*448.

網絡的最後一層預測類機率和bbox,在最後一層使用邏輯激活函數,其他層使用leaky ReLU: 

論文提要“You Only Look Once: Unified, Real-Time Object Detection”

網絡輸出使用平方和誤差,并引入尺度因子 λ  對類機率和bbox的誤差進行權重,同時為了反映出偏離在大的bbox中的影響比較小,文章使用bbox寬高的平方根,最終的損失函數是: 

論文提要“You Only Look Once: Unified, Real-Time Object Detection”

為了避免過拟合,作者使用了dropout和資料增加。

參數化類機率: 

49個網格給出20類的機率,一幅圖像産生980個預測的機率,大部分機率為0。這會導緻訓練離散,作者引入了一個變量解決這個問題:即某位置是否有物體存在的機率。是以除了20個類機率還有一個“objectness”機率Pr(Object),則某位置每一類的非條件機率為Pr(Object)與條件機率的乘積; 

Pr(Dog) = Pr(Object)*Pr(Dog|Object) 

在每個位置都對Pr(Object)進行更新,而隻在有物體存在時才對Pr(Dog|Object)更新。

YOLO的限制: 

  1.由于YOLO具有極強的空間限制,它限制了模型在鄰近物體上的預測,

    如果兩個物體出現在同一個cell中,模型隻能預測一個物體,是以在小物體檢測上會出問題。

  2 另外模型對訓練資料中不包含的物體或具有異常長寬比的物體擴充不是太好。

  3 loss函數對大小bbox采取相同的error也是個問題。

實驗結果: 

在voc2012上的實驗結果對比如下,YOLO在不基于R-CNN的方法中mAP最高,但比state-of-art低。 

論文提要“You Only Look Once: Unified, Real-Time Object Detection”

YOLO的速度提升比較明顯,在voc2007上的實驗結果對比如下: 

論文提要“You Only Look Once: Unified, Real-Time Object Detection”

繼續閱讀