武文杰,王紅蕾
(貴州大學電氣工程學院,貴州 貴陽 550000)
人臉識別技術是當前社會重點研究問題,它作為生物識別技術的一種,具有非接觸性,非強制性等優(yōu)點,具有廣闊的應用前景。但是,要進行識別的人臉若不是完整的,有遮擋的,特征并不完全,則傳統(tǒng)的人臉識別方法效果較差,因此出現(xiàn)一些關于特征不完整的人臉識別方法。關于該主題的最早工作之一是Savvides等人的工作[1]。在這項研究中,他們在各個面部區(qū)域進行了測試,以建立具有判別能力的量詞?;诨叶葓D像的核相關濾波器被用來減少圖像的維數(shù)和特征提取。隨后,他們利用支持向量機(SVM)來區(qū)分各種面部特征。他們測試了眼睛,鼻子和嘴巴,結果表明眼睛區(qū)域的驗證率更高。He等人[2]以類似的方式引入了一種稱為動態(tài)特征匹配(DFM)的技術,用于部分人臉識別。 他們的研究基于全卷積網絡(FCN)和稀疏表示的組合,F(xiàn)CN的目的是提取圖像的特征圖,他們工作的核心是利用VGG-Face模型將特征轉移到FCN,此方法產生了良好的分類精度。本文也是針對特征不完整人臉識別進行的實驗與研究。創(chuàng)新之處有:(1)使用對抗生成網絡進行人臉的修復補全,再對補全人臉的進行識別。將遮擋的部分補全進行識別,提高了識別率;(2)使用WGAN-GP網絡進行人臉修復,并且加入跳躍連接;(3)實驗比較使用了余弦相似度作為分類器進行識別。
生成對抗網絡(GAN)是 Goodfellow等人在2014年從自博弈論中的“二人零和博弈”中受到啟發(fā)而提出的[3]。如下圖所示,生成器G和判別器D這兩部分構成了生成對抗網絡。其中,生成器是用來獲取訓練數(shù)據(jù)分布并且不斷地生成與真實圖像相似的圖像;判別器是判斷輸入的數(shù)據(jù)是真實數(shù)據(jù)還是來自生成器的生成數(shù)據(jù),結果還將反饋回生成器。輸出結果概率越接近50%,生成數(shù)據(jù)越逼真。
圖1 生成對抗網絡工作原理Fig.1 Principle of generating countermeasure network
WGAN-GP是 WGAN的改進版[4],WGAN和DCGAN相比是用連續(xù)的 Wasserstein距離代替 KL散度、JS散度度量兩個分布的遠近,效果更加優(yōu)秀。WGAN-GP對WGAN改進之處在連續(xù)性限制的條件方面,給WGAN加一個外罰,使用梯度懲罰(gradient penalty)的方法來滿足 lipschitz連續(xù)性條件。使用Wasserstein距離去衡量生成數(shù)據(jù)分布和真實數(shù)據(jù)分布之間的距離,理論上解決了訓練不穩(wěn)定的問題;解決了模式崩潰的(collapse mode)問題,生成結果多樣性更豐富;提出了一種新的lipschitz連續(xù)性限制手法—梯度懲罰,解決了訓練梯度消失梯度爆炸的問題;擁有更快的收斂速度,并能生成更高質量的樣本。
近年來,機器學習最流行的方法之一是基于深度學習的機器學習,包括卷積神經網絡(CNN),其在視覺計算領域的使用已經引起轟動。CNN是受監(jiān)督的機器學習技術,可以通過基于樣本的嚴格訓練從數(shù)據(jù)集中提取深層知識。CNN已經成功應用于特征提取,面部識別,分類和分割等功能。如今,基于 CNN架構的最先進的深度學習模型已在幾乎所有與視覺計算相關的領域中使用,包括圖像感知,識別,分類和信息檢索。
通常,有三種部署CNN的方式。包括在從頭開始訓練網絡,微調現(xiàn)有模型或使用現(xiàn)成的 CNN功能。后兩種方法稱為遷移學習。從頭開始訓練CNN需要大量數(shù)據(jù),這通常是一項艱巨而艱巨的任務。微調涉及將從基礎網絡學到的前幾層的權重轉移到目標網絡。然后可以使用新的數(shù)據(jù)集訓練目標網絡。
對于使用CNN的面部識別,有幾種預訓練的模型可以輕松用于特征提取,例如VGGF,VGG16,VGG19等。在本文中,對于特征提取,本文利用了VGGF預訓練模型,將在下面進行討論。因此,本文在這里采用的方法使用預先訓練好的VGGF模型進行特征提取,然后使用CS[5]等分類器進行分類。
生成對抗網絡模型如圖2所示由生成器模型G和判別器模型D組成。其中conv指卷積層,deconv代表解卷積層,卷積核的大小為5*5。
圖2 本文生成對抗網絡模型Fig.2 Model of countermeasure network generated in the paper
生成器中,生成器分為編碼器和解碼器兩部分,是由下采樣的卷積層與上采樣的解卷積層組成,同時通過跳躍連接將低級別的特征傳到高層特征上。激活函數(shù)的使用借鑒wgan,下采樣層使用激活函數(shù)Leaky-ReLU[6],防止梯度稀疏;上采樣層使用ReLU[6],最后一層使用Tanh激活函數(shù)[6]。
判別器是通過不斷與生成器對抗學習,進而提高自己識別真假圖像的準確率。圖中判別器模型是由卷積神經網絡構成,輸入包括真實圖像和生成圖像。因為使用的是Wasserstein距離衡量去兩個分布間的距離,所以判別器要單獨對每一樣本進行梯度懲罰。為了防止同一 batch不同樣本相互依賴,判別器各層不用Batch Normalization[7]。
2.1.1 生成器損失函數(shù)
傳統(tǒng)的生成對抗網絡的生成器損失函數(shù)只有生成對抗損失,為了生成器能夠生成與真實圖像更加相似的圖像,本文在傳統(tǒng)生成器的損失函數(shù)上增加了內容損失。對抗損失為破損圖像生成與真實的差別,內容損失為有內容的區(qū)域(未破損區(qū)域)生成與真實的差別。
對抗損失將破損圖像當作條件加入到生成器輸入中,此時對抗損失為
內容損失使用 L1距離來判斷生成器生成樣本的未破損區(qū)域與真實樣本的未破損區(qū)域的差別。假設M為圖像掩膜,其與輸入圖像具有同樣大小的尺寸,其中破損像素點用 0表示,完好的像素點用 1來表示,則內容損失為如下
其中,符號⊙代表兩個矩陣的對應元素相乘。
最終,結合以上兩部分損失函數(shù),生成器的損失函數(shù)的形式為:
其中,α1為權重系數(shù)。
2.1.2 判別器損失函數(shù)
在很多不同結構的對抗網絡中,判別器的損失函數(shù)基本一致。本文希望判別器能夠識別出真實樣本,給真實樣本高的評分并給生成樣本低分,因此,EX~PrDx足夠大且 Ex~PgDx足夠小。同時使用Wasserstein距離代替KL散度、JS散度來衡量真實樣本與生成樣本的差異,并且加入梯度懲罰Ex~px[∥ ?x D x∥ p-1]2對判別器進行 Lipschitz限制。所以判別器的損失函數(shù)為
此外,文獻[4]指出沒有必要在整個空間施加Lipschitz限制,只要重點抓住生成樣本集中區(qū)域、真實樣本集中區(qū)域以及夾在他們中間的區(qū)域就可以。
2.2.1 VGGF模型
有幾種針對CNN的預訓練模型,最流行和廣泛用于人臉識別的模型之一是VGGF模型由牛津大學VGG小組開發(fā)。該模型在龐大的數(shù)據(jù)集上進行了訓練,該數(shù)據(jù)集包含 2.6K個人的 2.6M 面部圖像。VGGF的體系結構由38層組成,從輸入層到輸出層。輸入應該是大小為224×224的彩色圖像,并且作為預處理步驟,通常會從輸入圖像中計算平均值[8]。VGGF包含13個卷積層,每個層具有一組特殊的混合參數(shù)。每組卷積層包含5個最大池化層,并且還有15個激活函數(shù)單元(ReLU)。在這些層之后,有三個完全連接的層,即FC6,F(xiàn)C7和 FC8。前兩個具有4096個通道,而具有1000個通道的FC8用于對1000個標識進行分類。最后一層是分類器,它是一個 softmax層,用于對單個面部類別所屬的圖像進行分類。
圖3 VGGF網絡模型Fig.3 VGGF network model
2.2.2 特征提取
CNN在訓練階段學習特征,然后使用這些特征對圖像進行分類。每個卷積(conv)層學習不同的功能。例如,一層可以了解諸如圖像的邊緣和顏色之類的實體,而在更深的層中可以了解更多的復雜特征。在VGGF中,共有37層,其中13層是卷積,其余各層在 ReLU,池化,完全連接層之間混合,最后一層是softmax。但是,將最后一個卷積圖層應用于輸入圖像后,該輸入圖像具有512個3×3大小的濾鏡,可以出于分類目的提取特征[9]。
為了在VGGF模型中確定要用于面部特征提取的最佳圖層,通常必須進行多次試驗和錯誤實驗。在這種情況下,文獻[7]測試了第 34層到第37層,最好的結果來自第34層。值得注意的是,該層是完全連接的層,位于第34層的末端。一個神經網絡,意味著提取的特征代表整個面部,在訓練和測試中都使用了正面的全臉,獲得了100%的識別率。
2.2.3 分類器的選擇
監(jiān)督機器學習中的分類是一種功能,用于分配一組目標類別或類別所屬的新觀察項。本文采取的分類器是余弦相似度,為了驗證本文所選分類器效果的優(yōu)越性,本文選擇了 softmax、余弦相似度(CS)、線性SVM分類器和稀疏表示[12]四個分類器進行實驗比較。
余弦相似度(CS)是用向量空間中兩個向量夾角的余弦值作為衡量兩個個體間差異的大小的度量。余弦值越接近 1,就表明夾角越接近 0度,也就是兩個向量越相似。歐氏點積公式如公式(1)可用于計算余弦相似度,從而
其中,A和 B是兩個向量,θ是它們之間的夾角。
為了進行分類,在實驗中,都使用等式計算CS以找到測試圖像與訓練圖像之間的最小距離。
SVM是一種監(jiān)督型機器學習算法,可用于二進制分類和多分類問題。SVM致力于通過超平面識別邊距,以將數(shù)據(jù)分為幾類。 通過在分離的超平面之間創(chuàng)建最大可能的距離,使余量最大化可減少預期泛化誤差的上限。顯然,SVM可以解決二進制分類問題。 在實驗中,使用線性支持向量機來解決基于一對一方法的多類分類問題。至于支持向量機的類型(介于線性核和非線性核之間),根據(jù)文獻[7]的實驗表明,線性SVM總體識別效果要好且計算效率更高。因此該文選擇線性SVM。
信號稀疏分解[12]的基本思想是:使用超完備的冗余函數(shù)字典作為基函數(shù),字典的選擇盡可能地符合被逼近信號的結構,字典中的元素被稱為原子。利用貪婪算法或者自適應追蹤算法,從字典中找到具有最佳線性組合的很少的幾項原子來表示一個信號,也稱作高度非線性逼近。本文主要利用字典的冗余特性可以更好地捕捉信號本質特征這一特點,提出分類算法SRC作為分類器[10]。
實驗過程如圖4所示。
圖4 方法流程Fig.4 Method flow
文中將遮擋人臉首先通過WGAN進行修復,得到完整的人臉,然后將完整的人臉輸入到VGGF網絡中提取特征,最后通過分類器進行身份識別。
使用CelebA數(shù)據(jù)集作為訓練集與測試集,數(shù)據(jù)集包含202599張人臉圖片像,尺寸均為178*218,對圖像進行預處理。先將圖像裁剪成128*128大小,在對抗生成網絡中進行訓練。實驗中選取處理完的15萬張圖片作為訓練集來進行訓練,其余作為測試集。同時將CelebA數(shù)據(jù)集resize成224*224尺寸大小,在VGG16網絡中進行訓練。進行識別實驗時,如圖5所示將測試圖像遮住一只眼睛、鼻子、兩只眼睛、嘴巴、右半邊臉以及下半邊臉。對其進行修復,修復后的圖像通過 resize操作,將尺寸轉變?yōu)?24*224,輸入到VGG網絡進行識別。
圖5 不同遮擋部位Fig.5 Different occluded parts
如圖6所示,分別是被遮擋圖片與修復后圖片。我們將被遮擋的人臉圖像和修復后的人臉圖像分別進行人臉識別,并且使用不同的方法(不同分類器)進行人臉識別,得到的結果如圖7和圖8所示。
圖6 遮擋與修復人臉圖像Fig.6 Occluding and restoring face image
圖7 不同方法修復前識別Fig.7 Recognition before different restore methods
從圖中可以看出,不同部位不同大小遮擋對識別效果都有影響,下半部臉的遮擋對識別效果的影響最大。修復后進行識別的效果要比修復前進行識別的效果好,說明先修復再識別方法可以提高人臉識別的精度。四種方法中使用余弦相似度的效果最好,識別精度最高,說明本文的方法最好。
圖8 不同方法修復后識別Fig.8 Recognition after different restore methods
綜上所述,本文采取先修復再識別的方法,用帶有跳躍連接的 WGAN-GP進行人臉修復,用VGG16進行人臉特征提取并采用余弦相似度作為分類器進行識別,所得的效果最優(yōu)。
本文提出了一種新的針對遮擋人臉識別的改進方法,對不同部位遮擋和不同大小遮擋識別率均有提升。這對于刑偵破案、身份驗證等方面都有應用價值。采用WGAN-GP來對遮擋人臉圖像進行修復,同時在生成器中加上跳躍連接,加強了網絡自主學習能力,使生成的人臉圖像更加接近真實的人臉圖像;然后將生成的完整人臉圖片輸入到改進的VGG16網絡里進行識別,最終得到比較好的識別結果。