周孝佳 朱允斌 張 躍
1(復旦大學計算機科學技術學院 上海 201210) 2(上海視頻技術與系統工程研究中心 上海 201210)3(華為軟件技術有限公司 江蘇 南京 210012)
人臉識別技術在生物識別技術中有著十分重要的地位,長時間以來,研究者們一直致力于人臉識別算法的研究。隨著時間的遷移,人臉識別算法不斷被提出,其準確率和穩定性也在不斷地提升。發展至今,人臉識別已經在許多領域發揮著廣泛的作用,包括身份認證、視頻監控、人物追蹤等。
人臉識別技術的商用化預示著其在特定環境下已經有了很高的準確率,這些技術展現出來的結果往往給人們造成一種人臉識別問題基本已經被解決的錯覺。然而,在真實場景下,我們獲取到的人臉往往都是質量不一的。相比于受控環境,真實場景下獲取到的人臉圖像質量往往會受到光照、姿態、表情和遮擋的制約,這種不可預測的變化為人臉識別帶來了極大的挑戰。正因如此,許多受控環境下表現良好的人臉識別算法在這些數據上效果往往會急劇下降,要讓人臉識別技術在真實場景下發揮出理想的效果,如何解決這種隨意性給算法帶來的挑戰就成為了其中最為關鍵的一步。
人臉識別的研究者們長期致力于遮擋條件下的人臉識別問題的研究,提出了很多有效的算法。Wright等[4]首次將稀編碼表示SRC(Sparse Recognition based Classification)的方法運用于人臉識別領域,得出的人臉特征對噪聲、遮擋、表情等都有一定的魯棒性。但是這種稀疏表示方法基于所有人臉圖像事先嚴格對齊的假設,在實際運用中有比較大的限制。Yang等[3]在SRC的基礎上進行改進,提出了一種魯棒的稀疏編碼算法RSC(Robust Sparse Coding),通過求解改進的Lasso問題的方式進而求解稀疏編碼問題。這種改進的稀疏編碼表示方法被證明對遮擋有很強的魯棒性,但是這種求解的假設前提是編碼誤差必須服從高斯分布,而真實場景下可能并不滿足這一前提條件,這就導致真實條件下這種算法缺少足夠的魯棒性。
除了從有遮擋人臉圖像中直接提取遮擋魯棒的特征之外,研究者們也嘗試去遮擋的方式進行遮擋圖像修復。Cheng等[7]提出了一種雙通道的稀疏降噪自動編碼器DC-SSDA(Double Channel Stacked Sparse Denoising Auto-encoders),使用雙通道進行遮擋噪聲監測,用無噪節點代替有噪節點, 優化解碼部分的權重,得到無噪聲圖像,但是這種方法需要訓練圖像和測試圖像擁有一樣的遮擋,因此限制比較大。Zhao[8]等提出一種基于長短記憶LSTM(Long-Short Term Memory)的自動編碼機進行去人臉遮擋,并引入對抗網絡和分類的CNN輔助進行參數優化。
雖然以上這些算法都能一定程度地完成遮擋人臉識別任務,但其有效性仍然受到真實環境的制約,如何進行真實環境下的人臉識別仍然有待研究和探索。
本文針對遮擋條件下的人臉識別任務,提出了一種基于分塊的有遮擋人臉識別算法,總體思想如下:
將一張人臉圖像裁切出左眼、右眼、鼻子和嘴巴四個區塊,對每個人臉區塊分別進行特征提取,利用一個遮擋二分類器進行區塊的遮擋判別,最后根據遮擋判別的結果進行特征融合,從而得到最終的人臉特征。由于有二分類器的存在,算法會對遮擋區塊特征是否應該加入最終融合特征進行判斷,因此最終獲取到的特征對遮擋具有較強的魯棒性。本文算法的特征提取流程如圖1所示。

圖1 基于分塊的有遮擋人臉特征提取流程
本文的分塊人臉識別算法基本可以分為以下幾個步驟:預處理、人臉分塊、特征提取、遮擋判別、特征融合和相似度匹配。
本文的預處理工作包括人臉檢測、人臉特征點定位、幾何歸一化、光照歸一化以及數據集擴展。本文使用基于Faster R-CNN的算法訓練了一個人臉檢測網絡進行人臉檢測任務;使用一種由粗到精的自編碼網絡CFAN(Coarse-to-Fine Auto-encoder Networks[5])定位人臉特征點;使用基于人臉特征點定位的結果進行幾何歸一化;使用直方圖均衡化進行人臉圖像光照歸一化。
在數據量不足的情況下,本文對訓練集進行了一定的擴展,其中包括:添加高斯模糊、高斯噪聲、調節圖像的亮度、圖像銳化、邊界隨機裁切等。經過處理后,本文將一張人臉圖像擴展成15張,以防止訓練后的模型過擬合,同時也提升模型對光照、模糊等各種變換的泛化能力。
本文使用CFAN算法進行人臉特征點定位,基于人臉特征點定位的結果(左眼中心、右眼中心、鼻尖、左側嘴角和右側嘴角),從人臉圖像中裁切出四個人臉區塊(左眼、右眼、鼻子和嘴),具體裁剪策略如下:
(1) 將圖像調整到256×256的大小。
(2) 對于左右眼區域,根據標定出的左右眼關鍵點(xeye,yeye),以關鍵點為中心,裁剪出64×64大小的區塊,裁剪區域為:
[(xeye-32,yeye-32),(xeye+32,yeye+32)]
(3) 對于鼻子區域,根據標定出的鼻子部分的關鍵點(xeye,yeye),裁剪出如下區塊:
[(xlmouse-8,ylmouse+32),(xrmouse+8,yrmouse+32)]
(4) 對于嘴巴區域,裁剪出如下區塊:
[(xlmouse-8,ylmouse+32),(xrmouse+8,yrmouse+32)]
圖2展示了本文進行區域裁剪的部分樣例圖。可以發現,這種區域裁剪方法基本可以將人臉具有區分度的信息全部保留下來。劃分出來的四個區塊將作為分塊的人臉原圖輸入到后續的特征提取和遮擋判別中。

圖2 人臉分塊結果示例
本文為每個人臉區塊都訓練了一個基于深度卷積神經網絡的模型進行特征提取。類似于傳統人臉識別訓練集的構造方法,本文使用單個人臉區塊代替整臉構造數據集,從而使訓練出來的網絡可以對單一人臉區塊進行有區分的特征提取。本文使用Lightened-CNN[1]進行訓練任務,考慮到單一人臉區塊相對于全臉來說特征較少,因此對Lightened-CNN網絡進行一定的改進,主要修改的部分如下:
(1) 輸入部分由128×128×1調整為64×64×1;
(2) 每層的卷積核個數減少為原文的一半;
(3) 網絡深度降低,減少3次卷積和1次pooling;
(4) fc1層的輸出特征由256維調整為128維。
相比于用于全局人臉特征提取的LCNN網絡,調整后的網絡的參數進一步減少,網絡訓練和測試的速度更快,時間和空間得到了進一步的優化。
基于上述改進的LCNN網絡,可以訓練四個用于局部人臉特征提取的網絡,每個網絡都對應于一個人臉區塊,當網絡接受到輸入圖像進行前饋后,可以獲取到輸入圖像多尺度的特征表達。由于網絡從底層到高層學習到的圖像特征逐漸具體,因此fc1層可以最好地表達輸入圖像的語義特征, 由此本文取fc1層的輸出作為輸入人臉區塊的特征表達。
一張完整的人臉被分割為4個區塊,輸入各自對應的四個區域人臉特征提取網絡后,可以得到4個區域人臉特征:
Vleye,Vreye,Vnose,Vmouse
式中:Vleye表示左眼區塊特征;Vreye表示右眼區塊特征;Vnose表示鼻子區塊特征;Vmouse表示嘴巴區塊特征。
由于自然條件下的非受控性,遮擋可能出現在人臉的任意部分。為了處理遮擋,本文基于Inception V3[2]網絡進行fine-tune,訓練一個用于判別人臉區塊是否被遮擋的網絡。由于人臉具有一定的對稱性,左眼和右眼區別很小,因此在做分類訓練集構造的時候,本文將左眼和右眼的類別合并為眼睛,即構造出的訓練集分為4類:眼睛類、鼻子類、嘴巴類和背景類。其中,背景類指除上述人臉關鍵區域外的其他部分,包括其他人臉相關的前景和無關的背景。本文構造的背景數據集來自于被遮擋的人臉區塊和不是人臉區塊的其他圖片。
由于輸入圖片是有額外信息的,即該圖片只有屬于一個特定的人臉區塊和屬于背景圖兩種結果,因此結合該信息,本文直接將多分類模型運用于人臉區塊的二分類上,經過模型處理后應生成遮擋或未遮擋的判別信息。遮擋判別示例如圖3所示,輸入的圖片屬于人臉的鼻子區塊,分類網絡輸出其屬于每個類的概率,取其中概率最大的類為鼻子類,則判定輸入圖片是對應的人臉區塊,判別輸出為未遮擋。另一遮擋判別示例如圖4所示,輸入的圖片屬于被遮擋的左眼區塊,分類網絡輸出其屬于每個類的概率,取其中概率最大的類為背景類,則判定輸入圖片不是對應的人臉區塊(被遮擋),判別輸出為遮擋。
結合輸入圖片的額外知識,將多分類直接運用在二分類問題上,從而使用一個分類器就能完成多個二分類器的任務,極大地降低了復雜度,同時也提高了分類的效率。

圖3 遮擋判別示例1

圖4 遮擋判別示例2
特征融合: 結合特征提取和遮擋判別的結果,可以將多個區塊的特征融合成表征遮擋人臉的最終特征,具體融合方法如下:
首先,將每個人臉區塊學習到的特征都歸一化到[-1,+1],從而使每個區域對總體特征的貢獻度相同。其次,對各部分特征進行簡單的順序拼接,即對于一個完整未遮擋的人臉圖像I,最終生成的人臉特征V(I)如下:
V(I)=[Vleye,Vreye,Vnose,Vmouse]
式中:[Vleye,Vreye,Vnose,Vmouse]分別表示左眼、右眼、鼻子和嘴巴區塊提取出的特征。由于本文會剔除被遮擋判別模型視為遮擋的人臉區塊對應的特征,因此表征遮擋人臉的特征長度可能是變長的。為了消除變長特征對相似度檢測造成的影響,本文使用零向量填充缺失的特征部分,從而保證各種遮擋條件下獲取到的人臉特征長度都是一定的。
相似度檢測:本文使用歐氏距離度量特征相似度。對于兩張人臉生成的兩個特征,本文取兩邊都未被判別為遮擋的區塊對應的特征進行相似度度量。即在比較兩個特征的時候,若有一個特征的特征段是零向量,則另一個向量的相應段落也置零。在人臉識別分類的任務中,取最相似的特征表示的人臉作為分類的結果。
本文使用CASIA WebFace[9]數據集,從中隨機篩選出20 000張人臉,將人臉分塊后的各個人臉區塊圖作為數據集,背景數據集的采集包括人工加入遮擋的人臉區塊、真實被遮擋的人臉區塊和其他真實背景圖。本文隨機取每個人臉區塊18 000張圖和背景18 000張圖作為訓練集,剩下的每個人臉區塊各2 000張和剩余的所有背景圖作為測試集。考慮負類數據不足的情況,本文使用Hard Negative Mining的思想進行負類選取,在訓練好的模型上進行進一步fine-tune。
本文二分類器訓練后的效果如表1所示。歸功于便捷的模型fine-tune方法和Hard Negative Mining的負類選擇方法,本文的圖像二分類器在較短時間的訓練后就取得了不錯的效果,在人臉區塊分辨率足夠的情況下,本文訓練的局部人臉區塊遮擋判別模型都可以進行準確的預測。

表1 局部人臉區塊遮擋判別結果
結合分塊特征提取和遮擋二分類器,可以實現本文提出的有遮擋人臉識別算法。
本文使用AR數據集進行有遮擋人臉識別的實驗,AR數據集包含126人共3 276張人臉圖像(其中包括70個男人和56個女人),每個人26張人臉圖像,其中包括了不同的人臉表情(正常、微笑、冷漠、憤怒),不同光照和遮擋的情況(墨鏡、圍巾)。遮擋的人臉圖像分別是不同光照下三張戴墨鏡的圖片和三張圍巾圖片。AR數據集部分人臉圖像示例如圖5所示。

圖5 AR數據集人臉示例
本文選取AR人臉數據集中100人(50個男人和50個女人),從每人14張無遮擋人臉圖像中隨機選取8張作為訓練集,其他每人2張戴墨鏡的圖像和2張戴圍巾的圖像作為測試集。測試過程結合2.1節中訓練的局部人臉區塊遮擋判別模型進行。如果輸入的人臉區塊被二分類器判別為遮擋,則該局部特征不加入人臉特征比對過程中去。與此同時,將測試人臉分為墨鏡遮擋和圍巾遮擋兩類進行實驗。本文的對比實驗用到了經典的SRC[4]、GSRC[6]和RSC[3]算法。實驗結果如表2所示。

表2 有遮擋人臉識別效果對比
由表2可知,在圍巾遮擋的情況下,本文算法取得了非常好的識別效果,但是在墨鏡遮擋的情況下,本文算法準確率略低于RSC。本文認為,這是因為在圍巾遮擋的情況下,人臉部分嘴部區塊被遮擋,因此這部分特征會被舍棄,但是剩下三個人臉區塊的特征仍具有足夠的區分度,可以很好地表征一張人臉。但是在墨鏡遮擋的情況下,人臉圖像的左眼和右眼區塊被遮擋,這兩個部分的特征被舍棄,相比于戴圍巾只需舍棄嘴部區塊特征而言,墨鏡遮擋照成的影響更大。但是綜合考慮,本文算法在遮擋的情況下仍能取得很好的效果。
本文仍選取AR數據集進行實驗,使用與2.2節一樣的方式進行模型的訓練,從每人14張無遮擋人臉圖像中隨機選取8張作為訓練集,從剩下的6張中隨機選取2張作為測試集,使用黑塊對測試集中的人臉圖像進行四個人臉區塊的遮擋處理,利用本文算法對不同遮擋情況的圖像進行人臉識別(由于本文算法依賴于人臉特征點定位的結果,在高遮擋條件下,本文加入一定的人工進行輔助定位工作)。對比SRC和RSC算法,實驗結果如表3所示。
表3結果的每一行分別統計了遮擋1個、2個、3個區塊的情況下各個算法識別準確率的平均值。可以發現,隨著遮擋區塊數量的增加,SRC和RSC算法的準確率下降得都很快,而本文算法仍然可以保證一定的識別準確率。
本文算法的分塊特性保證了當至少有一個人臉區塊未被遮擋或僅被少量遮擋時,算法的識別準確率不會受到太大的影響。
本小節進行了本文算法在預測速度和存儲空間上與其他深度神經網絡的對比。對比結果如表4所示(本文速度在i7-4790上進行測試)。由于本文使用的簡化的LCNN+inception v4的模型組合不是端到端的,因此速度和存儲空間都分為兩部分。可以發現,本文使用的改進的LCNN模型在特征提取速度和存儲空間上都較有優勢(預測速度的56 ms×4的部分和存儲空間的22 MB×4的部分),但是使用的基于inception v3的遮擋判別網絡則在速度和空間上都消耗較大。因此后續可以考慮使用大量訓練數據結合輕量級模型從頭訓練的方法提升算法的速度和減少模型的大小。另外,由于人臉塊的特征提取和遮擋判別互不干擾,因此采用并行特征提取和遮擋判別則可將預測速度降至原來的1/4。

表4 大面積人臉遮擋效果對比
本文提出了一種基于人臉分塊的有遮擋人臉識別算法,利用局部人臉區塊特征提取結合遮擋判別的方法獲取表征遮擋人臉的特征,這種特征對遮擋有較強的魯棒性,并且在滿足一定條件的前提下,在大面積遮擋的情況下仍能保持很高的準確率。后續研究將需要處理局部區塊被部分遮擋的情況,且該算法的可用也依賴于遮擋人臉檢測和遮擋人臉特征點定位。
[1] Wu X, He R, Sun Z. A lightened cnn for deep face representation[C]//2015 IEEE Conference on IEEE Computer Vision and Pattern Recognition (CVPR). 2015.
[2] Szegedy C, Vanhoucke V, Ioffe S, et al. Rethinking the inception architecture for computer vision[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 2818-2826.
[3] Yang M, Zhang L, Yang J, et al. Robust sparse coding for face recognition[C]//Computer Vision and Pattern Recognition (CVPR), 2011 IEEE Conference on. IEEE, 2011: 625-632.
[4] Wright J, Yang A Y, Ganesh A, et al. Robust face recognition via sparse representation[J]. IEEE transactions on pattern analysis and machine intelligence, 2009, 31(2): 210-227.
[5] Zhang J, Shan S, Kan M, et al. Coarse-to-fine auto-encoder networks (cfan) for real-time face alignment[C]//European Conference on Computer Vision. Springer International Publishing, 2014: 1-16.
[6] Yang M, Zhang L. Gabor feature based sparse representation for face recognition with gabor occlusion dictionary[C]//European conference on computer vision. Springer Berlin Heidelberg, 2010: 448-461.
[7] Cheng L, Wang J, Gong Y, et al. Robust Deep Auto-encoder for Occluded Face Recognition[C]//Proceedings of the 23rd ACM international conference on Multimedia. ACM, 2015: 1099-1102.
[8] Zhao F, Feng J, Jian Zhaoa, et al. Robust LSTM-Autoencoders for Face De-Occlusion in the Wild[J]. IEEE Transactions on Image Processing, 2016, 27(2): 778-790.
[9] http://www.cbsr.ia.ac.cn/english/CASIA-WebFace-Database.html.
[10] Simonyan K, Zisserman A. Very Deep Convolutional Networks for Large-Scale Image Recognition[J]. Computer Science, 2014.