谷歌人臉識別系統FaceNet解析
01-24
論文筆記:FaceNet- A Unified Embedding for Face Recognition and Clustering
5.5 訓練數據量對結果的影響隨著訓練數據量的增加,準確率也隨之增加,如表5-4所示。表5-4 訓練數據量與VAL5.6 評價結果FaceNet在LFW數據集上取得了99.63%0.09的準確率;在Youtube Faces DB數據集上獲得了95.12%0.39的結果。在個人照片的數據集上,對單個個體進行embeding後聚類測試,結果如圖5-3所示。圖5-3 對單個個體的不同照片進行聚類的結果6, 評論
簡介:
近年來,人臉識別技術取得了飛速的進展,但是人臉驗證和識別在自然條件中應用仍然存在困難。本文中,作者開發了一個新的人臉識別系統:FaceNet,可以直接將人臉圖像映射到歐幾里得空間,空間距離的長度代表了人臉圖像的相似性。只要該映射空間生成,人臉識別,驗證和聚類等任務就可以輕鬆完成。文章的方法是基於深度卷積神經網路。FaceNet在LFW數據集上,準確率為0.9963,在YouTube Faces DB數據集上,準確率為0.9512。
1,前言FaceNet是一個通用的系統,可以用於人臉驗證(是否是同一人?),識別(這個人是誰?)和聚類(尋找類似的人?)。FaceNet採用的方法是通過卷積神經網路學習將圖像映射到歐幾里得空間。空間距離直接和圖片相似度相關:同一個人的不同圖像在空間距離很小,不同人的圖像在空間中有較大的距離。只要該映射確定下來,相關的人臉識別任務就變得很簡單。當前存在的基於深度神經網路的人臉識別模型使用了分類層(classification layer):中間層為人臉圖像的向量映射,然後以分類層作為輸出層。這類方法的弊端是不直接和效率低。
與當前方法不同,FaceNet直接使用基於triplets的LMNN(最大邊界近鄰分類)的loss函數訓練神經網路,網路直接輸出為128維度的向量空間。我們選取的triplets(三聯子)包含兩個匹配臉部縮略圖和一個非匹配的臉部縮略圖,loss函數目標是通過距離邊界區分正負類,如圖1-1所示。圖1-1 模型結構臉部縮略圖為緊密裁剪的臉部區域,沒有使用2d,3d對齊以及放大轉換等預處理。本文中,作者探索了兩類深度卷積神經網路。第一類為Zeiler&Fergus研究中使用的神經網路,我們在網路後面加了多個1*1*d卷積層;第二類為Inception網路。模型結構的末端使用triplet loss來直接分類。triplet loss 的啟發是傳統loss函數趨向於將有一類特徵的人臉圖像映射到同一個空間。而triplet loss嘗試將一個個體的人臉圖像和其它人臉圖像分開。下文包含以下內容:- 三聯子(triplets)loss
- triplets篩選方法
- 模型結構描述
- 實驗結果
- 評論
模型的目的是將人臉圖像X embedding入d維度的歐幾里得空間。在該向量空間內,我們希望保證單個個體的圖像 和該個體的其它圖像 距離近,與其它個體的圖像 距離遠。如圖5-1所示:
圖2-1 triplet loss示意圖其中,為positive/negtive的邊界。3, triplets篩選triplets 的選擇對模型的收斂非常重要。如公式1所示,對於,我們我們需要選擇同一個體的不同圖片,使;同時,還需要選擇不同個體的圖片,使得。在實際訓練中,跨越所有訓練樣本來計算argmin和argmax是不現實的,還會由於錯誤標籤圖像導致訓練收斂困難。實際訓練中,有兩種方法來進行篩選:一,每隔n步,計運算元集的argmin和argmax。二,在線生成triplets,即在每個mini-batch中進行篩選positive/negative樣本。本文中,我們採用在線生成triplets的方法。我們選擇了大樣本的mini-batch(1800樣本/batch)來增加每個batch的樣本數量。每個mini-batch中,我們對單個個體選擇40張人臉圖片作為正樣本,隨機篩選其它人臉圖片作為負樣本。負樣本選擇不當也可能導致訓練過早進入局部最小。為了避免,我們採用如下公式來幫助篩選負樣本:4, 深度卷積神經網路
採用adagrad優化器,使用隨機梯度下降法訓練CNN模型。在cpu集群上訓練了1000-2000小時。邊界值設定為0.2。總共實驗了兩類模型,參數如表4-1和表4-2所示。表4-1 CNN模型1表4-2CNN模型25, 實驗結果作者採用了約8million個個體的將近100million-200million張人臉縮略圖。人臉縮略圖通過臉部檢測器緊密裁剪生成。最後,在四類數據集上評價零FaceNet:- hold-out 測試集:從訓練集中分出100million圖像作為測試集。
- 個人照片:總共包括12k個人照片。
- 學術數據集:我們採用了LFW數據集和Youtube Faces DB。
圖5-2 網路結構對VAL的影響
5.3 圖像質量對結果的影響模型對圖像質量(像素值)不敏感,即使80*80像素的圖片生成的結果也可以接受,如表5-2所示。表5-2 圖像質量(像素值)對結果的影響5.4 Embedding維度對結果的影響作者測試了不同的embedding維度,結果如表5-3所示,發現128維度是最為合適的。表5-3 不同輸出維度對結果的影響FaceNet是google的工作,工作量非常大,結果也很好。FaceNet是一種直接將人臉圖像embedding進入歐幾里得空間的方法。該模型的優點是只需要對圖片進行很少量的處理(只需要裁剪臉部區域,而不需要額外預處理,比如3d對齊等),即可作為模型輸入。同時,該模型在數據集上準確率非常高。未來的工作可以有幾個方向:
一,分析錯誤的樣本,進一步提高識別精度,特別是增加模型在現實場景中的識別精度。二,以該模型為基礎,將其用於現實應用開發中。(預告:後續文章中,我將對使用FaceNet進行人臉識別的項目源碼進行解析,敬請關注)三,減少模型大小,減少對cpu計算量的消耗,以及減少訓練時間(作者在cpu集群上需要1000-2000小時的訓練。)
推薦閱讀:
TAG:深度学习DeepLearning | 人脸识别 |