馮友兵 陸軼秋 仲偉波
(江蘇科技大學(xué)電子信息學(xué)院 鎮(zhèn)江 212003)
人臉識(shí)別[1]作為一種生物特征識(shí)別技術(shù),是近年來模式識(shí)別、圖像處理、機(jī)器視覺、神經(jīng)網(wǎng)絡(luò)以及認(rèn)知科學(xué)等領(lǐng)域研究的熱點(diǎn)課題之一。同時(shí)人臉識(shí)別作為一種穩(wěn)定性高、精度高、難以復(fù)制、易于被人接受的生物特征識(shí)別技術(shù),在身份認(rèn)證、安防監(jiān)控、人機(jī)交互等領(lǐng)域具有廣泛的應(yīng)用前景。隨著信息技術(shù)的日益革新,人臉識(shí)別技術(shù)對(duì)圖像的處理也越來越復(fù)雜,在樣本充足、背景單一、環(huán)境光照穩(wěn)定的情況下,大部分算法都能取得較高的識(shí)別率。
在實(shí)際應(yīng)用中,如何解決環(huán)境因素和人臉表情,姿態(tài)變換的影響,成為目前檢驗(yàn)各類算法的難題?;谔卣髂樀娜四樧R(shí)別算法通過降維的方式提取人臉特征,雖然降低了計(jì)算復(fù)雜度,但在降維的同時(shí)也會(huì)丟失某些有效特征[1]?;?D 模型的人臉識(shí)別算法[2]將采集的人臉還原成三維模型,再與數(shù)據(jù)庫中已知身份人臉的三維數(shù)據(jù)進(jìn)行匹配識(shí)別,但該算法對(duì)圖像要求較高、應(yīng)用性較低?;谙∈璧娜四樧R(shí)別方法[3]通過將所有訓(xùn)練人臉圖像映射到一個(gè)子空間,然后在子空間中找到測(cè)試人臉圖像的稀疏表示,該算法在噪聲干擾的情況下仍具有較好的性能,但在人臉樣本不充足的情況下效果較差。近年來卷積神經(jīng)網(wǎng)絡(luò)[4~7]已成為語音分析和圖像識(shí)別領(lǐng)域的研究熱點(diǎn),尤其在人臉識(shí)別領(lǐng)域取得了不俗的成果。卷積神經(jīng)網(wǎng)絡(luò)通過結(jié)合人臉圖像的局部感知區(qū)域、共享權(quán)重、在空間上來充分利用數(shù)據(jù)本身包含的局部性等特征,該特征對(duì)光照變化、姿態(tài)、遮擋具有一定魯棒性。
本文采用了卷積神經(jīng)網(wǎng)絡(luò)構(gòu)建人臉識(shí)別系統(tǒng),首先使用基于卷積神經(jīng)網(wǎng)絡(luò)的facenet 模型[8]提取人臉特征,然后使用SVM 分類器[9]進(jìn)行分類,并在實(shí)際環(huán)境中進(jìn)行測(cè)試。
CNN 是一個(gè)處理輸入為二維數(shù)據(jù)的多層非全連接的神經(jīng)網(wǎng)絡(luò),網(wǎng)絡(luò)每層有多個(gè)二維平面,每個(gè)二維平面有多個(gè)獨(dú)立的神經(jīng)元。神經(jīng)元之間的連接只存在于相鄰層。該網(wǎng)絡(luò)的底層主要提取圖像的紋理、邊緣等。底層提取的信息通過神經(jīng)元連接傳遞到下一層,逐漸傳遞到高層進(jìn)而提取到圖像最本質(zhì)的結(jié)構(gòu)信息。通常情況下網(wǎng)絡(luò)層數(shù)越多網(wǎng)絡(luò)性能越好。卷積神經(jīng)網(wǎng)絡(luò)與一般神經(jīng)網(wǎng)絡(luò)區(qū)別在于局部連接和權(quán)值共享,減少了需要訓(xùn)練的權(quán)值數(shù)目,從而大大降低了網(wǎng)絡(luò)模型的學(xué)習(xí)復(fù)雜度。卷積神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)有卷積層,池化層,全連接層。如圖1所示。
圖1 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
1)卷積層
圖1 中的C1、C2 為卷積層,卷積層通過一個(gè)可以學(xué)習(xí)的卷積核(圖1中conv1,conv2),首先從上一層的特征矩陣中提取出與卷積核相同大小的區(qū)域,再將區(qū)域中特征值按照順序與卷積核對(duì)應(yīng)位置的權(quán)值相乘之后加上偏置為該片區(qū)域的卷積結(jié)果,最后按照卷積核的移動(dòng)步長(zhǎng)依次計(jì)算其他區(qū)域的卷積結(jié)果。當(dāng)卷積完成時(shí),這些結(jié)果產(chǎn)生一個(gè)新的特征矩陣。
其中*為離散卷積運(yùn)算符,f(?)為激活函數(shù),通常是Sigmoid,如式(2)所示:
其中x 為輸入,f(x)為輸出。
2)池化層
圖1 中S1、S2 為池化層,池化層通過采樣將初級(jí)視覺特征篩選并結(jié)合成抽象、高級(jí)視覺特征。本文池化層采用最大值采樣方法,采樣大小為2×2,首先將前一層提取的特征矩陣平均分為2×2 大小的矩陣塊,再對(duì)每個(gè)矩陣塊取最大值,最后輸出一個(gè)大小為原來的特征矩陣。采樣后有減小計(jì)算量和圖像移位的影響,整個(gè)過程如式(3)所示:
3)全連接層
圖1中F1為全連接層,全連接層可增強(qiáng)網(wǎng)絡(luò)非線性的映射能力,將前一層網(wǎng)絡(luò)的所有神經(jīng)元與當(dāng)前網(wǎng)絡(luò)的所有神經(jīng)元互相連接,同層之間的神經(jīng)元不連接。如式(4)所示:
其中l(wèi) 表示當(dāng)前網(wǎng)絡(luò)層數(shù),n 表示為第l-1 層網(wǎng)絡(luò)的神經(jīng)元個(gè)數(shù),表示為第l-1 層網(wǎng)絡(luò)第i 個(gè)神經(jīng)元輸入值,表示第l 層網(wǎng)絡(luò)神經(jīng)元j 與第l-1層網(wǎng)絡(luò)神經(jīng)元i 之間的連接權(quán)值,表示為第l 層網(wǎng)絡(luò)神經(jīng)元j 的偏置,f(?)表示為激活函數(shù)。
近年來基于深學(xué)習(xí)的人臉識(shí)別方法普遍使用Softmax[10]損失函數(shù)訓(xùn)練網(wǎng)絡(luò),從網(wǎng)絡(luò)中抽取某一層作為輸出特征,再使用輸出特征向量訓(xùn)練分類器。這種方法的缺點(diǎn)是低效和不直接,輸出特征的維度非常大。facenet 是由Google 公司提出的一種新的基于卷積神經(jīng)網(wǎng)絡(luò)的人臉識(shí)別模型,facenet直接學(xué)習(xí)到一個(gè)從圖像到歐式空間的映射,歐式空間的距離關(guān)聯(lián)著人臉相似度。
圖2 facenet模型圖
facenet 模型圖如圖2 所示,其中deep architec?ture 為卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),經(jīng)L2 歸一化后,得到特征表示。
SVM 由Cortes 和Vpanik 于1995 年首先提 出,它建立在統(tǒng)計(jì)學(xué)習(xí)理論和結(jié)構(gòu)風(fēng)險(xiǎn)最小原理的基礎(chǔ)上,根據(jù)有限的樣本信息在模型的復(fù)雜性和學(xué)習(xí)能力之間尋求最佳折衷,來獲得最好的泛化能力。
SVM最初是用來對(duì)二分類問題進(jìn)行分類的,在線性可分的情況下,對(duì)于訓(xùn)練集(xi,yi),其中xi∈RN,yi∈{-1,1},i=1,2,3,…,n ,目標(biāo)是找到一個(gè)超平面能夠?qū)深悩颖就耆珠_且兩類間的間隔最大。不妨設(shè)超平面的方程為w ?x+b=0 ,將w ?x+b >0 的歸于1 類,而w ?x+b <0 的則歸于-1類。兩類間隔的最大化等價(jià)于最小化如式(5)所示:
約束條件:
引入Lagrange乘子a,得到式(7)中的Wolfe對(duì)偶形式為
求解得到a 之后,平面參數(shù)w 和b 便可以由對(duì)偶問題的解a 來確定。由此可以得到SVM 的最優(yōu)分類函數(shù):
對(duì)于非線性問題,SVM分類器則通過非線性變換將低維空間中的非線性分類的樣本映射成高維空間中的線性可分樣本,然后在映射后的高維空間線性樣本中構(gòu)建最優(yōu)的分類超平面。其非線性變換是由選擇適當(dāng)?shù)膬?nèi)積函數(shù)得到,內(nèi)積函數(shù)稱為SVM核函數(shù),即
其中φ:Rn→Rd,表示通過非線性變換從n 維的低維線性空間到d 維的高維線性空間,這樣將低維空間的非線性樣本轉(zhuǎn)化為高維空間的線性樣本,并且把高維空間中的內(nèi)積運(yùn)算簡(jiǎn)化為通過核函數(shù)K(xi,xj)來計(jì)算。通常使用的核函數(shù)有以下幾種:
1)線性核函數(shù)
2)多項(xiàng)式核函數(shù)
3)高斯(RBF)核函數(shù)
對(duì)于多類樣本的分類,采用的分類策略是一對(duì)一的投票方式,構(gòu)建SVM 多類分類器。假設(shè)訓(xùn)練樣本的類別數(shù)為n,則在SVM 多類分類器訓(xùn)練階段創(chuàng)建n(n-1)/2 個(gè)分類器。這樣把每個(gè)類別與其他類別進(jìn)行對(duì)比,求取最優(yōu)分類平面,然后保存每個(gè)SVM二分類器的訓(xùn)練參數(shù)即為訓(xùn)練結(jié)果。
本文設(shè)計(jì)的人臉識(shí)別系統(tǒng)主要由以下部分組成:人臉識(shí)別服務(wù)器、客戶端、圖像采集設(shè)備。如圖3所示。
圖3 人臉識(shí)別系統(tǒng)結(jié)構(gòu)圖
人臉識(shí)別服務(wù)器包含人臉檢測(cè)模塊、人臉識(shí)別模塊、預(yù)訓(xùn)練facenet 模型、數(shù)據(jù)庫等模塊。人臉檢測(cè)模塊使用的是opencv[12]圖像處理庫中人臉檢測(cè)api 通過提取haar[13]特征檢測(cè)人臉。人臉識(shí)別模塊則使用的是開源深度學(xué)習(xí)框架tensorflow[11]該框架使用圖來表示計(jì)算任務(wù),這種形式可以高效地構(gòu)建深層神經(jīng)網(wǎng)絡(luò),且可以在cpu 和gpu 上運(yùn)行。預(yù)訓(xùn)練的facenet 模型則是davidsandberg 基于CA?SIA-WebFace[14]數(shù)據(jù)庫訓(xùn)練的,該數(shù)據(jù)集有9982張圖片,預(yù)訓(xùn)練的facenet 模型具有很好的泛化性能,在LFW 數(shù)據(jù)集的準(zhǔn)確率為0.98。數(shù)據(jù)庫模塊使用mysql 負(fù)責(zé)存儲(chǔ)訓(xùn)練好的SVM 分類器參數(shù)以及人臉標(biāo)簽。由于服務(wù)器環(huán)境搭建需要一定時(shí)間,所以本系統(tǒng)在人臉識(shí)別服務(wù)器開啟狀態(tài)下便加載ten?sorflow 框架,gpu 配置以及預(yù)訓(xùn)練的facenet 模型到環(huán)境中。人臉識(shí)別服務(wù)器的作用是通過接收?qǐng)D像采集設(shè)備發(fā)送過來的圖片然后根據(jù)客戶端的請(qǐng)求調(diào)用相應(yīng)模塊計(jì)算結(jié)果返回給客戶端。其中核心模塊是基于CNN 和SVM 的人臉識(shí)別算法,算法描述如下:
步驟1:加載基于CASIA-WebFace數(shù)據(jù)庫訓(xùn)練的facenet 模型,將訓(xùn)練集中所有圖片裁剪成160*160的圖像塊x,并初始化標(biāo)簽向量y。
步驟2:按式(1)、(2)、(3)將圖像塊x 作為輸入到網(wǎng)絡(luò)中,結(jié)合facenet 模型中提取的卷積核、權(quán)值、偏置,經(jīng)過計(jì)算得到特征向量為x(1),此時(shí)特征提取過程結(jié)束。
步驟3:將x(1)輸入到SVM 分類器中,SVM 分類器使用線性核函數(shù)結(jié)合式(7)SVM分類器優(yōu)化函數(shù)如式(13)所示:
其中N 為樣本數(shù),ai,aj為引入的Lagrange乘子。
步驟4:使用SMO[15]算法先固定ai,aj求解剩余參數(shù),然后再通過剩余參數(shù)求解ai,aj,迭代更新直到函數(shù)收斂,所得結(jié)果記為平面參數(shù)w 和b 便可以由對(duì)偶問題的解a*來確定。最后保存SVM 分類器訓(xùn)練結(jié)果參數(shù)w和b。
步驟5:輸入測(cè)試圖像裁剪成160*160 的圖像塊,同樣通過步驟2提取特征向量。
步驟6:加載步驟4 中保存的SVM 分類器參數(shù)w 和b,按式(9)計(jì)算最優(yōu)分類結(jié)果。
算法流程如圖4所示。
圖4 人臉識(shí)別系統(tǒng)算法流程圖
在實(shí)際應(yīng)用中,人臉識(shí)別系統(tǒng)最大的挑戰(zhàn)是存在姿態(tài)變化和遮擋時(shí),識(shí)別效果不理想。因此本文采集了多類實(shí)際應(yīng)用中的人臉圖像作為實(shí)驗(yàn)樣本。正常人臉樣本是在面部基本對(duì)齊或小角度傾斜、無遮擋、表情單一,如圖5(a)所示。姿態(tài)變化的人臉樣本有多種表情和側(cè)臉如圖5(b)所示。有遮擋人臉樣本如圖5(c)所示。系統(tǒng)測(cè)試中采集4 個(gè)人每人40張人臉圖片,其中正常人臉樣本20張、存在姿態(tài)變化人臉10 張、有遮擋人臉10 張。樣本尺寸為160×160 像素。系統(tǒng)測(cè)試分為以下三種情況:T1 為正常人臉樣本訓(xùn)練和測(cè)試,T2 為正常人臉樣本訓(xùn)練和姿態(tài)變化人臉樣本測(cè)試,T3 為正常人臉樣本訓(xùn)練和有遮擋的人臉樣本測(cè)試。每種情況取不同的訓(xùn)練樣本數(shù),測(cè)試結(jié)果取10次平均值如表1所示。
圖5 各種情況的人臉樣本
由表1 數(shù)據(jù)可知,當(dāng)訓(xùn)練樣本只有兩張時(shí),各類識(shí)別率普遍較低,隨著訓(xùn)練樣本數(shù)量增多,各類識(shí)別率都有顯著提高。其中識(shí)別率上升速度依次是T1、T2、T3,說明遮擋對(duì)特征提取影響較大,其次是姿態(tài)變化。當(dāng)訓(xùn)練樣本數(shù)取到10 時(shí),各類識(shí)別率均達(dá)到100%,達(dá)到預(yù)期效果。
表1 不同訓(xùn)練數(shù)目在各類情況下的識(shí)別率(%)
圖6 為系統(tǒng)在實(shí)際場(chǎng)景中錄取一個(gè)下午13:00到14:00 視頻的一幀截圖,對(duì)所有進(jìn)入圖像采集設(shè)備區(qū)域的人臉進(jìn)行識(shí)別。其中人臉出現(xiàn)次數(shù)為125次,所有人臉均能正確識(shí)別,識(shí)別率為100%,每個(gè)人臉的測(cè)試平均時(shí)間為217ms,完全可以滿足一般情況下的人臉識(shí)別要求。
圖6 視頻人臉識(shí)別測(cè)試圖
研究并采用了基于facenet 卷積神經(jīng)網(wǎng)絡(luò)的特征提取算法以及svm 分類算法,在此基礎(chǔ)上設(shè)計(jì)并實(shí)現(xiàn)了人臉識(shí)別系統(tǒng)。系統(tǒng)首先在視頻流中截取每幀圖像進(jìn)行人臉檢測(cè),然后便將檢測(cè)到的人臉進(jìn)行識(shí)別。實(shí)際測(cè)試結(jié)果表明,系統(tǒng)在訓(xùn)練樣本充分的情況下對(duì)于人臉姿態(tài)、表情、遮擋變化都具有較高的識(shí)別率。在人數(shù)較少的場(chǎng)所如小型辦公室、家庭等,本文所設(shè)計(jì)的人臉識(shí)別系統(tǒng)能滿足需求。