任飛凱,邱曉暉
(南京郵電大學 通信與信息工程學院,江蘇 南京 210003)
近年來,人臉識別技術是人工智能領域研究的熱點之一。人臉識別因其非接觸性、非強制性、成本低等特點,使得其在身份認證領域有著很高的應用價值。經典的人臉識別算法有主成分分析法(PCA)[1]、線性判別分析(LDA)[2]、局部保值映射(LPP)[3]、稀疏表示[4]、小波分析[5]等。
卷積神經網絡是神經科學原理影響深度學習的典型代表,其最早可追溯到八十年代[6],之后發展一度停滯,直到反向傳播算法的提出[7],才有了突破性的進展?,F在卷積神經網絡的主要結構有LeNet-5[8],AlexNet[9],GoogleNet,VGGNet,ResNet[10]等。這些網絡結構都比較深,網絡參數比較多,訓練不充分很容易造成網絡的過擬合,而解決過擬合的方法一般是擴充數據集或者增強數據集。由于網絡結構的原因,訓練樣本越多,網絡的泛化能力也會越好。因此,文中提出了將人臉進行局部二值模式處理,在進行訓練之前提取人臉面部紋理特征,然后將通過LBP算法提取出的人臉特征紋理放入深度卷積生成對抗網絡中進行訓練生成新的人臉圖像來擴充數據集。
局部二值模式(local binary patterns,LBP)是一種用于描述局部紋理特征的算子,具對光照不變性和灰度不變性等顯著優點[11],因此廣泛應用于人臉識別、表情識別等圖像處理領域。
基本LBP算子可以理解為一個3*3的矩陣,其中心像素的灰度值為一個閾值,周圍相鄰的八個像素的灰度值分別與中心閾值比較,如果像素灰度值高于中心閾值則標為1,低于則標為0,如圖1所示。最終得到一組包含0和1的序列,轉化成十進制后便是中心像素的LBP值,LBP值可以用于獲得面部特征。

圖1 LBP算子
但是這種基本LBP有一定的局限性,如果圖像旋轉,LBP值也會隨著改變[12],所以文中采用圓形LBP算子,如圖2所示。圓形算子的鄰域不限于LBP算子的8個,且可以自由調節采樣半徑。圓形算子符號表示為LBPP,R其中P為鄰域采樣點數,R為采樣半徑。圖2中采樣點數P為8,采樣半徑R為1。

圖2 圓形LBP算子
圓形LBP算子計算公式如下:
(1)
其中,gP表示鄰域像素灰度值,gC表示中心像素灰度值,S(x)表示中心像素與鄰域像素比較之后的布爾值,公式如下:

(2)
深度卷積生成對抗網絡(deep convolutional generative adversarial networks,DCGAN)[13]是一種改進的生成對抗網絡(generative adversarial networks,GAN)[14]。GAN中包含兩個模型,一個生成模型,一個判別模型。可以用微分方程D和G來表示判別模型和生成模型。生成器G接受隨機噪聲z,通過這個噪聲生成圖片,記為G(z),判別模型D輸入參數為x,D(x)代表x為真實圖片的概率,如果為1,則表示x為真實圖片,為0則表示為假圖片。在訓練整個模型的過程中,生成模型G的目的就是為了生成盡量真實的圖片去欺騙判別模型D,而D的目的是為了將真實圖片和G生成的圖片區分開來,這樣便形成了一個動態博弈。最終的博弈結果是D(G(z))=0.5,這意味著判別模型D無法區分生成模型G生成的圖片是否為真實圖片,這樣就可以用訓練好的生成模型G來生成圖片。
DCGAN是在GAN的基礎上進行了改進。DCGAN的判別模型D是一個卷積神經網絡,生成模型G的輸入是一個100維的噪聲向量z,G的第一層就是一個全連接層,將100維向量變成一個4*4*1 024的向量,然后使用轉置卷積做上采樣,逐層減少通道,最后得到的輸入為64*64*3,即一個三通道寬高都是64的圖像。
文中將通過LBP算法提取出的人臉特征紋理當作判別模型D的輸入,訓練判別模型的判別能力,然后通過生成模型G來生成圖片,放入判別模型D中進行判別,當D(G(z))=0.5時,就可以用DCGAN中的生成模型G來生成圖像,達到擴充數據集的目的,提高卷積神經網絡的泛化性。
卷積神經網絡(convolutional neural networks,CNN)用于人臉識別是通過卷積操作來提取人臉面部特征,通過不同的卷積核提取到特征所具有的性質和表現力也不一樣。其結構一般分為卷積層、池化層、全連接層和Softmax分類。文中設計的網絡結構如圖3所示。首先將人臉圖進行局部二值化處理,提取面部紋理特征,然后將提取出的面部紋理特征當作判別模式D的輸入,當D(G(z))=0.5時,用生成模式G的生成圖像來擴充數據集,提高卷積神經網絡的泛化能力,然后將真實的局部二值化人臉和生成的局部二值化人臉輸入至卷積神經網絡中進行訓練學習參數。卷積神經網絡由3個卷積層C1、C2、C3,3個池化層S1、S2、S3,一個全連接層,一個Softmax分類器組成。輸入人臉紋理特征圖像經處理統一為64*64,C1有5個3*3卷積核,C2有10個3*3卷積核,C3有15個3*3卷積核,池化層選擇2*2的最大池化,全連接層為1*1*100,Softmax分類器根據數據庫人數另外設置。

圖3 人臉識別的結構設計
(1)卷積層。
卷積神經網絡核心便是卷積運算。卷積運算具有稀疏交互、參數共享等特性,通過卷積可以有效地提取出圖像中的特征數據,并且減少訓練參數[15]。卷積神經網絡中的卷積可以理解為用一個濾波器掃描圖像像素,而這個濾波器就是卷積核,通過卷積核與圖像的卷積,可以得到包含圖像特征信息的特征圖,具體計算公式如下:
(3)


(4)
通過卷積核與圖像的卷積,帶有原始圖像特征的特征圖就會被提取出來,經過多層卷積之后,低層特征圖會被提取出更具表征能力的特征圖。因此為了能夠得到更多的特征,更深層次的特征圖也會更多。
卷積層C1采用5個3*3的卷積核,對64*64的圖像進行卷積,得到5個(64-3+1)*(64-3+1)即62*62的特征圖,即提取了5個人臉紋理的特征圖;C2采用10個3*3的卷積核對31*31的S1進行卷積,得到10個(31-3+1)*(31-3+1)即29*29的特征圖;C3采用15個3*3的卷積核對14*14的S2進行卷積,得到15個(14-3+1)*(14-3+1)即12*12的特征圖。
(2)池化層。
池化層也稱作下采樣層,圖像經過多次卷積之后,特征圖的數量會越來越多,網絡結構也越來越復雜,同時網絡的參數也越多越容易引發過擬合。所以在卷積層后會加入一個池化層,來對特征圖進行特征聚合,降低維度。常見的池化方法有最大池化、平均池化和隨機池化。最大池化對于紋理特征提取明顯,所以文中選用最大池化。
池化層S1對卷積層C1進行2*2的最大池化,得到了5個大小為31*31的特征圖。同理S2對C2進行下采樣,得到10個14*14的特征圖,S3對C3進行下采樣,得到15個6*6的特征圖。
(3)全連接層。
為了增強網絡的非線性能力,同時限制網絡規模,一般會在卷積池化層之后加入一個全連接層。全連接層相當于傳統神經網絡中的多層感知機的隱藏層,即全連接層的每一個神經元與前一層的所有神經元互相連接,同層神經元之間不連接。其公式如下。
yW,b(x)=f(WTx+b)
(5)
其中,yW,b(x)表示神經元的輸出,W表示權值向量,x表示神經元輸入向量,b表示偏置,f(*)表示激活函數。實驗中為了降低網絡復雜度,避免過擬合,b設置為0。
(4)Softmax分類器。
卷積神經網絡輸出層選擇Softmax分類器,其公式如下:
(6)
其中,Vi表示分類器上一級輸入單元的輸出,i表示類別索引,C表示總類別個數,Si表示當前元素的指數與所有元素指數和的比值。
當輸入了給定樣本時,每一個神經元會輸出一個0到1的值,這個值便是給定樣本屬于每個分類的概率,從而可以判定給定樣本是哪一分類,達到識別人臉的效果。

文中算法的步驟如下:
(1)將數據庫人臉進行局部二值化處理,提取人臉特征紋理。
(2)將局部二值化的人臉放入DCGAN中訓練,訓練完成后用生成模式D來生成局部二值化的人臉,以擴充用于下一步中的CNN人臉識別的數據集,提高網絡的泛化性。
(3)將真實局部二值化的人臉和生成的局部二值化的人臉共同訓練CNN人臉識別模型。
(1)ORL人臉數據庫。
由英國劍橋大學AT&T實驗室創建,包含了40個人,每人10張共400張面部圖像,其中部分圖像包含了姿態、表情和面部飾物的變化。采集對象的面部表情和細節均有變化,例如笑與不笑,眼睛睜著或閉著,戴或者不戴眼鏡。
(2)Yale人臉數據庫。
由耶魯大學計算視覺與控制中心創建,包含了15個人,每人11張共165張圖片,數據庫里的人臉圖像包含了光照、表情和姿態的變化。相較于ORL人臉數據庫,Yale人臉數據庫中每個對象采集的樣本包含更加明顯的光照、表情和姿態以及遮擋的變化。
(1)人臉圖像局部二值模型處理。
Yale人臉數據庫中選取了一張,如圖4(a)所示,經過局部二值模型處理后的結果如圖4(b)所示,面部紋理特征得到增強,輪廓和邊緣特性更為明顯。
(2)生成的局部二值圖像。
將局部二值模式處理過的圖像放入DCGAN訓練,訓練完成后,通過DCGAN生成的局部二值模式處理過的人臉如圖4(c)所示,人臉輪廓和紋理都十分清晰。根據DCGAN生成對抗的原理,DCGAN中的判別模式無法區分生成圖是真是偽。

圖4 LBP處理和生成的圖像
通過DCGAN,Yale人臉數據庫每個人生成了55張,整個數據集擴充為990張。ORL人臉數據庫每個人生成了45張,數據庫擴充為2 200張。數據集得到顯著擴充,為比較原始數據集和文中方法擴充數據的識別率,保持訓練集、驗證集和測試集按照整個數據集劃分為8∶1∶1的比例不變。
(3)與其他方法比較。
圖5給出了在Yale人臉數據庫中使用原始數據集和文中方法數據集中驗證集和測試集的識別率對比情況,其中Epochs表示迭代次數,圖例CNN Val Acc為原始數據集的驗證集識別率,CNN Test Acc是原始數據測試集識別率,This article Val Acc和This article Test Acc為文中方法擴充數據集的驗證集和測試集識別率。表1前四個給出了在ORL人臉數據庫中各個算法中的識別率,后四個給出了在Yale人臉數據庫中各個算法的識別率,其中CNN是使用原始數據集進行訓練的卷積神經網絡。

圖5 識別率隨迭代次數變化曲線
文中將數據集按照8∶1∶1的比例劃分成訓練集、驗證集和測試集,其中訓練集用于訓練網絡參數,驗證集不參與網絡參數訓練,用于調整迭代數和學習率,可以認為訓練集和驗證集都參與了網絡的訓練過程,所有完全沒有參與過訓練的測試集用于網絡訓練完之后識別率測試。測試集完全不參與網絡訓練,所以識別率較驗證集會有所下降。測試集可以體現出網絡泛化能力。

表1 ORL和Yale人臉數據庫識別率 %
由圖5可以得出,文中提出的算法經過LBP算法提取人臉特征紋理并進行數據集擴充后,在測試集的識別率高于使用原始數據集的測試集識別率,泛化能力得到了提升。由表1得出,文中提出的識別率同時也高于傳統的人臉識別算法。實驗結果表明,經過局部二值模式處理提取面部紋理特征,擴充數據集,能夠有效地提升測試集識別率和卷積神經網絡的泛化能力。
針對卷積神經網絡人臉識別普遍存在的訓練數據少,容易造成訓練特征不足以及網絡的過擬合,泛化能力不足等問題,引入局部二值模型和深度卷積生成對抗網絡。在圖像預處理方面,首先通過局部二值模型提取出人臉面部紋理特征,再通過DCGAN訓練生成圖像,擴充數據集,提高卷積神經網絡的泛化能力。在ORL人臉數據庫和Yale人臉數據庫地測試結果表明,經過局部二值模式處理且擴充數據能提升卷積神經網絡的泛化能力,同時識別率也得到了提升。