徐潤昊,程吉祥,李志丹,付小龍
(西南石油大學電氣信息學院,成都 610500)
運用圖像處理技術進行人臉識別以獲取身份信息在實際生活中具有重要意義。該技術已被廣泛應用于公共安全監控、移動支付、警方取證等領域。人臉識別的發展主要分為3 個階段[1]:第1 階段主要研究人臉識別所需要的面部幾何特征;第2 階段是人機交互階段,主要將人臉面部特征用多維特征矢量表示;第3 階段是機器自動學習階段,推動人臉識別進行實用化。目前,正常情境下的完整人臉識別準確率已經滿足一定場景需要,然而實際人臉表情和姿態具有復雜性和易變性,且帽子、口罩、圍巾等物體易對人臉產生遮擋,檢測到的人臉不一定完好無缺,這易造成人臉識別準確率急劇下降,限制該技術在復雜場景下的應用[2]。因此,研究有遮擋的人臉識別對于拓展人臉識別應用具有重要意義。
本文提出一種基于循環生成對抗網絡的含遮擋人臉識別算法,通過構建一種改進的循環生成對抗網絡對遮擋人臉進行盲修復,該算法不需要使用遮擋區域的信息,僅通過2 個生成器和2 個判別器循環訓練,就能提高生成人臉與原遮擋人臉的特征重合度及豐富有效人臉特征。在此基礎上,構建基于ResNet-50[3]的卷積網絡,并對修復后的人臉圖像進行再識 別。通過令RegularFace 損失函 數[4]與softmax 損失函數配合使用來處理修復后人臉可能存在的特征融合問題。
研究有遮擋的人臉識別一般有2 個思路。一種是對遮擋人臉進行有效的人臉提取,然后再根據提取的有效人臉特征進行人臉識別。魯棒的特征提取方法是對人臉圖像中顏色、亮度等低階特征和姿態、表情等高階特征進行分解[5]。傳統的魯棒特征提取方法如梯度臉[6],通過將人臉圖像處理成梯度直方圖,去除不必要的信息,并保留關鍵信息。FPH 框架[7]則通過將卷積神經網絡引入經典的“特征圖-模式圖-柱狀圖”模式來提取特征。文獻[8]提出子空間回歸方法,將不同類別的人臉劃分為不同的子空間,令有遮擋人臉和無遮擋人臉各自回歸到相應的子空間,并對無遮擋的子空間進一步處理。CEN等[9]提出一種基于深度字典表示的人臉圖像分類方法,其使用卷積神經網絡對遮擋人臉圖像進行深層特征提取,然后使用字典對提取的深層特征進行線性編碼。這類方法所提取的有效特征忽略甚至直接丟棄了許多其他特征,容易造成識別準確率過低。另一種思路是先對遮擋部分的人臉進行修復,然后再經過恰當的識別網絡對修復后的人臉進行分類,這種方法通過恢復原來缺失的特征信息,使待識別的人臉擁有接近原圖的豐富特征,采用的方法包括自動編碼器、生成對抗網絡(Generative Adversarial Networks,GAN)等。文獻[10]使用自動編碼器作為生成器,采用全局和局部2 個判別器使生成圖像的語義更加豐富。文獻[11]針對圖像修復可能出現不夠清晰的情況,采用圖像解耦后融合的方法來修復人臉。文獻[12]提出一種Multi-Loss 模型,將注意力機制和GAN 結合來提升修復效果。文獻[13]針對網格遮擋設計一種加權的FCN 修復模型,但不適用于其他類型的遮擋。文獻[14]提出一種級聯生成對抗網絡的修復方法,生成器采用由粗到精的級聯模式,判別器采用將局部和全局相融合的雙重判別式模型。
現有大多數修復方法均需要遮擋區域信息來保證復原的真實性,但是這對于一定規模的人臉識別來說不切合實際。對修復后人臉進行分類的方法有SVM[15]、貝葉斯分類器[16]等,但這些分類方法效果有偏差并且很難與特征提取網絡相結合,實際使用中有諸多不便?;谏疃葘W習的方法是一種端到端的方法,其將特征提取和特征分類融合在一個模型中,是當前研究熱點。
卷積神經網絡是深度學習人臉識別的重要組成部分,其作用是從人臉中提取更豐富、更深層次的特征,主要由卷積層、池化層和全連接層組成。卷積層的核心為卷積核,輸入的特征通過卷積核進行一系列卷積操作后就能得到更深層次的特征。池化層連接在卷積層之后,主要的作用是減少通過卷積層得到的特征圖大小,從而減少參數計算量,一般常用的池化層有全局平局池化和最大池化2 種。全連接層通常使用在網絡的末端,把二維的特征圖轉換成一維特征用于識別分類。設計恰當的卷積網絡可以有效提取人臉特征,對于最終識別準確率也有較大影響。自從卷積神經網絡AlexNet[17]問世,研究人員設計了諸多網絡結構以更深層次地提取圖像特征,如VGGNet、GoogleNet、ResNet 等網絡。
生成對抗網絡[18]是當下人工智能研究的熱點,經典的GAN 模型如圖1 所示。
如圖1 所示,經典的GAN 模型由生成器和判別器2 部分構成,生成器能夠學習真實圖像分布,判別器通過將生成器得到的圖像與原圖像進行對比來判斷生成圖片的真實性。GAN 訓練的目標函數為:

圖1 經典的GAN 模型Fig.1 Classical GAN model

其中:x表示真的樣本;P(z)表示假的樣本分布;z為輸入G的隨機噪聲分布;G(z)表示生成器G生成的圖片;D(x)表示判別器D判斷真實的圖片是否真實的概率;D(G(z))則表示判別器D判斷G網絡生成的圖片是否真實的概率。
GAN 的優化目標函數為最大最小優化問題,其可以采用博弈思想交叉訓練,具體訓練過程可以拆解為如下2 步:
1)優化判別器D,即將真實圖像X和生成圖像G(z) 放入判別器D中訓練,使D(X) 越大越好、D(G(z))越小越好,相應優化目標如式(2)所示:

2)優化生成器G,將上述判別器D得到的結果再反饋給G網絡,然后G網絡調整自身的參數生成更加真實的圖片再去“欺騙”判別器,使得D(G(z))越大越好,相應優化目標如式(3)所示:

經過生成器和判別器交替訓練一段時間后,生成器G通過大量地學習同類圖像數據中的特征以生成更加真實的圖像,當判別器無法準確判斷出圖片到底是真實的還是由G網絡生成的時,即實現了生成目的。
本文提出一種基于循環生成對抗網絡的遮擋人臉圖像識別算法,其結構如圖2 所示,該模型分為遮擋人臉修復和人臉識別2 個模塊。不同于只對遮擋部分進行修復的方法,本文人臉修復方法是對整個圖像進行重構且不需要遮擋部位信息,因此是一種盲修復方式。修復模塊的輸入是一張帶遮擋的人臉,通過模型直接輸出一張還原好原圖特征的圖片。修復模塊采用了2 對生成器和判別器循環訓練,生成器1 將遮擋人臉盡可能地還原成無遮擋的正常人臉,判別器2 則判別修復后人臉與正常無遮擋人臉的差異,即把帶遮擋的域映射到無遮擋正常人臉的域??紤]到生成器生成過程具有隨機性,導致還原的圖片可能帶有大面積其他人臉的特征,因此通過生成器2 將已修復圖片再生成回原始遮擋圖片,判別器2 則判別該圖片與原遮擋圖片的差異,通過第2 對生成器和判別器的操作使得由生成器1 修復好的圖片擁有更多的原始人臉特征。識別模塊通過Resnet-50 來提取人臉特征,同時針對修復后的人臉可能存在一些特征融合的問題,引入一種能夠將不同類的類間距離量化的損失函數RegularFace,以處理類內距離過大和類間距離過小對分類的影響。

圖2 基于循環生成對抗網絡的遮擋人臉識別模型Fig.2 Face recognition with occlusion model based on cyclic generative adversarial networks
人臉修復模塊由2 對生成器和判別器的循環生成對抗網絡構成,其中:生成器由編碼器、轉換器和解碼器構成。編碼器由3 層卷積層組成,依次逐漸提取更高級的特征,特征的數量也即濾波器數量,本文實驗輸入圖片大小為256×256×3 像素,通過編碼器后,輸入變成64×64×256 像素。轉換器由6 個殘差塊組成,由編碼器輸出圖像的不同通道組合了圖像的不同特征,根據這些特征將圖像的特征向量即編碼由帶遮擋轉換到正常無遮擋。每個殘差塊由2 個卷積層組成,為了確保先前圖層的輸入屬性也可以用于后面的圖層,保證其輸出與原始輸入不會有太大偏差,將輸入殘差添加到輸出中。解碼器的作用是從特征向量重新構建低級特征,這里用了3 層的轉置卷積,將低級特征轉換為正常無遮擋的圖像。
普通判別器的基本構成是卷積層、全連接層、密集連接層和全連接層,然后將判別的結果即輸入樣本為真樣本的概率作為一個實數輸出,其輸入一般是真實圖像和生成圖像的整張圖像,但這類判別器接收的圖像范圍過大,可能造成圖像生成時分辨率較低、圖片不清晰等情況。本文修復模塊中的判別器采用PathGAN[19],其原理如圖3 所示。該判別器由5 個卷積層構成,輸出為一個n×n的矩陣,輸出矩陣的均值作為True 或False 輸出。輸出矩陣中的每一個輸出均代表原圖的一個感受野,對應了原圖的一部分,相比一般的GAN 網絡判別器輸出為一個數,該判別器考慮到了圖像不同部分的影響,且對圖像的一小塊進行判別輸出,這樣訓練時能夠使模型更能關注圖像細節,生成的圖片將更加清晰。本文將輸入圖像處理成大小為8×8×1 像素的不同塊,判別器的輸入大小為256×256×3 像素。

圖3 PatchGAN 判別器的原理Fig.3 Principle of PatchGAN discriminator
修復模塊損失函數包括判別器損失和循環一致性損失。判別器損失的目的是使生成目標與原始圖片盡可能相似,采用均方誤差形式,表達式如式(4)所示:

其中:yi代表實際值代表估計值。在此基礎上可以定義2 個判別器的損失,判別器1 使第1 個生成器生成的無遮擋圖片和原無遮擋圖片相似,損失函數表達式如式(5)所示:

判別器2 使第2 個生成器生成的有遮擋圖片跟原有遮擋圖片相似,損失函數表達式如式(6)所示:

其中:A表示有遮擋的人臉;B表示無遮擋的人臉;fA表示當輸入為原圖時生成器2 生成的圖片,fB表示當輸入為原圖時生成器1 生成的圖片,rA和rB分別表示原有遮擋的圖片和無遮擋的圖片。
循環一致性損失使得原圖經過1 個循環訓練后得到的圖片與原圖相似,其主要采用L1損失函數,如式(7)所示:

其中:y(i)代表實際值代表估計值。
正循環的損失表達式如式(8)所示:

逆循環的損失表達式如式(9)所示:

其中:sA表示當輸入為生成圖片時生成器2 生成的圖片;sB表示當輸入為生成圖片時生成器2 生成的圖片。
在上述損失基礎上,可定義修復模塊總的損失函數表達式如式(10)所示:

由于人臉特征非常豐富,淺層的卷積神經網絡結構無法很好地提取到深層的特征,但一昧地通過堆疊卷積層和池化層來加深網絡深度會導致梯度消失和網絡退化,影響網絡優化性能。本文所提識別網絡采用殘差網絡ResNet-50 結構,該網絡通過跳躍連接消除深層卷積神經網絡中的網絡退化問題,降低了網絡訓練的難度,且不會增加額外的參數和計算量。
損失函數用于度量本文網絡輸出預測值和實際值的差距,它是一個非負函數。一般來說,損失函數越小,模型的魯棒性越好。損失函數的宗旨是增大不同類別的類間距離和縮小同一類別的類內距離,常見的損失函數如CenterLoss[20]、Softmax[21]及其變體[22-24],這些損失函數能夠較好地縮小同類別特征的內間距離,但由于人臉很多特征具有相似性,不同類別間的距離也可能較小,因此上述損失函數在人臉識別中可能會導致識別準確率較低。本文識別模塊采用RegularFace[4]損失函數,其使用不同類別中心點的角距離來量化不同類別的類間距離,類間距離的表達式如式(11)所示:

其損失函數為:

其中:ω代表類別的權重向量;ωi表示ω的第i列,j表示距離i最近的聚類中心;?(i,j)表示ωi和ωj之間的夾角,識別的目的是希望?(i,j)值越大越好,即pi的值越小越好。本文識別模塊中,將該損失函數與Softmax 函數搭配使用,這樣既能有效地縮小同一類的類內距離,又能增大不同類的類間距離。Softmax 函數的表達式如式(13)所示:

因此,識別模塊損失函數如式(14)所示:

其中:λ用于平衡2 個損失函數,本文取值為1。
為驗證本文算法的有效性,本文對盲修復結果及識別準確率進行了多輪實驗驗證。實驗環境為Windows 10,采用編程環境為pytorch和python3.6.8,硬件為顯存11 GB的RTX2080Ti GPU、3.6 GHz的i7-9700K CPU、32 G RAM的PC 機。
本文選用CASIA-WebFace[25]人臉數據集中的20個不同身份的人,共計約12 000 張圖片作為數據集。由于本文修復方法主要針對物體遮擋,因此在選擇圖像時主要挑選光線充足和正臉的圖像以避免光線遮擋和自遮擋對實驗的影響。實驗將原圖片的250×250 像素變換為256×256 像素。由于沒有標準和通用的遮擋人臉數據集,并且現實中的遮擋類型具有多樣性,因此在訓練數據時采用圖片點乘的方式給原圖加上了不同類型和大小的遮擋作為訓練集,如圖4 所示。

圖4 不同遮擋類型的圖片示例Fig.4 Examples of different occlusion types
本文方法包括修復和識別2 部分,兩者獨立訓練,具體訓練方式如下。
4.2.1 修復網絡訓練
在訓練集中選取1 000 張涵蓋20 個不同身份的圖片并隨機加上圖4 所示的遮擋(稱為數據集1)作為生成器1 的輸入,再從上述訓練集中隨機挑選另外1 000張不同身份的圖片(稱為數據集2)做為第1個判別器的輸入。因此,判別器1 的輸入包括生成器1的輸出和數據集2,然后生成器1 的輸出再做為生成器2 的輸入;將生成器2 的輸出和數據集1 再輸入判別器2,這樣循環訓練直到生成器1 的輸出收斂為無遮擋的人臉圖片。普通GAN 的訓練方式是判別器先于生成器開始訓練,并且訓練次數多于生成器。本文訓練方式也不例外,略有差別的是判別器2 要在生成器1 生成幾輪后才開始訓練,以便得到較好的圖片投入逆向訓練中,一般200 個epoch 后網絡開始收斂,生成器1 得到較好的修復結果。
由于修復網絡訓練過程中并沒有用到遮擋區域信息,因此達到了盲修復的目的,盡管此類修復后的圖像整體效果較原圖的清晰化程度低,但總體特征相較于遮擋圖像而言具有較大程度的改善,因此識別準確率也會有質的提升,后續實驗結果也驗證了這一點。修復網絡超參數設置如表1 所示。

表1 修復網絡訓的超參數設置Table 1 Hyper-parameter setting for the training of inpainting network
4.2.2 識別網絡訓練

表2 識別網絡訓練的超參數設置Table 2 Hyper-parameter setting for the training of identification network
本文對不同遮擋類型、不同遮擋面積和不同遮擋區域的修復效果和識別準確率進行實驗,并對比了DCGAN+CNN 算法下的修復效果及識別準確率,分析引入RegularFace 損失函數對識別效果的影響。
4.3.1 修復結果分析
修復效果分析具體如下:
1)不同遮擋類型的修復結果
針對不同遮擋類型的部分人臉圖像修復效果如圖5所示。由圖5 可知不同類型的遮擋包括線性遮擋和矩形遮擋。對于線性遮擋,遮擋部分被還原得比較接近客觀事實,且未遮擋的部分無明顯變化,整個人臉看上去較為真實連貫。對于矩形遮擋,小塊遮擋能很好地還原,但當矩形遮擋面積過大時,修復效果不甚理想。

圖5 不同遮擋類型的修復效果對比Fig.5 Comparison of repair effects of different occlusion types
2)不同遮擋面積的修復效果
對不同遮擋面積的分析建立在同一人的相同遮擋形狀上,本文選用了不同面積的線性遮擋和不同面積的矩形遮擋進行實驗,結果如圖6 所示。從修復效果可以看出,修復效果隨著遮擋面積的增大而逐漸變差。

圖6 不同遮擋面積的修復效果對比Fig.6 Comparison of repair effect of different occlusion area
3)不同遮擋部位的修復效果
五官特征對于人臉識別的準確率影響很大[26],因此本文對不同遮擋區域的人臉修復效果進行了對比實驗,實驗結果如圖7 所示。

圖7 不同遮擋部位的修復效果對比Fig.7 Comparison of repair effect of different occlusion site
由圖7 可知,當嘴巴和鼻子受到遮擋時,修復效果較好,但當眼睛收到遮擋時,其修復后的細節丟失比較嚴重。
4)與其他算法修復效果對比
本文對比了DCGAN+CNN 算法的修復效果,實驗結果如圖8 所示。

圖8 本文算法與DCGAN+CNN 算法的修復效果對比Fig.8 Comparison of repair effect between the algorithm in this paper and the DCGAN+CNN algorithm
如圖8 所示,DCGAN+CNN 算法臉部修復細節不如本文算法連貫,臉部甚至較原圖較小,而本文算法保留了大量未遮擋區域的特征,看起來更加自然,這也從側面證明了本文算法的有效性。
4.3.2 修復前后識別準確率的比較
本文的最終目的是提高帶遮擋人臉的識別準確率,而不是過度追求復原成清晰無缺的圖片。人臉識別準確率與網絡提取到的人臉特征密切相關,本文修復方法保留和補充了大量的原圖特征,且修復得到的圖片也符合語義,因此相較于直接識別帶遮擋人臉圖片,準確率會有很大提升。
本文所用的識別模型在正常人臉數據集上達到了一個較高的識別準確率,以此為參照分別比較了不同遮擋類型的修復準確率,結果如圖9 所示。

圖9 相同面積下的不同遮擋類型對修復前后識別準確率的影響Fig.9 Influence of different occlusion types in the same area on recognition accuracy before and after repair
由圖9 可知,在遮擋面積相同時,矩形遮擋修復前后的識別準確率都很低,但修復后的識別準確率較修復前仍提升了一倍多,表明修復后的人臉獲得了更多有效特征。線性遮擋在修復后識別準確率提升得最多,修復后的效果也最好。而五官遮擋的人臉盡管修復后的效果不佳,但由于其特征復原得比較好,所以識別準確率也有很大提升,僅次于線性遮擋修復后的識別效果。由圖10 可知,當線性遮擋面積小于30%時,由于遮擋面積較小,修復前的識別準確率已經達到較高狀態,故修復后的準確率提升不大,但仍有約10%的提升。當遮擋面積在30%附近時,修復后的識別準確率有很大的提升,當遮擋面積進一步增大到40%后,修復后的識別準確率提升了約一倍。

圖10 不同線性遮擋面積對修復前后識別率的影響Fig.10 Influence of different linear occlusion areas on recognition rate before and after repair
識別正確和錯誤的示例分別如圖11、圖12 所示。由圖12(a)可以看出,當五官特征恢復較差時,容易導致識別失敗。對比圖11(b)、圖12(b)可知,識別網絡本身對識別效果也有重要影響。

圖11 識別成功的示例Fig.11 Identify successful examples

圖12 識別失敗的示例Fig.12 Identify examples of failures
4.3.3 識別網絡性能分析
為驗證RegularFace 損失函數的性能,本文對使用RegularFace+Softmax(簡記為R+S)損失函數和僅單使用Softmax(簡記為S)損失函數情況下修復前后的識別準確率進行了比較,實驗結果如圖13 和圖14所示。

圖13 不同損失函數修復前識別準確率對比Fig.13 Comparison of recognition accuracy before repair of different loss functions

圖14 不同損失函數修復后識別準確率對比Fig.14 Comparison of recognition accuracy after repair of different loss functions
由圖13 可知,修復前的人臉丟失了過多特征,無論用哪種損失函數的識別準確率均很低,但用RegularFace+Softmax 損失函數較于Softmax 仍有部分提升。由圖14 可知,修復后的識別準確率均有明顯提升,使用RegularFace+Softmax 損失函數的提升效果也更明顯,尤其是五官遮擋,這是由于RegularFace 有對類間距離進行量化的特點,對于五官這些難以分類的特征效果提升更加明顯。
4.3.4 與其他算法的對比
本文選取了DCGAN+CNN 算法進行對比實驗,其中DCGAN 作為修復算法來修復人臉圖像,CNN則選用與本文相同的ResNet50,損失函數統一使用softmax,識別結果如表3、表4 所示。
由表3、表4 可知,無論是在不同的遮擋類型還是不同遮擋面積條件下,本文算法的人臉識別準確率都更高,DCGAN+CNN 算法相較于本文算法留存的原圖特征較少,當遮擋面積較小時,本文算法優勢明顯,當遮擋面積達到50%左右時,DCGAN+CNN算法的識別準確率較低,而本文算法的識別準確率還能維持在一個較高的水平。

表3 不同算法對不同遮擋類型的識別準確率對比Table 3 Comparison of recognition accuracy of different occlusion types by different algorithms %

表4 不同算法對不同遮擋面積的識別準確率對比Table 4 Comparison of recognition accuracy of different algorithms for different occlusion areas %
針對當前含遮擋人臉識別方法準確率較低的問題,本文提出一種基于循環生成對抗網絡的含遮擋人臉識別算法。采用先修復再識別的方式,在修復階段不需要遮擋信息,僅通過2 個生成器和2 個判別器循環訓練,使生成的人臉與原遮擋人臉的特征重合度高且修復后語義連貫性較好,實現人臉遮擋圖像的盲修復。同時,在識別階段引入RegularFace 損失函數,有效增加不同類的類間距離,減小同類間的類間距離。實驗結果表明,與DCGAN+CNN 算法相比,所提算法對不同遮擋類型和遮擋區域的人臉圖像識別準確率均有所提高。但本文算法對大面積矩形遮擋圖像,以及對隨機遮擋和日常遮擋的修復效果也有待提升。下一步將引入遮擋區域估計方式以充分利用原始未遮擋圖像信息,提升遮擋人臉的識別準確率。