王 浩
(澳大利亞昆士蘭大學信息技術與電氣工程學院 布里斯班 4072)
近幾年來,人臉識別技術變得越來越火熱,該技術也是被應用到了人們生活中的方方面面。然而,人臉識別至今仍然沒有一個嚴格的定義[1]。一般來說,狹義的人臉識別是一種用于身份驗證的計算機視覺技術,其也成為了繼識別卡認證、密鑰認證等傳統身份識別和虹膜識別、聲紋識別、指紋識別等生物信息識別后又一可行的生物信息識別技術[2~3];廣義的人臉識別則是將其視為一種對圖像或者視頻流中的人臉進行識別的技術,例如在一些美圖軟件中,正是利用該技術識別人臉,然后再對人臉圖像進行相關處理。然而,由于拍攝角度、快門速度、相機抖動、電子元器件、光照強度等方面的原因,圖像信息難免會受到諸如高斯噪聲、泊松噪聲、乘性噪聲、椒鹽噪聲等噪聲的影響,導致信息熵增大,進而使人臉識別的正常進行受到干擾[4]。同時,模糊、側臉、遮擋等情況的發生,同樣也會給人臉識別過程造成困難。
本次研究的目標是綜述當今人臉識別方法,報告當今人臉識別技術的現狀,并展望提高人臉識別技術在圖像信息受到噪聲干擾以及人臉圖像存在模糊、側臉、遮擋等情況下的圖像處理效率和人臉匹配正確率的未來研究方向。雖然人臉識別技術在圖像信息不受噪聲或受輕微噪聲的影響下已經取得了令人矚目的成就,但是在圖像信息受噪聲或者受光照、模糊、側臉、遮擋等現象影響較嚴重的情況下,其圖像處理效率以及人臉匹配正確率依然有較大的提升空間[1,4]。所以,本次研究將會進一步為提高人臉識別技術的性能做出貢獻,進而對身份驗證、逃犯追捕等眾多應用場景產生積極的促進作用。
人臉識別算法主要分為兩類:基于深度學習的人臉識別算法和非基于深度學習的傳統方法[1]。實踐證明,通常情況下,基于深度學習的人臉識別算法具有更好的性能[5],但一些經典的傳統人臉識別算法的理論思想同樣具有參考意義。下面,一些經典的前人研究將會被回顧和討論。
2.1.1 特征臉法(Eigenface)
特征臉法通常被認為是機器視覺領域內第一種有效的人臉識別算法,其核心算法是主成分分析(Principal Components Analysis,PCA)算法[6~8]。該方法首先將人臉圖像集合中的圖片灰度化,然后將灰度化后的圖片調整到統一尺寸并完成光照歸一化。隨后,將每個圖片都轉換為一個對應的向量,再將所有的圖片向量在對應的維度上求平均得到一個平均臉向量,之前所有的人臉圖片向量減去該平均臉向量便可完成零均值化。基于PCA算法,可計算出零均值化后圖像向量組合所得矩陣的協方差矩陣的特征值與特征向量,此特征向量便是所謂的特征臉。從所有的N個特征臉中選取M(M≤N)個特征臉,那么所有的人臉圖片的特征可通過這M個特征臉的權重來表示,每個人臉的特征向量θT可表示如下:

當進行人臉識別的時候,可將輸入的圖片基于特征臉轉化為人臉的特征向量,再比對此特征向量與數據庫中各個人臉特征向量的距離來進行人臉識別。
使用該方法進行人臉識別的時候,其優勢是算法整體可解釋性強,計算簡單,實現起來比較容易[1,8]。然而,該方法也存在較大缺陷,那就是受如人臉角度、光照等環境影響較大,進而導致實際應用中其性能并不理想[8]。
2.1.2 費舍爾臉法(FisherFace)
該算法與特征臉法非常相似,主要區別是該方法的實現要基于線性判別分析(Linear Discriminant Analysis,LDA)算法,而特征臉法要基于PCA算法[9]。與PCA算法相比,LDA算法主要有下面幾點不同[10]。
1)LDA算法為有監督學習,通過最大化類間距離和最小化類內距離來選擇分類性能最好的投影方向;而PCA算法為無監督學習,其會選擇所有樣本點投影具有最大方差的投影方向;
2)LDA算法即可用作分類,也可用作降維,且若數據為k維時,只可將數據降為(k-1)維;而PCA算法只可用作降維,且沒有只能將數據降為(k-1)維的限制。
與特征臉算法一樣,該算法整體可解釋性強,計算簡單,實現起來比較容易,甚至與特征臉法相比,該算法對光照強度和人臉表情的變化不敏感,且誤差率明顯低于特征臉法的誤差率[9]。然而,當面部圖像信息處于極端照明條件或者處于大量陰影條件下,該方法的識別正確率依然會發生顯著下降[9],且由于多數實際問題均不是線性可分,所以LDA或者PCA算法在這些問題上均難以取得良好效果。
2.1.3 局部二進制編碼直方圖法(Local Binary Patterns Histograms,LBPH)
LBPH算法首先將圖片灰度化,再基于LBP算子提取圖片特征,從而可得到整幅圖片的LBP編碼圖像。然后,將此LBP編碼圖像分割為多個方格(cell),并獲取每個方格圖像的LBP編碼直方圖。這樣整個圖像的LBP編碼直方圖可通過給予每個方格不同的權重來整合獲得。在進行人臉識別時,可將已提取的待識別圖像的人臉特征與數據庫中存儲的人臉特征進行一一比對,特征距離最近的可判斷為同一人臉。
該方法在一定程度上可以降低由于人臉圖像沒有完全對齊或者人臉姿勢所帶來的誤差,也可以根據每個方格圖像對人臉特征提取的重要性大小而給予不同的權重[1]。不過,在噪聲影響的情況下,該方法依然不具有良好的性能。
2.2.1 DeepID2
度量學習(metric learning)也被稱作相似度學習,在機器視覺領域,度量學習的目標就是讓越相似圖片之間的相似度越小而越不同圖片之間的相似度越大[11]。度量學習通過一次訓練(one-shot learning)就能夠得到一個通用的模型[13]。
DeepID2網絡人臉識別算法是較典型的也是較早基于度量學習的深度學習模型之一,其將從圖片中提取的人臉特征向量稱之為DeepID2 Vector[12]。該方法可以同時進行“驗證”和“分類”的訓練,對應著兩個損失函數(loss function),分別為對比損失(contrastive loss)和 交 叉 熵 損 失(cross-entropy loss)。在人臉驗證中,如果該模型認為圖片屬于同一張人臉,則輸出“1”;反之,則輸出“-1”。
如圖1所示,DeepID2網絡中共有四層卷積層,其中,前三層的后面分別跟著一層最大池化層(max-pooling layer),第三層和第四層卷積層均與最后的DeepID2層全連接[12]。

圖1 DeepID2卷積神經網絡結構圖
2.2.2 FaceNet
該算法與DeepID2同樣都是較典型的基于度量學習的人臉識別算法,只不過,該方法摒棄了后者的“分類”訓練部分,且將對比損失函數替換為了Triplet loss損失函數[14]。如圖2所示,Triplet loss損失函數需要輸入三張圖片,分別被稱為Anchor Face、Positive Face和Negative Face,其中,Anchor Face與Positive Face為同屬一個人的人臉圖像,而Negative Face則為不同人。如圖3所示,該函數的核心思想是讓屬于同一個人臉的圖像在特征空間中相距更近;反之,則相距更遠。

圖2 Anchor Face、Positive Face和Negative Face

圖3 Triplet loss函數工作原理
在針對于Labeled Face in the Wild(LFW)數據集的人臉識別中,DeepID2的識別準確率已經達到了99.15%[12],FaceNet更是達到了99.63%[14],可見基于度量學習的深度學習人臉識別算法已經取得了非常優秀的識別效果。然而,DeepID2和FaceNet識別方法均有一個很大的弊端,那就是通過該組合方式來訓練網絡,樣本數據量就會膨脹得非常厲害,導致訓練效率非常低下,訓練過程極其緩慢[1,12,14]。
2.2.3 SphereFace
與度量學習不同,基于邊界分類的深度學習人臉識別算法仍然將模型視為分類問題來進行訓練,其核心思想為模型不只要對可分的人臉特征進行學習,也要對最大邊界的人臉特征進行學習[15]。SphereFace正是典型的基于邊界分類的深度學習人臉識別算法之一,如圖4所示,主要對原始交叉熵損失函數(也被稱作Softmax Loss函數)中的全連接層的計算輸出Vi進行了修改[15],將其從

圖4 SphereFace算法的訓練和測試方法

式中Vi表示第i個類別的全連接層的計算輸出,ω表示權重向量,xi表示輸入特征,yi表示它的真實標簽,b表示偏置。
改為

式中m是一個超參數,表示邊界系數,也被視為一個懲罰系數,控制了損失函數的懲罰力度,θ表示權重向量與特征向量之間的夾角。余弦函數的引入,使得不同類別的特征在空間中的分布具有了角度性質,進而新的損失函數A-Softmax Loss只需要促使模型向優化角度的方向學習就可以[15]。
基于邊界分類的深度學習人臉識別算法具有出色的實際效果,模型的訓練速度也更快,較基于度量學習的算法更便于實際工程應用,且該類方法的商用模型也早已運用在多種高標準領域[1]。但是,該類模型也存在明顯局限性。特征的類間距離往往通過超參數m來進行調節,m越大,類間距離越大,所以分類便更簡單,可是這卻會導致模型的泛化能力出現下降,進而降低模型的整體性能[1,15]。
2.2.4 NormFace
如圖5所示,人臉識別模型在訓練過程中通常不在特征提取后進行歸一化,而在測試階段卻會使用歸一化的相似度,這也就是說,模型在訓練和測試中所采用的距離度量通常并不一致[17]。Norm-Face網絡則是通過修改交叉熵損失函數和改進度量學習兩種策略來使用歸一化的特征進行訓練。

圖5 基于分類損失函數的人臉驗證模型訓練與測試流程圖
在LFW數據集上的試驗表明,歸一化可使網絡的性能提高0.2%~0.4%,這在網絡性能趨近于飽和的情況下還是非常重要的[17]。然而,NormFace所獲得的性能提升只是通過微調其他現有模型的參數來實現的,若是對一個模型進行完整的訓練并獲得性能提升的話,還有待進一步研究。
2.2.5 CosFace
Softmax loss函數是深度學習人臉識別模型中常用的損失函數,然而,該函數卻存在著容易使模型對特征的判別性不強的缺陷。所以,為了解決這一缺陷,一些基于減小類內差異并且增大類間差異思想的損失函數被提了出來,如Centre Loss、L-Softmax、A-Softmax等。CosFace模型則是設計了一個新的損失函數,其被叫作增強邊緣余弦損失函數(large margin cosine loss,LMCL),函數形式如下[18]:

使其滿足:

式中N表示訓練樣本的數量,yi表示第i類的標簽,x表示特征向量,W表示權重向量,cos代表權重向量和特征向量的角度余弦值,m表示余弦邊界值(cosine margin term),s表示縮放參數(scaling parameter)。余弦邊界值m可用來進一步增大角度空間中的決策邊界,縮放參數s則控制歸一化時特征向量所分布在的超球面的半徑大小。
CosFace通過對特征向量和權重向量進行歸一化以及對余弦決策邊距進行增大,更有效地起到了減小類內差異并且增大類間差異的效果,其在Youtube Faces(YTF)數據集上的識別正確率達到了97.6%,在LFW數據集上的正確率甚至已經達到了99.73%[18]。
2.2.6 ArcFace
如今,人臉識別模型的一個主流研究方向是將邊界(margin)納入到一個成熟的損失函數中來,以最大化面部類別的可分離性[19]。所以,ArcFace模型提出了一個被稱作Additive Angular Margin Loss的損失函數來獲取人臉圖像的高度可識別特征,其損失函數公式為

如圖6所示,Softmax中的損失函數理論上已經實現了對類間特征的判別,但卻沒有實現對類內特征的聚集;SphereFace模型雖然進一步實現了類內特征的聚集,但其卻并不容易獲得一個合適的超參數[15];CosFace則是在增大類間距離縮小類內距離的同時也降低了其超參數的調節難度;相較于SphereFace和CosFace僅有非線性的角度邊界(nonlinear angular margin)而言,ArcFace實現了超球面上的間隔分類,在整個區間內具有恒定的線性角度邊界(linear angular margin)[19]。

圖6 二分類情況下不同損失函數的決策邊界
同時,ArcFace模型也借鑒了深度殘差網絡(deep residual network),即ResNet。事 實 證 明,ResNet的引入進一步提升了ArcFace模型的性能[19]。ResNet與當今流行的VGGNet和GoogLeNet同為基于深度學習的圖片特征提取模型,ResNet的核心思想是引入了殘差單元,以此解決了人工神經網絡過深導致的網絡性能下降問題[20]。殘差單元的基本結構如圖7所示,一個殘差單元的輸入數據有兩路數據匯合而成,一路數據為經過多個卷積層之后的運算結果,另一路則為經由捷徑連接(shortcut connections)直接傳遞過來的輸入數據,事實證明,殘差單元可以很好地解決網絡模型過深導致的退化問題。

圖7 ResNet的一個基本單元
經過在多個人臉數據集上的驗證,ArcFace的性能始終優于當今最先進的技術,并且其算法可以輕松實現而計算成本可以忽略不計[20]。
實踐證明,人工神經不僅可以用來學習和判別特征,還可以用來對數據進行降維,基于深度卷積神 經 網 絡(Deep Convolutional Neural Network,DCNN)的人臉識別算法不需要人為設計一些特定的特征就可以通過對訓練集的學習提取到人臉圖像的深度特征,識別過程中對光照、模糊、側臉、遮擋、圖像噪音等現象并不敏感,且其實際性能遠遠超過了傳統人臉識別算法[21]。雖然DCNN模型需要依賴于非常大量的數據集進行訓練,并且這些數據集還需要包含足夠多的差異以使模型具有出色的泛化能力,但幸運的是,多個大規模的自然人臉圖像(in-the-wild face images)數據集已經被公開來用于卷積神經網絡的訓練[22~28]。
在人臉識別模型的卷積神經網絡結構方面,ImageNet大規模視覺識別挑戰賽(ImageNet Large Scale Visual Recognition Challenge,ILSVRC)中表現優異的網絡結構具有重要的參考價值。近些年來,ResNet網絡結構就獲得了人臉識別領域內眾多專家和學者的青睞,由于其構建的帶有捷徑連接的殘差模塊可以使跨層的信息流動變得便捷,所以研究人員可以借鑒此結構的設計思想來構建更深的網絡結構模型。
對卷積神經網絡進行訓練的思路主要有兩種。其中之一是將人臉識別視為分類問題,訓練集中的每個主體對應于一個類,在訓練之后,該模型可以通過丟棄分類層并使用之前層的特征作為面部表征來識別訓練集中不存在的對象[29]。另一種則是基于度量學習的模型,目標就是通過直接學習瓶頸特征來讓越相似圖片之間的度量距離越小而越不同圖片之間的度量距離越大[14,30~31]。
近幾年,訓練卷積神經網絡所用的損失函數成了人臉識別領域最熱門的研究課題[21]。從開始最常用的交叉熵損失函數,到對比損失函數、triplet loss、中心損失函數、范圍損失函數、A-Softmax Loss、增強邊緣余弦損失函數、Additive Angular Margin Loss等,新提出的損失函數在當時都一定程度上起到了提升人臉識別模型性能的作用。在未來一段時間內,損失函數預計依然會是人臉識別技術發展的一大研究方向。
綜上所述,未來對人臉識別技術的研究,預計仍將以深度學習網絡(尤其是深度卷積神經網絡)為基本架構構建模型,并以已公開的多個大規模人臉圖像數據集為訓練和測試數據。由于網絡模型的性能通常會隨著網絡深度的增加而加強[16,32],所以構建的模型也要借鑒ResNet思想以加深網絡模型深度。同時,也需要結合現有損失函數或者提出新的損失函數,分別基于度量學習和基于邊界分類兩種思路來對模型進行訓練并嘗試獲得性能最佳的網絡模型。另外,在進行研究的時候,也要特別注意以下幾點。
1)卷積神經網絡的局部最優問題。目前,基于深度卷積神經網絡的人臉識別模型仍然采用微調參數、多次訓練等方式來解決神經網絡的局部最優問題[33],但這種方式會給訓練帶來低效性、結果偶然性。所以,如何有效地解決卷積神經網絡的局部最優問題,進而高效率達到全局最優點,仍然是人臉識別技術研究的重點。
2)訓練數據集的“深”“寬”問題。通常,如果一個數據集里面包含更多的主體,則該數據集被認為更“寬”;如果一個數據集中每個主體擁有更多的圖像,則該數據集被認為更“深”[34]。使用更“深”的數據集進行訓練,可以讓模型縮小類內距離的能力增強;而使用更“寬”的數據集,則可以增強模型對類間差異的辨別能力。然而,以往對人臉識別技術的研究卻并沒有考慮訓練數據集的“深”“寬”問題。所以,用于人臉識別模型的訓練數據集的最佳“深寬比例”也需要進一步研究。
3)最佳網絡結構問題。真正的生物神經系統極其復雜,不僅同一個神經系統中有前向和后向的信息傳遞,還有同層神經元之間的信息傳遞,甚至神經子系統與子系統之間同樣也有信息傳遞,而目前的深度學習領域依然難以對此類真正的生物神經系統進行建模[35]。甚至再退一步,目前的人工神經網絡模型也都是人工設計的,而對于一個模型中應該包含多少數量的網絡層以及每層應擁有多少數量的神經元才為性能最佳依然只能通過無數次不停的嘗試來獲得。所以,對更復雜的神經網絡完成建模以及進一步研究卷積神經網絡的最佳結構,將會對提升人臉識別模型的性能有很大幫助。
通常,傳統的人臉識別算法往往被認為只能提取到人臉圖像的淺層特征而不能提取到深層特征,但為了提高其準確度,傳統識別算法往往又要結合許多的人造特征,所以,在進行人造特征的提取和識別的時候,就會出現一些不可預料的人為因素和誤差。在基于深度學習的人臉識別算法出現之前,傳統的人臉識別算法對于光照、模糊、側臉、遮擋、噪音等現象非常敏感,實際識別錯誤率極高,且根本無法用于實際工程項目。直到深度學習人臉識別模型的出現,人臉識別技術才在實際生活中得到應用,發展至今,深度學習人臉識別模型的識別效率和準確率已經可以與人工相媲美,在某些領域,甚至已經遠遠超過了人工。所以,在未來很長一段時間內,深度學習都將會是人臉識別技術的研究方向。
其中,對于卷積神經網絡的局部最優問題、訓練數據集的“深”“寬”問題和最佳網絡結構問題,之前的研究都鮮有考慮和涉及,所以,若能合理地解決好這三個問題,便極有可能使人臉識別甚至機器學習領域出現革命性的進步。