黃琳 蔣為 楊鐵軍


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