實時物體檢測:YOLO,YOLOv2和YOLOv3(一)

dicksonjyl560101發表於2019-08-09
作者:Jonathan Hui
編譯:ronghuaiyang

導讀

昨天介紹了YOLOv3,發現大家對這一系列很感興趣,從今天開始,會連載YOLO,YOLOv3,YOLOv3的相關內容,讓大家更加清楚YOLO這一系列發展的過程。今天先介紹YOLO。

YOLO是一個以實時處理為目標的物體檢測系統。我們將在本文中介紹YOLO、YOLOv2和YOLO9000。對於那些只對YOLOv3感興趣的人,請轉到文章底部。以下是YOLO網站提供的準確性和速度對比。

實時物體檢測:YOLO,YOLOv2和YOLOv3(一)

我們從下面我們自己的測試影象開始。

實時物體檢測:YOLO,YOLOv2和YOLOv3(一)

使用YOLO進行物體檢測:

實時物體檢測:YOLO,YOLOv2和YOLOv3(一)

網格單元

為了便於討論,我們對原始照片進行了剪裁。YOLO將輸入影象劃分為  S × S  個網格。每個網格單元僅預測 一個 物件。例如,下面的黃  色 網 格單元格嘗試預測中心(藍點)位於網格單元格內的“person”物件。

實時物體檢測:YOLO,YOLOv2和YOLOv3(一)

每個網格單元預測固定數量的邊界框。在本例中,黃  色 網  格單元格預測兩個邊界框(藍色框)來定位人員的位置。

實時物體檢測:YOLO,YOLOv2和YOLOv3(一)

然而,一個網格只預測一個物體的規則限制了檢測到的物體之間的距離。因此,YOLO對物體之間的距離有一定的限制。如下圖所示,左下角有9個聖誕老人,而YOLO只能檢測到5個。

實時物體檢測:YOLO,YOLOv2和YOLOv3(一)

對於每個網格單元格,

  • 預測 B 個邊界框,每個框有一個 box置信度得分
  • 只檢測 一個 物件,而不考慮邊界框B的數量
  • 預測 C個條件類的概率 (每個類有一個概率)

在Pascal VOC上進行評估,YOLO使用7×7網格(S×S),2個邊界框(B)和20個類(C)。

實時物體檢測:YOLO,YOLOv2和YOLOv3(一)

讓我們來了解更多的細節。每個邊界框包含5個元素:( x, y, w, h )和 box置信度得分 。置信度分數反映框中包含物件的可能性( object  )以及邊界框的準確性。我們通過影象的寬度和高度對邊界框的寬度 w 和高度 h 進行規範化。 x y 是對應單元格的偏移量。因此, x, y, w h 都在0和1之間。每個單元格有20個條件類概率。條件類probability是檢測到的物體屬於特定類的概率(每個單元格的每個類別有一個概率)。所以YOLO的預測輸出的尺寸為(S, S, B×5 + C) = (7、7、2×5 + 20) = (7、7、30)。

實時物體檢測:YOLO,YOLOv2和YOLOv3(一)

YOLO的主要概念是建立一個CNN網路來預測一個(7,7,30)的張量。它使用一個CNN網路得到1024個通道的7×7的輸出。YOLO用兩個全連線層來進行7×7×2個邊界框的預測(下圖)。為了做出最終的預測,我們保留那些邊界框置信度得分高(大於0.25)的盒子邊界框作為最終的預測(右圖)。

實時物體檢測:YOLO,YOLOv2和YOLOv3(一)

每個預測框的 類置信度得分 計算為:

實時物體檢測:YOLO,YOLOv2和YOLOv3(一)

它度量分類和定位的(物體所在的位置)的置信度。

我們可以很容易地混淆那些得分和概率項。這是數學上的定義,供你以後參考。

實時物體檢測:YOLO,YOLOv2和YOLOv3(一)

網路設計

實時物體檢測:YOLO,YOLOv2和YOLOv3(一)

YOLO有24個卷積層,然後是2個全連線層(FC)。有些卷積層使用了1x1的卷積核來降低特徵圖的通道數。對於最後一個卷積層,它輸出一個形狀為(7,7,1024)的張量。然後張量被壓扁。使用2個全連線層,它輸出7×7×30個引數然後reshape成(7、7、30),即每個位置2個邊界框。

YOLO的一個更快但準確率較低的版本叫做Fast YOLO,只使用了9個卷積層和更少的feature map數量。

損失函式

YOLO預測每個網格單元有多個邊框。為了計算true positive的損失,我們只希望它們中的一個對該物體負責。為此,我們選擇了和ground truth具有最高IoU的那個。這種策略導致邊界框預測之間的專門化。每種預測都能更好地預測特定的尺寸和縱橫比。

YOLO使用預測和ground truth之間的平方和誤差來計算損失。損失函式包括:

  • 分類損失
  • 定位損失 (預測邊界框與ground truth之間的誤差)。
  • 置信度損失

分類損失

如果物體被檢測到了,每個單元格的分類損失為每個類的條件概率類的平方誤差:

實時物體檢測:YOLO,YOLOv2和YOLOv3(一)

定位損失

定位損失測量的是預測的邊界框的位置和尺寸的誤差。我們只計算負責檢測物體的框。

實時物體檢測:YOLO,YOLOv2和YOLOv3(一)

我們不希望在大框和小框中對絕對誤差進行同等的加權。例如,一個大框的2畫素誤差和一個小框的2畫素誤差是一樣的。為了部分解決這個問題,YOLO預測邊框寬度和高度的平方根,而不是寬度和高度。此外,更加重視邊界框的準確性,我們將這個損失乘以λcoord(預設值是5)。

置信度損失

如果在一個框中,有物體被檢測到了,置信度的損失為:

實時物體檢測:YOLO,YOLOv2和YOLOv3(一)

如果在一個框中,沒有物體檢測到,置信度損失為:


實時物體檢測:YOLO,YOLOv2和YOLOv3(一)


大多數框不包含任何物體。這就造成了類不平衡的問題,即我們訓練模型檢測背景的頻率比檢測物體的頻率要高。為了彌補這一點,我們將這個損失的權重降低,通過一個因子λnoobj(預設值為0.5)。

損失

最終的損失包括定位損失、置信度損失和分類損失。

實時物體檢測:YOLO,YOLOv2和YOLOv3(一)

推理:非極大值抑制

YOLO會對同一物體進行重複檢測。為了解決這個問題,YOLO使用了非最大抑制來刪除置信度較低的重複的框。非最大抑制在對mAP能增加2-3%。

下面是其中一種非最大抑制實現:

  1. 根據置信度得分對預測進行排序。
  2. 從最高分開始,如果我們發現任何一個預測,和之前的預測有相同的類並且IoU > 0.5,那麼就忽略掉當前的預測。
  3. 重複步驟2,直到檢查完所有預測。

YOLO的優點

  • 快,適合實時處理。
  • 預測(物體位置和類)由單個網路進行。可進行端到端訓練,提高精度。
  • YOLO更一般化。當從自然影象推廣到其他領域(如藝術品)時,它的效能優於其他方法。
實時物體檢測:YOLO,YOLOv2和YOLOv3(一)

  • 區域建議方法將分類器限制在特定區域。YOLO在預測邊界框時訪問整個影象,YOLO在背景區域顯示的假陽性更少。
  • YOLO每個網格單元檢測一個物件。它加強了預測的空間多樣性。

<未完,明天繼續>

英文原文:https://medium.com/@jonathan_hui/real-time-object-detection-with-yolo-yolov2-28b1b93e2088

https://www.toutiao.com/a6722781602394407438/

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2653127/,如需轉載,請註明出處,否則將追究法律責任。

相關文章