當前位置:
首頁 > 知識 > 人臉識別技術全面總結:從傳統方法到深度學習

人臉識別技術全面總結:從傳統方法到深度學習

選自arXiv

作者:Daniel Saez Trigueros等

機器之心編譯

參與:Panda

英國赫特福德大學與 GBG Plc 的研究者近日發布了一篇綜述論文,對人臉識別方法進行了全面的梳理和總結,其中涵蓋各種傳統方法和如今風頭正盛的深度學習方法。機器之心重點編譯介紹了其中的深度學習方法部分,更多有關傳統人臉識別方法的內容請參閱原論文。

論文地址:https://arxiv.org/abs/1811.00116

自七十年代以來,人臉識別已經成為了計算機視覺和生物識別領域被研究最多的主題之一。基於人工設計的特徵和傳統機器學習技術的傳統方法近來已被使用非常大型的數據集訓練的深度神經網路取代。在這篇論文中,我們對流行的人臉識別方法進行了全面且最新的文獻總結,其中既包括傳統方法(基於幾何的方法、整體方法、基於特徵的方法和混合方法),也有深度學習方法。

引言

人臉識別是指能夠識別或驗證圖像或視頻中的主體的身份的技術。首個人臉識別演算法誕生於七十年代初 [1,2]。自那以後,它們的準確度已經大幅提升,現在相比於指紋或虹膜識別 [3] 等傳統上被認為更加穩健的生物識別方法,人們往往更偏愛人臉識別。讓人臉識別比其它生物識別方法更受歡迎的一大不同之處是人臉識別本質上是非侵入性的。比如,指紋識別需要用戶將手指按在感測器上,虹膜識別需要用戶與相機靠得很近,語音識別則需要用戶大聲說話。相對而言,現代人臉識別系統僅需要用戶處於相機的視野內(假設他們與相機的距離也合理)。這使得人臉識別成為了對用戶最友好的生物識別方法。這也意味著人臉識別的潛在應用範圍更廣,因為它也可被部署在用戶不期望與系統合作的環境中,比如監控系統中。人臉識別的其它常見應用還包括訪問控制、欺詐檢測、身份認證和社交媒體。

當被部署在無約束條件的環境中時,由於人臉圖像在現實世界中的呈現具有高度的可變性(這類人臉圖像通常被稱為自然人臉(faces in-the-wild)),所以人臉識別也是最有挑戰性的生物識別方法之一。人臉圖像可變的地方包括頭部姿勢、年齡、遮擋、光照條件和人臉表情。圖 1 給出了這些情況的示例。

圖 1:在自然人臉圖像中找到的典型變化。(a)頭部姿勢,(b)年齡,(c)光照,(d)面部表情,(e)遮擋。

人臉識別技術這些年已經發生了重大的變化。傳統方法依賴於人工設計的特徵(比如邊和紋理描述量)與機器學習技術(比如主成分分析、線性判別分析或支持向量機)的組合。人工設計在無約束環境中對不同變化情況穩健的特徵是很困難的,這使得過去的研究者側重研究針對每種變化類型的專用方法,比如能應對不同年齡的方法 [4,5]、能應對不同姿勢的方法 [6]、能應對不同光照條件的方法 [7,8] 等。近段時間,傳統的人臉識別方法已經被基於卷積神經網路(CNN)的深度學習方法接替。深度學習方法的主要優勢是它們可用非常大型的數據集進行訓練,從而學習到表徵這些數據的最佳特徵。網路上可用的大量自然人臉圖像已讓研究者可收集到大規模的人臉數據集 [9-15],這些圖像包含了真實世界中的各種變化情況。使用這些數據集訓練的基於 CNN 的人臉識別方法已經實現了非常高的準確度,因為它們能夠學到人臉圖像中穩健的特徵,從而能夠應對在訓練過程中使用的人臉圖像所呈現出的真實世界變化情況。此外,深度學習方法在計算機視覺方面的不斷普及也在加速人臉識別研究的發展,因為 CNN 也正被用於解決許多其它計算機視覺任務,比如目標檢測和識別、分割、光學字元識別、面部表情分析、年齡估計等。

人臉識別系統通常由以下構建模塊組成:

人臉檢測。人臉檢測器用於尋找圖像中人臉的位置,如果有人臉,就返回包含每張人臉的邊界框的坐標。如圖 3a 所示。

人臉對齊。人臉對齊的目標是使用一組位於圖像中固定位置的參考點來縮放和裁剪人臉圖像。這個過程通常需要使用一個特徵點檢測器來尋找一組人臉特徵點,在簡單的 2D 對齊情況中,即為尋找最適合參考點的最佳仿射變換。圖 3b 和 3c 展示了兩張使用了同一組參考點對齊後的人臉圖像。更複雜的 3D 對齊演算法(如 [16])還能實現人臉正面化,即將人臉的姿勢調整到正面向前。

人臉表徵。在人臉表徵階段,人臉圖像的像素值會被轉換成緊湊且可判別的特徵向量,這也被稱為模板(template)。理想情況下,同一個主體的所有人臉都應該映射到相似的特徵向量。

人臉匹配。在人臉匹配構建模塊中,兩個模板會進行比較,從而得到一個相似度分數,該分數給出了兩者屬於同一個主體的可能性。

圖 2:人臉識別的構建模塊。

很多人認為人臉表徵是人臉識別系統中最重要的組件,這也是本論文第二節所關注的重點。

圖 3:(a)人臉檢測器找到的邊界框。(b)和(c):對齊後的人臉和參考點。

深度學習方法

卷積神經網路(CNN)是人臉識別方面最常用的一類深度學習方法。深度學習方法的主要優勢是可用大量數據來訓練,從而學到對訓練數據中出現的變化情況穩健的人臉表徵。這種方法不需要設計對不同類型的類內差異(比如光照、姿勢、面部表情、年齡等)穩健的特定特徵,而是可以從訓練數據中學到它們。深度學習方法的主要短板是它們需要使用非常大的數據集來訓練,而且這些數據集中需要包含足夠的變化,從而可以泛化到未曾見過的樣本上。幸運的是,一些包含自然人臉圖像的大規模人臉數據集已被公開 [9-15],可被用來訓練 CNN 模型。除了學習判別特徵,神經網路還可以降維,並可被訓練成分類器或使用度量學習方法。CNN 被認為是端到端可訓練的系統,無需與任何其它特定方法結合。

用於人臉識別的 CNN 模型可以使用不同的方法來訓練。其中之一是將該問題當作是一個分類問題,訓練集中的每個主體都對應一個類別。訓練完之後,可以通過去除分類層並將之前層的特徵用作人臉表徵而將該模型用於識別不存在於訓練集中的主體 [99]。在深度學習文獻中,這些特徵通常被稱為瓶頸特徵(bottleneck features)。在這第一個訓練階段之後,該模型可以使用其它技術來進一步訓練,以為目標應用優化瓶頸特徵(比如使用聯合貝葉斯 [9] 或使用一個不同的損失函數來微調該 CNN 模型 [10])。另一種學習人臉表徵的常用方法是通過優化配對的人臉 [100,101] 或人臉三元組 [102] 之間的距離度量來直接學習瓶頸特徵。

使用神經網路來做人臉識別並不是什麼新思想。1997 年就有研究者為人臉檢測、眼部定位和人臉識別提出了一種名為「基於概率決策的神經網路(PBDNN)」[103] 的早期方法。這種人臉識別 PDBNN 被分成了每一個訓練主體一個全連接子網路,以降低隱藏單元的數量和避免過擬合。研究者使用密度和邊特徵分別訓練了兩個 PBDNN,然後將它們的輸出組合起來得到最終分類決定。另一種早期方法 [104] 則組合使用了自組織映射(SOM)和卷積神經網路。自組織映射[105] 是一類以無監督方式訓練的神經網路,可將輸入數據映射到更低維的空間,同時也能保留輸入空間的拓撲性質(即在原始空間中相近的輸入在輸出空間中也相近)。注意,這兩種早期方法都不是以端到端的方式訓練的([103] 中使用了邊特徵,[104] 中使用了 SOM),而且提出的神經網路架構也都很淺。[100] 中提出了一種端到端的人臉識別 CNN。這種方法使用了一種孿生式架構,並使用了一個對比損失函數 [106] 來進行訓練。這個對比損失使用了一種度量學習流程,其目標是最小化對應同一主體的特徵向量對之間的距離,同時最大化對應不同主體的特徵向量對之間的距離。該方法中使用的 CNN 架構也很淺,且訓練數據集也較小。

上面提到的方法都未能取得突破性的成果,主要原因是使用了能力不足的網路,且訓練時能用的數據集也相對較小。直到這些模型得到擴展並使用大量數據 [107] 訓練後,用於人臉識別的首個深度學習方法 [99,9] 才達到了當前最佳水平。尤其值得一提的是 Facebook 的 DeepFace [99],這是最早的用於人臉識別的 CNN 方法之一,其使用了一個能力很強的模型,在 LFW 基準上實現了 97.35% 的準確度,將之前最佳表現的錯誤率降低了 27%。研究者使用 softmax 損失和一個包含 440 萬張人臉(來自 4030 個主體)的數據集訓練了一個 CNN。本論文有兩個全新的貢獻:(1)一個基於明確的 3D 人臉建模的高效的人臉對齊系統;(2)一個包含局部連接的層的 CNN 架構 [108,109],這些層不同於常規的卷積層,可以從圖像中的每個區域學到不同的特徵。在那同時,DeepID 系統 [9] 通過在圖塊(patch)上訓練 60 個不同的 CNN 而得到了相近的結果,這些圖塊包含十個區域、三種比例以及 RGB 或灰度通道。在測試階段,會從每個圖塊提取出 160 個瓶頸特徵,加上其水平翻轉後的情況,可形成一個 19200 維的特徵向量(160×2×60)。類似於 [99],新提出的 CNN 架構也使用了局部連接的層。其驗證結果是通過在這種由 CNN 提取出的 19200 維特徵向量上訓練一個聯合貝葉斯分類器 [48] 得到的。訓練該系統所使用的數據集包含 202599 張人臉圖像,來自 10177 位名人 [9]。

對於基於 CNN 的人臉識別方法,影響準確度的因素主要有三個:訓練數據、CNN 架構和損失函數。因為在大多數深度學習應用中,都需要大訓練集來防止過擬合。一般而言,為分類任務訓練的 CNN 的準確度會隨每類的樣本數量的增長而提升。這是因為當類內差異更多時,CNN 模型能夠學習到更穩健的特徵。但是,對於人臉識別,我們感興趣的是提取出能夠泛化到訓練集中未曾出現過的主體上的特徵。因此,用於人臉識別的數據集還需要包含大量主體,這樣模型也能學習到更多類間差異。[110] 研究了數據集中主體的數量對人臉識別準確度的影響。在這項研究中,首先以降序形式按照每個主體的圖像數量對一個大數據集進行了排序。然後,研究者通過逐漸增大主體數量而使用訓練數據的不同子集訓練了一個 CNN。當使用了圖像數量最多的 10000 個主體進行訓練時,得到的準確度是最高的。增加更多主體會降低準確度,因為每個額外主體可用的圖像非常少。另一項研究 [111] 研究了更寬度的數據集更好,還是更深度的數據集更好(如果一個數據集包含更多主體,則認為它更寬;類似地,如果每個主體包含的圖像更多,則認為它更深)。這項研究總結到:如果圖像數量相等,則更寬的數據集能得到更好的準確度。研究者認為這是因為更寬度的數據集包含更多類間差異,因而能更好地泛化到未曾見過的主體上。表 1 展示了某些最常用於訓練人臉識別 CNN 的公開數據集。

表 1:公開的大規模人臉數據集。

用於人臉識別的 CNN 架構從那些在 ImageNet 大規模視覺識別挑戰賽(ILSVRC)上表現優異的架構上取得了很多靈感。舉個例子,[11] 中使用了一個帶有 16 層的 VGG 網路 [112] 版本,[10] 中則使用了一個相似但更小的網路。[102] 中探索了兩種不同類型的 CNN 架構:VGG 風格的網路 [112] 和 GoogleNet 風格的網路 [113]。即使這兩種網路實現了相當的準確度,但 GoogleNet 風格的網路的參數數量少 20 倍。更近段時間,殘差網路(ResNet)[114] 已經成為了很多目標識別任務的最受偏愛的選擇,其中包括人臉識別 [115-121]。ResNet 的主要創新點是引入了一種使用捷徑連接的構建模塊來學習殘差映射,如圖 7 所示。捷徑連接的使用能讓研究者訓練更深度的架構,因為它們有助於跨層的信息流動。[121] 對不同的 CNN 架構進行了全面的研究。在準確度、速度和模型大小之間的最佳權衡是使用帶有一個殘差模塊(類似於 [122] 中提出的那種)的 100 層 ResNet 得到的。

圖 7:[114] 中提出的原始的殘差模塊。

選擇用於訓練 CNN 方法的損失函數已經成為近來人臉識別最活躍的研究領域。即使使用 softmax 損失訓練的 CNN 已經非常成功 [99,9,10,123],但也有研究者認為使用這種損失函數無法很好地泛化到訓練集中未出現過的主體上。這是因為 softmax 損失有助於學習能增大類間差異的特徵(以便在訓練集中區別不同的類),但不一定會降低類內差異。研究者已經提出了一些能緩解這一問題的方法。優化瓶頸特徵的一種簡單方法是使用判別式子空間方法,比如聯合貝葉斯 [48],就像 [9,124,125,126,10,127] 中所做的那樣。另一種方法是使用度量學習。比如,[100,101] 中使用了配對的對比損失來作為唯一的監督信號,[124-126] 中還結合使用了分類損失。人臉識別方面最常用的度量學習方法是三元組損失函數 [128],最早在 [102] 中被用於人臉識別任務。三元組損失的目標是以一定餘量分開正例對之間的距離和負例對之間的距離。從數學形式上講,對於每個三元組 i,需要滿足以下條件 [102]:

其中 x_a 是錨圖像,x_p 是同一主體的圖像,x_n 是另一個不同主體的圖像,f 是模型學習到的映射關係,α 施加在正例對和負例對距離之間的餘量。在實踐中,使用三元組損失訓練的 CNN 的收斂速度比使用 softmax 的慢,這是因為需要大量三元組(或對比損失中的配對)才能覆蓋整個訓練集。儘管這個問題可以通過在訓練階段選擇困難的三元組(即違反餘量條件的三元組)來緩解 [102],但常見的做法是在第一個訓練階段使用 softmax 損失訓練,在第二個訓練階段使用三元組損失來對瓶頸特徵進行調整 [11,129,130]。研究者們已經提出了三元組損失的一些變體。比如 [129] 中使用了點積作為相似度度量,而不是歐幾里德距離;[130] 中提出了一種概率式三元組損失;[131,132] 中提出了一種修改版的三元組損失,它也能最小化正例和負例分數分布的標準差。用於學習判別特徵的另一種損失函數是 [133] 中提出的中心損失(centre loss)。中心損失的目標是最小化瓶頸特徵與它們對應類別的中心之間的距離。通過使用 softmax 損失和中心損失進行聯合訓練,結果表明 CNN 學習到的特徵能夠有效增大類間差異(softmax 損失)和降低類內個體差異(中心損失)。相比於對比損失和三元組損失,中心損失的優點是更高效和更容易實現,因為它不需要在訓練過程中構建配對或三元組。另一種相關的度量學習方法是 [134] 中提出的範圍損失(range loss),這是為改善使用不平衡數據集的訓練而提出的。範圍損失有兩個組件。類內的損失組件是最小化同一類樣本之間的 k-最大距離,而類間的損失組件是最大化每個訓練批中最近的兩個類中心之間的距離。通過使用這些極端案例,範圍損失為每個類都使用同樣的信息,而不管每個類別中有多少樣本可用。類似於中心損失,範圍損失需要與 softmax 損失結合起來以避免損失降至零 [133]。

當結合不同的損失函數時,會出現一個困難,即尋找每一項之間的正確平衡。最近一段時間,已有研究者提出了幾種修改 softmax 損失的方法,這樣它無需與其它損失結合也能學習判別特徵。一種已被證明可以增加瓶頸特徵的判別能力的方法是特徵歸一化 [115,118]。比如,[115] 提出歸一化特徵以具有單位 L2 範數,[118] 提出歸一化特徵以具有零均值和單位方差。一個成功的方法已經在 softmax 損失中每類之間的決策邊界中引入了一個餘量 [135]。為了簡單,我們介紹一下使用 softmax 損失進行二元分類的情況。在這種情況下,每類之間的決策邊界(如果偏置為零)可由下式給定:

其中 x 是特徵向量,W_1 和 W_2 是對應每類的權重,θ_1 和 θ_2 是 x 分別與 W_1 和 W_2 之間的角度。通過在上式中引入一個乘法餘量,這兩個決策邊界可以變得更加嚴格:

如圖 8 所示,這個餘量可以有效地增大類別之間的區分程度以及各自類別之內的緊湊性。根據將該餘量整合進損失的方式,研究者們已經提出了多種可用方法 [116,119-121]。比如 [116] 中對權重向量進行了歸一化以具有單位範數,這樣使得決策邊界僅取決於角度 θ_1 和 θ_2。[119,120] 中則提出了一種加性餘弦餘量。相比於乘法餘量 [135,116],加性餘量更容易實現和優化。在這項工作中,除了歸一化權重向量,特徵向量也如 [115] 中一樣進行了歸一化和比例調整。[121] 中提出了另一種加性餘量,它既有 [119,120] 那樣的優點,還有更好的幾何解釋方式,因為這個餘量是加在角度上的,而不是餘弦上。表 2 總結了有餘量的 softmax 損失的不同變體的決策邊界。這些方法是人臉識別領域的當前最佳。

圖 8:在兩個類別之間的決策邊界中引入一個餘量 m 的效果。(a)softmax 損失,(b)有餘量的 softmax 損失。

表 2:有餘量的 softmax 損失的不同變體的決策邊界。注意這些決策邊界針對的是二元分類案例中的類別 1。

本文為機器之心編譯,轉載請聯繫本公眾號獲得授權。

------------------------------------------------


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

專欄 | SimpleDet:一套簡單通用的目標檢測與物體識別框架
用半勵志的方式告訴你,怎麼學習Python開發

TAG:機器之心 |