論文:Deep Face Recognition 概括

        本篇論文事實上可以看作人臉識別的深度卷積神經網絡訓練和測試指南。論文中對網絡結構的篇幅並不長,但是論文中關於數據收集、訓練方式和測試方式的結論值得借鑑。

        本篇文章的目的有兩個:一是“以少勝多”,對於一般研究機構而言,獲取龐大的數據集是不太現實的,但是深度卷積神經網絡的訓練效果和訓練數據的規模有關係,本論文提供了一種能用有限的人力資源獲取規模較大的人臉數據的方法;二是“去粗取精”,本篇論文嘗試了各種人臉識別的CNN結構,探究結構中哪些部分對人臉識別的效果有貢獻,哪些部分起不到積極作用。

 

一、數據收集:

Stage1. 獲取數據集的名單:從IMDB名人名單裏選取2500個男性和2500個女性,去掉正臉太少的名人,去跟標準基準數據集重合的數據,人工篩選同名的或者圖像不足的,再刪掉出現在LFW和YTF 中的。這樣我們得到2622人的名單。

Stage2. 獲取圖片:在Google或者Bing搜人名,每個搜索引擎每人各下載500張圖,再搜人名+演員,每搜索引擎每人各下載500張圖,得到每人2000張圖。

Stage3. 用自動過濾器提升純度:用前50張Google搜素得到的圖片作爲正訓練樣本,以線性SVM和Fisher向量描述器評估其他人臉與這50張人臉的相似度,每個人留下1000張圖。

Stage4. 移除複製的圖片:計算每張圖的VLAD描述,用非常苛刻的閾值對1000張圖片聚類,能聚到一類說明可能是同一張圖或者是同一張圖做了一點顏色調整變換的,聚類結果中每一類只取一張圖。

Stage5. 人工過濾:用訓練過的AlexNet中的softmax層判斷一組人臉中是否有錯誤的人臉,每組200張圖送入網絡,如果純度達到95%以上則認爲這200張圖片是比較純淨的。最後留下982803張圖,其中有95%的正臉和5%的側臉。


二、網絡結構和訓練


本文用了A,B,D三種網絡結構,A的網絡結構如上圖,B的網絡結構比A多2個卷積層,D的網絡結構比A多5個卷積層。網絡輸入224*224的圖片,A是從頭開始訓練的,B和D是在A的基礎上finetune的。

一種訓練模式爲:將每張圖片送入網絡提取特徵,再用輸出爲N(N=2622)的全連接層(在A中就是fc8)把每個特徵對應的分數算出來組成向量,和各個類的獨熱向量比較,計算softmax對數損失。

分數向量:

Softmax對數損失:

另一種訓練模式爲:令triplet損失最小化。提完特徵後,將它標準化並投影到維數更低的空間,再計算triplet損失。也就是說,替換fc8和之後的部分。

標準化和投影:

計算triplet損失:

測試時,用是否大於閾值來判斷是不是同一個人,這個閾值是用與訓練集不同的驗證集計算出來的。

 

三、測試與實驗

1. LFW:分別剪下256*256,384*384,512*512的人臉,翻轉,從原人臉和翻轉人臉的四角和中心各取一張,共30張,取平均爲該圖片的特徵。用EER和ROC評估。


從中可以看出該方法的優越性。

還可以看出:

①數據:C爲一中stage5的結果,F爲一種stage3的結果,即使有噪聲,更多的訓練樣本也對訓練網絡更有幫助,而stage5事實上把一些比較難的訓練樣本過濾掉了;

② Alignment:訓練集做不做Alignment差別不大,但是測試集做一下會有提升;

③結構:B的效果最好,而D的網絡層數太多了,需要訓練的參數也多了很多;

④ Triplet:可以提升效果。

2. YTF:YTF每一個人都有好幾個視頻片段,每一個片段下有很多幀的圖片,對它們做alignment,然後根據顱面特徵點的分數,選取最好的K幀,對正臉做Alignment,不對側臉做,平均K個人臉的特徵作爲這一截視頻的特徵。

四、我的疑問和思考:

1. 尚不明瞭triplet的具體實現方式。

2. 從512*512,384*384那麼大的區域裁224*224的人臉?沒有嘗試過,不敢相信效果會更好。

3. 不明白論文第7頁training部分的一句話:The data was further augmented byflipping the image left to right with 50% probability

相關鏈接:

http://www.robots.ox.ac.uk/~vgg/software/vgg_face/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章