FaceNet: A Unified Embedding for Face Recognition and Clustering 筆記

此文由google 於2015年發表
論文鏈接:http://xueshu.baidu.com/s?wd=paperuri%3A%28b5457de3c4f74fbbb7d4703e93dc5974%29&filter=sc_long_sign&tn=SE_xueshusource_2kduw22v&sc_vurl=http%3A%2F%2Farxiv.org%2Fabs%2F1503.03832&ie=utf-8&sc_us=12680360272531669381

1.研究問題

人臉識別、人臉驗證、人臉聚類

2.此文工作

傳統的方法:首先利用softmax 損失函數訓練網絡,然後從網絡中抽取某些層或輸出層作爲特徵,然後基於此特徵訓練分類器,對人臉進行識別、驗證。
FaceNet 則認爲最後的分類器其實也可以用網絡模擬,替代softmax。
FaceNet 採用三元損失函數訓練網絡,直接進行端到端學習一個圖像到歐式空間的編碼方式,然後基於這個編碼再做人臉識別、人臉驗證和人臉聚類。

2.1 模型結構

這裏寫圖片描述
去掉了最後的softmax ,經過L2歸一化,得到特徵表示,再基於這個特徵計算三元組損失。

2.2 Triplet Loss

這裏寫圖片描述
這裏寫圖片描述

2.3 Triplet Selection

很少的數據就能產生很多的三元組,選取合適的三元組可以加快收斂速度。
最粗暴的方式是對每個樣本,找到離它最近的反例和最遠的正例,然後優化,但是這樣會有兩個問題:耗時,比訓練時間還長;容易受不好的數據主導。
採用的方法:
生成mini-batch, 每個mini-batch 中每個人平均有40張圖片,然後隨機加入一些反例
生成triplet, 不是找到所有的艱難正樣本,而是找到所有的anchor-positive 對,然後根據這些特徵對,找到semi-hard-negative
這裏寫圖片描述

2.4 網絡結構

此文中比較了好幾個網絡,有些網絡很深,參數較多(1.4億),也有網絡較淺,參數較少(4.3百萬,此網絡可用於手機)。此文重點不在網絡,可視爲黑箱子。

2.5 人臉識別、人臉驗證、人臉聚類

當完成端到端學習到圖像到歐式空間的編碼,則可以輕鬆完成以下三個任務:
 人臉識別:成爲一個k-NN 問題
 人臉驗證:對兩個編碼求歐氏距離,與閾值對比
 人臉聚類:利用像k-means 之類的聚類算法

2.6 實驗與討論

訓練數據:100-200M張圖像,分佈在8M個人上。恐怖!
這裏寫圖片描述
這裏寫圖片描述這裏寫圖片描述
結果:在LFW 上人臉不對齊,效果在98.87%左右,如果使用額外的人臉對齊,效果在99.63%,優於DeepID

3.總結

拋棄了softmax, 創造性的採用triplet-loss, 得到特徵的歐式編碼,使得人臉識別、驗證、聚類大大簡化。但是其超大量的訓練數據他人難以效仿。

發佈了34 篇原創文章 · 獲贊 29 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章