當前位置:
首頁 > 最新 > 刷劇不忘學CNN:TF+Keras識別辛普森一家人物

刷劇不忘學CNN:TF+Keras識別辛普森一家人物

王小新 編譯自 Medium

量子位 出品 | 公眾號 QbitAI

Alexandre Attia是《辛普森一家》的狂熱粉絲。他看了一系列辛普森劇集,想建立一個能識別其中人物的神經網路。

接下來讓我們跟著他的文章來了解下該如何建立一個用於識別《辛普森一家》中各個角色的神經網路。

GIF/37K

要實現這個項目不是很困難,可能會比較耗時,因為需要手動標註每個人物的多張照片。

目前在網上沒有《辛普森一家》人物的訓練數據集,所以我正在標註各類圖片來構建訓練數據集。這個數據集的第一個版本已經掛在Kaggle上了,將持續進行更新,希望這個數據集能幫到大家。

在學了用TensorFlow構建不同項目後,我決定用Keras,因為它比TensorFlow更為簡單易上手,而且以TensorFlow作為後端,具有很強的兼容性。Keras是Francois Chollet用Python語言編寫的一個深度學習庫。

本文基於卷積神經網路(CNN)來完成此項目,CNN網路是一種能夠學習許多特徵的多層前饋神經網路。

準備數據集

該數據集目前有18類,有以下人物:Homer,Marge,Lisa,Bart,Burns,Grampa,Flanders,Moe,Krusty,Sideshow Bob,Skinner,Milhouse等。

我的目標是達到20類,當然類別越多越好。各類樣本的大小不一,圖片背景也不盡相同,主要是從第4至24季的劇集中提取出來的。

部分人物的圖片

在訓練集中,每個人物各大約包括1000個樣本(還在標註數據來達到這個數量)。每個人物不一定處於圖像中間,有時周圍還帶有其他人物。

人物的樣本量分布

通過label_data.py函數,我們可以從AVI電影中標註數據:得到裁剪後的圖片(左部分或右部分),或者完整版,然後僅需輸入人物名稱的一部分,如對Charles Montgomery Burns輸入burns。

添加數據時,我也使用了Keras模型。對視頻進行截圖,每一幀可轉化得到3張圖片,分別是左部分、右部分和完整版,然後通過編寫演算法來分類每張圖片。

之後,我檢查了此演算法的分類效果,雖然是手動的,但這是一個漸進的過程,速度將會不斷提升,特別是對出現頻率較低的小類別人物。

數據預處理

在預處理圖片時,第一步是調整樣本大小。為了節省數據內存,先將樣本轉換為float32類型,併除以255進行歸一化。

然後,使用Keras的自帶函數,將各類人物的標籤從名字轉換為數字,再利用one-hot編碼轉換成矢量:

進而,使用sklearn庫的train_test_split函數,將數據集分成訓練集和測試集。

構建模型

GIF/38K

現在讓我們開始進入最有趣的部分:定義網路模型。

首先,我們構建了一個前饋網路,包括4個帶有ReLU激活函數的卷積層和一個全連接的隱藏層(隨著數據量的增大,可能會進一步加深網路)。

這個模型與Keras文檔中的CIFAR示例模型比較相近,接下來還會使用更多數據對其他模型進行測試。我還在模型中加入了Dropout層來防止網路過擬合。在輸出層中,使用softmax函數來輸出各類的所屬概率。

損失函數為分類交叉熵(Categorical Cross Entropy)。優化器optimizer使用了隨機梯度下降中的RMS Prop方法,通過該權重臨近窗口的梯度平均值來確定該點的學習率。

訓練模型

這個模型在訓練集上迭代訓練了200次,其中批次大小為32。

由於目前的數據集樣本不多,我還用了數據增強操作,使用Keras庫可以很快地實現。

這實際上是對圖片進行一些隨機變化,如小角度旋轉和加雜訊等,所以輸入模型的樣本都不大相同。這有助於防止模型過擬合,提高模型的泛化能力。

在CPU上訓練模型時會耗費較長時間,所以我使用AWS EC2上的GPU資源:每次迭代需要8秒鐘,一共使用了20分鐘。在訓練深度學習模型時,這已經是較快了。

在200次迭代後,我們畫出了模型指標,可以看出性能已經較為穩定,沒有明顯的過擬合現象,且實際正確率較高。

訓練時驗證集和訓練集的損失值和正確率

評估模型

由於當前樣本量較小,所以很難得到準確的模型精度。但隨著訓練集樣本的增多,這將更貼近實際的模型性能。我們使用sklearn庫很快地輸出了各類的識別效果。

各類別的識別效果

從上圖可以看出,模型的正確率(f1-score)較高:除了Lisa,其餘各類的正確率都超過了80%。Lisa類的平均正確率為82%,可能是在樣本中Lisa與其他人物混在一起。

各類別的交叉關係圖

的確,Lisa樣本中經常帶有Bart,所以正確率較低可能受到Bart的影響。

添加閾值來提高正確率

為了提高模型正確率和減少召回率,我添加了一個閾值。

在討論閾值之前,先介紹下關於召回和正確率的關係圖。

召回和正確率的關係圖

現在統計下正確預測和錯誤預測的相關數據:最佳概率預測,兩個最相似人物的概率差和標準偏差STD。

正確預測:最大值為0.83,最優點概率差為0.773,STD值為0.21;

錯誤預測:最大值為0.27,最優點概率差為0.092,STD值為0.07。

如果人物1的預測正確率太低,預測人物2時標準偏差太高或是兩個最相似人物間的概率差太低,那麼可以認為網路沒有學習到這個人物。

因此,對兩個類別,繪製測試集的3個指標,希望找到一個超平面來分離正確預測和錯誤預測。

測試集中多個指標的散點圖

上圖中,想要通過直線或是設置閾值,來分離出正確預測和錯誤預測,這是不容易實現的。當然還可以看出,錯誤預測的樣本一般在圖表的左下方,但在這個位置也分布了很多正確預測樣本。如果設置了一個閾值(關於最相似人物間的概率差和概率),則實際召回率也會降低。

我們希望在提高準確性的同時,而不會很大程度上影響召回率,因此要為每個人物或是低正確率的人物(如Lisa Simpson)來繪製這些散點圖。

此外,對於沒有主角或是不存在人物的樣本,加入閾值後效果很好。目前我在模型中添加了一個「無人物」的類別,可以添加閾值來處理。我認為很難在最佳概率預測、概率差和標準偏差之間找到平衡點,所以我重點關注最佳預測概率。

關於最佳預測概率的召回率和正確率

在模型中,很難平衡好召回率與正確率之間的關係,同時也無法同時提高召回率和正確率。所以往往根據實際目標,來提高單個值。

對於預測類別的概率最小值,畫出F1-score、召回率和正確率來比較效果。

對於所有類別或特定類別,正確率、召回率和F1-score與預測類別概率最小值的關係

從圖10中看出,模型效果取決於不同人物。重點研究Lisa Simpson類別,為該類添加概率最小值0.2可能會提高效果,但是組合所有類別後,這個閾值並不完全適用。

所以考慮全局效果,對於預測類別的概率最小值,應該增加一個合適的閾值,且不能位於區間[0.2,0.4]內。

可視化預測人物

12個不同人物的實際類別和預測類別

在圖11中,用於分類人物的神經網路效果很好,故應用到視頻中實時預測。在實際中,每張圖片的預測時間不超過0.1s,可以做到每秒預測多幀。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 量子位 的精彩文章:

幻想AI自己打開黑箱?谷歌工程總監說:所謂解釋,全是編的
第八冠!清華的三大超算競賽總冠軍獎盃又多了一個
深度神經網路是否模擬了人類大腦皮層結構?
一文看懂各種神經網路優化演算法:從梯度下降到Adam方法
從0開始,手把手教你學會最火的神經網路

TAG:量子位 |

您可能感興趣

東芝選用Cadence Tensilica Vision P6 DSP 提高ADAS晶元的圖像識別性能
Adrian小哥教程:如何使用Tesseract和OpenCV執行OCR和文本識別
西澳大學:NovelPerspective:人物視角識別
Crunchfish & Nibiru 於MWC19發布手勢識別AR系統方案
KITH 除了 NIKE 最近還和 Bergdorf Goodman聯名上了!識別度這麼高適合你嗎?
iPhone Face ID與其他人臉識別技術有什麼不一樣?
Science:南開大學曹雪濤團隊揭示hnRNPA2B1識別病毒DNA並促進IFN-α/β產生
AI生萬物,視覺賦能:ArcSoft虹軟人臉識別SDK亮相GMIC
12.7 VR掃描:《AstroBot Rescue Mission》獲TGA最佳VR遊戲大獎;蘋果公布AR識別新專利
Valve 使用深度學習識別 CSGO 的作弊者;Android Studio 3.1 正式發布
Apple Pencil 將可用在 iPhone上/OPPO 人臉識別技術或比 iPhone X 更高級
新款iPad或搭載Face ID,採用3D人臉識別技術
語音識別開源工具PyTorch-Kaldi:兼顧Kaldi效率與PyTorch靈活性
IDEMIA基於生物識別和移動的CloudCard+解決方案榮獲JUNIPER research頒發的「最佳支付認證解決方案獎」
語音識別+FaceID HomePod2有望趕超Alexa
IBM CodePattern可創建自己的AI模型來識別對象
Machine Learning(一):基於 TensorFlow 實現寵物血統智能識別
遞歸皮層網路RCN識別文本CAPTCHAS的Science論文基礎知識和譯文
Oculus CTO:在Oculus Quest探索手勢識別
蘋果獲新 Face ID 專利,就連 MacBook 都能面部識別