AI學習筆記——精準識別You Only Look Once(YOLO)
上一篇文章我們講到,通過 卷積神經網路(CNN) 可以輕鬆實現圖片的識別與分類。所以,只要有足夠多的,已標記的樣本,我們就可以用這些樣本將神經網路訓練成分類器,用來識別新的圖片。MINST手寫數字的樣本,可以訓練手寫數字分類器;不同品種貓的樣本,可以訓練出貓的分類器;人臉的樣本可以訓練出人臉分類器...
對於人類來說,給我們一張圖片,或者我們瞄一眼一個畫面,畫面或圖片中的每個物品和物品的相應位置就能立即被我們識別。然而,上面提到分類器似乎只能識別單一物品,即便能識別多個物品,也無法指出物品在圖片中的位置。
這篇文章我們就來聊聊 YOLO [1]這個神奇的模型,它可以像人一樣,一眼就能識別圖片中的物體以及物體的位置。更加神奇的是,對於動態視訊甚至攝像頭實時採集的畫面,YOLO都能精準識別。

image source from github with GNU General Public License v3.0
1. 目標識別簡史
2001年左右,Viola-Jones的人臉識別演算法[2]是當時準確度較高的目標識別演算法,這個演算法需要先標記出 人臉的特徵值 ,比如眼睛鼻子間的距離等,然後再送給機器使用支撐向量(SVM)的方法進行訓練。
2005年,N. Dalal[3]將人臉的圖片先進行灰度分析,形成 灰度特徵向量(Histograms of Oriented Gradient) ,再將這些預處理過的圖片送入計算機進行分類訓練,大大提高了人臉識別的精確度。
2012年, Kriszhevsky團隊用 卷積神經網路(CNN) 將人臉識別的準確率再提高了一個臺階,從此目標識別領域邁進了 深度學習 的時代。
正如本文開篇講到,普通的CNN網路只能對單個物體進行識別,而且無法指出物體的位置。為了解決這個問題, R-CNN 演算法就誕生了。R-CNN需要對圖片掃描多次,先框出圖片可能有物體的區域,然後再對這些區域用CNN演算法進行識別。
2. YOLO原理簡介
YOLO—You Only Look Once,顧名思義,就是對圖片僅進行一次掃描就能同時識別多個物體,並標記出物體的位置。YOLO目前已經迭代出了多個版本,但是基本原理沒有改變,我們以YOLO V2為例。
- 首先,YOLO將一張圖片分成13×13個 格子 。

Alt Text
image sorce from github with GNU General Public License v3.0
- 然後,YOLO對每個格子輸出5個 預測框 。預測框的粗細可以表明這個框記憶體在目標物體的可能性。

Alt Text
image sorce from github with GNU General Public License v3.0
- 其次,這些預測框同時可以預測目標物體的類別,如下圖,用不同顏色標記不同 類別(20個) ,粗細同樣表示可能性的大小。

Alt Text
image sorce from github with GNU General Public License v3.0
- 最後,YOLO將可能性比較大(比較粗)的預測框輸出,就得到我們想要的結果了。

image sorce from github with GNU General Public License v3.0
3. YOLO結構
如下圖,所示,YOLO是由我們熟悉的若干個CNN堆疊而成的,我們來看看原始圖片經過多層CNN處理之後,最後一層輸出的是什麼。
YOLO最後一層輸出的是一個13×13×125的矩陣,所有我們需要的資訊都包含在了這一層中。
-
13×13就是之前提到的圖片中被劃分成的13×13個 格子 。
-
每個格子包含125位資訊,這125位資訊包含5個 預測框 ,每個預測框含有25位資訊(125= 5×25)。
-
這25位資訊,前五位為 [x, y, width, height, Score] ;其中,(x, y) 表示預測框的 中心座標 ,width和height表示預測框的 長,寬 ,Score表示預測框中有目標的 可能性 。
-
這25位資訊,後20位每一位代表一個 類別 ,其數表示屬於該類別的概率。
4. 總結
高大上的YOLO經過一步步分解之後,原理是不是並不複雜。當然本文只是對YOLO的粗淺介紹,想要深入瞭解YOLO請見文末參考文獻和YOLO官網。下一篇文章,我將介紹如何使用YOLO來檢測和識別自己的圖片和視訊中的目標物體。
參考資料
[1] J. Redmon et al. You Only Look Once: Unified, Real-Time Object Detection
[2] Viola–Jones object detection framework
[3] N. Dalal et al. Histograms of Oriented Gradients for Human Detection
[4] R. Girshick et al. Rich feature hierarchies for accurate object detection and semantic segmentation
相關文章
Tensorflow入門——單層神經網路識別MNIST手寫數字
Tensorflow入門——多層神經網路MNIST手寫數字識別
Tensorflow入門——分類問題cross_entropy的選擇
同步到我的Steemit