謝玲莉
摘要: 為了讓學(xué)生的學(xué)習(xí)、生活更加智能化,提高教學(xué)管理效率,同時(shí)建立一個(gè)更加安全的校園環(huán)境,采用卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)智慧校園人臉識(shí)別。文章對(duì)卷積神經(jīng)網(wǎng)絡(luò)的卷積層、池化層、全連接層和輸出層的原理及實(shí)現(xiàn)進(jìn)行了闡述,訓(xùn)練了olivettifaces人臉數(shù)據(jù)庫(kù)小樣本數(shù)據(jù)集。實(shí)驗(yàn)結(jié)果表明,模型的誤差率降低到5%以下。用數(shù)據(jù)庫(kù)中注冊(cè)的人臉圖像與攝像頭實(shí)時(shí)獲取的人臉圖像進(jìn)行匹配時(shí),效果良好,能滿(mǎn)足設(shè)計(jì)需求。
關(guān)鍵詞: 卷積神經(jīng)網(wǎng)絡(luò); 智慧校園; 人臉識(shí)別; 圖像
中圖分類(lèi)號(hào):TP311? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? ?文章編號(hào):1006-8228(2021)10-72-03
Design and research of convolutional neural networks based intelligent
campus face recognition system
Xie Lingli
(Longyan Agricultural School, Longyan, Fujian 364000, China)
Absrtact: In order to make students' study and life more intelligent, improve the efficiency of teaching management, and at the same time establish a safer campus environment, convolutional neural networks are used to realize smart campus face recognition. This paper describes the principles and implementation of the convolutional layer, pooling layer, fully connected layer and output layer of the convolutional neural networks. The small sample data set of the olivettifaces face database is trained. The experiment results show that the error rate of the model is reduced to 5% or less. When the face image registered in the database is used to match the face image obtained by the camera in actual time, the effect is good and can meet the design requirements.
Key words: convolutional neural networks; smart campus; face recognition; image
0 引言
為了提高學(xué)校的安全管理水平,創(chuàng)建更為安全的學(xué)習(xí)環(huán)境,學(xué)校使用智慧校園人臉識(shí)別系統(tǒng),本系統(tǒng)是一種一對(duì)一的身份驗(yàn)證。智慧校園人臉識(shí)別系統(tǒng)立足于我們學(xué)校智能化的視頻監(jiān)控系統(tǒng)、數(shù)字化校園平臺(tái)以及成熟的物聯(lián)網(wǎng)技術(shù),將學(xué)校在校生和教職員工的人臉等信息通過(guò)管理平臺(tái)上傳到系統(tǒng),建立人臉數(shù)據(jù)庫(kù),人員在識(shí)別時(shí)與人臉庫(kù)比對(duì),確認(rèn)身份,該系統(tǒng)能幫助學(xué)校對(duì)在校學(xué)生的日常行動(dòng)軌跡信息進(jìn)行有效管理分析,加強(qiáng)在校生的日常行為管制能力,并且可以為事后提供數(shù)據(jù),做到異常事件提前預(yù)警,便于教師及時(shí)掌握本地及在線學(xué)生的學(xué)習(xí)狀態(tài)數(shù)據(jù),并及時(shí)對(duì)學(xué)生的學(xué)習(xí)進(jìn)行引導(dǎo)。還可以通過(guò)系統(tǒng)對(duì)教職員工進(jìn)行人事考勤管理。經(jīng)過(guò)攝像機(jī)探測(cè)跟蹤人臉,并自動(dòng)獲取含有人臉的圖像,進(jìn)而對(duì)探測(cè)到的人臉開(kāi)展面部圖像獲取、人臉定位、人臉識(shí)別,本系統(tǒng)有效助力實(shí)現(xiàn)校園場(chǎng)景智能監(jiān)控,提升校園安全系數(shù)。
1 人臉圖像采集
人臉識(shí)別是基于人臉特征的唯一性進(jìn)行身份識(shí)別的一種方法,學(xué)校在新生注冊(cè)報(bào)名登記時(shí),利用PCP人像采集系統(tǒng)4.0,統(tǒng)一進(jìn)行人臉采集,采集的是靜態(tài)圖像,以JPG格式存儲(chǔ)到計(jì)算機(jī)內(nèi),形成人臉圖像文件,每張人臉圖像大小限制在100K以?xún)?nèi),學(xué)生按姓名+學(xué)號(hào)命名,以班級(jí)為單位收集,教職員工按工號(hào)命名,將這些圖像文件生成相對(duì)應(yīng)的編碼,以便計(jì)算機(jī)識(shí)別處理,采集學(xué)生的人臉照片可以用于學(xué)籍檔案、學(xué)生證和一卡通等,教職員工可用于上班考勤,該軟件支持從攝像機(jī)直接讀取圖像,同時(shí)支持照片與數(shù)據(jù)的批量導(dǎo)入導(dǎo)出,方便與第三方系統(tǒng)進(jìn)行對(duì)接。另一種是經(jīng)過(guò)學(xué)校大門(mén)的臨時(shí)人員,用攝像機(jī)捕捉當(dāng)前的人臉圖像,并將當(dāng)前獲取的人臉圖像文件生成面紋編碼。
2 軟件系統(tǒng)設(shè)計(jì)
2.1 卷積神經(jīng)網(wǎng)絡(luò)簡(jiǎn)介
本論文使用卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)智慧校園人臉識(shí)別,[1]在機(jī)器學(xué)習(xí)中,卷積神經(jīng)網(wǎng)絡(luò)是一種深度前饋人工神經(jīng)網(wǎng)絡(luò),人工神經(jīng)元可以響應(yīng)周?chē)鷨卧?,可以進(jìn)行大型圖像處理,已成功的應(yīng)用于圖像識(shí)別。卷積神經(jīng)網(wǎng)絡(luò)由于[2]它的局部感知和權(quán)值共享結(jié)構(gòu),使其更接近現(xiàn)實(shí)世界的生物神經(jīng)網(wǎng)絡(luò),權(quán)值共享結(jié)構(gòu)降低了神經(jīng)網(wǎng)絡(luò)的復(fù)雜度,這樣可以避免進(jìn)行數(shù)據(jù)重建時(shí),特征提取與分類(lèi)過(guò)程的復(fù)雜度。卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練是基于python,圖像庫(kù)PIL、矩陣計(jì)算Numpy,深度學(xué)習(xí)庫(kù)theano。
2.2 數(shù)據(jù)的預(yù)處理
在將學(xué)習(xí)數(shù)據(jù)輸入卷積神經(jīng)網(wǎng)絡(luò)前,對(duì)原始圖像數(shù)據(jù)進(jìn)行預(yù)處理,本論文用的訓(xùn)練數(shù)據(jù)是[3]olivettifaces人臉數(shù)據(jù)庫(kù),是紐約大學(xué)組建的一個(gè)比較小的人臉數(shù)據(jù)庫(kù),包含40個(gè)人的人臉圖片,每個(gè)人10張人臉樣本,組成一張有400張人臉的大圖片,整張圖片大小是1190*942,每張照片大小是(1190/20)(942/20)= 57*47。訓(xùn)練數(shù)據(jù)RGB數(shù)據(jù)范圍在[0,255]之間,不需要再進(jìn)行歸一化處理,需對(duì)訓(xùn)練圖片進(jìn)行去均值、白化預(yù)處理操作,去均值是將各個(gè)特征值減數(shù)據(jù)集RGB通道的均值,使得數(shù)據(jù)的分布變?yōu)榫?,方差為1的數(shù)據(jù),先將訓(xùn)練數(shù)據(jù)導(dǎo)入numpy庫(kù),在Python中的代碼:import numpy as np; X -= np.mean(400, axis = 0)。白化的目的降低輸入的冗余性,減少特征之間的相關(guān)性,讓訓(xùn)練數(shù)據(jù)具有相同的分布。CNN 執(zhí)行的是有監(jiān)督的訓(xùn)練,需將圖片數(shù)據(jù)統(tǒng)一格式,對(duì)訓(xùn)練數(shù)據(jù)帶上標(biāo)簽(labels),每個(gè)人的10張人臉樣本,設(shè)置一個(gè)相同的標(biāo)簽,標(biāo)簽的值域需符合激活函數(shù)的值,對(duì)命名好的400張圖片劃分為數(shù)據(jù)集(train_data),驗(yàn)證集(valid_data),訓(xùn)練集(test_data)三個(gè)數(shù)據(jù)集:
# 劃分?jǐn)?shù)據(jù)集
train_data=numpy.empty((320,2679))
train_label=numpy.empty(320)
valid_data=numpy.empty((40,2679))
valid_label=numpy.empty(40)
test_data=numpy.empty((40,2679))
test_label=numpy.empty(40)
for i in range(40):
……
2.3 卷積
卷積層主要完成圖像的特征提取,使用卷積核與輸入圖像進(jìn)行卷積運(yùn)算,卷積核在工作時(shí),將卷積核沿著輸入圖像(或特征圖像)的水平方向和垂直方向以一定的步長(zhǎng)(stride)進(jìn)行滑動(dòng),每移動(dòng)一個(gè)步長(zhǎng),會(huì)有規(guī)律地掃過(guò)輸入特征,在感受野內(nèi)對(duì)輸入圖像和filter的對(duì)應(yīng)位置元素相乘再求和,最后加上偏置項(xiàng),運(yùn)算結(jié)果被放置在與卷積核位置相對(duì)應(yīng)的輸出特征圖像上,隨著滑動(dòng)的結(jié)束,可以得到一張新的特征圖。卷積運(yùn)算是一種線性運(yùn)算,需要引入非線性函數(shù)(即激活函數(shù))來(lái)增強(qiáng)網(wǎng)絡(luò)的性能,保證卷積神經(jīng)網(wǎng)絡(luò)的非線性能力,然后經(jīng)過(guò)激勵(lì)函數(shù)計(jì)算后送入池化層。Relu激活函數(shù)具有收斂快,求梯度簡(jiǎn)單,對(duì)輸入的負(fù)值輸出全為0,對(duì)于輸入正值原樣輸出。為了描述卷積計(jì)算過(guò)程,在卷積過(guò)程中,輸入圖像的每個(gè)像素需要進(jìn)行編號(hào),用xi,j表示圖像的第 i行第j列元素;用wm,n表示第m行第n列權(quán)重,用wb表示filter的偏置項(xiàng),用f表示激活項(xiàng),用ai,j表示Feature Map的第i行第j列元素,計(jì)算卷積的公式:
[ai,j=f(m=0m.n=0nwm,nxi+m,j+n,+wb)] ⑴
假設(shè)有一個(gè)7*7的圖像,使用一個(gè)3*3的過(guò)濾器進(jìn)行卷積,卷積的步長(zhǎng)為2,根據(jù)公式⑴,對(duì)于輸出圖左上角元素a0,0 來(lái)說(shuō),其卷積計(jì)算方法為:
a0,0=relu(w0,0x0,0+w0,1x0,1+w0,2x0,2+w1,0x1,0+w1,1x1,1
+w1,2x1,2+w2,0x2,0+w2,1x2,1+w2,2x2,2)
=relu(1*1+1*1+1*1)
=3
依次求出ai,j的值,得到一個(gè)3*3的Feature Map,如圖1所示。
以上工作重復(fù)進(jìn)行,直至差平方和為0,模型訓(xùn)練完畢,可以交付使用。
2.4 池化
在圖像分類(lèi)任務(wù)中,只關(guān)心某個(gè)特征是否出現(xiàn),不需要關(guān)心它出現(xiàn)的具體位置,而池化在獲取圖像時(shí),具有平移不變性,正好滿(mǎn)足這樣的需求。池化層在連續(xù)的卷積層中間,主要用于特征降維,提高計(jì)算速度,減小過(guò)擬合。為了減少網(wǎng)絡(luò)參數(shù)優(yōu)化結(jié)構(gòu),最常見(jiàn)的池化操作有平均池化(average pooling)、最大池化(max pooling),實(shí)際最大池化用得較多。對(duì)于每個(gè)2*2的窗口選出最大的數(shù)作為輸出矩陣的相應(yīng)元素的值,其操作過(guò)程如圖2所示。
池化層與卷積層經(jīng)常成對(duì)出現(xiàn),通過(guò)池化操作,特征不變性和特征降維,一定程度上防止過(guò)擬合,增強(qiáng)網(wǎng)絡(luò)對(duì)圖像的魯棒性。
2.5 全連接層
全連接層的作用主要就是實(shí)現(xiàn)分類(lèi)[4],全連接層的每一個(gè)結(jié)點(diǎn)都與上一層的所有結(jié)點(diǎn)相連,用來(lái)把前面提取到的特征綜合起來(lái),全連接層一般會(huì)把卷積輸出的二維特征圖(feature map)轉(zhuǎn)化為一維(N*1)的一個(gè)向量,對(duì)這個(gè)向量做乘法,最終降低其維度。
根據(jù)圖1,feature map是3×3×3,那么就需要把這個(gè)feature map 拉成27×1的列向量,相當(dāng)于有了27個(gè)像素點(diǎn),這時(shí)候,再乘一個(gè)權(quán)重,這個(gè)權(quán)重要把27個(gè)像素點(diǎn)都包含進(jìn)去,這個(gè)權(quán)重的矩陣形式應(yīng)該是1×27,所以經(jīng)過(guò)一個(gè)全連接層后的輸出就是1×27×27×1=1×1,假如需要3個(gè)1×1的神經(jīng)元,輸出為3X(1×27×27×1)=3×(1×1)。這個(gè)3在權(quán)重矩陣中代表3行,即每一行與輸入相乘,得到一個(gè)輸出:
2.6 輸出
分類(lèi)器的作用就是將這些通過(guò)全連接層的特征按照概率分布,輸出屬于一類(lèi)的概率或分類(lèi)結(jié)果。本論文的分類(lèi)函數(shù)使用的是softmax函數(shù),softmax函數(shù)的每個(gè)輸出信號(hào)值在0至1之間,且輸出值的總和為1,因此,把softmax函數(shù)的結(jié)果可以看做概率分布,一般而言,神經(jīng)網(wǎng)絡(luò)只把輸出值最大的神經(jīng)元所對(duì)應(yīng)的類(lèi)別作為識(shí)別結(jié)果。
softmax函數(shù)的公式:
[yk=ceajci=1neai] ⑵
這個(gè)公式[5]表示假設(shè)輸出層共有n個(gè)神經(jīng)元,計(jì)算第k個(gè)神經(jīng)元的輸出。softmax函數(shù)的分子是輸出層輸入信號(hào)的指數(shù)函數(shù),分母是所有輸入信號(hào)的指數(shù)函數(shù)的和,這里的C可以使用任何值,為了防止溢出,一般會(huì)使用輸入信號(hào)中的最大值。根據(jù)公式⑵,softmax函數(shù)的python 編程如下:
Import numpy as np
Defsoftmax(a):
Exp=np.exp(a-c)
Sum_exp=np.exp(exp)
Y=exp/sum_exp
Return y
A=np.array([3,1,-3])
Y=softmax(a)
Print(y)
Print(y.(sum))
輸出為:
[0.87912088? 0.11868132? ? 0.0021978]
1.0
3 實(shí)驗(yàn)與分析
系統(tǒng)設(shè)計(jì)好之后,對(duì)系統(tǒng)的功能進(jìn)行初步測(cè)試,測(cè)試本文方法在智慧校園人臉識(shí)別中的應(yīng)用性能,對(duì)olivettifaces人臉數(shù)據(jù)庫(kù)中的10人共80張人臉圖像作為研究樣本進(jìn)行特征提取,能實(shí)現(xiàn)人臉的準(zhǔn)確識(shí)別,對(duì)數(shù)據(jù)庫(kù)中注冊(cè)的人臉與攝像頭實(shí)時(shí)獲取的人臉進(jìn)行匹配,顯示有95%的相似度,滿(mǎn)足設(shè)計(jì)需求。
4 結(jié)束語(yǔ)
在這人工智能技術(shù)時(shí)代,生物識(shí)別檢測(cè)技術(shù)已經(jīng)成熟并被用于普通的電子數(shù)字設(shè)備中,人臉識(shí)別實(shí)現(xiàn)身份驗(yàn)證,在很多的領(lǐng)域都被使用,該方法易于被師生接受。本文研究了在卷積神經(jīng)網(wǎng)絡(luò)下的人臉識(shí)別,介紹了卷積層對(duì)輸入數(shù)據(jù)進(jìn)行特征提取,池化層在一定程度上防止過(guò)擬合,增強(qiáng)網(wǎng)絡(luò)對(duì)圖像的魯棒性,softmax函數(shù)對(duì)全連接層的特征進(jìn)行了分類(lèi),輸出結(jié)果以概率分布,得到非常理想的識(shí)別結(jié)果,能夠?qū)崿F(xiàn)智慧校園的人臉識(shí)別。該系統(tǒng)可推廣應(yīng)用于智慧小區(qū),系統(tǒng)的不足之處是使用小樣本數(shù)據(jù)集建模,隨著數(shù)據(jù)量的增加,該系統(tǒng)還需進(jìn)一步完善。
參考文獻(xiàn)(References):
[1] 劉菁琪.淺析機(jī)器學(xué)習(xí)在氣候研究中的應(yīng)用[J].通訊世界,2018.9:218-219
[2] 王嘉鑫,鄒科文,陳義明.基于卷積神經(jīng)網(wǎng)絡(luò)的人臉識(shí)別[J].電腦知識(shí)與技術(shù),2016:187-190
[3] wepon.利用 python PIL.Cpickle讀取和保存圖像數(shù)據(jù)庫(kù)[EB/OL].http://blog.csdn.net/u012162613/article/details/43226127.
[4] 張文濤,陳嬋娟,王澤荔.一種多尺度輕量化的人臉識(shí)別算法[J].現(xiàn)代計(jì)算機(jī)《專(zhuān)業(yè)版本》,2018.10.
[5] [日]齋藤康毅.深度學(xué)習(xí)入門(mén)基于python的理論與實(shí)現(xiàn)[M].人民郵電出版社,2018.