【人臉識別】FaceNet: A Unified Embedding for Face Recognition and Clustering 翻譯
FaceNet:人臉識別和聚類的統一嵌入
摘要
儘管人臉識別領域最近取得了重大進展[10、14、15、17],但在規模上有效地實施人臉驗證和識別,對當前的研究方法提出了嚴峻的挑戰。在本文中,我們提出了一個叫做FaceNet的系統,它直接從臉部影象學習到一個緊湊的歐幾里得空間,距離直接對應於面部相似度的度量。一旦完成了這個空間,就可以通過使用帶有FaceNet嵌入特性的標準技術輕鬆實現人臉識別、驗證和叢集等任務。 我們的方法使用深度卷積網路來直接優化嵌入本身,而不是像之前的深度學習方法那樣的中間瓶頸層。為了訓練,我們使用一種新穎的線上三重挖掘方法生成的匹配/不匹配的面塊。我們的方法的好處是更大的代表性效率:我們實現了最先進的人臉識別效能,每個臉只有128個位元組。 在廣泛使用的LFW資料集上,我們的系統實現了99.63%的新記錄精度。在YouTube上,DB達到了95.12%。我們的系統將這兩個資料集的錯誤率降低了30%。
1 .工作介紹
在本文中,我們提出了一個統一的人臉識別系統(就是這個人)、識別(此人就是這個人)和聚類(在這些面孔中找到普通的人)。我們的方法是建立在學習一種歐幾里得的嵌入每個影象使用一個深度卷積網路。該網路經過訓練,使嵌入空間中的平方L2距離直接對應於人臉的相似度:同一個人的面有小距離,不同人群的面距離較大。 一旦這種嵌入已經產生,那麼上述的任務就會變得很簡單:臉驗證僅僅涉及到兩個嵌入之間的距離的閾值;識別成為k - nn分類問題;可以使用諸如k - means或聚集叢集等現成技術實現叢集化。 先前基於深層網路的人臉識別方法採用了一種分類層[15,17],在一組已知的人臉識別上進行訓練,然後將一箇中間的瓶頸層作為一種表徵,用於在訓練中使用的識別集以外的識別識別。這種方法的缺點是它的不直接性和低效率:人們必須希望瓶頸表示能夠很好地推廣到新面孔;通過使用一個瓶頸層,每個面的表示尺寸通常非常大(10世紀的尺寸)。最近的一些研究[15]通過使用PCA降低了這種維度的維度,但這是一個線性轉換,可以很容易地在網路的一層中學習。 與這些方法不同的是,FaceNet直接將其輸出訓練成一個緊湊的128 - d嵌入,使用基於LMNN的三重損失函式[19]。我們的三胞胎由兩個匹配的面部縮圖和一個不匹配的臉縮圖組成,而損失的目標是將積極的對與消極的距離分開。縮圖是臉部區域的緻密作物,沒有2D或3D對齊,除了縮放和翻譯。 選擇使用哪三胞胎對於獲得良好的表現來說是非常重要的,而受課程學習的啟發,我們提出了一種新的線上負面範例挖掘策略,它確保了網路訓練作為三胞胎的難度不斷增加。為了提高聚類的準確性,我們還探索了一種積極的挖掘技術,這種技術鼓勵單個人的嵌入。 作為我們的方法可以處理的不可思議的可變性,請參見圖1。顯示的是PIE[13]的影象對,以前被認為是很難的人臉驗證系統。
圖1所示。光照和姿態不變性。姿勢與照度是人臉識別中的一個長期存在的問題。這個圖顯示了相同的人臉和不同的姿勢和照明組合的人臉之間的距離。0.0表示兩張臉是相同的,4.0對應於相反的光譜,兩種不同的恆等式。您可以看到,1.1的閾值將對每一對進行正確的分類。
本文其餘部分的概述如下:在第2節中,我們回顧了該領域的文獻;第3.1節定義了三重損失,第3.2節描述了我們的新三合選擇和訓練過程;在第3.3節中,我們描述了所使用的模型架構。最後,在第四節和第五節中,我們給出了一些嵌入的定量結果,並定性地探討了一些聚類結果。
2.相關工作
類似於其他使用深層網路的近期作品[15,17],我們的方法是一種純粹的資料驅動方法,它直接從臉部的象素上學習它的表示。我們不使用工程特性,而是使用一個大資料集來達到適當的不變性,以構成、照明和其他變化的條件。 在本文中,我們探索了兩種不同的深度網路架構,它們最近在計算機視覺社群中取得了巨大的成功。兩者都是深度卷積網路[8,11]。第一個架構基於Zeiler&Fergus[22]模型,該模型由多個交錯層、非線性啟用、區域性響應規範化和max池化層組成。我們另外新增幾個1×1×d卷積層受[9]的工作。第二個架構基於Szegedy等的初始模型,該模型最近被用作ImageNet 2014的獲勝方法[16]。這些網路使用混合層來並行執行多個不同的卷積和匯聚層,並將它們的響應連線起來。我們發現,這些模型可以將引數數量減少多達20倍,並有可能減少類似效能所需的失敗次數。 有大量的面部驗證和識別功能。回顧一下這篇文章的範圍,我們只會簡單地討論一下最近最相關的工作。 [15,17,23]的作品都採用了複雜的多階段系統,將一個深卷積網路的輸出與PCA進行了維數減少和SVM分類。 Zhenyao等人[23]利用一個深度網路將面孔“扭曲”成一個典型的正面檢視,然後學習CNN,將每個面孔分類為一個已知的身份。為了進行面部驗證,使用了與SVMs整合的網路輸出的PCA。 Taigman等[17]提出了一種將人臉與通用三維形狀模型相結合的多級方法。經過訓練,一個多類網路對超過4000個身份進行人臉識別任務。作者還嘗試了一個所謂的Siamese網路,他們直接優化了兩個臉部特徵之間的L - 1距離。他們在LFW上的最佳表現(97.35%)來自三個使用不同的對齊和顏色通道的網路。預測的距離(χ2核心)基礎上的非線性支援向量機預測的網路使用非線性支援向量機相結合。 Sun等[14,15]提出了一個緊湊的,因此相對便宜的計算網路。他們使用了25個這樣的網路,每一個都使用不同的面部貼片。在LFW(99.47%[15])上,作者將50個回覆(規則和翻轉)結合在一起。採用PCA和聯合貝葉斯模型[2],有效地對應了嵌入空間中的線性變換。他們的方法不需要顯式的2D / 3D對齊方式。通過使用分類和驗證損失的組合來訓練網路。驗證損失類似於我們使用的三重損失[12,19],因為它最小化了相同身份的面之間的L 2 -距離,並在不同身份的面之間設定了一個邊界。主要的區別在於,只有對影象進行比較,而三重損失則鼓勵相對距離約束。 一個類似的損失在這裡使用的是wang等人 [18] 由語義和視覺相似性進行的影象排列。
3.方法
FaceNet使用一個深度卷積網路。我們討論了兩個不同的核心架構:Zeiler&Fergus[22]風格的網路和最近的Inception[16]型別網路。這些網路的細節在第3.3節中描述。 考慮到模型的細節,並將其視為一個黑盒(見圖2),我們的方法最重要的部分在於整個系統的端到端學習。為此,我們採用三重損失直接反映了我們在人臉驗證、識別和叢集中所要達到的目標。即,我們爭取一個嵌入f(x),從一個影象x到特徵空間R d,這樣的平方距離所有面孔,獨立的成像條件下,相同的身份很小,而平方距離的不同身份的大臉影象。
圖2.模型結構。我們的網路由一個批輸入層和一個深CNN組成,然後是L 2的標準化,這導致了人臉的嵌入。接下來是訓練期間的三重損失。
圖3。三重損失最小化了錨和相同身份的正值之間的距離,並最大化錨點與不同身份的負值之間的距離。
雖然我們並沒有直接與其他損失進行比較,例如,在[14]Eq .(2)中使用成對的陽性和陰性,但我們認為三重損失更適合於面部驗證。損失的動機是[14]鼓勵所有的面孔一個身份是˘aÿ預計˘´Z到嵌入空間中的一個點。然而,三重損失試圖在每一對人臉之間執行一個邊界,從一個人臉到所有其他的臉。這樣一來,人臉就可以在流形上生存,同時還能保持距離,從而辨別出其他身份。 下面的部分描述了這個三重損失,以及如何在縮放後有效地學習它。
3.1 三重損失
嵌入是由f(x)∈R d。它將一個影象x嵌入d維歐幾里得空間。此外,我們將此嵌入限制在d維超球體上,即kf(x)k 2 = 1。這種損失是在近鄰分類的背景下產生的。在這裡,我們想要確保一個特定的人的影象x a i(錨)更接近所有其他影象x p i(正),而不是任何其他任何人的影象x i(陰性)。如圖3所示。
3.3 深度卷積網路
在我們所有的實驗中,我們基於標準的backprop(後撐)[8,11]和AdaGrad(自適應梯度演算法)[5]用隨機梯度下降(SGD)來訓練CNN。在大多數實驗中,我們開始以0.05的學習速度,降低到最終的模型。類似於[16],模型是隨機初始化的,並在CPU叢集上進行1000到2000小時的訓練。在訓練500小時後,損失的減少(和準確性的增加)明顯放緩,但是額外的訓練仍然可以顯著提高效能。邊緣值α被設定為0.2。 我們使用了兩種型別的體系結構,並在實驗部分中詳細討論了它們的優缺點。它們的實際區別在於引數和每秒浮點運算次數的不同。最好的模型可能取決於不同的應用。例如,一個在資料中心中執行的模型可以有很多引數,並且需要大量的每秒浮點運算次數,而一個在行動電話上執行的模型需要很少的引數,這樣它才能適合記憶體。我們所有的模型都使用整流線性單位作為非線性啟用函式。 第一類,如表1所示,新增1×1×d卷積層,如[9]提出,Zeiler&Fergus[22]架構標準的卷積層和結果模型中22層深之間。它總共有1.4億個引數,每個影象需要大約16億每秒浮點運算次數。 第二個類,我們使用的是基於GoogLeNet的初始模型[16]。這些模型有20×較少的引數(約為6.6M- 7.5M)和相當於5×較少FLOPS(500M~ 1.6B)。其中一些模型的大小(包括深度和過濾器的數量)大大減少了,因此它們可以在行動電話上執行。一個是NNS1,有26M個引數,每個影象只需要220M的FLOPS。另一個NNS2有4.3M個引數和20M的FLOPS。表2詳細描述了NN2我們最大的網路。NN3在體系結構上是相同的,但其輸入尺寸減少到160x160。NN4的輸入大小僅為96x96,因此大大降低了CPU的需求(285M FLOPS VS NN2的1.6B)。除了減少的輸入尺寸之外,在較高的層次上,它不使用5x5的卷積,因為那時的接受域已經太小了。一般情況下,我們發現5x5的卷積可以在整個過程中被移除,但精度只有很小的下降。圖4比較了我們所有的模型。
表1.NN1。這個表展示了我們Zeiler&Fergus[22]基於1×1卷積模型的結構,靈感來自於[9]。輸入和輸出的尺寸大小被描述為row(行)×col(列)×#filters(過濾器)。核心被指定為row×col,步幅和最大輸出[6]池大小p = 2。
表2.NN2。NN2初始化典型的詳情。這個模型與[16]中描述的幾乎完全相同。兩個主要區別是在指定位置使用L 2池化代替了max池(m)化。池化總是3×3(除了最後的平均池化)和與每個初始模組內的卷積模組並行。如果有一個池化後的降維,它表示為p. 1×1,3×3,然後和5×5池化連線得到最終的輸出。
5.實驗
如果沒有提到其他,我們將使用介於100M-200M的訓練臉縮圖,其中包括大約800個不同的身份。每個影象上都有一個人臉檢測器,每個面部都有一個緊密的邊界框。這些臉的縮圖被調整到相應的網路的輸入尺寸。在我們的實驗中,輸入尺寸從96x96畫素到224x224畫素不等。
5.1 計算精度權衡
在深入研究更具體的實驗細節之前,letâ ˘ A ´ Zs討論了一個特定模型需要的精度與FLOPS數量之間的權衡。圖4顯示了在x軸上的失敗和0.001錯誤接受率(FAR)的準確性,我們的使用者在第4.2節中標記了測試資料。很有趣的是,計算模型所要求的計算和它所達到的精度之間有很強的相關性。這個數字突出了我們在實驗中更詳細地討論的五個模型(NN1,NN2,NN3,NNS1,NNS2)。 圖4。FLOPS與準確性權衡。顯示了在不同模型大小和架構之間的FLOPS和準確性之間的權衡。重點是我們在實驗中關注的四個模型。 表3。網路架構。這個表比較了我們的模型架構在執行測試集上的效能(參見4.1)。報告的平均驗證率VAL在10 E - 3錯誤接受率。同樣顯示的是在五個測試分割中平均值的標準誤差。
我們還研究了模型引數數量的準確性權衡。然而,在這種情況下,這張照片並不清楚。例如,基於初始的模型NN2可以獲得與NN1相當的效能,但是隻有20個引數。不過,每秒的浮點運算次數是具有可比性的。很明顯,如果引數數量進一步減少,預計效能將會下降。其他模型架構可能允許進一步的減少而不損失精度,就像在本例中所做的那樣。 圖5。網路架構。這個圖顯示了從4.2節開始的個人照片測試的四個不同模型的完整ROC。10 E - 4的急劇下降可以用地面真相標籤上的噪音來解釋。模型的效能:NN2:224×224輸入基於初始模型;NN1:基於Zeiler&Fergus網路1×1的卷積;NNS1:小型初始樣式模型,只有220M的每秒浮點運算次數;NNS2:微型初始模型,只有20M的FLOPS。
5.2 CNN模型的作用
現在,我們將更詳細地討論我們的四個選擇模型的效能。一方面我們有我們的傳統Zeiler&Fergus基礎架構與1×1(22日9)的卷積(見表1)。另一方面,我們建立了基於[16]的模型,極大地減少了模型的大小。總的來說,在最終的效能中,兩種架構的頂級模型都可以進行比較。然而,我們的一些基於初始的模型,如NN3,仍然具有良好的效能,同時顯著地減少了每秒浮點運算次數和模型的大小。 我們的個人照片測試集的詳細評估如圖5所示。雖然最大的模型在準確性上比微型NNS2有了顯著的提高,但後者可以在行動電話上執行30ms /影象,而且可以在人臉聚類中被仍然足夠準確的使用。對於FAR < 10e-4,ROC的急劇下降在測試資料的基礎上顯示出了嘈雜的標籤。在極低的誤判率下,一個錯誤標記的影象可以對曲線產生顯著的影響。
5.3 對影象質量的敏感性
表4顯示了我們的模型在不同的影象大小範圍內的魯棒性。該網路在JPEG(聯合照相專家群)壓縮方面非常健壯,並且非常好地達到了JPEG 20的質量。當人臉縮圖的尺寸是120x120畫素,即使是80x80畫素,其效能下降非常小,也能顯示出可接受的效能。這是值得注意的,因為該網路接受了220x220輸入影象的訓練。降低解析度的訓練可以進一步提高這一範圍。 表4。影象質量。左邊的表顯示了在10 E - 3精度上的對驗證率的影響,並有不同的JPEG質量。右邊的圖顯示畫素影象大小如何影響驗證率為10 E - 3精度。這個實驗是在NN1的第一次測試全資料集的分離中完成的。
表5所示。嵌入維數。這張表比較了我們的模型NN1的嵌入維度對我們在4.1節中提出的集合的影響。除VAL在10 E - 3之外,我們還顯示了在5個分割中計算的均值的標準誤差。
5.4 嵌入維數
我們探索了不同的嵌入維度,並選擇了128用於所有的實驗,而不是在表5中所報告的比較。一個人會期望更大的嵌入至少和較小的嵌入一樣好,然而,他們可能需要更多的訓練以達到同樣的準確性。也就是說,表5中所報告的效能差異在統計上是無關緊要的。 應該指出的是,在訓練一個128維的浮點向量時,但它可以被量化到128位元組而不損失精度。因此,每個人臉都由一個128維位元組向量來表示,這對於大規模的聚類和識別是非常理想的。更小的嵌入可能會在很小的精度損失,並且可以在移動裝置上使用。
5.5 大量的訓練資料
表6顯示了大量培訓資料的影響。由於時間限制,這個評估在一個較小的模型上執行;在更大的型號上,效果可能更大。很明顯,使用數千萬個範例會明顯提高我們的個人照片測試的準確性,從第4.2節開始。與幾百萬張影象相比,誤差的相對減少率為60%。使用另一個數量級的影象(數以億計的影象)仍然會有一個小的提升,但是改進逐漸減少。 表6所示。訓練資料的大小。這張表比較了700h訓練後的效能,它的模型有96x96畫素的輸入。模型架構類似於NN2,但是沒有初始模組中的5x5卷積。 圖6。LFW錯誤。這顯示了在LFW上錯誤分類的所有影象對。
5.6 在LFW上的表現
我們在LFW上使用不受限制的標準協議來評估我們的模型,標記外部資料。用9個訓練分裂來選擇L 2距離的閾值。分類(相同或不同)然後在第十次測試拆分中執行。除了第8(1.256)外所有測試拆分,所選最優閾值為1.242。 我們的模型以兩種模式進行評估: 1.LFW提供的縮圖的固定中心裁切; 2.一個專有的面部檢測器(類似於Picasa[3])在提供的LFW縮圖上執行。如果它不能對齊人臉(這發生在兩個影象上),則使用LFW對齊。 圖6給出了所有失敗案例的概述。它在頂部表示錯誤接受,在底部表示錯誤的拒絕。當使用(1)中所描述的固定中心裁切時,我們達到了98.87% (+-0.15)的分類精度,並且在使用額外的人面對齊時打破了99.63% (+-0.09)的標準誤差。這減少了在[17]中對DeepFace所報告的錯誤,超過了7倍的因素,而先前最先進的報告為DeepId2 + 在[15]中增加了30%。這是NN1模型的效能,但即使是更小的NN3也達到了沒有統計上顯著差異的效能。
5.7 在Youtube Face DB上的表現
我們在每個視訊中使用我們的面部探測器所檢測到的前100幀的所有對的平均相似度。這給我們的分類準確率為95.12%(+- 0.39)。使用前1000幀的結果是95.18%。與[17]91.4%相比,其也評價了每個視訊的100幀,我們將錯誤率降低了近一半。DeepId2 +[15]達到了93.2%,我們的方法降低了30%的誤差,與我們對LFW的改進相當。
5.8 人臉聚類
我們緊湊的嵌入使用人臉聚類,以便將使用者的個人照片聚整合具有相同身份的人群。與單純的驗證任務相比,分配約束來加強人臉聚類,取得了真正驚人的結果。圖7顯示了使用者個人照片集合中的一個叢集,使用合併聚類來生成聚集。這清晰的展示了遮擋,光照,姿勢,甚至年齡等不可思議的不變性。 圖7 人臉聚類。顯示的是一個使用者的範例叢集。使用者個人照片收集的所有圖片都聚集在一起。
6.總結
我們提供了一種直接學習嵌入到歐幾里得空間的方法來進行人臉驗證。這使它有別於使用CNN瓶頸層的其他方法[15,17],或者需要額外的後處理,例如多個模型和PCA的連線,以及SVM分類。我們的端到端訓練既簡化了設定,又表明直接優化與手頭任務相關的損失提高了效能。 我們模型的另一個優點是,它只需要最小的對準(在臉部區域的密集作物)。[17]例如,執行復雜的3D對齊。我們還嘗試了相似轉換比對,並注意到這實際上可以稍微提高效能。不清楚它是否值得額外的複雜性。 未來的工作將集中於更好地理解錯誤案例,進一步改進模型,並減少模型大小和減少CPU需求。我們還將研究如何改進目前極長的訓練時間,例如,伴隨著較小批量大小的改變,我們課程學習的變化,以及離線/線上積極和消極的挖掘。