黃琳 蔣為 楊鐵軍
摘? 要: 人臉識別是生物特征識別的重要內(nèi)容,其應(yīng)用范圍也越來越廣,如手機的人臉解鎖,支付寶的刷臉支付和公共區(qū)域的犯罪分子檢測等。文章提出了一種基于Caffe框架的人臉定位與識別系統(tǒng)的設(shè)計方法。該方法中的人臉定位采用多任務(wù)卷積神經(jīng)網(wǎng)絡(luò)(Multi-task convolutional neural network,簡稱MTCNN),并基于Caffe框架實現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,簡稱CNN)來對人臉進行分類與識別,采用YouTube以及Labeled Faces數(shù)據(jù)集作為實驗數(shù)據(jù)集,實現(xiàn)了人臉定位和人臉識別功能,取得了較好的定位與識別效果。
關(guān)鍵詞: Caffe; MTCNN; 卷積神經(jīng)網(wǎng)絡(luò); 人臉定位; 人臉識別
中圖分類號:TP391.4? ? ? ? ? 文獻標志碼:A? ? ?文章編號:1006-8228(2019)06-56-04
Abstract: Face recognition is an important part of biometric recognition, and its application range becomes wider and wider, such as the face unlock of mobile phones, Alipay's face payment and criminal detection in public areas. This paper proposes a design method of face location and recognition system based on Caffe framework. The multi-task convolutional neural network (MTCNN) is used for face localization, and the Caffe framework based convolutional neural network is used to classify and identify the face. YouTube and Labeled Faces datasets are used in experiment to realize the face location and recognition, and a good effect of localization and recognition is achived.
Key words: Caffe; MTCNN; convolutional neural network; face location; face recognition
0 引言
人臉定位與識別系統(tǒng)[1-3]集成了人工智能、機器識別、機器學(xué)習(xí)、模型理論、專家系統(tǒng)和視頻圖像處理等多種專業(yè)技術(shù),是生物識別技術(shù)的新應(yīng)用。其核心技術(shù)的實現(xiàn)表明弱人工智能正在逐漸向著強人工智能轉(zhuǎn)化?,F(xiàn)人臉識別的應(yīng)用主要有訪問控制系統(tǒng)、視頻監(jiān)控系統(tǒng)、網(wǎng)絡(luò)應(yīng)用程序、相機和智能手機等。其中訪問控制系統(tǒng)指在受保護區(qū)域訪問者可以通過面部識別獲得訪問權(quán)限,如監(jiān)獄,拘留中心,社區(qū)和學(xué)校。視頻監(jiān)控系統(tǒng)可應(yīng)用于監(jiān)控銀行、機場、體育場、商場和超市等公共場所的人群,識別身份。例如,在機場安裝監(jiān)視系統(tǒng)以防止恐怖分子登機。在網(wǎng)絡(luò)應(yīng)用程序方面,可使用面部識別輔助信用卡網(wǎng)絡(luò)支付,以防止非信用卡持卡人使用信用卡,保障支付,防止欺詐等。也可用于考勤系統(tǒng)[4],香港和澳門的中小學(xué)開始使用具有面部識別功能的智能卡來記錄學(xué)生的日??记谟涗?。在相機中具有內(nèi)置人臉識別功能,可以幫助人們進行定位和對焦。在智能手機上的應(yīng)用有解鎖手機并識別用戶,如Android 9.0及更高版本iPhone X。在以上行業(yè)或領(lǐng)域人臉定位與識別取得了極大發(fā)展與應(yīng)用。本文擬設(shè)計并開發(fā)一個基于Caffe框架的人臉定位與識別系統(tǒng)。
1 關(guān)鍵技術(shù)
CNN是一類包含卷積計算且具有深度結(jié)構(gòu)的前饋神經(jīng)網(wǎng)絡(luò)(Feedforward Neural Networks),是深度學(xué)習(xí)的代表算法之一。CNN是圖像識別領(lǐng)域的核心算法之一,并在大量學(xué)習(xí)數(shù)據(jù)時有穩(wěn)定的表現(xiàn)。
Caffe[5]的全名是Convolutional Architecture for Fast Feature Embedding,是一個清晰而高效的深度學(xué)習(xí)框架。它實現(xiàn)了常用的圖像相關(guān)的機器學(xué)習(xí)算法,比如卷積和池化等。另外它是開源、免費的。其核心實現(xiàn)語言是C ++。它支持命令行、Python和Matlab接口,可在CPU和GPU上運行。
Python是一門簡潔易學(xué)的編程語言,具有快速開發(fā)、快速運行、良好的跨平臺性等特征。還擁有良好的學(xué)習(xí)資源,有豐富的社區(qū)支持,遇到任何問題可以快速地在網(wǎng)上找到相應(yīng)的解決辦法。因此本次選用python作為核心編程語言,用它來調(diào)用卷積神經(jīng)網(wǎng)絡(luò)模型,并且使用python來進行圖片的預(yù)處理和處理網(wǎng)絡(luò)請求。
2 系統(tǒng)設(shè)計與實現(xiàn)
使用Caffe框架設(shè)計并實現(xiàn)卷積神經(jīng)網(wǎng)絡(luò),采用VGG-16結(jié)構(gòu),然后在YouTube FaceDB數(shù)據(jù)集和Labeled Faces數(shù)據(jù)集對神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練,使用python接口調(diào)用Caffe訓(xùn)練好的的卷積神經(jīng)網(wǎng)絡(luò)進行人臉定位和識別,并把定位和識別等核心功能封裝成對應(yīng)的python工具類,以供其他python代碼調(diào)用。其實現(xiàn)過程如下。
2.1 下載人臉數(shù)據(jù)集
數(shù)據(jù)集主要來自YouTube FaceDB數(shù)據(jù)集以及Labeled Faces數(shù)據(jù)集。其中YouTube FaceDB是YouTube公司發(fā)布的公開數(shù)據(jù)集,這是一個專為研究視頻人臉識別問題而設(shè)計的人臉視頻數(shù)據(jù)集。該數(shù)據(jù)集包含 1500余個不同人的 3000余個視頻。所有數(shù)據(jù)都是YouTube公司從其YouTube網(wǎng)站上面截取下來的。Labeled Faces數(shù)據(jù)集是為了研究非限制環(huán)境下的人臉識別問題而建立的。這個數(shù)據(jù)集包含超過13,000張人臉圖像,所有數(shù)據(jù)都是研究人員從互聯(lián)網(wǎng)上面下載的。數(shù)據(jù)集中每個人臉均被標注了一個人名。其中,大約有1680個人包含兩個以上的人臉。這個集合被廣泛應(yīng)用于評價人臉認證算法的性能。
2.2 數(shù)據(jù)預(yù)處理
YouTube FaceDB數(shù)據(jù)集是視頻數(shù)據(jù),需要預(yù)先處理成圖片數(shù)據(jù),由于在同一個視頻中出現(xiàn)的人臉為同一個人,所以編寫程序時將視頻的每一幀保存成一張圖片,這些圖片都將其標注為同一個人,并標注人名。在篩選掉臟數(shù)據(jù)后得到大約17000張圖片,共127個人。然后將處理后的數(shù)據(jù)與Labeled Faces數(shù)據(jù)集合并,最終得到3萬余張人臉數(shù)據(jù)集。
進一步分選數(shù)據(jù)為訓(xùn)練集與測試集。訓(xùn)練集的作用是拿來對卷積神經(jīng)網(wǎng)絡(luò)模型進行訓(xùn)練使用的,而測試集對訓(xùn)練完成后的模型測試使用的。其數(shù)據(jù)量的比例大致為10:1。使用隨機函數(shù)將上面得到的數(shù)據(jù)集分成的訓(xùn)練集與測試集,其訓(xùn)練集的數(shù)據(jù)為27000+張圖片,測試集大致為3000張圖片。
2.3 生成清單文件
訓(xùn)練集需要每張圖片有明確的標注,也就是每個圖片中人物的姓名。為方便讀取,可將每個人的人名均替換成了數(shù)字表示,并生成清單文件。文件內(nèi)容部分預(yù)覽如圖1清單文件。其中第一列為圖片名,第二列為人名。
2.4 制作LMDB格式數(shù)據(jù)
由于訓(xùn)練過程中需要反復(fù)讀取數(shù)據(jù),而未經(jīng)處理的圖片格式不利于高速多次的讀寫,將影響神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)讀取的速度,并且將會造成磁盤過量的IO負載,對磁盤的損傷較大,因此需要將數(shù)據(jù)裝換為特定的數(shù)據(jù)格式——LMDB(Lightning Memory-Mapped Database)。Caffe提供了一個生成LMDB格式文件的工具,只需要指定清單文件即可生成LMDB文件。同時在數(shù)據(jù)轉(zhuǎn)換過程中還能對圖片進行resize操作,本系統(tǒng)把圖片全部縮放大小至227*227*1的尺寸,即長寬227像素的灰度圖。
2.5 制作HDF5格式數(shù)據(jù)
由于LMDB格式數(shù)據(jù)只能用于分類任務(wù)的訓(xùn)練,而在人臉定位部分需要做回歸任務(wù)的訓(xùn)練,因此需要將人臉定位功能的訓(xùn)練集做成HDF5格式的數(shù)據(jù)。和LMDB格式文件制作相同,第一步也需要制作清單文件,清單文件格式如圖2人臉定位清單文件。
圖2中,第一列為源文件位置,第二列為人臉的左上角X坐標,第三列為左上角Y坐標,第四列為人臉寬度,第五列為人臉高度。可使用Python的HDF5模塊制作HDF5數(shù)據(jù)。同時在數(shù)據(jù)轉(zhuǎn)換的過程中還能對圖片進行縮放大小的操作,另外在遍歷數(shù)據(jù)的同時計算所有圖像的均值,將均值數(shù)據(jù)保存成均值文件。均值文件可用于圖片預(yù)處理部分,可作減均值處理。
2.6 人臉定位功能
MTCNN[6]能進行人臉定位和關(guān)鍵點檢測,該網(wǎng)絡(luò)總體可分為P-Net、R-Net、和O-Net三層。首先對圖像進行不同層次的縮放來構(gòu)建圖像金字塔,以適應(yīng)不同大小的人臉的進行檢測。然后再通過P-Net網(wǎng)絡(luò)。P-Net(Proposal Network)的基本構(gòu)造是一個全連接網(wǎng)絡(luò)。對上一步構(gòu)建完成的圖像金字塔,通過一個FCN進行初步特征提取與標定邊框,并進行Bounding-Box Regression調(diào)整窗口與NMS進行大部分窗口的過濾。緊接著使用R-Net網(wǎng)絡(luò),R-Net (Refine Network)的基本構(gòu)造是一個卷積神經(jīng)網(wǎng)絡(luò),相對于第一層的P-Net來說,增加了一個全連接層,因此對于輸入數(shù)據(jù)的篩選會更加嚴格。在圖片經(jīng)過P-Net后,會留下許多預(yù)測窗口,將所有的預(yù)測窗口送入R-Net,這個網(wǎng)絡(luò)會濾除大量效果比較差的候選框,最后對選定的候選框進行Bounding-Box Regression和NMS進一步優(yōu)化預(yù)測結(jié)果。最后進入O-Net網(wǎng)絡(luò),O-Net(Output Network)基本結(jié)構(gòu)是一個較為復(fù)雜的卷積神經(jīng)網(wǎng)絡(luò),相對于R-Net來說多了一個卷積層。O-Net的效果與R-Net的區(qū)別在于這一層結(jié)構(gòu)會通過更多的監(jiān)督來識別面部的區(qū)域,而且對人的面部特征點進行回歸,最終輸出五個人臉面部特征點。本系統(tǒng)采用MTCNN進行人臉定位,使用Bootstrap、JQuery、Html技術(shù)實現(xiàn)一個演示程序,輸入某個人臉可得該圖的人臉定位結(jié)果,見圖3,成功定位到人臉位置,根據(jù)得到的人臉位置的X坐標、Y坐標、人臉寬度和人臉高度等信息生成矩形框,把人臉標記出來。
在多張圖片測試結(jié)果如表1,總體具有93%的正確率,能夠高精度準確識別出人臉位置和大小的檢測。
2.7 人臉識別
人臉識別采用卷積神經(jīng)網(wǎng)絡(luò)VGGNet[7]中的VGG-16來實現(xiàn),其結(jié)構(gòu)見圖4。VGGNet是在AlexNet的基礎(chǔ)上發(fā)展而來的,是一個層深更深、網(wǎng)絡(luò)結(jié)構(gòu)更廣的深度卷積神經(jīng)網(wǎng)絡(luò)。它可以看作通過減少卷積核的大?。?*3),五組連續(xù)的卷積核,增加卷積層的層數(shù),提升了識別的準確率。圖3也顯示單張人臉圖像的識別結(jié)果,結(jié)果準確,在測試集上可達到97%的準確率,達到預(yù)期目標。
3 結(jié)束語
本文采用Caffe框架、MTCNN人臉定位網(wǎng)絡(luò)結(jié)構(gòu)以及卷積神經(jīng)網(wǎng)絡(luò)VGG-16為基礎(chǔ)設(shè)計并實現(xiàn)了人臉定位與識別系統(tǒng),該系統(tǒng)能檢測出人臉位置與大小,并進行人臉識別,具有較高的識別準確率,能滿足基本的需要。本系統(tǒng)對其他人臉項目有一定的參考意義。下一步的研究方向是不同角度人臉的識別。
參考文獻(References):
[1] 黨永成.人臉識別技術(shù)綜述及分析[J].電子技術(shù)與軟件工程,2018.3:158
[2] 景晨凱,宋濤,莊雷,劉剛,王樂,劉凱倫.基于深度卷積神經(jīng)網(wǎng)絡(luò)的人臉識別技術(shù)綜述[J].計算機應(yīng)用與軟件,2018.35(1):223-231
[3] 金詩譜,康彥,張書茂.基于大數(shù)據(jù)的深度學(xué)習(xí)技術(shù)在人臉識別中的應(yīng)用[J].重慶科技學(xué)院學(xué)報(自然科學(xué)版),2018.20.
[4] 李冠楠.基于人臉識別企業(yè)考勤系統(tǒng)的研究[J].計算機時代,2017.4:53-55
[5] Caffe, a deep learning framework developed by theBerkeley Vision and Learning Center (BVLC)[OL].http://caffe.berkeleyvision.org/.
[6] Zhang K, Zhang Z, Li Z, et al. Joint Face Detection and?Alignment Using Multitask Cascaded Convolutional Networks[J].IEEE Signal Processing Letters,2016.23(10):1499-1503
[7] Simonyan K, Zisserman A. Very Deep Convolutional?Networks for Large-Scale Image Recognition[J].Computer Science,2014.