1. 程式人生 > >關於影像辨識,所有你應該知道的深度學習模型

關於影像辨識,所有你應該知道的深度學習模型

YOLO: You Only Look Once

YOLO 有個很討喜的名字,取自 You Only Live Once,但用在 Object detection 上則為 You only look once,意思是說 YOLO 模型的特性只需要對圖片作一次 CNN 便能夠判斷裡面的物體類別跟位置,大大提升辨識速度。

R-CNN 的概念是先提出幾個可能包含物體的 Region proposal,再針對每個 region 使用 CNN 作分類,最後再以 regression 修正 bounding box 位置,速度慢且不好訓練。YOLO 的好處是單一網路設計,判斷的結果會包含 bounding box 位置,以及每個 bounding box 所屬類別及概率。整個網路設計是 end-to-end 的,容易訓練,而且速度快。

  1. YOLO 速度快,在 Titan X GPU 上可以達到每秒 45 禎的速度,簡化版的 YOLO 甚至可以達到 150 fps 的速度。這意味著 YOLO 已經可以對影像作即時運算了。準確度 (mAP) 也狠甩其他深度學習模型好幾條街。看看底下 YOLO2 的 demo 視訊,這偵測速度會嚇到吃手手了

2. 有別於 R-CNN 都是先提 region 再做判斷,看的範圍比較小,容易將背景的 background patch 看成物體。YOLO 在訓練跟偵測時都是一次看整張圖片,背景錯誤偵測率 (background error, 抑或 false positive) 都只有 Fast R-CNN 的一半。

3. YOLO 的泛用性也比 R-CNN 或者 DPM 方式來得好很多,在新的 domain 使用 YOLO 依舊可以很穩定。

YOLO 的概念是將一張圖片切割成 S x S 個方格,每個方格以自己為中心點各自去判斷 B 個 bounding boxes 中包含物體的 confidence score 跟種類。

confidence score = Pr(Object) * IOU (ground truth)

如果該 bounding box 不包含任何物體 (Pr(Object) = 0),confidence score 便為零,而 IOU 則為 bounding box 與 ground truth 的交集面積,交集面積越大,分數越高。

每個方格預測的結果包含 5 個數值,x 、y 、w 、 h 跟 confidence,x 與 y 是 bounding box 的中間點,w 與 h 是 bounding box 的寬跟高。

S = 7,B = 2,PASCAL VOC label 20 種種類,所以 tensor 為 S x S x (5 * B + C) = 7 x 7 x 30

YOLO 的網路設計包含了 24 個卷積層,跟 2 層的 FC 網路。

包含 24 個卷積層,2 層的 FC 網路,

另外一個版本的 YOLO Fast 則只有 9 個卷積層,不過最後的輸出都是 7x7x30 的 tensor。

YOLO 的缺點

  1. 由於 YOLO 對於每個方格提兩個 bounding box 去作偵測,所以不容易去區分兩個相鄰且中心點又非常接近的物體
  2. 只有兩種 bounding box,所以遇到長寬比不常見的物體的檢測率較差

YOLO 與其他模型的比較

YOLO 在速度跟準確率上都有相當好的表現
YOLO 有比較少的 background error (false positive),但是 bounding box 的 location error 比較高

YOLO2

YOLO2 建構於 YOLO 之上,但是有更好的準確度,更快速的判斷速度,能夠判斷更多的物件種類(多達 9000 種),所以是更好(Better)、更快(Faster)、更強大(Stronger)