yolo詳解

作者:狗頭山人七
鏈接:https://zhuanlan.zhihu.com/p/25045711
來源:知乎
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

論文筆記:You Only Look Once: Unified, Real-Time Object Detection

評論:基於深度學習方法的一個特點就是實現端到端的檢測。相對於其它目標檢測與識別方法(比如Fast R-CNN)將目標識別任務分類目標區域預測和類別預測等多個流程,YOLO將目標區域預測和目標類別預測整合於單個神經網絡模型中,實現在準確率較高的情況下快速目標檢測與識別,更加適合現場應用環境。後續研究,可以進一步優化YOLO網絡結構,提高YOLO準確率。YOLO類型的端到端的實時目標檢測方法是一個很好的研究方向。(預告:後續文章中,將對YOLO的tensorflow源碼實現進行詳解,敬請關注)

簡介:YOLO爲一種新的目標檢測方法,該方法的特點是實現快速檢測的同時還達到較高的準確率。作者將目標檢測任務看作目標區域預測和類別預測的迴歸問題。該方法採用單個神經網絡直接預測物品邊界和類別概率,實現端到端的物品檢測。同時,該方法檢測速非常快,基礎版可以達到45幀/s的實時檢測;FastYOLO可以達到155幀/s。與當前最好系統相比,YOLO目標區域定位誤差更大,但是背景預測的假陽性優於當前最好的方法。

1 前言

人類視覺系統快速且精準,只需瞄一眼(You Only Look Once,YOLO)即可識別圖像中物品及其位置。

傳統目標檢測系統採用deformable parts models (DPM)方法,通過滑動框方法提出目標區域,然後採用分類器來實現識別。近期的R-CNN類方法採用region proposal methods,首先生成潛在的bounding boxes,然後採用分類器識別這些bounding boxes區域。最後通過post-processing來去除重複bounding boxes來進行優化。這類方法流程複雜,存在速度慢和訓練困難的問題。

本文中,我們將目標檢測問題轉換爲直接從圖像中提取bounding boxes和類別概率的單個迴歸問題,只需一眼(you only look once,YOLO)即可檢測目標類別和位置。

YOLO採用單個卷積神經網絡來預測多個bounding boxes和類別概率,如圖1-1所示。本方法相對於傳統方法有如下有優點:

一,非常快。YOLO預測流程簡單,速度很快。我們的基礎版在Titan X GPU上可以達到45幀/s; 快速版可以達到150幀/s。因此,YOLO可以實現實時檢測。

二,YOLO採用全圖信息來進行預測。與滑動窗口方法和region proposal-based方法不同,YOLO在訓練和預測過程中可以利用全圖信息。Fast R-CNN檢測方法會錯誤的將背景中的斑塊檢測爲目標,原因在於Fast R-CNN在檢測中無法看到全局圖像。相對於Fast R-CNN,YOLO背景預測錯誤率低一半。

三,YOLO可以學習到目標的概括信息(generalizable representation),具有一定普適性。我們採用自然圖片訓練YOLO,然後採用藝術圖像來預測。YOLO比其它目標檢測方法(DPM和R-CNN)準確率高很多。

YOLO的準確率沒有最好的檢測系統準確率高。YOLO可以快速識別圖像中的目標,但是準確定位目標(特別是小目標)有點困難。

圖1-1 YOLO目標檢測系統

2 統一檢測(Unified Detection)

作者將目標檢測的流程統一爲單個神經網絡。該神經網絡採用整個圖像信息來預測目標的bounding boxes的同時識別目標的類別,實現端到端實時目標檢測任務。

如圖2-1所示,YOLO首先將圖像分爲S×S的格子(grid cell)。如果一個目標的中心落入格子,該格子就負責檢測該目標。每一個格子(grid cell)預測bounding boxes(B)和該boxes的置信值(confidence score)。置信值代表box包含一個目標的置信度。然後,我們定義置信值爲Pr(Object)\ast IOU_{pred}^{truth}。如果沒有目標,置信值爲零。另外,我們希望預測的置信值和ground truth的intersection over union (IOU)相同。

每一個bounding box包含5個值:x,y,w,h和confidence。(x,y)代表與格子相關的box的中心。(w,h)爲與全圖信息相關的box的寬和高。confidence代表預測boxes的IOU和gound truth。

每個格子(grid cell)預測條件概率值C(Pr(Class_{i} |Object))。概率值C代表了格子包含一個目標的概率,每一格子只預測一類概率。在測試時,每個box通過類別概率和box置信度相乘來得到特定類別置信分數:Pr(Class_{i} |Object)\ast Pr(Object)\ast IOU_{pred}^{truth} =Pr(Class_{i} )\ast IOU_{pred}^{truth}

這個分數代表該類別出現在box中的概率和box和目標的合適度。在PASCAL VOC數據集上評價時,我們採用S=7,B=2,C=20(該數據集包含20個類別),最終預測結果爲7×7×30的tensor。

圖2-1 模型

2.1 網絡結構

模型採用卷積神經網絡結構。開始的卷積層提取圖像特徵,全連接層預測輸出概率。模型結構類似於GoogleNet,如圖3所示。作者還訓練了YOLO的快速版本(fast YOLO)。Fast YOLO模型卷積層和filter更少。最終輸出爲7×7×30的tensor。圖2-2 網絡結構

2.2 訓練方法

作者採用ImageNet 1000-class 數據集來預訓練卷積層。預訓練階段,採用圖2-2網絡中的前20卷積層,外加average-pooling 層和全連接層。模型訓練了一週,獲得了top-5 accuracy爲0.88(ImageNet2012 validation set),與GoogleNet模型準確率相當。然後,將模型轉換爲檢測模型。作者向預訓練模型中加入了4個卷積層和兩層全連接層,提高了模型輸入分辨率(224×224->448×448)。頂層預測類別概率和bounding box協調值。bounding box的寬和高通過輸入圖像寬和高歸一化到0-1區間。頂層採用linear activation,其它層使用 leaky rectified linear。作者採用sum-squared error爲目標函數來優化,增加bounding box loss權重,減少置信度權重,實驗中,設定爲\lambda _{coord} =5  and  \lambda _{noobj}=0.5

訓練階段的總loss函數如下:


作者在PASCAL VOC2007和PASCAL VOC2012數據集上進行了訓練和測試。訓練135輪,batch size爲64,動量爲0.9,學習速率延遲爲0.0005. Learning schedule爲:第一輪,學習速率從0.0001緩慢增加到0.001(因爲如果初始爲高學習速率,會導致模型發散);保持0.001速率到75輪;然後在後30輪中,下降到0.0001;最後30輪,學習速率爲0.00001.
作者還採用了dropout和 data augmentation來預防過擬合。dropout值爲0.5;data augmentation包括:random scaling,translation,adjust exposure和saturation。

2.3 預測
對於PASCAL VOC數據集,模型需要對每張圖片預測98個bounding box和對應的類別。對於大部分目標只包含一個box;其它有些面積大的目標包含了多個boxes,採用了Non-maximal suppression(非最大值抑制)來提高準確率。

2.4 Limitations
一,YOLO的每一個網格只預測兩個boxes,一種類別。這導致模型對相鄰目標預測準確率下降。因此,YOLO對成隊列的目標(如 一羣鳥)識別準確率較低。
二,YOLO是從數據中學習預測bounding boxes,因此,對新的或者不常見角度的目標無法識別。
三,YOLO的loss函數對small bounding boxes和large bounding boxes的error平等對待,影響了模型識別準確率。因爲對於小的bounding boxes,small error影響更大。

3 效果對比

文中比較了YOLO和其它目標檢測方法(Deformable parts models,R-CNN,Faster R-CNN,Deep MultiBox,OverFeat,MultiGrasp)


4 實驗結果

4.1 與其它檢測方法效果對比

如表4-1所示,在準確率保證的情況下,YOLO速度快於其它方法。

表4-1 PASCAL VOC 2007數據集測試


4.2 VOC2007 錯誤項目分析
文中比較了YOLO和Faster R-CNN的錯誤情況,結果如圖4-1所示。YOLO定位錯誤率高於Fast R-CNN;Fast R-CNN背景預測錯誤率高於YOLO。
預測結果包括以下幾類:
正確:類別正確,IOU>0.5
定位:類別正確,0.1<IOU<0.5
類似:類別相似,IOU>0.1
其它:類別錯誤,IOU>0.1
背景:IOU<0.1

圖4-1 錯誤項目分析

4.3 結合Fast R-CNN和YOLO

YOLO和Fast R-CNN預測錯誤類型不同,因此可以結合兩類模型,提升結果。結果如表4-2所示。

表4-2 模型結合

4.4 VOC 2012結果

VOC2012數據集上測試結果如表4-3所示。

表4-3 VOC2012數據集測試結果

4.5 普適性

我們在其它數據集(藝術品目標檢測):Picasso Dataset和People-Art Dataset測試了YOLO的性能,結果如圖4-2和圖4-3所示。

圖4-2 藝術品目標檢測結果一

圖4-3 藝術品目標檢測結果二


5 實時檢測
作者測試了YOLO的實時檢測效果,結果參見 YouTube channel: goo.gl/bEs6Cj.(可惜要翻牆才能看)。


6,結論
YOLO爲一種基於單獨神經網絡模型的目標檢測方法,具有特點可以高準確率快速檢測,同時具有一定魯棒性,可以適用於實時目標檢測。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章