黃琳 蔣為 楊鐵軍


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