文獻(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)隨處可見,廣為人知,。例如為確保安全,,悉尼板球場(chǎ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圖像的簡(jiǎn)單操作,,隨著技術(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)為L(zhǎng)inux系統(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相同,,可以很簡(jiǎn)單地看到圖像尺度的變化,,顏色越深代表對(duì)應(yīng)原圖中的區(qū)域?qū)儆谌四樀母怕手翟酱蟆kS著尺度不斷變換,,所有可能為人臉的位置全部得出,,最后通過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),,采用簡(jiǎ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ā)煥,劉國(guó)平,,胡瑢華,,等.基于機(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ù)國(guó)防科技重點(diǎn)實(shí)驗(yàn)室,,山西 太原030051)