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