謝玲莉



摘要: 為了讓學生的學習、生活更加智能化,提高教學管理效率,同時建立一個更加安全的校園環境,采用卷積神經網絡實現智慧校園人臉識別。文章對卷積神經網絡的卷積層、池化層、全連接層和輸出層的原理及實現進行了闡述,訓練了olivettifaces人臉數據庫小樣本數據集。實驗結果表明,模型的誤差率降低到5%以下。用數據庫中注冊的人臉圖像與攝像頭實時獲取的人臉圖像進行匹配時,效果良好,能滿足設計需求。
關鍵詞: 卷積神經網絡; 智慧校園; 人臉識別; 圖像
中圖分類號:TP311? ? ? ? ? 文獻標識碼:A? ? ?文章編號: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 引言
為了提高學校的安全管理水平,創建更為安全的學習環境,學校使用智慧校園人臉識別系統,本系統是一種一對一的身份驗證。智慧校園人臉識別系統立足于我們學校智能化的視頻監控系統、數字化校園平臺以及成熟的物聯網技術,將學校在校生和教職員工的人臉等信息通過管理平臺上傳到系統,建立人臉數據庫,人員在識別時與人臉庫比對,確認身份,該系統能幫助學校對在校學生的日常行動軌跡信息進行有效管理分析,加強在校生的日常行為管制能力,并且可以為事后提供數據,做到異常事件提前預警,便于教師及時掌握本地及在線學生的學習狀態數據,并及時對學生的學習進行引導。還可以通過系統對教職員工進行人事考勤管理。經過攝像機探測跟蹤人臉,并自動獲取含有人臉的圖像,進而對探測到的人臉開展面部圖像獲取、人臉定位、人臉識別,本系統有效助力實現校園場景智能監控,提升校園安全系數。
1 人臉圖像采集
人臉識別是基于人臉特征的唯一性進行身份識別的一種方法,學校在新生注冊報名登記時,利用PCP人像采集系統4.0,統一進行人臉采集,采集的是靜態圖像,以JPG格式存儲到計算機內,形成人臉圖像文件,每張人臉圖像大小限制在100K以內,學生按姓名+學號命名,以班級為單位收集,教職員工按工號命名,將這些圖像文件生成相對應的編碼,以便計算機識別處理,采集學生的人臉照片可以用于學籍檔案、學生證和一卡通等,教職員工可用于上班考勤,該軟件支持從攝像機直接讀取圖像,同時支持照片與數據的批量導入導出,方便與第三方系統進行對接。另一種是經過學校大門的臨時人員,用攝像機捕捉當前的人臉圖像,并將當前獲取的人臉圖像文件生成面紋編碼。
2 軟件系統設計
2.1 卷積神經網絡簡介
本論文使用卷積神經網絡實現智慧校園人臉識別,[1]在機器學習中,卷積神經網絡是一種深度前饋人工神經網絡,人工神經元可以響應周圍單元,可以進行大型圖像處理,已成功的應用于圖像識別。卷積神經網絡由于[2]它的局部感知和權值共享結構,使其更接近現實世界的生物神經網絡,權值共享結構降低了神經網絡的復雜度,這樣可以避免進行數據重建時,特征提取與分類過程的復雜度。卷積神經網絡的訓練是基于python,圖像庫PIL、矩陣計算Numpy,深度學習庫theano。
2.2 數據的預處理
在將學習數據輸入卷積神經網絡前,對原始圖像數據進行預處理,本論文用的訓練數據是[3]olivettifaces人臉數據庫,是紐約大學組建的一個比較小的人臉數據庫,包含40個人的人臉圖片,每個人10張人臉樣本,組成一張有400張人臉的大圖片,整張圖片大小是1190*942,每張照片大小是(1190/20)(942/20)= 57*47。訓練數據RGB數據范圍在[0,255]之間,不需要再進行歸一化處理,需對訓練圖片進行去均值、白化預處理操作,去均值是將各個特征值減數據集RGB通道的均值,使得數據的分布變為均值0,方差為1的數據,先將訓練數據導入numpy庫,在Python中的代碼:import numpy as np; X -= np.mean(400, axis = 0)。白化的目的降低輸入的冗余性,減少特征之間的相關性,讓訓練數據具有相同的分布。CNN 執行的是有監督的訓練,需將圖片數據統一格式,對訓練數據帶上標簽(labels),每個人的10張人臉樣本,設置一個相同的標簽,標簽的值域需符合激活函數的值,對命名好的400張圖片劃分為數據集(train_data),驗證集(valid_data),訓練集(test_data)三個數據集:
# 劃分數據集
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 卷積
卷積層主要完成圖像的特征提取,使用卷積核與輸入圖像進行卷積運算,卷積核在工作時,將卷積核沿著輸入圖像(或特征圖像)的水平方向和垂直方向以一定的步長(stride)進行滑動,每移動一個步長,會有規律地掃過輸入特征,在感受野內對輸入圖像和filter的對應位置元素相乘再求和,最后加上偏置項,運算結果被放置在與卷積核位置相對應的輸出特征圖像上,隨著滑動的結束,可以得到一張新的特征圖。卷積運算是一種線性運算,需要引入非線性函數(即激活函數)來增強網絡的性能,保證卷積神經網絡的非線性能力,然后經過激勵函數計算后送入池化層。Relu激活函數具有收斂快,求梯度簡單,對輸入的負值輸出全為0,對于輸入正值原樣輸出。為了描述卷積計算過程,在卷積過程中,輸入圖像的每個像素需要進行編號,用xi,j表示圖像的第 i行第j列元素;用wm,n表示第m行第n列權重,用wb表示filter的偏置項,用f表示激活項,用ai,j表示Feature Map的第i行第j列元素,計算卷積的公式:
[ai,j=f(m=0m.n=0nwm,nxi+m,j+n,+wb)] ⑴
假設有一個7*7的圖像,使用一個3*3的過濾器進行卷積,卷積的步長為2,根據公式⑴,對于輸出圖左上角元素a0,0 來說,其卷積計算方法為:
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的值,得到一個3*3的Feature Map,如圖1所示。
以上工作重復進行,直至差平方和為0,模型訓練完畢,可以交付使用。
2.4 池化
在圖像分類任務中,只關心某個特征是否出現,不需要關心它出現的具體位置,而池化在獲取圖像時,具有平移不變性,正好滿足這樣的需求。池化層在連續的卷積層中間,主要用于特征降維,提高計算速度,減小過擬合。為了減少網絡參數優化結構,最常見的池化操作有平均池化(average pooling)、最大池化(max pooling),實際最大池化用得較多。對于每個2*2的窗口選出最大的數作為輸出矩陣的相應元素的值,其操作過程如圖2所示。
池化層與卷積層經常成對出現,通過池化操作,特征不變性和特征降維,一定程度上防止過擬合,增強網絡對圖像的魯棒性。
2.5 全連接層
全連接層的作用主要就是實現分類[4],全連接層的每一個結點都與上一層的所有結點相連,用來把前面提取到的特征綜合起來,全連接層一般會把卷積輸出的二維特征圖(feature map)轉化為一維(N*1)的一個向量,對這個向量做乘法,最終降低其維度。
根據圖1,feature map是3×3×3,那么就需要把這個feature map 拉成27×1的列向量,相當于有了27個像素點,這時候,再乘一個權重,這個權重要把27個像素點都包含進去,這個權重的矩陣形式應該是1×27,所以經過一個全連接層后的輸出就是1×27×27×1=1×1,假如需要3個1×1的神經元,輸出為3X(1×27×27×1)=3×(1×1)。這個3在權重矩陣中代表3行,即每一行與輸入相乘,得到一個輸出:
2.6 輸出
分類器的作用就是將這些通過全連接層的特征按照概率分布,輸出屬于一類的概率或分類結果。本論文的分類函數使用的是softmax函數,softmax函數的每個輸出信號值在0至1之間,且輸出值的總和為1,因此,把softmax函數的結果可以看做概率分布,一般而言,神經網絡只把輸出值最大的神經元所對應的類別作為識別結果。
softmax函數的公式:
[yk=ceajci=1neai] ⑵
這個公式[5]表示假設輸出層共有n個神經元,計算第k個神經元的輸出。softmax函數的分子是輸出層輸入信號的指數函數,分母是所有輸入信號的指數函數的和,這里的C可以使用任何值,為了防止溢出,一般會使用輸入信號中的最大值。根據公式⑵,softmax函數的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 實驗與分析
系統設計好之后,對系統的功能進行初步測試,測試本文方法在智慧校園人臉識別中的應用性能,對olivettifaces人臉數據庫中的10人共80張人臉圖像作為研究樣本進行特征提取,能實現人臉的準確識別,對數據庫中注冊的人臉與攝像頭實時獲取的人臉進行匹配,顯示有95%的相似度,滿足設計需求。
4 結束語
在這人工智能技術時代,生物識別檢測技術已經成熟并被用于普通的電子數字設備中,人臉識別實現身份驗證,在很多的領域都被使用,該方法易于被師生接受。本文研究了在卷積神經網絡下的人臉識別,介紹了卷積層對輸入數據進行特征提取,池化層在一定程度上防止過擬合,增強網絡對圖像的魯棒性,softmax函數對全連接層的特征進行了分類,輸出結果以概率分布,得到非常理想的識別結果,能夠實現智慧校園的人臉識別。該系統可推廣應用于智慧小區,系統的不足之處是使用小樣本數據集建模,隨著數據量的增加,該系統還需進一步完善。
參考文獻(References):
[1] 劉菁琪.淺析機器學習在氣候研究中的應用[J].通訊世界,2018.9:218-219
[2] 王嘉鑫,鄒科文,陳義明.基于卷積神經網絡的人臉識別[J].電腦知識與技術,2016:187-190
[3] wepon.利用 python PIL.Cpickle讀取和保存圖像數據庫[EB/OL].http://blog.csdn.net/u012162613/article/details/43226127.
[4] 張文濤,陳嬋娟,王澤荔.一種多尺度輕量化的人臉識別算法[J].現代計算機《專業版本》,2018.10.
[5] [日]齋藤康毅.深度學習入門基于python的理論與實現[M].人民郵電出版社,2018.