英國赫特福德大學與 GBG Plc 的研究者近日發佈了一篇綜述論文,對人臉識別方法進行了全面的梳理和總結,其中涵蓋各類傳統方法和現在風頭正盛的深度學習方法。機器之心重點編譯介紹了其中的深度學習方法部分,更多有關傳統人臉識別方法的內容請參閱原論文。算法
文章選自arXiv,做者:Daniel Saez Trigueros等,機器之心編譯。網絡
論文地址:https://arxiv.org/abs/1811.00116架構
自七十年代以來,人臉識別已經成爲了計算機視覺和生物識別領域被研究最多的主題之一。基於人工設計的特徵和傳統機器學習技術的傳統方法近來已被使用很是大型的數據集訓練的深度神經網絡取代。在這篇論文中,咱們對流行的人臉識別方法進行了全面且最新的文獻總結,其中既包括傳統方法(基於幾何的方法、總體方法、基於特徵的方法和混合方法),也有深度學習方法。機器學習
引言函數
人臉識別是指可以識別或驗證圖像或視頻中的主體的身份的技術。首我的臉識別算法誕生於七十年代初 [1,2]。自那之後,它們的準確度已經大幅提高,如今相比於指紋或虹膜識別 [3] 等傳統上被認爲更加穩健的生物識別方法,人們每每更偏心人臉識別。讓人臉識別比其它生物識別方法更受歡迎的一大不一樣之處是人臉識別本質上是非侵入性的。好比,指紋識別須要用戶將手指按在傳感器上,虹膜識別須要用戶與相機靠得很近,語音識別則須要用戶大聲說話。相對而言,現代人臉識別系統僅須要用戶處於相機的視野內(假設他們與相機的距離也合理)。這使得人臉識別成爲了對用戶最友好的生物識別方法。這也意味着人臉識別的潛在應用範圍更廣,由於它也可被部署在用戶不指望與系統合做的環境中,好比監控系統中。人臉識別的其它常見應用還包括訪問控制、欺詐檢測、身份認證和社交媒體。學習
當被部署在無約束條件的環境中時,因爲人臉圖像在現實世界中的呈現具備高度的可變性(這類人臉圖像一般被稱爲天然人臉(faces in-the-wild)),因此人臉識別也是最有挑戰性的生物識別方法之一。人臉圖像可變的地方包括頭部姿式、年齡、遮擋、光照條件和人臉表情。圖 1 給出了這些狀況的示例。測試
人臉識別技術這些年已經發生了重大的變化。傳統方法依賴於人工設計的特徵(好比邊和紋理描述量)與機器學習技術(好比主成分分析、線性判別分析或支持向量機)的組合。人工設計在無約束環境中對不一樣變化狀況穩健的特徵是很困難的,這使得過去的研究者側重研究針對每種變化類型的專用方法,好比能應對不一樣年齡的方法 [4,5]、能應對不一樣姿式的方法 [6]、能應對不一樣光照條件的方法 [7,8] 等。近段時間,傳統的人臉識別方法已經被基於卷積神經網絡(CNN)的深度學習方法接替。深度學習方法的主要優點是它們可用很是大型的數據集進行訓練,從而學習到表徵這些數據的最佳特徵。網絡上可用的大量天然人臉圖像已讓研究者可收集到大規模的人臉數據集 [9-15],這些圖像包含了真實世界中的各類變化狀況。使用這些數據集訓練的基於 CNN 的人臉識別方法已經實現了很是高的準確度,由於它們可以學到人臉圖像中穩健的特徵,從而可以應對在訓練過程當中使用的人臉圖像所呈現出的真實世界變化狀況。此外,深度學習方法在計算機視覺方面的不斷普及也在加速人臉識別研究的發展,由於 CNN 也正被用於解決許多其它計算機視覺任務,好比目標檢測和識別、分割、光學字符識別、面部表情分析、年齡估計等。大數據
人臉識別系統一般由如下構建模塊組成:優化
人臉檢測。人臉檢測器用於尋找圖像中人臉的位置,若是有人臉,就返回包含每張人臉的邊界框的座標。如圖 3a 所示。設計
人臉對齊。人臉對齊的目標是使用一組位於圖像中固定位置的參考點來縮放和裁剪人臉圖像。這個過程一般須要使用一個特徵點檢測器來尋找一組人臉特徵點,在簡單的 2D 對齊狀況中,即爲尋找最適合參考點的最佳仿射變換。圖 3b 和 3c 展現了兩張使用了同一組參考點對齊後的人臉圖像。更復雜的 3D 對齊算法(如 [16])還能實現人臉正面化,即將人臉的姿式調整到正面向前。
人臉表徵。在人臉表徵階段,人臉圖像的像素值會被轉換成緊湊且可判別的特徵向量,這也被稱爲模板(template)。理想狀況下,同一個主體的全部人臉都應該映射到類似的特徵向量。
人臉匹配。在人臉匹配構建模塊中,兩個模板會進行比較,從而獲得一個類似度分數,該分數給出了二者屬於同一個主體的可能性。
不少人認爲人臉表徵是人臉識別系統中最重要的組件,這也是本論文第二節所關注的重點。
圖 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 的公開數據集。
用於人臉識別的 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 獲得的。
選擇用於訓練 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 損失。