張汶汶 周先春
(河海大學(xué)計(jì)算機(jī)與信息學(xué)院 南京 211100)
現(xiàn)實(shí)生活中,人臉受外界影響較大,并且伴隨著各種復(fù)雜多變的情況,識(shí)別會(huì)有一定的難度。因而有越來越多的算法應(yīng)用于人臉識(shí)別[1~4]。
神經(jīng)網(wǎng)絡(luò)是由大量的人工神經(jīng)元通過互相連接而構(gòu)成的復(fù)雜系統(tǒng),它能根據(jù)外界的信息變化情況從而改變自身的結(jié)構(gòu)。BP(Back Propagation)神經(jīng)網(wǎng)絡(luò)是一種應(yīng)用廣泛的人工神經(jīng)網(wǎng)絡(luò)[5~6],它是一種以誤差反向傳播為基礎(chǔ)的淺層神經(jīng)網(wǎng)絡(luò),用于提取圖像的表面特征,但是當(dāng)輸入圖像樣本數(shù)量較大時(shí),過多的神經(jīng)元數(shù)目會(huì)導(dǎo)致收斂速度慢,陷入局部較小的缺陷中。因而學(xué)者提出深度學(xué)習(xí)的思想,通過建立更深層次的神經(jīng)網(wǎng)絡(luò)自動(dòng)提取人臉特征,卷積神經(jīng)網(wǎng)絡(luò)CNN(Convolutional Neural Network)[7~8],深 度 信 念 網(wǎng) 絡(luò)DBN(Deep Belief Network)[9],深度神經(jīng)網(wǎng)絡(luò)DNN(Deep Neural Network)都是常見的多層神經(jīng)網(wǎng)絡(luò)。CNN網(wǎng)絡(luò)對輸入網(wǎng)絡(luò)的圖像不需要經(jīng)過預(yù)先處理,自動(dòng)提取更復(fù)雜的特征,因此在人臉識(shí)別中得到廣泛的應(yīng)用。本文提出的新算法使用CNN神經(jīng)網(wǎng)絡(luò)提取人臉特征。
由于有限的人臉樣本無法滿足現(xiàn)實(shí)生活中人臉識(shí)別的需要,學(xué)者通過構(gòu)造新的虛擬人臉來提高人臉識(shí)別率,例如Xu etal.[10]提出了利用人臉的鏡像圖來構(gòu)造新的人臉,Jung etal.[11]利用噪聲合成新的人臉,Tang etal.[12]提出結(jié)合光流和基于圖像的人臉原型算法產(chǎn)生虛擬的表情,這些算法均是在原始人臉數(shù)據(jù)庫的基礎(chǔ)上生成新的虛擬樣本來進(jìn)行人臉識(shí)別,它們有效地提高了人臉識(shí)別率。本文提出的新算法分別在原始樣本與鏡像樣本的基礎(chǔ)上,利用兩個(gè)樣本的均值構(gòu)成平滑中值樣本,因而新算法中每一類能夠生成多個(gè)不同的虛擬人臉,增加人臉樣本的數(shù)量。
本文提出的新算法在構(gòu)造鏡像圖的基礎(chǔ)上,分別取同一類中任意兩個(gè)不同的原始圖像和鏡像圖像,取它們的平滑中值樣本作為新的虛擬圖像,將新生成的鏡像樣本與兩類平滑中值樣本作為新的訓(xùn)練樣本集,輸入CNN網(wǎng)絡(luò)得到更新權(quán)值,然后通過目的訓(xùn)練樣本集訓(xùn)練CNN提取更多隱藏的人臉圖像特征,最后使用支持向量機(jī)SVM(Support VectorMachine)[13]特征提取后進(jìn)行分類。SVM在解決小樣本、非線性和高維模式識(shí)別問題具有良好的性能。該算法與其他算法不同之處在于:1)在鏡像圖的基礎(chǔ)上,利用平滑中值樣本構(gòu)造新的虛擬樣本作為新的訓(xùn)練樣本集;2)新的訓(xùn)練樣本集輸入CNN網(wǎng)絡(luò)得到更新的權(quán)值,訓(xùn)練CNN網(wǎng)絡(luò)更好地進(jìn)行特征提?。?)使用SVM作為最終的分類器進(jìn)行人臉識(shí)別。
本文對鏡像圖法與CNN網(wǎng)絡(luò)算法進(jìn)行相關(guān)描述,提出一種基于多樣本擴(kuò)充的卷積神經(jīng)網(wǎng)絡(luò)人臉識(shí)別算法,在ORL和FERET人臉庫上使用新算法進(jìn)行人臉識(shí)別,并與其他算法進(jìn)行比較與分析。
鏡像圖法是有一種改進(jìn)的稀疏表示算法,有限的人臉庫滿足不了日益復(fù)雜的人臉識(shí)別的需要,鏡像法通過人臉圖像的鏡像性構(gòu)造新的鏡像人臉圖,是一種基于L2范數(shù)的稀疏識(shí)別算法。若人臉庫有t類,每類有n個(gè)訓(xùn)練樣本,訓(xùn)練樣本總數(shù)為N=t*n。設(shè)Xi是第i類訓(xùn)練樣本矩陣(i=1,2,…,t),Xi=[x(i-1)*n+1,x(i-1)*n+2,…,xin],Xi中每一個(gè)列向量代表第i類中每一個(gè)訓(xùn)練樣本的列向量,設(shè)X表示總的訓(xùn)練樣本矩陣,Xi。設(shè)樣本矩陣具有C行和D列,它對應(yīng)的鏡像矩陣也具有C行和D列。第i類第j個(gè)訓(xùn)練樣本列向量表示為x(i-1)*n+j,第i類第j個(gè)新生成的鏡像樣本表示為m(i-1)*n+j,(j=1,2,…,n)。由于新生成鏡像矩陣,則總的訓(xùn)練樣本矩陣M可以表示為M=[M1,M2,…Mi,…,Mt],Mi是第i類訓(xùn)練樣本矩陣。
x'(i-1)*t+j(c,d)表示x(i-1)*t+j在第c行和第d列上的像素,m'(i-1)*t+j(c,d)表示m(i-1)*t+j(c,d)在第c行和第d列上的像素,有
將m'(i-1)*t+j(c,d))轉(zhuǎn)化為m((i-1)*t+j(c,d)。對于第i類測試樣本列向量為y,有
ui為Mi對應(yīng)的系數(shù)。
ui=[u(i-1)*t+1,…,ui*t,u'(i-1)*t+1,…,ui'*t],令 y'作為y的重構(gòu)圖像,有
u'i=(MiTMi+ηa)-1MiTy,其中η取較小的常量,a是可識(shí)別的矩陣。用di來衡量y與y'之間的偏差程度:
di越小說明y越能表示y'。若class(y)=argmiin (di),則測試樣本y被分配到第i類。
CNN網(wǎng)絡(luò)能自動(dòng)對目標(biāo)樣本集進(jìn)行提取和分類,是一種深層神經(jīng)網(wǎng)絡(luò)。深層神經(jīng)網(wǎng)絡(luò)的層數(shù)越多,就能夠提取到更多的樣本特征,但是網(wǎng)絡(luò)層數(shù)越多也會(huì)增加訓(xùn)練的難度。本文構(gòu)造9層CNN網(wǎng)絡(luò),包括1個(gè)輸入層,3個(gè)卷積層,3個(gè)池化層,1個(gè)全連接層和1個(gè)輸出層,如圖1所示,C1,C2和C3作為卷積層,S1,S2和S3作為池化層。每個(gè)卷積層采用卷積核的大小為5×5,卷積層中每個(gè)特征圖像的每個(gè)神經(jīng)元通過5×5的局部感受野與前一層連接,每個(gè)池化層采用卷積核的大小為2×2,池化層每個(gè)特征圖像的每個(gè)神經(jīng)元通過2×2的局部感受野與前一層連接,池化層中特征樣本的數(shù)目與它對應(yīng)的卷積層數(shù)目相等。卷積層和池化層之間是部分相連,目的是保持非相關(guān)性。F1作為全連接層,該層中每個(gè)神經(jīng)元與S3中所有神經(jīng)元互相連接,提取的特征值通輸出層對所有的輸入樣本進(jìn)行識(shí)別,最后使用SVM作為分類層進(jìn)行分類。
圖1 9層CNN網(wǎng)絡(luò)
其中f(x)是糾正線性單元函數(shù)ReLU(Rectified Linear Units),它是一種基于L2準(zhǔn)則的函數(shù),不同于常用的Sigmoid函數(shù),ReLU更易產(chǎn)生稀疏性,在一定程度上避免過擬合現(xiàn)象發(fā)生。xli-1是卷積層中第l-1層的第i個(gè)輸入特征樣本,ki
lj是第l-1層中第i個(gè)輸入特征樣本與第l層中第j個(gè)輸出特征樣本之間的卷積權(quán)值,blj是第l層中第j個(gè)輸出特征樣本的偏差值,ylj是第l層中第j個(gè)輸出特征樣本。
池化層是一個(gè)采樣過程,需要多次對輸入樣本進(jìn)行重復(fù)采樣,才能充分的提取圖像特征,本文采用最大池化的數(shù)學(xué)表達(dá)式:
其中down(y)表示最大采樣函數(shù),ylj-1是池化層中第l-1層的第j個(gè)輸入特征樣本,ylj是第l層中第j個(gè)輸出特征樣本。
新算法對人臉庫中的人臉圖像的像素調(diào)整為28×28像素,將人臉圖像進(jìn)行劃分,得到目標(biāo)訓(xùn)練樣本矩陣X和目標(biāo)測試樣本矩陣Y。設(shè)X=[X1,X2,…Xi,…,Xt]Xi=[x(i-1)*n+1,x(i-1)*n+2,…,xin],Xi是第i類訓(xùn)練樣本矩陣,Xi中每一個(gè)列向量表示第i類每一個(gè)訓(xùn)練樣本的列向量,Y=[Y1,Y2,…,Yi,…,Yt],Yi是第i類測試樣本矩陣,Yi中每一個(gè)列向量表示第i類每一個(gè)測試樣本的列向量,Yi=[y(i-1)*m+1,y(i-1)*m+2,…yim](i=1,2,…,t)。
第一步:設(shè)樣本矩陣具有C行和D列,它對應(yīng)的鏡像矩陣也具有C行和D列。第i類第j個(gè)訓(xùn)練樣本列向量表示為x(i-1)*n+j,利用2.1構(gòu)成第i類第j個(gè)新生成的鏡像圖列向量m(i-1)*n+j,(j=1,2,…,n),用M表示總的鏡像樣本圖矩陣,M=[M1,M2,…,Mi,…,Mt]。
第二步:對于目標(biāo)訓(xùn)練樣本集,使用每類中兩個(gè)不同的初始訓(xùn)練樣本去構(gòu)造新的訓(xùn)練樣本,會(huì)構(gòu)成Cn2個(gè)新的訓(xùn)練樣本,若x(i-1)*n+m和x(i-1)*n+k均是來自Xi,新訓(xùn)練樣本表示為
用Xa表示新生成的總的樣本矩陣,Xa=[X1a,X2a,…,Xta],利用此法得到的新的人臉圖如圖2和圖4所示。
圖2 原始ORL人臉數(shù)據(jù)庫中的人臉及構(gòu)成的新人臉。第一行是ORL數(shù)據(jù)庫中的人臉,第二行是利用ORL人臉數(shù)據(jù)庫中的人臉構(gòu)造的新人臉
圖3 原始ORL人臉庫中的人臉及相應(yīng)的鏡像人臉圖和由鏡像人臉圖所構(gòu)造的新人臉。第一行是ORL數(shù)據(jù)庫中的人臉,第二行是第一行對應(yīng)的鏡像圖,第三行是利用鏡像圖構(gòu)造的新人臉
第三步:對于第一步生成的第i類鏡像樣本圖矩陣Mi,運(yùn)用第二步的算法,得到由鏡像圖構(gòu)造的Cn
2 個(gè)新的鏡像圖,用Ma表示新生成的總的樣本矩陣,Ma=[M1a,M2a,…,Mta]。利用此法得到的新的人臉圖如圖3和圖5所示。
圖5 原始FERET人臉庫中的人臉及相應(yīng)的鏡像人臉圖和由鏡像人臉圖所構(gòu)造的新人臉。第一行是FERET數(shù)據(jù)庫中的人臉,第二行是第一行對應(yīng)的鏡像人臉圖,第三行是利用鏡像人臉圖構(gòu)造的新人臉
第四步:令D表示新構(gòu)成的訓(xùn)練樣本集,D=[Xa,M,Ma],輸入2.2提出的CNN網(wǎng)絡(luò),構(gòu)建輔助CNN網(wǎng)絡(luò),通過訓(xùn)練輔助CNN網(wǎng)絡(luò)得到表示人臉圖像特征的權(quán)值。考慮到目標(biāo)訓(xùn)練樣本集和新的訓(xùn)練樣本集之間的相關(guān)情況,使用得到的權(quán)值去初始化CNN網(wǎng)絡(luò)前幾層的權(quán)值,最后一層的權(quán)值采用隨機(jī)初始化去設(shè)置。設(shè)置所有網(wǎng)絡(luò)層的權(quán)值后,使用目標(biāo)訓(xùn)練樣本集去訓(xùn)練CNN網(wǎng)絡(luò),這樣能夠提取更深層次、更有效、更復(fù)雜的人臉特征。CNN網(wǎng)絡(luò)中最終批量大小設(shè)為128,衰減系數(shù)設(shè)為0.0006,使用CNN網(wǎng)絡(luò)提取人臉特征后再去訓(xùn)練SVM。對于目標(biāo)測試樣本集,使用已經(jīng)訓(xùn)練好的CNN網(wǎng)絡(luò)去提取人臉特征,再通過訓(xùn)練好的SVM分類器識(shí)別所有的樣本。訓(xùn)練CNN網(wǎng)絡(luò)中輸出的特征訓(xùn)練集和特征測試集與輸入SVM的特征訓(xùn)練集和特征測試集相同,CNN網(wǎng)絡(luò)中的訓(xùn)練標(biāo)簽與測試標(biāo)簽分別與SVM中對應(yīng)的訓(xùn)練標(biāo)簽與測試標(biāo)簽相同,使用徑向基函數(shù)(Radial Basis Function,RBF)作為SVM分類器的核函數(shù):
其中si是輸入SVM中的第i個(gè)樣本,β是核參數(shù),識(shí)別函數(shù)為
其中ti是si對應(yīng)的類別,ai是拉格朗日系數(shù),懲罰系數(shù)σ是用來控制錯(cuò)分樣本的懲罰情況。對目標(biāo)樣本集中的任意兩個(gè)樣本之間使用一對一的SVM,人臉樣本數(shù)為t,設(shè)計(jì)個(gè)SVM分類器,分別在個(gè)SVM分類器中識(shí)別未知的樣本,通過投票機(jī)制來確定未知的樣本屬于對應(yīng)的類別。通過SVM在最有可能的類別上投票,最后通過計(jì)算總投票數(shù)所在的類別就是未知樣本所在的類別。
基于多樣本擴(kuò)充的BP神經(jīng)網(wǎng)絡(luò)的人臉識(shí)別算法是一種改進(jìn)的BP神經(jīng)網(wǎng)絡(luò)算法。該算法首先對所有人臉樣本運(yùn)用奇異值分解(SVD)求得特征值矩陣,進(jìn)行劃分后得到特征訓(xùn)練樣本矩陣X和特征測試樣本矩陣Y,人臉樣本數(shù)為t。使用3.1中第一步、第二步、第三步得到新生成的總的樣本矩陣D,將X、Y和D分別進(jìn)行歸一化處理,得到PX、PY和PD。
通過構(gòu)建三層BP神經(jīng)網(wǎng)絡(luò)模型進(jìn)行分類,隱含層神經(jīng)元個(gè)數(shù)設(shè)為200,輸入層與隱含層之間的傳遞函數(shù)設(shè)為tansig,隱含層與輸出層之間的傳遞函數(shù)為purelin,BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練函數(shù)為trainrp,訓(xùn)練目標(biāo)設(shè)為1e-7,訓(xùn)練次數(shù)設(shè)為3000,學(xué)習(xí)速率設(shè)為0.008。將PD輸入BP神經(jīng)網(wǎng)絡(luò),構(gòu)建輔助BP神經(jīng)網(wǎng)絡(luò),訓(xùn)練輔助BP神經(jīng)網(wǎng)絡(luò)后得到表示人臉面部特征的權(quán)值,使用權(quán)值來初始化BP神經(jīng)網(wǎng)絡(luò)的前幾層的權(quán)值,最后一層的權(quán)值采用隨機(jī)初始化去設(shè)置。設(shè)置好所有網(wǎng)絡(luò)層的權(quán)值后,使用目標(biāo)訓(xùn)練樣本集去訓(xùn)練BP網(wǎng)絡(luò)。
文獻(xiàn)[10]中已經(jīng)證明人臉鏡像圖存在的依據(jù),新算法所使用的人臉庫分別在同一類原始圖像和鏡像圖像中,任取兩個(gè)不同圖像的平滑中值樣本作為新的虛擬圖像。若要生成有效的虛擬圖像,虛擬圖像一方面不能與原始圖像過于接近,不然生成的虛擬圖像毫無意義;另一方面,虛擬圖像不能太偏離原始圖像,不然就會(huì)對人臉識(shí)別造成誤差。假設(shè)新算法任取同一類中的兩個(gè)不同圖像x1和x2,則新生成的虛擬圖像用x3表示,。x1與x3之間的偏差值用v1表示,,x2與x3之間的偏差值用v2表示,。由于x1和x2均是同一類圖像,則偏差值v1和v2均不會(huì)過大或過小。因此取同一類中兩個(gè)不同圖像的平滑中值樣本作為新的虛擬圖像,這是具有合理性的。
圖6 ORL人臉庫中分別使用新算法和CRC法得到的偏差值
圖7 FERET人臉庫中使用新算法和CRC法得到的偏差值
圖6 和圖7分別是ORL人臉數(shù)據(jù)庫和FERET人臉數(shù)據(jù)庫中,新算法得到的偏差值與CRC法得到的偏差值形成的對比圖。偏差值越小,說明訓(xùn)練樣本重建的測試樣本越接近給定的測試樣本圖,因而對應(yīng)的算法進(jìn)行人臉識(shí)別的效果越好。從圖6和圖7中可以看出,在大多數(shù)類別數(shù)中,新算法求得的偏差值都比CRC法小。
將本文提出的新算法與現(xiàn)有一些成熟算法分別在ORL[14]人臉庫和FERET[15]人臉庫中進(jìn)行識(shí)別率的比較與分析。用Matlab程序分別在ORL人臉庫和FERET人臉庫上對鏡像法、在文獻(xiàn)[16]中所提出的FCM法、DALM法、基于卷積神經(jīng)網(wǎng)絡(luò)的識(shí)別算法和本文提出的基于多樣本擴(kuò)充的BP神經(jīng)網(wǎng)絡(luò)人臉識(shí)別算法、基于多樣本擴(kuò)充的卷積神經(jīng)網(wǎng)絡(luò)人臉識(shí)別算法進(jìn)行實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果如下所示。
ORL人臉庫是有40個(gè)不同的人,每個(gè)人具有10幅的圖像。FERET人臉庫是有200個(gè)不同的人,每個(gè)人具有7幅的圖像。表1是在ORL人臉庫中不同訓(xùn)練樣本數(shù)下的不同算法所求得的識(shí)別率,表2是在FERET人臉庫中不同訓(xùn)練樣本數(shù)下的不同算法所求得的識(shí)別率。在ORL人臉庫和FERET人臉庫中,新算法取的訓(xùn)練樣本數(shù)分別為2、3和4,剩余的樣本作為測試樣本。從表中來看,基于多樣本擴(kuò)充的卷積神經(jīng)網(wǎng)絡(luò)人臉識(shí)別算法比其他算法都好。
表1 各算法在ORL人臉庫中識(shí)別率(%)的比較
表2 各算法在FERET人臉庫中識(shí)別率(%)的比較
基于多樣本擴(kuò)充的BP神經(jīng)網(wǎng)絡(luò)識(shí)別算法是一種改進(jìn)的BP神經(jīng)網(wǎng)絡(luò)算法,BP神經(jīng)網(wǎng)絡(luò)只能用于提取人臉圖像表面的特征,當(dāng)目標(biāo)訓(xùn)練樣本集過多時(shí),BP神經(jīng)網(wǎng)絡(luò)易陷入局部較小的缺陷中?;贑NN網(wǎng)絡(luò)的識(shí)別算法充分運(yùn)用CNN網(wǎng)絡(luò)能夠自動(dòng)提取深層人臉特征的優(yōu)勢進(jìn)行識(shí)別??紤]在實(shí)際生活中,當(dāng)訓(xùn)練樣本數(shù)較少時(shí),有限的人臉樣本數(shù)無法提供足夠的人臉特征,因而基于多樣本擴(kuò)充的BP神經(jīng)網(wǎng)絡(luò)識(shí)別算法與基于卷積神經(jīng)網(wǎng)絡(luò)的識(shí)別算法在一定程度上無法得到更廣泛的應(yīng)用,本文提出的新算法通過簡單易行的途徑構(gòu)造多種虛擬訓(xùn)練樣本,作為新的訓(xùn)練樣本集輸入CNN網(wǎng)絡(luò),得到CNN網(wǎng)絡(luò)的權(quán)值后,再通過CNN網(wǎng)絡(luò)和SVM去提取人臉特征,極大地提高人臉識(shí)別的效果。從表中看出,基于概率協(xié)同表示和卷積神經(jīng)網(wǎng)絡(luò)識(shí)別算法比其他算法更具有優(yōu)勢。
在ORL人臉庫中,當(dāng)訓(xùn)練樣本數(shù)為2時(shí),基于多樣本擴(kuò)充的卷積神經(jīng)網(wǎng)絡(luò)人臉識(shí)別算法求得的識(shí)別率達(dá)到98.48%,基于多樣本擴(kuò)充的BP神經(jīng)網(wǎng)絡(luò)識(shí)別算法求得的識(shí)別率為92.57,基于卷積神經(jīng)網(wǎng)絡(luò)的識(shí)別算法求得的識(shí)別率為93.28%,在FERET人臉庫中,當(dāng)類別數(shù)為2時(shí),新算法與基于卷積神經(jīng)網(wǎng)絡(luò)的識(shí)別算法之間最大的差值達(dá)到4%。
鏡像法和DALM法是改進(jìn)的稀疏識(shí)別算法。鏡像法是通過構(gòu)造新的虛擬人臉來提高人臉識(shí)別率,與鏡像法和FCM法相比,DALM法具有一定的優(yōu)勢,但是還是無法與新算法相比。在ORL人臉庫中,當(dāng)訓(xùn)練樣本數(shù)較少時(shí),新算法與DALM法之間的差值達(dá)到12%,與鏡像法之間的差值達(dá)到13%。在FERET人臉庫中,當(dāng)訓(xùn)練樣本為2時(shí),新算法求得的識(shí)別率為97.39%,而DALM法求得的識(shí)別率為64.90%。由于神經(jīng)網(wǎng)絡(luò)在提取人臉特征上具有的良好性能,即使訓(xùn)練樣本數(shù)增多,鏡像法、FCM法和DALM法求得識(shí)別率都沒有新算法好。
如何有效地提取人臉特征是人臉識(shí)別中一直需要解決的關(guān)鍵問題,本文提出一種基于多樣本擴(kuò)充的卷積神經(jīng)網(wǎng)絡(luò)人臉識(shí)別算法。新算法在人臉鏡像圖的基礎(chǔ)上,提出利用原圖和鏡像圖構(gòu)造出多個(gè)新的訓(xùn)練樣本,將新生成的鏡像樣本與兩類平滑中值樣本作為新的訓(xùn)練樣本集,輸入CNN網(wǎng)絡(luò)得到更新的權(quán)值,然后通過目的訓(xùn)練樣本集訓(xùn)練CNN提取更多隱藏的人臉圖像特征,最后使用SVM進(jìn)一步特征提取后進(jìn)行分類。