韋智勇 曹之浩 覃穎忠
【摘 要】傳統(tǒng)的人臉識別技術(shù)已在各類應(yīng)用系統(tǒng)身份驗(yàn)證中得到廣泛應(yīng)用,由于移動(dòng)智能終端的計(jì)算及存儲資源有限,不適合大規(guī)模的運(yùn)算,基于深度學(xué)習(xí)的人臉識別技術(shù)在移動(dòng)終端的應(yīng)用還不夠成熟。文章通過分析人臉識別的關(guān)鍵技術(shù),通過合理分布身份認(rèn)證系統(tǒng)的計(jì)算資源,在移動(dòng)客戶端采用Adaboost算法完成人臉的檢測、預(yù)處理和CNN卷積神經(jīng)網(wǎng)絡(luò)提取人臉特征,在服務(wù)端上采用CNN完成人臉模型訓(xùn)練,在移動(dòng)客戶端加載模型并提取人臉特征比對識別任務(wù),測試證明系統(tǒng)具有良好的實(shí)時(shí)性能和較高的識別率。
【關(guān)鍵詞】人臉識別;身份認(rèn)證;移動(dòng)智能終端;CNN卷積神經(jīng)網(wǎng)絡(luò);人臉模型訓(xùn)練
【中圖分類號】TP391.41 【文獻(xiàn)標(biāo)識碼】A 【文章編號】1674-0688(2018)06-0042-04
0 引言
人臉識別技術(shù)主要利用人臉的特征進(jìn)行身份識別,傳統(tǒng)的人臉識別技術(shù)主要是提取圖像的表面特征進(jìn)行匹配,人臉圖像的識別率容易受到圖像質(zhì)量的影響?;谏疃葘W(xué)習(xí)的人臉識別已在很多領(lǐng)域得到廣泛的應(yīng)用,更是推動(dòng)了人臉識別在移動(dòng)信息安全領(lǐng)域的發(fā)展。本文設(shè)計(jì)基于CNN卷積神經(jīng)網(wǎng)絡(luò)人臉識別的移動(dòng)終端身份認(rèn)證系統(tǒng),用卷積神經(jīng)網(wǎng)絡(luò)提取人臉特征取代傳統(tǒng)的特征提取算法,獲得更好的識別性能。
1 人臉識別關(guān)鍵技術(shù)相關(guān)工作
人臉識別的特征提取算法目前主要有基于子空間映射和基于深度學(xué)習(xí)的特征提取算法?;谧涌臻g映射方法嘗試將高維度的人臉特征映射到一個(gè)低維子空間去,然后嘗試在子空間中完成人臉特征匹配,利用部分子空間映射方法具有相對平移、尺寸等不變性,然后經(jīng)過降維操作和分類器設(shè)計(jì)進(jìn)行人臉識別,優(yōu)點(diǎn)是人臉認(rèn)證的精度有所提高,缺點(diǎn)是對人臉變化的抑制性不高且提取的特征不具備普適性。常見的基于子空間映射的方法有特征臉法、LBP特征法、Garbor特征法和HOG特征法?;谏疃葘W(xué)習(xí)的人臉特征提取方法是通過搭建具有一定深度的網(wǎng)絡(luò)結(jié)構(gòu)和海量的訓(xùn)練數(shù)據(jù),將人臉圖片經(jīng)過多層的卷積和非線性映射操作,可以模仿人腦的多級信息提取過程和視覺感知機(jī)制提取出有效的特征信息。實(shí)驗(yàn)證明,基于深度學(xué)習(xí)的人臉識別在各類人臉識別測試集合上取得識別率大大優(yōu)于傳統(tǒng)的基于子空間映射的人臉識別技術(shù)。學(xué)者孫祎等人通過CNN學(xué)習(xí)出人臉特征[1],湯曉鷗教授等人提出了Deep ID[2]網(wǎng)絡(luò)模型,F(xiàn)acebook公司提出了一種叫Deep Face的網(wǎng)絡(luò)結(jié)構(gòu)[3],“谷歌”提出了一個(gè)Face Net網(wǎng)絡(luò)結(jié)構(gòu)及相關(guān)的算法[4],VGG小組提出了一個(gè)人臉識別的CNN網(wǎng)絡(luò)結(jié)構(gòu)[5],Qiao等人提出多任務(wù)級聯(lián)卷積神經(jīng)網(wǎng)絡(luò)算法(Multi-task Cascaded Convolutional Networks,MTCNN)[6]。
2 人臉識別算法設(shè)計(jì)
2.1 基于Adaboost算法與Haar特征的人臉圖像檢測
2.2 基于CNN網(wǎng)絡(luò)提取人臉圖像特征
2.2.1 CNN卷積網(wǎng)絡(luò)結(jié)構(gòu)
卷積神經(jīng)網(wǎng)絡(luò)是一種深層的神經(jīng)網(wǎng)絡(luò)模型,基本結(jié)構(gòu)都是在 LnetNet-5的基礎(chǔ)上改進(jìn)而來的,通常包含輸入層、卷積層C、池化層S和全連接層,以及在全連接層里面的隱藏層(如圖1所示)。輸入層用來接收經(jīng)預(yù)處理后的人臉圖像,并且在該網(wǎng)絡(luò)中只有一個(gè)輸入層。在卷積和池化的過程中嵌套了人臉特征的提取過程,實(shí)現(xiàn)分類的過程主要是在全連接層。
在輸入層里,我們可以將經(jīng)過預(yù)處理的人臉圖像輸入到網(wǎng)絡(luò)當(dāng)中,除去人臉圖像的噪聲,提高識別率。在卷積層里,將輸入的人臉圖像經(jīng)過濾波器進(jìn)行卷積,在C1層生成3個(gè)特征的映射圖,用神經(jīng)元的激活函數(shù)sigmoid來提取人臉圖像局部特征。經(jīng)過C1層后,得到3個(gè)S2層的特征映射圖,對每個(gè)特征映射圖中的4個(gè)像素的值求和、加上權(quán)值及偏置,最后對神經(jīng)元的激活函數(shù)sigmoid進(jìn)行計(jì)算,特征映射圖像經(jīng)過濾波器得到C3卷積層和C5卷積層,S2池化層產(chǎn)生S4池化層。在全連接層里面,最終會將C5層輸出的特征圖拉成一條向量X,并于全連接層進(jìn)行全連接,最后在輸出層輸出結(jié)果。
2.2.2 人臉圖像特征訓(xùn)練
卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程主要包括2個(gè)部分、前向傳播和反向傳播。前向的特征提取、分類計(jì)算的過程是前向傳播過程主要完成的任務(wù),而誤差的反饋和權(quán)值的更新是反向傳播主要完成的任務(wù)(如圖2所示)。
(1)向前傳播階段。①從樣本集中取人臉圖像樣本輸入CNN卷積神經(jīng)網(wǎng)絡(luò),人臉圖像樣本要經(jīng)過預(yù)處理,并初始化CNN網(wǎng)絡(luò)參數(shù),采用多個(gè)卷積和下采樣提取人臉圖像中的特征信息,然后采用前向反饋提取的人臉特征信息進(jìn)入全連接層;②在全連接層經(jīng)過變換計(jì)算相應(yīng)的實(shí)際輸出值,對輸出層的數(shù)據(jù)進(jìn)行邏輯回歸分類,若符合預(yù)期的結(jié)果(精度控制內(nèi))則輸入對應(yīng)結(jié)果。
(2)向后傳播階段。①將相應(yīng)的期望輸出值與計(jì)算出來的實(shí)際輸出值的差進(jìn)行比較,判斷是否在網(wǎng)絡(luò)的精度閾值范圍內(nèi),若不符合期望輸出則進(jìn)行向后的傳播過程;②按極小化誤差的方法調(diào)整權(quán)矩陣,即將權(quán)值和偏差反向傳播回去,從輸出層反向依次傳遞到全連接層和卷積抽樣層,直至每一個(gè)網(wǎng)絡(luò)層都最終得到自己相應(yīng)的梯度才開始新的一輪的訓(xùn)練。
3 身份驗(yàn)證系統(tǒng)的總體設(shè)計(jì)
3.1 身份驗(yàn)證系統(tǒng)架構(gòu)設(shè)計(jì)
由于移動(dòng)智能終端的計(jì)算及存儲資源有限,在身份驗(yàn)證系統(tǒng)中采用C/S架構(gòu),在設(shè)計(jì)架構(gòu)時(shí),將比較耗時(shí)的模型訓(xùn)練和檢索操作放在服務(wù)端,而將簡單的人臉采集、人臉檢測、預(yù)處理等模塊放在移動(dòng)客戶端,本系統(tǒng)的架構(gòu)圖如圖3所示。
3.2 功能模塊設(shè)計(jì)
基于人臉識別的身份驗(yàn)證系統(tǒng)分為智能移動(dòng)客戶端和服務(wù)器端2個(gè)部分,智能移動(dòng)客戶端包含人員信息錄入模塊、圖像采集模塊和人臉檢測模塊,服務(wù)端包含圖像預(yù)處理、特征提取與檢索和人臉數(shù)據(jù)存儲等模塊(如圖4所示)。
3.2.1 圖像采集模塊
智能移動(dòng)客戶端人臉圖像采集模塊是整個(gè)身份驗(yàn)證系統(tǒng)的入口,需要使用客戶端的人臉圖像采集模塊采集人臉樣本庫,在本系統(tǒng)中主要通過OpenCV調(diào)用移動(dòng)終端攝像頭拍照采集人臉樣本和Android SDK讀取本地相冊中的人臉圖像樣本。為保證人臉圖像樣本的質(zhì)量和后續(xù)檢測模塊的通過率,在采集人臉圖像時(shí)應(yīng)調(diào)整屏幕并盡可能確保整個(gè)面部區(qū)域在攝像頭的有效范圍內(nèi)。通過攝像頭采集的人臉圖像樣本利用SQLite嵌入式數(shù)據(jù)庫保存至本地。
3.2.2 人臉庫錄入模塊
當(dāng)人臉識別不成功時(shí),系統(tǒng)需提示用戶輸入個(gè)人信息建立個(gè)人人臉樣本庫,并將樣本庫被持久化存儲到本地SQLite數(shù)據(jù)庫的人員信息表中及服務(wù)端的人臉數(shù)據(jù)庫。
3.2.3 人臉檢測模塊
移動(dòng)客戶端的人臉檢測模塊是檢測圖像中是否存在人臉區(qū)域,如果在規(guī)定時(shí)間內(nèi)未檢測到人臉區(qū)域則轉(zhuǎn)到圖像采集模塊并提示用戶重新采集人臉圖像,如果檢測到人臉區(qū)域則用標(biāo)注框標(biāo)注,為減少后臺數(shù)據(jù)傳輸量,并將只有人臉的區(qū)域圖片進(jìn)行剪裁保存到本地后,傳輸?shù)椒?wù)端用于后續(xù)的驗(yàn)證,這些保存與獲取的函數(shù)直接可以通過SQLite提供的API調(diào)用接口進(jìn)行調(diào)用處理。作為人臉預(yù)處理和特征提取的先前模塊,人臉檢測中人臉圖像的大小、姿態(tài)、清晰程度及位置會影響到驗(yàn)證的識別率。本文系統(tǒng)是基于OpenCV的Adaboost算法與haar特征的級聯(lián)分類器實(shí)現(xiàn)人臉檢測,在移動(dòng)客戶端上的運(yùn)算效率和檢測效果上取得了良好的效果。
3.2.4 圖像預(yù)處理模塊
預(yù)處理模塊是服務(wù)端接收來自移動(dòng)客戶端經(jīng)過人臉檢測處理后的圖片,預(yù)處理是盡量減小姿態(tài)、角度及光照等外在因素影響采集人臉圖像的質(zhì)量。整個(gè)流程主要分為關(guān)鍵特征點(diǎn)的標(biāo)注、人臉圖像的對齊及灰度處理3個(gè)過程,最后將經(jīng)過預(yù)處理模塊的人臉圖像直接輸入CNN卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行人臉特征的提取。
3.2.5 特征提取模塊
本文采用CNN卷積神經(jīng)網(wǎng)絡(luò)模型提取人臉特征及訓(xùn)練人臉模型。模塊分為2個(gè)過程,首先加載調(diào)用CNN模型對經(jīng)過人臉采集、檢測、預(yù)處理后的人臉圖像作為人臉特征向量。其次,由于人臉特征提取的CNN模型涉及大量的矩陣預(yù)算,對實(shí)時(shí)性要求高,本模塊的技術(shù)實(shí)現(xiàn)是采用C/C++程序?qū)崿F(xiàn)CNN模型,然后利用NDK工具在Windows平臺下開發(fā)CNN模型的C/C++動(dòng)態(tài)鏈接庫,將CNN模型的特征提取組件轉(zhuǎn)化成Android的動(dòng)態(tài)鏈接庫.so文件,實(shí)現(xiàn)C/C++鏈接庫在Android平臺下的直接調(diào)用,從而提升CNN模型的實(shí)時(shí)運(yùn)算性能。
3.2.6 檢索模塊
檢索模塊是通過計(jì)算特征向量的余弦相似度判斷人臉特征向量之間的相似度。本模塊的技術(shù)實(shí)現(xiàn)也是基于C++實(shí)現(xiàn),與特征提取模塊類似,將相似度判斷的組件轉(zhuǎn)化成Android的動(dòng)態(tài)鏈接庫.so文件,實(shí)現(xiàn)C/C++鏈接庫在Android平臺下的直接調(diào)用。
3.2.7 數(shù)據(jù)存儲模塊
數(shù)據(jù)存儲模塊的本地存儲使用嵌入式SQLite關(guān)系數(shù)據(jù)庫,服務(wù)端使用MYSQL關(guān)系數(shù)據(jù)庫,用來存儲人員信息和人臉圖像樣本信息,人臉圖像樣本信息主要存儲經(jīng)人臉檢測及預(yù)處理后裁剪的人臉圖像的信息、未經(jīng)處理的人臉圖像存儲路徑和經(jīng)CNN模型提取的人臉特征向量文件存儲路徑。
4 移動(dòng)終端身份驗(yàn)證系統(tǒng)的測試與分析
4.1 測試環(huán)境
實(shí)驗(yàn)所用的測試移動(dòng)終端為“華為”P9手機(jī),型號是EVA-AL00,處理器為Hisilicon Kirin955,Android 版本是6.0,Opencv2.4.11,NDK采用android-ndk-r10,JNI,數(shù)
據(jù)庫使用SQLlite。服務(wù)端使用windows2008R2,Opencv
2.4.11,Android studio,MYSQL。
4.2 系統(tǒng)測試與分析
本文采用移動(dòng)智能終端進(jìn)行系統(tǒng)的功能測試,首先通過人臉圖像采集模塊采集初始的人臉圖像樣本,經(jīng)過人臉區(qū)域檢測及裁剪保存只有人臉區(qū)域的圖像,將只有人臉區(qū)域的圖像進(jìn)行預(yù)處理,然后通過CNN卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行人臉特征提取,得到采集人臉圖像的人臉特征向量文件,最后與本地的特征向量文件匹配,經(jīng)測試人臉識別時(shí)間在毫秒級。如圖5所示,通過功能和性能的測試,系統(tǒng)的功能和運(yùn)算效率達(dá)到預(yù)期目標(biāo)。
5 結(jié)語
本文提出以成熟的Adaboost人臉檢測算法和CNN卷積神經(jīng)網(wǎng)絡(luò)人臉特征提取算法完成系統(tǒng)的核心設(shè)計(jì),通過在移動(dòng)客戶端和服務(wù)端分布身份認(rèn)證系統(tǒng)各個(gè)模塊的計(jì)算資源,在移動(dòng)客戶端加載調(diào)用CNN模型并提取人臉特征完成識別任務(wù),經(jīng)系統(tǒng)測試證明具有一定的實(shí)時(shí)性能,該人臉采集、檢測、預(yù)處理、特征提取、模型訓(xùn)練、檢索等模塊可以成為獨(dú)立組件,為其他應(yīng)用系統(tǒng)利用人臉識別實(shí)現(xiàn)身份驗(yàn)證應(yīng)用提供可靠的應(yīng)用程序接口。
參 考 文 獻(xiàn)
[1]SUN Y,WANG X,TANG X.Hybrid deep learning for face verification[C].Proceedings of theIEEE International Conference on Computer Vision,2013:1489-1496.
[2]TAIGMAN Y,YANG M,RANZATO M,et al.Deep-face:Closing the gap to human-level per-formancein face verification[C].Proceedings of the IEEE C-
onference on Computer Vision and Pattern Recognition,2014:1701-1708.
[3]SUN Y,WANG X,TANG X.Deep learning face re-presentation from predicting 10,000 classes[C].Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition,2014:1891-1898.
[4]SCHROFF F,KALENICHENKO D,PHILBIN J.Facenet:A unified embedding for face recognition and clustering[C].Proceedings of the IEEE Conferenceon Computer Vision and PatternRecognition,2015:815-823.
[5]PARKHI O M,VEDALDI A,ZISSERMAN A.Deep Face Recognition[C].BMVC :Vol 1,2015:6.
[6]Zhang K,ZhangZ,LiZ,et al.Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks[C].In IEEE International Conferen-ce on Computer Vision and Pattern Recognition(CVPR),2016.
[責(zé)任編輯:鐘聲賢]