【導讀】深度學(xué)習技術(shù)對于降低計算機視覺(jué)辨識和分類(lèi)的錯誤率展現出巨大的優(yōu)勢。在嵌入式系統中實(shí)施深度神經(jīng)網(wǎng)絡(luò )有助于機器透過(guò)視覺(jué)解讀臉部表情,并達到類(lèi)似人類(lèi)的準確度。
辨別臉部表情和情緒是人類(lèi)社會(huì )互動(dòng)早期階段中一項基本且非常重要的技能。人類(lèi)可以觀(guān)察一個(gè)人的臉部,并且快速辨識常見(jiàn)的情緒:怒、喜、驚、厭、悲、恐。將這一技能傳達給機器是一項復雜的任務(wù)。研究人員經(jīng)過(guò)幾十年的工程設計,試圖編寫(xiě)出能夠準確辨識一項特征的計算機程序,但仍必須不斷地反復嘗試,才能辨識出僅有細微差別的特征。
那么,如果不對機器進(jìn)行編程,而是直接教機器精確地辨識情緒,這樣是否可行呢?
深度學(xué)習(deep learning)技術(shù)對于降低計算機視覺(jué)(computer vision)辨識和分類(lèi)的錯誤率展現出巨大的優(yōu)勢。在嵌入式系統中實(shí)施深度神經(jīng)網(wǎng)絡(luò )(見(jiàn)圖1)有助于機器透過(guò)視覺(jué)解讀臉部表情,并達到類(lèi)似人類(lèi)的準確度。
圖1:深度神經(jīng)網(wǎng)絡(luò )的簡(jiǎn)單例子
神經(jīng)網(wǎng)絡(luò )可經(jīng)由訓練而辨識出模式,而且如果它擁有輸入輸出層以及至少一個(gè)隱藏的中間層,則被認為具有「深度」辨識能力。每個(gè)節點(diǎn)從上一層中多個(gè)節點(diǎn)的加權輸入值而計算出來(lái)。這些加權值可經(jīng)過(guò)調整而執行特別的影像辨識任務(wù)。這稱(chēng)為神經(jīng)網(wǎng)絡(luò )訓練過(guò)程。
例如,為了訓練深度神經(jīng)網(wǎng)絡(luò )辨識面帶開(kāi)心笑臉的照片,我們向其展示開(kāi)心的圖片作為輸入層上的原始數據(影像畫(huà)素)。由于知道結果是開(kāi)心,網(wǎng)絡(luò )就會(huì )辨識圖片中的模式,并調整節點(diǎn)加權,盡可能地減少開(kāi)心類(lèi)別圖片的錯誤。每個(gè)顯示出開(kāi)心表情并帶有批注的新圖片都有助于優(yōu)化圖片權重。藉由充份的輸入信息與訓練,網(wǎng)絡(luò )可以攝入不帶標記的圖片,并且準確地分析和辨識與開(kāi)心表情相對應的模式。
深度神經(jīng)網(wǎng)絡(luò )需要大量的運算能力,用于計算所有這些互連節點(diǎn)的加權值。此外,數據存儲器和高效的數據移動(dòng)也很重要。卷積神經(jīng)網(wǎng)絡(luò )(CNN)(見(jiàn)圖2)是目前針對視覺(jué)實(shí)施深度神經(jīng)網(wǎng)絡(luò )中實(shí)現效率最高的先進(jìn)技術(shù)。CNN之所以效率更高,原因是這些網(wǎng)絡(luò )能夠重復使用圖片間的大量權重數據。它們利用數據的二維(2D)輸入結構減少重復運算。
*圖2:用于臉部分析的卷積神經(jīng)網(wǎng)絡(luò )架構(示意圖) *
實(shí)施用于臉部分析的CNN需要兩個(gè)獨特且互相獨立的階段。第一個(gè)是訓練階段,第二個(gè)是部署階段。
訓練階段(見(jiàn)圖3)需要一種深度學(xué)習架構——例如,Caffe或TensorFlow——它采用中央處理器(CPU)和繪圖處理器(GPU)進(jìn)行訓練計算,并提供架構使用知識。這些架構通常提供可用作起點(diǎn)的CNN圖形范例。深度學(xué)習架構可對圖形進(jìn)行微調。為了實(shí)現盡可能最佳的精確度,可以增加、移除或修改分層。
圖3:CNN訓練階段
在訓練階段的一個(gè)最大挑戰是尋找標記正確的數據集,以對網(wǎng)絡(luò )進(jìn)行訓練。深度網(wǎng)絡(luò )的精確度高度依賴(lài)于訓練數據的分布和質(zhì)量。臉部分析必須考慮的多個(gè)選項是來(lái)自「臉部表情辨識挑戰賽」(FREC)的情感標注數據集和來(lái)自VicarVision (VV)的多標注私有數據集。
針對實(shí)時(shí)嵌入式設計,部署階段(見(jiàn)圖4)可實(shí)施在嵌入式視覺(jué)處理器上,例如帶有可編程CNN引擎的Synopsys DesignWare EV6x嵌入式視覺(jué)處理器。嵌入式視覺(jué)處理器是均衡性能和小面積以及更低功耗關(guān)系的最佳選擇。
圖4:CNN部署階段
雖然標量單元和向量單元都采用C和OpenCL C(用于實(shí)現向量化)進(jìn)行編程設計,但CNN引擎不必手動(dòng)編程設計。來(lái)自訓練階段的最終圖形和權重(系數)可以傳送到CNN映射工具中,而嵌入式視覺(jué)處理器的CNN引擎則可經(jīng)由配置而隨時(shí)用于執行臉部分析。
從攝影機和影像
傳感器擷取的影像或視訊畫(huà)面被饋送至嵌入式視覺(jué)處理器。在照明條件或者臉部姿態(tài)有顯著(zhù)變化的辨識場(chǎng)景中,CNN比較難以處理,因此,影像的預處理可以使臉部更加統一。先進(jìn)的嵌入式視覺(jué)處理器的異質(zhì)架構和CNN能讓CNN引擎對影像進(jìn)行分類(lèi),而向量單元則會(huì )對下一個(gè)影像進(jìn)行預處理——光線(xiàn)校正、影像縮放、平面旋轉等,而標量單元則處理決策(即如何處理CNN檢測結果)。
影像分辨率、畫(huà)面更新率、圖層數和預期的精確度都要考慮所需的平行乘積累加數量和性能要求。Synopsys帶有CNN的EV6x嵌入式視覺(jué)處理器采用28nm制程技術(shù),以800MHz的速率執行,同時(shí)提供高達880MAC的性能。
一旦CNN經(jīng)過(guò)配置和訓練而具備檢測情感的能力,它就可以更輕松地進(jìn)行重新配置,進(jìn)而處理臉部分析任務(wù),例如確定年齡范圍、辨識性別或種族,并且分辨發(fā)型或是否戴眼鏡。
總結
可在嵌入式視覺(jué)處理器上執行的CNN開(kāi)辟了視覺(jué)處理的新領(lǐng)域。很快地,我們周?chē)鷮?huì )充斥著(zhù)能夠解讀情感的電子產(chǎn)品,例如偵測開(kāi)心情緒的玩具,以及能經(jīng)由辨識臉部表情而確定學(xué)生理解情況的電子教師。深度學(xué)習、嵌入式視覺(jué)處理和高性能CNN的結合將很快地讓這一愿景成為現實(shí)。
(作者簡(jiǎn)介:Gordon Cooper,Synopsys嵌入式視覺(jué)產(chǎn)品行銷(xiāo)經(jīng)理)
推薦閱讀: