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