查宏超 王 琪 高進可 張 鑫
(江蘇科技大學蘇州理工學院機電與動力工程學院,江蘇 張家港215600)
隨著計算機視覺技術在人工智能領域的不斷創新發展,越來越多的應用領域中都離不開人工智能。而圖像處理和計算機視覺技術作為人工智能的眼睛更是研究中的一個熱點。涉及到深度學習、機器學習、神經網絡建模等多個方面。在人工智能時代,“刷臉”正在應用到各個領域。人臉檢測最初在20 世紀60 年代已經有研究人員開始研究,真正進入初級的應用階段是在90年代后期,發展至今其技術成熟度已經達到較高的程度。很多地方都會用到圖像處理和計算機視覺技術。而人臉檢測則是圖像處理和計算機視覺技術的典型應用。隨著神經網絡算法的不斷發展,深度神經網絡在圖像識別中有著不錯的發展和廣泛的應用。
早在1998 年,Yann LeCun 等人在多次研究后提出了早期的卷積神經網絡結構LeNet-5,作為經典的手寫數字識別模型,LeNet-5 的網絡層次達到了5 層。在2012 的ImageNet 競賽中,Hinton 和他的學生Alex Krizhevsky 設計了AlexNet 網絡模型使網絡層次達到了8 層,同時在LeNet-5 的基礎上用到了更新的技術點使網絡模型訓練的速度快數倍以上。在2014 年,牛津大學研究的VGG 網絡模型和Google 團隊研究的GoogLeNet 模型相繼問世并分別將網絡層數提高到了19 層和22 層。隨著網絡層數的增加,神經網絡模型深度加深所帶來的梯度消失的問題開始使神經網絡變得難以訓練。為解決梯度消失的問題,MSRA的何凱明團隊在經過研究后,在其發表的經典論文Deep Residual Learning for Image Recognition 中 提 出 Residual Networks,即殘差網絡[1]。何凱明團隊提出的殘差網絡很好的解決了在神經網絡訓練過程中網絡深度達到飽和后出現的“模型退化”的現象[2]。ResNet 在ILSVRC2015 競賽中將網絡深度提升到152 層,將數據集訓練錯誤率降低至3.57%,在圖像識別準確率和網絡深度方面,比往屆比賽有了非常大的提升。由此可見深度殘差網絡(Deep Residual Network)在圖像識別訓練上有著很強大的效果和應用空間。
本文將OpenCV 人臉檢測環境搭建到便攜移動設備樹莓派上,從ORL 人臉數據庫中采集人臉樣本信息組成人臉圖像訓練數據集[3]。采用基于計算機視覺庫OpenCV 的DRN 人臉檢測算法構建人臉檢測的神經網絡模型并進行數據集訓練。同時以基于Caffe 框架的卷積神經網絡CNN 預訓練模型進行性別年齡的預測。以樹莓派作為OpenCV 的圖像處理平臺,集成度高、開發性好、方便且快捷[4]。將樹莓派作為平臺,OpenCV 作為處理核心,研究一種簡潔高效、性能優良的人臉檢測和性別年齡預測方法。
在構建DRN 人臉檢測算法模型之前,要進行大量的人臉數據訓練。首先對人臉特征進行提取,人臉特征包括眉毛、睫毛、眼睛、鼻子、耳朵、嘴巴等顯著特征。只要能將人臉圖像中的這些特征點提取出來就可以分辨出人臉與非人臉。之后構建人臉數據模型進行訓練,這樣在人臉的識別檢測上就可以達到相當高精度的準確識別。在前期準備上主要分為人臉數據收集、訓練模型,人臉檢測性別年齡預測三部分。本文采用的人臉圖像數據集是OpenCV 教程里的ORL 人臉數據庫,以人臉圖像數據集作為訓練對象,同時可以將預檢測的人臉圖片加到數據集中作為訓練對象,此時要對預測的人臉圖片做預處理,將圖片進行裁剪大小使拍攝的人臉圖片和數據庫中的大小一致。方便后面使用DRN 算法模型對采集好的人臉數據進行人臉結構分析、訓練生成模型用于之后準確的人臉檢測和性別年齡預測。
在使用深度神經網絡進行人臉圖像識別訓練時,在反向傳播過程中會發生梯度消失的現象[7]。在不斷疊加神經網絡的深度以提高模型精度的訓練過程中,模型的準確率會先上升達到飽和,再持續增加深度時則會出現梯度消失導致模型準確率下降。為了加深網絡層數提高模型訓練精度,同時提升人臉檢測的準確率,避免梯度消失模型退化,本文在相關研究的基礎上使用基于OpenCV 的機器學習模塊中的深度殘差網絡(Deep Residual Network)[8]的算法模型。深度殘差網絡的結構是通過跨層跳躍連接的方式,通過恒等映射H(x)=x 將前面若干層的數據輸出跳過n 層傳到x+n 數據層作為初始結果輸入。通過殘差網絡的核心結構殘差塊跳躍式的跨層捷徑連接,將神經網絡某一層的輸出x 作為初始結果跳過多層引入到后面數據層作為輸入初始結果,輸出結果為H(x)=F(x)+x,當F(x)=0 時,此時H(x)=x 就是一個恒等映射,這樣深度殘差網絡的輸出值就是殘差F(x)=H(x)-x 的值。也就是說只要在訓練模型時將殘差的值維持在零,隨著構建的網絡層數的增加,模型訓練的效果會越來越理想化,誤差也不會增大。MSRA 的何凱明團隊在研究中對普通網絡和殘差網絡進行不同深度的訓練后,在訓練集的誤差比較中發現殘差網絡有著更好的訓練精度。深度殘差網絡的算法模型強大且好用同時在圖像訓練中會有著很高的準確度。在全連接的DNN 模型基礎上,DRN 不再是將第x 層的輸出作為第x+1 層的輸入,而是將相鄰層的輸入輸出關系擴大到跨越n 層的輸入輸出上,通過跨層的方式將第x 層的輸出跨過n 層作為x+n 層的輸入初始結果。此時神經網絡的層數可以達到上百層、上千層,同時殘差網絡的反向傳播比較好。使用深度殘差網絡不僅克服了梯度消失模型退化,而且在人臉圖像訓練上會有著很好的效果,會使人臉檢測達到一個理想化的狀態。在人臉檢測的基礎上進行性別年齡的預測,本文選擇用于特征抽取的開源卷積框架Caffe 來預訓練CNN 模型[9]。根據人臉檢測后的特征,將這個人的年齡和性別進行分類處理。和人臉檢測一樣,性別年齡的預測也要經過大量人臉圖像的訓練。性別預測是一個二分類問題(包括Male 和Female)。在年齡預測上使用多分類的方法將年齡段劃分八段(包括0-2,4-6,8-12,15-20,25-32,38-43,48-53,6 0-100)。本文研究使用在圖像輸入層之后添加一個7*7 的卷積層,采用最大重疊池化,在使用神經網絡進行實際的圖像訓練過程中使用3 個卷積層,卷積核大小分別為96、256 和384,2個擁有512 個神經元的全連接層,池化采用最大重疊池化,池化規模大小為3*3 步幅為2 和一個輸出層來分類輸出年齡和性別的預測[10]。在神經網絡模型訓練過程中采用Dropout 方法限制數據訓練過擬合,增強數據效果,訓練算法采用隨機梯度下降法,激活函數選用ReLU 函數,ReLU 是最好的非線性激活函數,具有計算簡便,運行速度快,同時可以防止過擬合和梯度消失。
本文采用樹莓派4 代作為搭建OpenCV 視覺環境的硬件設備。樹莓派具有能耗低、移動便捷性高、集成性高等特點。樹莓派4 代更是在前幾代的基礎上,在性能上有了更大的提升,處理器由之前3 代的Cortex-A53 升級為四核心Cortex-A72,主頻更是達到了1.5GHz,運行速度更快,有相應的Linux 操作系統可以完成復雜的應用與開發。另外樹莓派還帶有Raspberry Pi Camera Module v2 專用定制攝像頭,擁有定焦鏡頭,高質量800萬像素。配合樹莓派4B 開發板,運行速度快,流暢度較高。相比于單片機,樹莓派無疑是更好的開發應用平臺,在計算機編程和其他的Linux 開發上有廣闊的應用空間。用來作為跑圖像處理的平臺,開發性高、性能較好、方便且快捷。
本文研究在樹莓派的Linux 開發環境之下搭載OpenCV 機器視覺庫進行人臉檢測和性別年齡預測的一種方法。利用深度殘差網絡提取人臉圖像中的明顯特征,實現人臉檢測。使用卷積神經網絡從人臉圖像中預測性別和年齡,用大量的人臉數據集訓練神經網絡以達到理想的訓練效果。通過樹莓派平臺搭建計算機視覺庫來使用DRN 人臉檢測算法預訓練模型對人臉進行準確檢測捕捉,使人臉檢測更加便捷準確。在使用卷積神經網絡在年齡預測上則有一定的偏差。我們知道要想從一幅人臉圖像中靠一些人臉特征來判斷預測年齡是一件很難預測的事情。在年齡的預測上有很多影響因素,同齡的兩個人在不同的情況下看起來年齡也是不一樣的,在化妝的情況下也無法準確的看出一個人的年齡。本文在預測年齡時是將年齡預測作為一個分類問題來看待,為了避免在神經網絡訓練過程中的過擬合,選擇使用層數較少的CNN 網絡模型并且以8 個年齡組來構造8 分類模型分類預測年齡,在神經網絡的輸出層設置8 個節點分別表示8 個年齡段范圍來進行預測分類。但在相關研究上發現在理想情況下將年齡預測作為一個回歸問題來處理會更好。在下一步的研究中將通過回歸算法建立神經網絡模型來準確預測年齡使年齡預測達到更好的效果。