厙向陽,劉 巧,葉 鷗
西安科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,西安 710054
身份認(rèn)證是人們?nèi)粘I钪薪?jīng)常面對的一個(gè)問題,在國家安全、公安司法、電子商務(wù)等方面都具有十分廣泛的應(yīng)用。人臉作為人的內(nèi)在屬性,具有很強(qiáng)的自身穩(wěn)定性和個(gè)體差異性。因此,利用人臉特征進(jìn)行身份驗(yàn)證是最直接的手段[1]。傳統(tǒng)的人臉驗(yàn)證與識(shí)別方法包括幾何特征法、模板匹配法、統(tǒng)計(jì)分析法等,在非限制條件下取得了一些很好的成果,但是由于易受到圖像光照差異、尺度變化及表情的影響,在現(xiàn)實(shí)場景中識(shí)別準(zhǔn)確率較低。近幾年,隨著Hinton等人掀起深度學(xué)習(xí)[2](Deep Learning)的研究熱潮,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)在人臉認(rèn)證和識(shí)別[3-4]領(lǐng)域中得到了廣泛的研究與發(fā)展。卷積神經(jīng)網(wǎng)絡(luò)可以自主學(xué)習(xí)提取出人臉的隱性特征。大部分基于深度學(xué)習(xí)的人臉認(rèn)證算法是將人臉認(rèn)證歸結(jié)為一個(gè)人臉識(shí)別問題來處理,其認(rèn)證過程需先確定測試人臉的身份信息,再根據(jù)身份信息判斷兩張人臉是否來自同一人,該類算法的典型代表有DeepFace[5]算法、DeepID[6-7]系列算法、FaceNet[8]算法等。但由于這些方法在訓(xùn)練階段需要大量帶有身份標(biāo)記的訓(xùn)練樣本進(jìn)行監(jiān)督學(xué)習(xí),因此增加了額外標(biāo)記數(shù)據(jù)的成本,且在認(rèn)證階段,需先確定人臉樣本的身份信息才能判斷樣本類別,使人臉認(rèn)證過程變得復(fù)雜。針對以上問題,本文提出了融合LeNet-5和Siamese神經(jīng)網(wǎng)絡(luò)模型的人臉驗(yàn)證算法,通過直接度量兩張人臉的相似性,判斷兩張人臉是否為同一人。算法在Siamese神經(jīng)網(wǎng)絡(luò)框架下,構(gòu)建雙分支卷積神經(jīng)網(wǎng)絡(luò),并對雙分支網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行改進(jìn),利用改進(jìn)后的雙分支卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行特征提取,通過測量人臉特征間的相似性,判斷兩張人臉是否是同一人。
卷積神經(jīng)網(wǎng)絡(luò)最早是由Fukushima[9]提出的,一個(gè)完整的卷積神經(jīng)網(wǎng)絡(luò)模型的結(jié)構(gòu)分為:輸入層、卷積層、池化層、全連接層和輸出層,如圖1所示。
圖1 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
(1)輸入層。一般為若干張M×N大小的圖像。
(2)卷積層。輸入層的下一層為卷積層,通過若干個(gè)卷積核進(jìn)行卷積運(yùn)算。卷積核重復(fù)作用于整個(gè)輸入?yún)^(qū)域的每個(gè)感受野,卷積后的結(jié)果就構(gòu)成了輸入圖像的特征圖(Feature Map)。令Hi表示第i層卷積輸出的特征圖,那么卷積公式表示如下:
其中,Wi表示第i層的卷積核權(quán)重矩陣,當(dāng)i=1時(shí),Hi-1表示輸入的圖像;bi為卷積核對應(yīng)的偏置值;表示卷積運(yùn)算;f(?)表示激活函數(shù)。
(3)池化層。卷積層的下一層為池化層,它的主要作用是對卷積層輸出的特征圖進(jìn)行尺度縮小,是一種非線性的下采樣方法。
(4)全連接層??拷W(wǎng)絡(luò)輸出層之前,一般有多個(gè)連續(xù)的全連接層,這些全連接層構(gòu)成了一個(gè)淺層的神經(jīng)網(wǎng)絡(luò),起到了一個(gè)分類器的作用。全連接層對經(jīng)過卷積、池化操作后的特征進(jìn)行回歸或分類處理,映射到樣本標(biāo)記空間。
(5)輸出層。在人臉識(shí)別領(lǐng)域常用softmax分類器進(jìn)行分類。softmax是一個(gè)多分類器,特征向量輸入到softmax分類器中,會(huì)輸出當(dāng)前樣本x屬于第i類的概率值。設(shè)給定h(x,yi)為x屬于第i類的原始度量,則softmax公式如下:
其中,P(y=i|x)表示樣本x屬于第i類的概率。
Siamese網(wǎng)絡(luò)又稱孿生網(wǎng)絡(luò)[10],主要思想是通過卷積神經(jīng)網(wǎng)絡(luò)對樣本進(jìn)行非線性轉(zhuǎn)化,將樣本從原始的數(shù)據(jù)空間映射到低維度易區(qū)分的目標(biāo)空間,在目標(biāo)空間中對數(shù)據(jù)向量進(jìn)行相似度判斷,辨別兩個(gè)樣本是否屬于一類。
Siamese網(wǎng)絡(luò)是一種雙分支網(wǎng)絡(luò),網(wǎng)絡(luò)有兩個(gè)結(jié)構(gòu)相同且權(quán)值共享的子網(wǎng)絡(luò)。將樣本x1、x2同時(shí)輸入到這兩個(gè)子網(wǎng)絡(luò)中,通過子網(wǎng)絡(luò)映射轉(zhuǎn)換到向量空間,輸出特征向量Gw(x1)和Gw(x2),計(jì)算Gw(x1)和Gw(x2)之間的距離得到相似性度量Dw,通過判別相似性度量Dw大小達(dá)到分類的目的。Siamese網(wǎng)絡(luò)結(jié)構(gòu)圖如圖2所示。
圖2 Siamese網(wǎng)絡(luò)結(jié)構(gòu)圖
Siamese網(wǎng)絡(luò)對成對樣本進(jìn)行訓(xùn)練,獲得一組參數(shù),使得當(dāng)x1、x2來自同一類別時(shí),相似性度量Dw為一個(gè)較小的值;當(dāng)x1、x2來自不同類別時(shí),相似性度量Dw為一個(gè)較大的值。Dw計(jì)算公式如下:
其中,Gw(x1)、Gw(x2)為x1、x2的特征向量。
首先將人臉數(shù)據(jù)集進(jìn)行匹配,處理為成對的數(shù)據(jù)樣本。然后將成對樣本輸入到融合網(wǎng)絡(luò)模型中,利用雙分支LeNet-5卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行特征提取。卷積網(wǎng)絡(luò)將樣本從原始空間映射到容易進(jìn)行相似性度量的低維度目標(biāo)空間中,在目標(biāo)空間中通過使用Contrastive Loss函數(shù)對融合網(wǎng)絡(luò)進(jìn)行訓(xùn)練,最后通過測量樣本相似性,判斷兩張人臉樣本是否來自同一人。融合LeNet-5和Siamese卷積神經(jīng)網(wǎng)絡(luò)的模型流程圖如圖3所示。
圖3 算法流程框架圖
3.2.1 融合神經(jīng)網(wǎng)絡(luò)特征提取
融合神經(jīng)網(wǎng)絡(luò)模型使用雙分支LeNet-5卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行特征提取,具體特征提取過程如下。
令M×N表示輸入圖像的大小,s表示步長,k×k表示卷積核大小。融合神經(jīng)網(wǎng)絡(luò)模型采用pad為1的零填充(zero padding)方式,對輸入圖片的邊緣使用零值進(jìn)行填充,填充后的圖像大小為(M+2×p)×(N+2×p)。設(shè)窗口矩陣Xij表示當(dāng)前卷積滑動(dòng)窗口內(nèi)的所有像素,Yij表示Xij經(jīng)過卷積運(yùn)算后的特征值。則融合神經(jīng)網(wǎng)絡(luò)中兩個(gè)子網(wǎng)絡(luò)的卷積操作過程如圖4所示。
圖中融合神經(jīng)網(wǎng)絡(luò)中兩個(gè)子網(wǎng)絡(luò)的卷積核權(quán)重矩陣W和偏置值b相同。特征值Yij的具體計(jì)算公式如下:
其中,f(?)表示激活函數(shù),融合神經(jīng)網(wǎng)絡(luò)模型采用修正線性單元(Rectified Linear Unit,ReLU)作為激活函數(shù),計(jì)算公式如下:
在卷積操作完成后,將得到的特征圖輸入到池化層。常見的兩種池化方法有最大值池化(max-pooling)和平均值池化(average-pooling)。融合神經(jīng)網(wǎng)絡(luò)采用最大池化的方法對特征圖進(jìn)行池化操作,池化操作過程如圖5所示。
圖5 融合神經(jīng)網(wǎng)絡(luò)池化操作
圖片經(jīng)過卷積、池化后得到一系列特征矩陣。在全連接層,對兩張圖片的特征矩陣進(jìn)行整合得到兩組特征向量 Fleft、Fright。
其中,Ni表示第i層全連接神經(jīng)元的個(gè)數(shù)。融合神經(jīng)網(wǎng)絡(luò)的兩個(gè)子網(wǎng)絡(luò)各有兩個(gè)全連接層。
融合神經(jīng)網(wǎng)絡(luò)還采用了Dropout技術(shù)[11]預(yù)防網(wǎng)絡(luò)過擬合,每次迭代以0.5的概率隨機(jī)讓網(wǎng)絡(luò)中某些隱藏節(jié)點(diǎn)暫時(shí)被刪除,在反向傳播階段,讓這些隱藏節(jié)點(diǎn)的權(quán)值不更新,提高模型的泛化能力。
圖4 融合神經(jīng)網(wǎng)絡(luò)卷積操作
3.2.2 融合神經(jīng)網(wǎng)絡(luò)的損失函數(shù)
融合卷積網(wǎng)絡(luò)模型沒有采用Softmax分類器進(jìn)行分類,而是使用Contrastive Loss函數(shù)[12]指導(dǎo)訓(xùn)練網(wǎng)絡(luò)模型。雙分支卷積神經(jīng)網(wǎng)絡(luò)對人臉樣本進(jìn)行非線性轉(zhuǎn)化,將數(shù)據(jù)集從原始空間分布轉(zhuǎn)換為另一種空間分布,在新空間中Contrastive Loss函數(shù)通過減小同類樣本距離、增大不同類樣本距離,指導(dǎo)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練。設(shè)輸入樣本為(x1,x2),若x1、x2來自同一類,標(biāo)簽Y為1;否則,標(biāo)簽Y為0。Dw表示樣本(x1,x2)之間的歐式距離。Contrastive Loss函數(shù)的表達(dá)式如下:其中,超參數(shù)m(margin)為距離閾值,當(dāng)Y=0時(shí)對整個(gè)網(wǎng)絡(luò)起作用。
融合網(wǎng)絡(luò)優(yōu)化目標(biāo)是最小化損失函數(shù)L(w,(Y,x1,x2))。當(dāng)Y=1時(shí) ,-Y){max ( 0 ,m-Dw)}2為 0,若 使L(w,(Y,x1,x2))最小化,則不斷縮小來自同一類樣本的Dw;當(dāng)Y=0時(shí)(Dw)2為0,若使L(w,(Y,x1,x2) )最小化,則讓max(0,m-Dw)=0,即m 本文算法實(shí)驗(yàn)的系統(tǒng)環(huán)境Linux Ubuntu16.04,編程環(huán)境為Python,采用Caffe深度學(xué)習(xí)框架。 數(shù)據(jù)集來自CMU_PIE數(shù)據(jù)庫。該數(shù)據(jù)庫包含有67個(gè)人,其中每個(gè)人都包含5種姿態(tài)變化、光照差異和部分表情變化。對該數(shù)據(jù)集進(jìn)行預(yù)處理操作,將圖片進(jìn)行兩兩無重復(fù)匹配生成成對樣本集,將來自同一個(gè)人的兩張圖片稱為正樣本,標(biāo)簽設(shè)為1,來自不同人的兩張圖片稱為負(fù)樣本,標(biāo)簽設(shè)為0。一共生成12 000對樣本集,正、負(fù)樣本各6 000對。正、負(fù)樣本如圖6中(a)、(b)所示。 圖6 正、負(fù)樣本 4.2.1 參數(shù)設(shè)置 隨機(jī)選擇10 000對樣本(正負(fù)樣本各5 000對)作為訓(xùn)練集,用于模型的構(gòu)建和參數(shù)的調(diào)整,剩下2 000對樣本(正負(fù)樣本各1 000對)作為測試集,用于檢驗(yàn)已訓(xùn)練模型的性能。對數(shù)據(jù)集進(jìn)行歸一化處理,并將訓(xùn)練集的圖片進(jìn)行鏡面翻轉(zhuǎn),擴(kuò)充數(shù)據(jù)量。 將訓(xùn)練集輸入到網(wǎng)絡(luò)中進(jìn)行模型訓(xùn)練,訓(xùn)練過程所涉及的參數(shù)有:batch_size大小、學(xué)習(xí)率設(shè)置、優(yōu)化方法選取、激活函數(shù)及損失函數(shù)中margin值的大小。模型參數(shù)設(shè)置如表1所示。 表1 參數(shù)設(shè)置 4.2.2 評價(jià)指標(biāo) 對模型進(jìn)行評估時(shí),使用的評價(jià)指標(biāo)有:ROC曲線、AUC、十折交叉驗(yàn)證準(zhǔn)確率。 ROC曲線以假陽率(FPR)為橫坐標(biāo)、真陽率(TPR)為縱坐標(biāo),真陽率(TPR)、假陽率(FPR)及ACC的計(jì)算公式如下: 其中,TP(True Positive)表示正類樣本對被判定為正類;TN(True Negative)表示負(fù)類樣本對被判定為負(fù)類;FP(False Positive)表示正類樣本對被判定為負(fù)類;FN(False Negative)表示負(fù)類樣本對被判定為正類;dist.size表示距離數(shù)組的大小。 4.2.3 實(shí)驗(yàn)方案 為了設(shè)計(jì)最佳LeNet-5模型結(jié)構(gòu)并驗(yàn)證融合網(wǎng)絡(luò)模型的有效性,本文采用在相同的實(shí)驗(yàn)環(huán)境下,相同數(shù)據(jù)集以及相同數(shù)據(jù)量,設(shè)計(jì)如下實(shí)驗(yàn)方案: 方案1分別將卷積核大小設(shè)置為3×3、7×7進(jìn)行實(shí)驗(yàn),并與原LeNet-5模型[13]5×5卷積核結(jié)構(gòu)進(jìn)行對比。 方案2分別采用卷積層數(shù)為3、4、5層進(jìn)行實(shí)驗(yàn),并與原LeNet-5模型2層卷積結(jié)構(gòu)進(jìn)行對比。 方案3 對原LeNet-5、Alexnet[14]、LBPH+Joint Bayesian[15]以及本文的融合LeNet-5與Siamese神經(jīng)網(wǎng)絡(luò)模型進(jìn)行人臉驗(yàn)證的對比實(shí)驗(yàn),并使用評價(jià)指標(biāo)對四種模型進(jìn)行評估。 方案1不同卷積核大小實(shí)驗(yàn)結(jié)果如圖7所示,3×3和5×5卷積核結(jié)構(gòu)的訓(xùn)練準(zhǔn)確率基本相同,但3×3卷積核結(jié)構(gòu)的測試準(zhǔn)確率略高于5×5卷積核結(jié)構(gòu),7×7卷積核結(jié)構(gòu)的訓(xùn)練準(zhǔn)確率和測試準(zhǔn)確率最低。這是因?yàn)樵谙嗤矸e層數(shù)的情況下,當(dāng)選擇較大的卷積核時(shí)其參數(shù)個(gè)數(shù)和計(jì)算復(fù)雜度也會(huì)隨之增加,這可能使得網(wǎng)絡(luò)計(jì)算性能降低。在本文實(shí)驗(yàn)中3×3卷積核結(jié)構(gòu)最合適。 圖7 不同卷積核大小實(shí)驗(yàn)對比結(jié)果 方案2不同卷積層數(shù)實(shí)驗(yàn)結(jié)果如圖8所示,3層卷積結(jié)構(gòu)的訓(xùn)練準(zhǔn)確率和測試準(zhǔn)確率最高,4層及5層卷積結(jié)構(gòu)次之,原LeNet-5的2層卷積結(jié)構(gòu)訓(xùn)練準(zhǔn)確率和測試準(zhǔn)確率最低。分析方案2可知,深層的神經(jīng)網(wǎng)絡(luò)可以學(xué)習(xí)到圖片的本質(zhì)特征,但是過度加深網(wǎng)絡(luò),可能會(huì)增加網(wǎng)絡(luò)訓(xùn)練的難度,反而降低網(wǎng)絡(luò)性能。在本文實(shí)驗(yàn)中3層卷積結(jié)構(gòu)最合適。 圖8 不同卷積層數(shù)實(shí)驗(yàn)對比結(jié)果 方案3根據(jù)方案1、方案2實(shí)驗(yàn)結(jié)果,方案3中LeNet-5模型采用3×3的卷積核、3層卷積結(jié)構(gòu)。圖9、圖10為四種模型在CUM_PIE數(shù)據(jù)集、ORL數(shù)據(jù)集上的ROC曲線圖。 AUC為ROC曲線下的面積,ROC曲線越靠近左上角,意味著在某個(gè)FPR水平下,TPR越高,AUC值越大,模型認(rèn)證性能越好,其中影響模型認(rèn)證性能的主要因素是模型對人臉特征的表達(dá)能力。從圖9、圖10可知,LeNet-5+Siamese網(wǎng)絡(luò)模型在兩個(gè)數(shù)據(jù)集上的ROC曲線最靠近左上角且AUC值最高,模型性能最好。相比于原LeNet-5模型特征提取和LBPH特征提取,本文模型對人臉圖片具有更強(qiáng)的特征提取能力,且相對于原LeNet-5網(wǎng)絡(luò)模型和Alexnet網(wǎng)絡(luò)模型,本文網(wǎng)絡(luò)模型通過使用Contrastive Loss函數(shù)減小同類樣本距離、增大不同類樣本距離,提升了模型對樣本的區(qū)分能力。 方案3四種模型在CUM_PIE數(shù)據(jù)集、ORL數(shù)據(jù)集上的AUC值和十折交叉驗(yàn)證準(zhǔn)確率,結(jié)果如表2、表3所示。 圖9 各算法在CUM_PIE數(shù)據(jù)集中ROC曲線圖 圖10 各算法在ORL數(shù)據(jù)集中ROC曲線圖 表2 模型在CUM_PIE數(shù)據(jù)集中測試結(jié)果 表3 模型在ORL數(shù)據(jù)集中測試結(jié)果 由表2、表3可知,本文模型在兩個(gè)數(shù)據(jù)集上都取得了不錯(cuò)的認(rèn)證結(jié)果,相比于其他三種模型,融合神經(jīng)網(wǎng)絡(luò)模型的AUC值和準(zhǔn)確率均為最高。相比于原LeNet-5人臉認(rèn)證模型,論文改進(jìn)的算法模型認(rèn)證準(zhǔn)確率有較大提升。分析方案3可知,相比于原LeNet-5算法模型與Alexnet算法模型,LeNet-5+Siamese算法模型結(jié)構(gòu)簡單有效,且各層之間參數(shù)共享,使得訓(xùn)練參數(shù)大大減少,提升網(wǎng)絡(luò)計(jì)算性能。相比于LBPH+JoinBayesian算法模型,融合神經(jīng)網(wǎng)絡(luò)通過使用雙分支網(wǎng)絡(luò)提取特征,避免了繁雜的人工提取特征,泛化能力更強(qiáng)。另外,融合網(wǎng)絡(luò)在訓(xùn)練階段不需要大量帶有身份標(biāo)記的訓(xùn)練樣本,減少了標(biāo)記數(shù)據(jù)的成本。 本文提出了融合LeNet-5和Siamese神經(jīng)網(wǎng)絡(luò)模型的人臉驗(yàn)證算法,相較于大部分基于身份標(biāo)記的人臉驗(yàn)證算法,該算法通過直接測量兩張人臉特征間的相似性,來判斷兩張人臉是否來自同一人,既簡化了人臉認(rèn)證的過程,又減少了標(biāo)記數(shù)據(jù)的成本。且該算法的網(wǎng)絡(luò)模型采用雙分支卷積網(wǎng)絡(luò)結(jié)構(gòu)同時(shí)進(jìn)行提取特征,并使用Contrastive Loss函數(shù)對網(wǎng)絡(luò)進(jìn)行訓(xùn)練,提升融合網(wǎng)絡(luò)對圖片的識(shí)別、區(qū)分能力,提高了二分類人臉驗(yàn)證問題的準(zhǔn)確度。經(jīng)測試,該網(wǎng)絡(luò)模型具有較強(qiáng)的泛化能力,在CUM_PIE和ORL數(shù)據(jù)集上的準(zhǔn)確率分別達(dá)到了95.1%和90.5%。但由于實(shí)驗(yàn)環(huán)境限制,該網(wǎng)絡(luò)模型只適用于中小型數(shù)據(jù)集,對于數(shù)量較大的數(shù)據(jù)集,網(wǎng)絡(luò)模型的計(jì)算效率還有待提高。未來應(yīng)對大型數(shù)據(jù)集和真實(shí)環(huán)境中的數(shù)據(jù)集進(jìn)行深入的研究和分析。4 算法驗(yàn)證與分析
4.1 實(shí)驗(yàn)環(huán)境與數(shù)據(jù)集
4.2 參數(shù)設(shè)置與實(shí)驗(yàn)方案
4.3 實(shí)驗(yàn)結(jié)果及分析
5 結(jié)束語