文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.190870
中文引用格式: 王靜波,孟令軍. 卷積神經網絡人臉檢測算法[J].電子技術應用,2020,46(1):34-38.
英文引用格式: Wang Jingbo,Meng Lingjun. Convolutional neural network face detection algorithm[J]. Application of Electronic Technique,2020,46(1):34-38.
0 引言
近年來,人工智能行業有著日新月異的發展,深度學習[1-2](人工神經網絡)在其中扮演著至關重要的角色,人臉檢測也是深度學習領域的熱點,它的研究用來鑒別人的身份,可以廣泛地應用于公共安全、企業辦公、教育、人機交互等領域。區別于指紋、虹膜無需特定的采集裝置,人臉識別系統[3]只需要具有拍照功能的設備(例如手機、相機等)就可滿足要求,有著獨特的優勢。
目前,人臉檢測落地技術已經隨處可見,廣為人知。例如為確保安全,悉尼板球場已全部覆蓋人臉檢測技術;為了避免假冒開戶,工商銀行在215個網點啟用了人臉檢測; 為了保護未成年人,人臉檢測防火墻被添加到抖音中;“人臉檢測”有助于救援站尋找親屬等。與此同時,互聯網+[4]的時代已經來臨,隱私保護越來越受到人們的重視,也更加促進人臉檢測技術研究的迅速發展。
智能人臉檢測系統大致的流程如圖1所示。
如今,人臉檢測技術主要有以下三大類:
(1)基于Harr特征的級聯Adaboost[5]分類器,該方法由VIOLA P和JONES M J共同提出。最開始粗密度提取特征,將分類不明確的數據和下一階段的數據一起進行優化訓練,反復迭代獲得精密度的特征提取器,然后將多個強提取器級聯成更高精度的級聯器,使用積分圖像提取圖像有效特征值。
(2)基于可變形零件模型(Deformable Parts Model)[6],將面部視為零件的組合。最開始計算每個分量的方向梯度以獲得直方圖,然后使用支持向量機[7](Surpport Vector Machine)訓練分類器,并且分類操作可以由該分類器執行。
(3)基于神經網絡的人臉檢測,采用兩級卷積神經網絡進行人臉檢測,第一級執行面部的粗略定位,第二級執行面部的精細定位。2015年,在ImageNet[8]比賽的大熱下,雅虎的Sachin等人使用上述方法進行人臉檢測和定位,取得了很好的效果。在人臉檢測后還需進行預處理操作,目的是通過一些圖像處理技術來減小噪聲對圖像的影響,將對比度、亮度和飽和度適當修改,達到提升準確率的效果[9]。
現實生活中拍攝存在許多不確定因素,例如相機的硬件噪聲、光照和變形。為了消除外在因素的影響,需要對原始圖片進行相關的預處理操作。預處理主要包括人臉圖像的亮度補償、直方圖均衡化和降噪濾波。初期的預處理一般基于2D圖像的簡單操作,隨著技術的發展逐步衍變為基于3D建模的預處理步驟[9]。
利用上述第3種方法進行一定程度的實現。本文采用數據集LFW(Labled Faces in the Wild)人臉數據集20 000多張的圖像數據經過訓練,并迭代5萬次得出一個全連接的caffemodel,圖2為部分人臉數據和非人臉數據,圖3、圖4為數據標注形式與訓練得出的模型分類器[10],標注數據包括人臉ID、數據路徑和人臉坐標位置,且該模型已被證實具有良好的分類效果。然后使用其檢測人臉圖像。待檢測的圖像數據使用訓練好的caffemodel進行前向傳播得到特征圖,從中可以確定待檢測人臉的坐標。
1 AlexNet卷積神經網絡結構
一般的卷積神經網絡是由卷積層、池化層、全連接層堆疊而成的[11]。卷積層是網絡中提取圖像高維特征的重要結構,相當于人腦局部感知:在檢測圖片的過程中,不是同時檢測整個圖像,而是對于圖片中的每一個特征首先局部感知,然后更高層次對局部進行綜合操作,從而得到全局信息。
激活函數ReLU對卷積層的輸出結果做一次非線性映射。池化層Pool也稱為欠采樣或下采樣,它主要用于減少特征尺寸,壓縮數據和參數的數量,減小過擬合,提高模型的容錯性,使模型更快更好地朝著最優的方向擬合。
AlexNet是成功應用上述操作的經典結構。它由KRIZHEVSKY A和其他人設計并在2012年ILSVRC[12-13]中贏得了冠軍,它將對象分類錯誤率從之前的25.8%降低到16.4%,在當時達到最優水平。AlexNet可以訓練更大的數據集和更深的網絡。該模型分為8層,5個卷積層和3個完全連接的層[14]。圖5是AlexNet網絡結構圖以及各層的詳細參數,Caffe在構建網絡時就可使用這些參數定義每一層,但是對于人臉檢測,它是一種二分類任務,需要把最后一層全連接層改成所需任務的類別個數,原來的1 000修改成2。
圖6為采用Caffe內置卷積函數之后的提取效果,之后還可以再進行卷積池化操作提取更高維的抽象有用信息,圖中的坐標代表像素大小及變化。
2 Caffe深度學習框架
Caffe是一個清晰而高效的深度學習框架[11,15],由加州大學伯克利分校畢業的賈揚青博士撰寫。Caffe是純粹的C++/CUDA架構,有著如下的優勢:
(1)模塊化:Caffe從頭開始設計為盡可能模塊化,允許擴展新的數據格式、網絡層和損失功能。
(2)表示和實現分割:無需代碼編程,只需使用Protocol Buffer語言在配置文件中自定義網絡模型[16]。在任何有向非循環圖的形式中,Caffe支持網絡架構。Caffe會根據網絡大小自動調用合適的內存,避免內存過多占用,同時也可以在CPU和GPU之間自由切換。
(3)測試覆蓋:在Caffe中,每個模塊對應一個測試。
(4)Caffe官方有Python和MATLAB兩個編譯版本,本實驗編譯的為Python版本,最后在Python 2.7上驗證實現。
(5)預訓練參考模型:對于視覺項目,Caffe提供了一些僅用于學術和非商業領域的參考模型,大部分的模型都可以在caffe model zoo里找到,但其許可證不是BSD開源協議。
后來賈揚清和他在Facebook的團隊研究開發了新一代框架Caffe2。2018年4月18日,Facebook開源了Caffe2。新一代框架更注重模塊化,在移動端、大規模部署上表現卓越。如同TensorFlow,Caffe2使用 C++ Eigen庫,支持ARM架構。
3 算法實現原理
根據AlexNet網絡的輸入特性,需要圖像的大小為227×227的輸入。但原始圖像數據中的人臉尺寸有可能不是227×227,有的過大,有的過小。因此需要使用圖像金字塔(Image Pyramid)進行多尺度變換,然后經過卷積神經網絡的前向傳播得出特征圖,之后映射到原圖上得到所有窗口的人臉概率值。該方法中是將概率值大于0.95的特征點反變換到原圖得到對應的一塊區域,即為人臉框的位置。
盡管人臉框的坐標已經得出,但會發現有許多符合要求的窗口,僅需要給出一個最有可能表征人臉的窗口,因此,有必要應用 NMS(非極大抑制)算法來消除交叉重復窗口并找到面部的最佳位置,找到人臉的最佳位置。如圖7所示,NMS算法的原理大致為,假設A框與B框同為包含人臉的候選框,它們之間的交并比IOU(Intersection-over-Union)大于0.8,被視為是高度重疊的,根據它們屬于人臉的概率值P(B)>P(A),將候選框A剔除。
圖8為整體檢測算法流程圖。首先使用OpenCV讀入待檢測的圖片,然后進行下列操作。
4 結果展示
該方法實現平臺為Linux系統,版本號為Ubuntu16.04,GPU顯卡型號為GTX1080。軟件采用Caffe+Python 2.7+OpenCV 3.4.1。
訓練中由于顯存原因,batch_size設置為64,而不是普遍的128。圖9為訓練的結果,每經過100次記錄損失值,可以看到Training Loss:0.003 01和Test Loss:0.001 39,基本滿足需求,也無過擬合現象。
圖10為圖像數據先進行圖像金字塔變換,然后每個尺度變換后的圖片經過前向傳播得出的特征圖的熱度圖。圖中坐標變化與圖6相同,可以很簡單地看到圖像尺度的變化,顏色越深代表對應原圖中的區域屬于人臉的概率值越大。隨著尺度不斷變換,所有可能為人臉的位置全部得出,最后通過NMS算法得出一個最優的人臉框。
圖11為不同大小、清晰度不同的人臉圖像數據(圖片來自網絡和300W數據集,包含正臉、側臉和多人臉)的實際檢測結果,從中可以很好地檢測出人臉框,說明模型具有很好的分類效果,達到檢測人臉的功能。
5 結束語
本文人臉檢測的實現,采用簡單高效易操作的深度學習框架Caffe,構建AlexNet網絡,通過大量的數據訓練得出caffemodel分類器,該算法沿用傳統的滑動窗口方法,利用金字塔變換和非極大值抑制等算法并使用強大的計算機視覺工具OpenCV框出人臉,整體實現了卷積神經網絡的人臉檢測。但是不足之處在于模型不能有效識別多人臉,圖片亮度較低也不能識別,下一步擬采用更龐大的數據和優化更好的網絡(如VGGNet、GoogleNet和ResNet等)進行訓練,實現多人臉檢測、關鍵點的定位和表情的檢測等功能,或者嘗試使用Caffe2實現移動端的人臉相關檢測。
參考文獻
[1] 楊丹輝,鄧洲.人工智能發展的重點領域和方向[J].人民論壇,2018(2):22-24.
[2] 李衛.深度學習在圖像識別中的研究及應用[D].武漢:武漢理工大學,2014.
[3] 蔣兆軍,成孝剛,彭雅琴,等.基于深度學習的無人機識別算法研究[J].電子技術應用,2017,43(7):84-87.
[4] 徐貴寶.“互聯網+”人工智能技術發展策略解析[J].世界電信,2016(3):71-75.
[5] VIOLA P,JONES M J.Robust real-time face detection[J].International Journal of Computer Vision,2004,57(2):137-154.
[6] 宋瑨,王世峰.基于可變形部件模型HOG特征的人形目標檢測[J].應用光學,2016,37(3):380-384.
[7] 胡發煥,劉國平,胡瑢華,等.基于機器視覺和支持向量機的臍橙品質分級檢測[J].北京工業大學學報,2014(11):1615-1620.
[8] RUSSAKOVSKY O,DENG J,SU H,et al.ImageNet large scale visual recognition challenge[J].International Journal of Computer Vision,2015,115(3):211-252.
[9] 魏正.基于Caffe平臺深度學習的人臉識別研究與實現[D].西安:西安電子科技大學,2015.
[10] 王茜,張海仙.深度學習框架Caffe在圖像分類中的應用[J].現代計算機,2016(5):72-75.
[11] Jia Yangqing,SHELHAMER E,DONAHUE J,et al.Caffe:convolutional architecture for fast feature embedding[J].arXiv:1408.5093[cs.cv],2014.
[12] KRIZHEVSKY A,SUTSKEVER I,HINTON G.ImageNet classification with deep convolutional neural networks[J].Advances in Neural Information Processing Systems,2012,25(2):1097-1105.
[13] BADAWI A A,CHAO J,LIN J,et al.The AlexNet moment for homomorphic encryption:HCNN,the first homomorphic CNN on encrypted data with GPUs[J].arXiv:1811.00778v2[cs.CR],2019.
[14] 宋婷婷,徐世許.基于全采樣和L1范數降采樣的卷積神經網絡圖像分類方法[J].軟件,2018,39(2):75-80.
[15] 許少尉,陳思宇.基于深度學習的圖像分類方法[J].電子技術應用,2018,44(6):122-125.
[16] 解駿,陳瑋.基于卷積神經網絡的人臉識別研究[J].軟件導刊,2018(1):25-27.
作者信息:
王靜波,孟令軍
(中北大學 電子測試技術國防科技重點實驗室,山西 太原030051)