解駿+陳瑋
摘要:傳統(tǒng)的人臉識別多采用淺層結(jié)構(gòu)提取人臉特征,這類方法提取人臉圖像能力有限,效果相對較差。針對上述缺陷,提出基于卷積神經(jīng)網(wǎng)絡的高效識別人臉方法。該方法所設計的模型,結(jié)合了VGGNet模型的層次結(jié)構(gòu)優(yōu)勢并融合跨層次結(jié)構(gòu)的上采樣特征,大大提高了人臉識別的準確性及識別精度。該模型在Caffe下訓練出樣本集后在MATLAB上得到了驗證。
關(guān)鍵詞:人臉識別;卷積神經(jīng)網(wǎng)絡;Ubuntu Caffe;MATLAB
DOIDOI:10.11907/rjdk.172221
中圖分類號:TP301
文獻標識碼:A文章編號文章編號:16727800(2018)001002503
Abstract:Traditional face recognition uses shallow structure to extract facial features.This method has limited ability to extract face images, and the effect is relatively poor.With the development of cognitive science and brain science, an efficient face recognition method based on convolutional neural network is proposed.The proposed model combines the hierarchical structure of VGGNet model and combines the sampled features across hierarchical structures,after the model is trained under Caffe, the result is verified on MATLAB.This method greatly improves the accuracy of face recognition and improves the recognition accuracy.
Key Words:face recognition; convolutional neural network; Ubuntu Caffe; MATLAB
0引言
卷積神經(jīng)網(wǎng)絡是近年發(fā)展起來的一種高效識別方法。20世紀60年代,Hubel和Wiesel在研究貓腦皮層中用于局部敏感和方向選擇的神經(jīng)元時,發(fā)現(xiàn)其獨特的網(wǎng)絡結(jié)構(gòu)可以有效降低反饋神經(jīng)網(wǎng)絡的復雜性,繼而提出了卷積神經(jīng)網(wǎng)絡(Convolutional Neural Networks,簡稱CNN)?,F(xiàn)在,CNN已成為眾多科學領(lǐng)域的研究熱點之一,特別是在模式分類領(lǐng)域,由于該網(wǎng)絡避免了圖像前期復雜的預處理,可直接輸入原始圖像,因而得到了廣泛的應用[1]。K.Fukushima在1980年首次提出了新識別機制,隨后很多科研工作者對該網(wǎng)絡進行了改進[23]。
1神經(jīng)網(wǎng)絡
1.1淺層網(wǎng)絡與深層網(wǎng)絡
淺層網(wǎng)絡通常也叫做傳統(tǒng)的神經(jīng)網(wǎng)絡。神經(jīng)網(wǎng)絡來源于嘗試尋找生物系統(tǒng)信息處理的數(shù)字表示(McCulloch and Pitts,1943;Widrow and Hoff,1960;Rosenblatt,1962;Rumelhart et al.,1986)。這個模型被廣泛使用,許多模型過分夸張地宣稱其具有生物的可信性[4]。然而,從模式識別的應用角度來說,模仿生物的真實性會帶來相當多的限制。因此,應著重研究作為統(tǒng)計模式識別的高效神經(jīng)網(wǎng)絡,即多層感知器[5]。
1.2卷積神經(jīng)網(wǎng)絡
卷積神經(jīng)網(wǎng)絡本質(zhì)上是一個多層神經(jīng)網(wǎng)絡,但不同于傳統(tǒng)的神經(jīng)網(wǎng)絡,每一層上都會有許多的二維平面,并且這些二維平面都含有獨立的神經(jīng)元,大致結(jié)構(gòu)如圖1所示[6]。
圖1給定一副輸入圖像,C1層就是卷積神經(jīng)網(wǎng)絡中非常特殊的卷積層。可以看到輸入圖像經(jīng)過C1層得到了3張?zhí)卣饔成鋱D,這是因為在C1層上人為設定了3個不同的卷積核,每一張?zhí)卣饔成鋱D都對應于卷積核中的權(quán)重[79]。S2層是卷積神經(jīng)網(wǎng)中常見的下采樣層,它通過一個固定窗口對特征圖像進行聚合統(tǒng)計,實現(xiàn)特征圖像分辨率的下采樣。同理,C3層獲取更抽象的特征圖,S4層繼續(xù)下采樣降低學習難度。最終網(wǎng)絡的最后一層或幾層設計成全連接層,目的是為了提取更少、更好的特征將其提供給分類器[1011]。
在卷積神經(jīng)網(wǎng)絡中,圖1的C層作為特征提取層,該層上輸出的每一個神經(jīng)元與上一層中的局部相連,其值就是上一層中的特征映射值。這樣的局部特征只要提取出來,它相對于其它特征的空間位置關(guān)系也會確定下來。S層是特征值下采樣層,對C層輸出的特征映射圖中的特征值進行聚合統(tǒng)計[78]。在卷積神經(jīng)網(wǎng)絡中C層和S層的共同作用下,輸入圖像的特征映射結(jié)果具有位移不變性。
由于一個映射面上的神經(jīng)元共享權(quán)值,因而減少了網(wǎng)絡自由參數(shù)的個數(shù),降低了網(wǎng)絡參數(shù)選擇的復雜度。卷積神經(jīng)網(wǎng)絡中的每一個特征提取層(C層)都緊跟一個用來求局部平均與二次提取的計算層(S層),這種特有的兩次特征提取結(jié)構(gòu),使網(wǎng)絡在識別時對輸入樣本有較高的畸變?nèi)萑棠芰1213]。
2深度學習框架—Caffe
Caffe支持命令行、python和MATLAB接口,核心語言是C++,它是一種操作簡單、執(zhí)行效率高的深度學習框架,可在CPU和GPU之間無縫切換,其創(chuàng)始人是賈楊清。Caffe問世至今,由于它在使用上簡潔方便,執(zhí)行上效率高效,實現(xiàn)上有著清晰的分層網(wǎng)絡定義,具有較強的可讀性、可移植性和結(jié)構(gòu)化等特點,使其在深度學習領(lǐng)域廣受青睞。
2.1Caffe特點endprint
(1)模塊化。模塊化設計可達到對網(wǎng)絡層、損失函數(shù)以及數(shù)據(jù)格式進行獨立擴展。
(2)表示和實現(xiàn)分離。一般利用Protocol Buffer語言將Caffe的模型定義寫進配置文件,采用任意有向無環(huán)圖進行構(gòu)思。Caffe支持網(wǎng)絡架構(gòu),可依據(jù)網(wǎng)絡需要自動調(diào)節(jié)程序或系統(tǒng)所占內(nèi)存。通過調(diào)用某個函數(shù),實現(xiàn)CPU和GPU的切換。
(3)測試覆蓋。在Caffe中,任意一個單一的模塊都有一個相對應的測試。
(4)Caffe同時提供Python和MATLAB接口。本實驗最后需要在Caffe提供MATLAB接口,然后在MATLAB上實現(xiàn)驗證結(jié)果。
(5)預訓練參考模型。對于視覺項目,Caffe有針對性地提供了一系列參考模型,這些模型僅用于非商業(yè)或?qū)W術(shù)領(lǐng)域,它們的License不是BSD。
2.2Caffe架構(gòu)
(1)數(shù)據(jù)存儲。Caffe通過“Blobs”方式存儲數(shù)據(jù),即利用四維數(shù)組方式存儲與傳遞數(shù)據(jù)。采用Blobs方式會有一個統(tǒng)一的內(nèi)存接口,專門用來操作批量圖像(以及其它數(shù)據(jù))或更新參數(shù)。而Models則以Google Protocol Buffers的方式在磁盤中存儲,若有大型數(shù)據(jù)則存儲在LevelDB數(shù)據(jù)庫中[13]。
(2)網(wǎng)絡層。Caffe層以一個或多個Blobs輸入,隨即計算出一個或多個Blobs輸出。網(wǎng)絡是一個整體的操作,而層有兩個主要職責:①前向傳播,需要輸入并產(chǎn)生輸出;②反向傳播,獲得梯度并將它作為輸出,再以參數(shù)和輸入計算出梯度。Caffe提供了一套完整的層類模型,這些層類模型既簡單也實用。
(3)網(wǎng)絡運行方式。Caffe保存全部的有向無環(huán)層圖,以保證訓練樣本準確無誤地進行前向傳播及反向傳播。Caffe作為一個終端到終端的機器學習系統(tǒng),起始于數(shù)據(jù)層,終止于loss層。借助某個單一開關(guān),使其網(wǎng)絡在CPU與GPU上有效運行。此外在CPU或GPU上,層于層之間結(jié)果相同。
(4)訓練網(wǎng)絡。Caffe在執(zhí)行一個訓練時,憑借的是高效、精確的隨機梯度下降算法。在Caffe模型中,微調(diào)作為一個標準的方法,適用于已存在的模型或新的架構(gòu)及數(shù)據(jù)。當執(zhí)行新任務時,Caffe即微調(diào)舊的模型權(quán)重,再依據(jù)開發(fā)人員需求,將新的權(quán)重參數(shù)初始化,最終達到縮短訓練時間、提高模型精度的要求。
3實驗環(huán)境和結(jié)果分析
3.1實驗目的
本實驗在Caffe上調(diào)用改進的VGGNet網(wǎng)絡模型訓練樣本集,然后在MATLAB上輸入一個樣本照片,通過MatCaffe接口在MATLAB上調(diào)用Caffe訓練好的樣本集,從而識別輸入樣本對應樣本集中的哪個人、相似度多少。
圖2為VGGNet網(wǎng)絡結(jié)構(gòu)模型,在fc1和fc2后加入了dropout算法,通過一定的概率屏蔽部分神經(jīng)元,從而防止隨著網(wǎng)絡深度的增加出現(xiàn)過擬合問題。同時通過修改每個神經(jīng)元的非線性激活函數(shù),為relu加快網(wǎng)絡的訓練時間。通過加入改進后的算法得到了更好的訓練曲線,減少了大量的訓練時間。
3.2實驗環(huán)境及數(shù)據(jù)
本文在Ubuntu64位系統(tǒng)下調(diào)用Caffe框架和MATLAB實驗,樣本圖片基于AR人臉庫數(shù)據(jù),加上實際人臉采樣數(shù)據(jù),通過MATLAB把所有圖片轉(zhuǎn)換成大小為224×224的jpg格式文件,部分如圖3所示。
3.3結(jié)果分析
在Caffe框架上通過改進的VGGNet模型,將訓練樣本完成為二進制文件存儲,如圖4所示,從左到右依次為訓練迭代第40次和訓練完成輸出結(jié)果的二進制文件以及文件內(nèi)容。
在MATLAB上調(diào)用訓練好的模型輸入圖片,識別對應的模型里訓練好的人名,并給出相似度,如圖5所示。
基于卷積神經(jīng)網(wǎng)絡的訓練準確率大大高于傳統(tǒng)人臉識別算法,而且受光照等外部條件影響較小,本文提出的改進的VGGNet網(wǎng)絡訓練出來的結(jié)果效率高達98%以上,而且訓練速度也較快。
4結(jié)語
本文基于深度學習的基礎框架(卷積神經(jīng)網(wǎng)絡),對當前機器視覺在目標識別上出現(xiàn)的問題進行了研究。根據(jù)自然場景復雜多變的情況,設計了一個適合于這種高度變化的數(shù)據(jù)集上的一種深度卷積神經(jīng)網(wǎng)絡架構(gòu),并利用其監(jiān)督學習的特點完成了模型的訓練過程。
本文的網(wǎng)絡結(jié)構(gòu)還有許多可以改進和優(yōu)化的地方。隨著21世紀人工智能在機器視覺上的發(fā)展,深度學習將在目標識別的技術(shù)層面得到跨越,會出現(xiàn)更多的機器視覺產(chǎn)品。
參考文獻:
[1]GIRSHICK R, DONAHUE J, DARRELL T, et al. Rich feature hierarchies for accurate object detection and semantic segmentation[J]. Computer Science,2014(2):580587.
[2]HE K, ZHANG X, REN S, et al. Spatial pyramid pooling in deep convolutional networks for visual recognition[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence,2015,37(9):19041916.
[3]SIMONYAN K, ZISSERMAN A. Very deep convolutional networks for largescale image recognition[J]. Computer Science,2014(5):241256.
[4]SHELHAMER E, LONG J, DARRELL T. Fully convolutional networks for semantic segmentation[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence,2014,79(10):13371342.endprint
[5]REDMON J, DIVVALA S, GIRSHICK R, et al. You only look once: unified, realtime object detection[J]. Computer Science,2016(3):422430.
[6]LIU W, ANGUELOV D, ERHAN D, et al. SSD: single shot multibox detector[EB/OL]. http://www.cnblogs.com/zhangyd/p/6596913.html,2015.
[7]KRIZHEVSKY A, SUTSKEVER I, HINTON G E. Imagenet classification with deep convolutional neural networks[J]. Advances in Neural Information Processing Systems,2012,25(2):2029.
[8]REN S, HE K, GIRSHICK R, et al. Faster RCNN: towards realtime object detection with region proposal networks[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence,2016(6):110.
[9]UIJLINGS J R R, SANDE K E A V D. Selective search for object recognition[J]. International Journal of Computer Vision,2013,104(2):154171.
[10]CARREIRA J, RUI C, BATISTA J, et al. Semantic segmentation with secondorder pooling[J]. Lecture Notes in Computer Science,2012,7578(1):430443.
[11]DAN C C, GIUSTI A, GAMBARDELLA L M, et al. Deep neural networks segment neuronal membranes in electron microscopy Images[J]. Advances in Neural Information Processing Systems,2012(25):28522860.
[12]DAI J, HE K, SUN J. Convolutional feature masking for joint object and stuff segmentation[EB/OL]. http://www.taodocs.com/p41599543.html,2014.
[13]盧宏濤,張秦川.深度卷積神經(jīng)網(wǎng)絡在計算機視覺中的應用研究綜述[J].數(shù)據(jù)采集與處理,2016,31(1):117.
(責任編輯:杜能鋼)endprint