人臉識別演算法演化史
導言:
人臉識別有什麼用?
人臉識別的目標是確定一張人臉圖像的身份,即這個人是誰,這是機器學習和模式識別中的分類問題。它主要應用在身份識別和身份驗證中。其中身份識別包括失蹤人口和嫌疑人追蹤、智能交互場景中識別用戶身份等場景;而身份驗證包括身份證等證件查詢、出入考勤查驗、身份驗證解鎖、支付等場景,應用場景豐富。就在前不久,北京多家醫院藉助「黑科技」人臉識別技術阻擊「熟臉」的號販子,降低其挂號率;目前人臉識別還用到了治理闖紅燈問題,改善中國式過馬路現象。
人臉識別系統的組成
人臉識別演算法主要包含三個模塊:
人臉檢測(Face Detection)
人臉對齊(Face Alignment)
人臉特徵表徵(Feature Representation)
如下圖所示:
人臉檢測
人臉檢測用於確定人臉在圖像中的大小和位置,即解決「人臉在哪裡」的問題,把真正的人臉區域從圖像中裁剪出來,便於後續的人臉特徵分析和識別。下圖是對一張圖像的人臉檢測結果:
攝於2014年,是當時世界上人數最多的自拍合影
(檢測方法為百度的PyramidBox)
人臉對齊
同一個人在不同的圖像序列中可能呈現出不同的姿態和表情,這種情況是不利於人臉識別的。所以有必要將人臉圖像都變換到一個統一的角度和姿態,這就是人臉對齊。它的原理是找到人臉的若干個關鍵點(基準點,如眼角,鼻尖,嘴角等),然後利用這些對應的關鍵點通過相似變換(Similarity Transform,旋轉、縮放和平移)將人臉儘可能變換到標準人臉。下圖是一個典型的人臉圖像對齊過程:
人臉特徵表徵
第三個模塊是本文重點要講的人臉識別演算法,它接受的輸入是標準化的人臉圖像,通過特徵建模得到向量化的人臉特徵,最後通過分類器判別得到識別的結果。這裡的關鍵是怎樣得到對不同人臉有區分度的特徵,通常我們在識別一個人時會看它的眉形、臉輪廓、鼻子形狀、眼睛的類型等,人臉識別演算法引擎要通過練習(訓練)得到類似這樣的有區分度的特徵。本系列文章主要圍繞人臉識別中的人臉特徵表徵進行展開,人臉檢測和人臉對齊方法會在其它專題系列文章中進行介紹。
人臉識別演算法的三個階段
人臉識別演算法經歷了早期演算法,人工特徵+分類器,深度學習3個階段。目前深度學習演算法是主流,極大的提高了人臉識別的精度,推動這一技術真正走向實用,誕生了如Face++、商湯之類的公司。
早期演算法
早期的演算法有基於幾何特徵的演算法,基於模板匹配的演算法,子空間演算法等多種類型。子空間演算法將人臉圖像當成一個高維的向量,將向量投影到低維空間中,投影之後得到的低維向量達到對不同的人具有良好的區分度。
子空間演算法的典型代表是PCA(主成分分析,也稱為特徵臉EigenFace)[1]和LDA(線性判別分析,FisherFace)[2]。PCA的核心思想是在進行投影之後盡量多的保留原始數據的主要信息,降低數據的冗餘信息,以利於後續的識別。LDA的核心思想是最大化類間差異,最小化類內差異,即保證同一個人的不同人臉圖像在投影之後聚集在一起,不同人的人臉圖像在投影之後被用一個大的間距分開。PCA和LDA最後都歸結於求解矩陣的特徵值和特徵向量,這有成熟的數值演算法可以實現。
PCA和LDA都是線性降維技術,但人臉在高維空間中的分布顯然是非線性的,因此可以使用非線性降維演算法,典型的代表是流形學習[3]和核(kernel)技術。流形學習假設向量點在高維空間中的分布具有某些幾何形狀,然後在保持這些幾何形狀約束的前提下將向量投影到低維空間中,這種投影是通過非線性變換完成的。下面是用流形學習進行非線性降維的一個例子:
在這張圖中,左邊是三維空間中捲曲的一張曲面,不同的顏色代表不同類型的樣本,右側是將這個曲面投影到二維平面後的結果。投影之後各類樣本的相對位置關係得到了保留。
核PCA[22]與核LDA[23]作為使用核技術的非線性降維方法,在人臉識別問題上也取得了比線性降維方法更好的結果。
獨立成分分析ICA[4]也被用於人臉識別,取得了比PCA更好的效果。前面介紹的這些演算法嚴重依賴訓練集和測試集場景,且對光照、人臉的表情、姿態敏感,泛化能力不足,不具有太多的實用價值。
隱馬爾科夫模型(HMM)也被用於人臉識別問題[5],和前面這些演算法相比,它對光照變化、表情和姿態的變化更魯棒。另外,卷積神經網路在早期也已經由研究人員被用於人臉識別問題[6](We use a database of 400 images of 40 individuals!!!當時如果研究人員用更多數據的話是不是會大不同呢?)。
人工特徵 + 分類器
第二階段的人臉識別演算法普遍採用了人工特徵 + 分類器的思路。分類器有成熟的方案,如神經網路,支持向量機[7],貝葉斯[8]等。這裡的關鍵是人工特徵的設計,它要能有效的區分不同的人。
描述圖像的很多特徵都先後被用於人臉識別問題,包括HOG、SIFT、Gabor、LBP等。它們中的典型代表是LBP(局部二值模式)特徵[9],這種特徵簡單卻有效。LBP特徵計算起來非常簡單,部分解決了光照敏感問題,但還是存在姿態和表情的問題。
聯合貝葉斯是對貝葉斯人臉的改進方法[8],選用LBP和LE作為基礎特徵,將人臉圖像的差異表示為相同人因姿態、表情等導致的差異以及不同人間的差異兩個因素,用潛在變數組成的協方差,建立兩張人臉的關聯。文章的創新點在於將兩個人臉表示進行聯合建模,在人臉聯合建模的時候,又使用了人臉的先驗知識,將兩張人臉的建模問題變為單張人臉圖片的統計計算,更好的驗證人臉的相關性,該方法在LFW上取得了92.4%的準確率。
人工特徵的巔峰之作是出自CVPR 2013年MSRA的"Blessing of Dimisionality: High Dimensional Feature and Its Efficient Compression for Face Verification" [10],一篇關於如何使用高維度特徵在人臉驗證中的文章,作者主要以LBP(Local Binary Pattern,局部二值特徵)為例子,論述了高維特徵和驗證性能存在著正相關的關係,即人臉維度越高,驗證的準確度就越高。
文中最好的方法在LFW上的精度達到了95.17%,這在當時受到了很大關注,大有成為人臉識別領域新燈塔的跡象,為後續研究者指明未來研究的方向(只可惜好景不長...)。這種融合各種特徵形成大雜燴的做法讓我們想起了周星馳的電影「國產凌凌漆」裡面達文西發明的大殺器-要你命3000:
深度學習
第三個階段是基於深度學習的方法,自2012年深度學習在ILSVRC-2012大放異彩後,很多研究者都在嘗試將其應用在自己的方向,這極大的推動了深度學習的發展。卷積神經網路在圖像分類中顯示出了巨大的威力,通過學習得到的卷積核明顯優於人工設計的特徵+分類器的方案。在人臉識別的研究者利用卷積神經網路(CNN)對海量的人臉圖片進行學習,然後對輸入圖像提取出對區分不同人的臉有用的特徵向量,替代人工設計的特徵。
在前期,研究人員在網路結構、輸入數據的設計等方面嘗試了各種方案,然後送入卷積神經網路進行經典的目標分類模型訓練;在後期,主要的改進集中在損失函數上,即迫使卷積網路學習得到對分辨不同的人更有效的特徵,這時候人臉識別領域徹底被深度學習改造了!
DeepFace[11]是CVPR2014上由Facebook提出的方法,是深度卷積神經網路在人臉識別領域的奠基之作,文中使用了3D模型來做人臉對齊任務,深度卷積神經網路針對對齊後的人臉Patch進行多類的分類學習,使用的是經典的交叉熵損失函數(Softmax)進行問題優化,最後通過特徵嵌入(Feature Embedding)得到固定長度的人臉特徵向量。Backbone網路使用了多層局部卷積結構(Local Convolution),原因是希望網路的不同卷積核能學習人臉不同區域的特徵,但會導致參數量增大,要求數據量很大,回過頭去看該策略並不是十分必要。
DeepFace在LFW上取得了97.35%的準確率,已經接近了人類的水平。相比於1997年那篇基於卷積神經網路的40個人400張圖的數據規模,Facebook搜集了4000個人400萬張圖片進行模型訓練,也許我們能得出一個結論:大數據取得了成功!
之後Google推出FaceNet[15],使用三元組損失函數(Triplet Loss)代替常用的Softmax交叉熵損失函數,在一個超球空間上進行優化使類內距離更緊湊,類間距離更遠,最後得到了一個緊湊的128維人臉特徵,其網路使用GoogLeNet的Inception模型,模型參數量較小,精度更高,在LFW上取得了99.63%的準確率,這種損失函數的思想也可以追溯到早期的LDA演算法。
CVPR2014、CVPR2015香港中文大學唐曉鷗團隊提出的DeepID系列是一組非常有代表性的工作,其中DeepID1[12]使用四層卷積,最後一層為Softmax,中間為Deep Hidden Identity Features,是學習到的人臉特徵表示,並使用Multi-patch分別訓練模型最後組合成高維特徵,人臉驗證階段使用聯合貝葉斯的方法;通過學習一個多類(10000類,每個類大約有20個實例)人臉識別任務來學習特徵,文中指出,隨著訓練時要預測的人臉類越多,DeepID的泛化能力就越強。
DeepID2[13]在DeepID1的基礎上對損失函數部分做了改進,在原有Identification Loss基礎上,增加了Verification Loss,其中Verification主要是增加類內的緊緻度,而Identification是反應類間的變化。 通過提升類間差距,降低類內差距,是訓練出來的特徵更加適合類似人臉識別的任務。這一思想同樣源於早期的LDA演算法。
DeepID3[14] 提出了用於人臉識別的兩個非常深的神經網路結構(基於VGG和GoogleNet),但識別結果與DeepID2一樣,或許當有更多的訓練數據時,能夠提高性能,需要進一步研究。
當前人臉識別任務主要是應用在開集識別的情況下,這就需要學習出來的人臉特徵有好的泛化能力,而Softmax損失函數本身是用於解決多分類的問題,並沒有針對隱含特徵層去優化,往往直接訓練出來的特徵並不具有好的泛化能力。Contrastive Loss和Triplet Loss雖然優化目標很明確很合理,但是需要研發人員具有豐富的數據工程經驗(比如OHEM-困難樣本挖掘)。 能不能有一種端到端的解決方案呢?ECCV2016一篇文章提出了權衡的解決方案。通過添加Center-Loss[16]對特徵層進行優化並結合Softmax就能夠訓練出擁有內聚性良好的特徵。該特點在人臉識別上尤為重要,從而使得在很少的數據情況下訓練出來的模型也能有不俗的性能。
Center-Loss在Softmax的基礎上加入了一個維持類別中心的損失函數,並能使特徵向所屬類別中心聚攏,從而使達到了和Triple Loss類似的效果。
L-Softmax[17]是ICML2016的一篇文章提出的,對Softmax做了改進,在網路設計上將最後一層分類層的偏置項去掉(這一做法在後續的人臉識別損失函數改進中都得到了使用),直接優化特徵和分類器的餘弦角度,通過人為設定增加了一個角度(Margin)增加了模型的學習難度,借用SVM的思想來理解的話,如果原來的Softmax loss是只要支持向量和分類面的距離大於h就算分類效果比較好了,那麼L-Softmax就是需要距離達到mh(m是正整數)才算分類效果達到預期。通過這種方式最終使類間距離增大,類內樣本更緊湊。
SphereFace[18]提出了A-Softmax,針對L-Softmax做了微小的改進,歸一化了權重,可以看成在一個超球面的流形上對樣本進行分類判別。
以上的幾種方法都沒有對嵌入的特徵層進行歸一化,所以不能看作嚴格意義上的針對角度的優化。L2-Softmax[19],將特徵向量做了L2歸一化,這樣做的好處是範數小的特徵算出來的梯度會更大;而範數小的特徵一般對應的是質量較差的圖片。因此,某種程度上特徵歸一化起到類似於難例挖掘的作用。然而對特徵層強行進行L2的約束會導致分類空間太小,導致模型訓練困難,Loss值難以下降分類效果不佳。在實際的模型訓練中為了便於模型優化作者加入尺度縮放因子將分類的超球空間放大。如下圖所示,上邊一行的Feature Norm很大,下邊一行Feature Norm很小,L2-Softmax能更好的處理下邊一行的人臉圖片。
後續的AM-Softmax[20]和ArcFace[21]都是針對SphereFace做了改進。
AM-Softmax是把角度裕量從cos(mθ)改進為cos(θ)+mcos(mθ)改進為cos(θ)+m,主要的好處是這樣改進之後容易收斂。
ArcFace可以看做是針對AM-Softmax的改進版本,直接針對角度去加Margin(紅線標記的部分),這樣做的好處是角度距離比餘弦距離在對角度的影響更加直接。ArcFace同時對特徵和權重歸一化,參考L2-Softmax加入了固定的特徵尺度因子S。通過針對性的對網路結構做了改進以及對MegaFace數據集的清洗,作者跑出了令人興奮的指標。
參考文獻
[1] Matthew Turk,Alex Pentland. Eigenfaces for recognition. 1991, Journal of Cognitive Neuroscience.
[2] Eigenfaces vs. Fisherfaces: recognition using class specific linear projection. Peter N Belhumeur J P Hespanha David Kriegman. 1997 IEEE Transactions on Pattern Analysis and Machine Intelligence.
[3] He, Xiaofei, et al. Face recognition using Laplacianfaces. Pattern Analysis and Machine Intelligence, IEEE Transactions on 27.3 (2005): 328-340.
[4] Bartlett M S,Movellan J R,Sejnowski TJ. Face Recognition by Independent Component Analysis [J]. IEEE Trans. on Neural Network, 2002,13(6):1450-1464
[5] Ara V Nefian, Monson H Hayes. Hidden Markov models for face recognition. international conference on acoustics speech and signal processing, 1998.
[6] S Lawrence, C L Giles, Ah Chung Tsoi, Andrew D Back.Face recognition: a convolutional neural-network approach.1997, IEEE Transactions on Neural Networks.
[7] Guodong Guo, Stan Z Li, Kap Luk Chan. Face recognition by support vector machines.ieee international conference on automatic face and gesture recognition,2000.
[8] Dong Chen, Xudong Cao, Liwei Wang, Fang Wen, Jian Sun. Bayesian face revisited: a joint formulation. 2012, european conference on computer vision.
[9] Timo Ahonen, Abdenour Hadid, Matti Pietikainen. Face Description with Local Binary Patterns: Application to Face Recognition. 2006, IEEE Transactions on Pattern Analysis and Machine Intelligence.
[10] Dong Chen,Xudong Cao,Fang Wen,Jian Sun.Blessing of Dimensionality: High-Dimensional Feature and Its Efficient Compression for Face Verification.2013,computer vision and pattern recognition.
[11] Yaniv Taigman, Ming Yang, Marcaurelio Ranzato, Lior Wolf. DeepFace: Closing the Gap to Human-Level Performance in Face Verification. 2014,computer vision and pattern recognition.
[12] Yi Sun, Xiaogang Wang, Xiaoou Tang. DeepID: Deep Learning for Face Recognition. 2014, computer vision and pattern recognition.
[13] Yi Sun, Yuheng Chen, Xiaogang Wang, Xiaoou Tang. Deep Learning Face Representation by Joint Identification-Verification. 2014, neural information processing systems.
[14]Yi Sun, Ding Liang, Xiaogang Wang, Xiaoou Tang. DeepID3: Face Recognition with Very Deep Neural Networks. 2015, Computer Vision and Pattern Recognition.
[15] Florian Schroff, Dmitry Kalenichenko, James Philbin. FaceNet: A unified embedding for face recognition and clustering. 2015, computer vision and pattern recognition.
[16] Yandong Wen, Kaipeng Zhang, Zhifeng Li, Yu Qiao. A Discriminative Feature Learning Approach for Deep Face Recognition. 2016, european conference on computer vision.
[17] W. Liu, Y. Wen, Z. Yu, and M. Yang. Large-margin softmax loss for convolutional neural networks. In ICML, 2016. 2, 3,7, 8
[18] W. Liu, Y. Wen, Z. Yu, M. Li, B. Raj, and L. Song. Sphereface: Deep hypersphere embedding for face recognition. arXiv preprint arXiv:1704.08063, 2017. 2, 8
[19] Ranjan, Rajeev, Carlos D. Castillo, and Rama Chellappa. "L2-constrained Softmax Loss for Discriminative Face Verification." arXiv preprint arXiv:1703.09507 (2017).
[20] F. Wang, W. Liu, H. Liu, and J. Cheng. Additive margin softmax for face verification. In arXiv:1801.05599, 2018. 1,2, 3, 4, 9
[21] Deng J, Guo J, Zafeiriou S. ArcFace: Additive Angular Margin Loss for Deep Face Recognition[J]. arXiv preprint arXiv:1801.07698, 2018.
[22] Minghsuan Yang,Narendra Ahuja,David J Kriegman.Face recognition using kernel eigenfaces.2000,international conference on image processing.
[23] Juwei Lu,Konstantinos N Plataniotis,Anastasios N Venetsanopoulos.Face recognition using kernel direct discriminant analysis algorithms.2003,IEEE Transactions on Neural Networks.
本文為SIGAI原創
如需轉載,歡迎發消息到本訂號
授權聲明
本圖文海報所採用圖片經THE YIAN STUDIO授權
SIGAI
2018.04.10
TAG:SigAI |