天天看點

FaceNet--Google的人臉識别引入FaceNet網絡架構目标函數三元組的選擇網絡模型資料和評測總結參考文獻

引入

随着深度學習的出現,CV領域突破很多,甚至掀起了一股CV界的創業浪潮,當次風口浪尖之時,Google豈能缺席。特貢獻出FaceNet再次重新整理LFW上人臉驗證的效果記錄。

本文是閱讀FaceNet論文的筆記,所有配圖均來自于論文。

轉載請注明:http://blog.csdn.net/stdcoutzyx/article/details/46687471

FaceNet

與其他的深度學習方法在人臉上的應用不同,FaceNet并沒有用傳統的softmax的方式去進行分類學習,然後抽取其中某一層作為特征,而是直接進行端對端學習一個從圖像到歐式空間的編碼方法,然後基于這個編碼再做人臉識别、人臉驗證和人臉聚類等。

FaceNet算法有如下要點:

  • 去掉了最後的softmax,而是用元組計算距離的方式來進行模型的訓練。使用這種方式學到的圖像表示非常緊緻,使用128位足矣。
  • 元組的選擇非常重要,選的好可以很快的收斂。

先看具體細節。

網絡架構

大體架構與普通的卷積神經網絡十分相似:

FaceNet--Google的人臉識别引入FaceNet網絡架構目标函數三元組的選擇網絡模型資料和評測總結參考文獻

如圖所示:Deep Architecture就是卷積神經網絡去掉sofmax後的結構,經過L2的歸一化,然後得到特征表示,基于這個特征表示計算三元組損失。

目标函數

在看FaceNet的目标函數前,其實要想一想DeepID2和DeepID2+算法,他們都添加了驗證信号,但是是以權重的形式和softmax目标函數混合在一起。Google做的更多,直接替換了softmax。

FaceNet--Google的人臉識别引入FaceNet網絡架構目标函數三元組的選擇網絡模型資料和評測總結參考文獻

所謂的三元組就是三個樣例,如(anchor, pos, neg),其中,x和p是同一類,x和n是不同類。那麼學習的過程就是學到一種表示,對于盡可能多的三元組,使得anchor和pos的距離,小于anchor和neg的距離。即:

FaceNet--Google的人臉識别引入FaceNet網絡架構目标函數三元組的選擇網絡模型資料和評測總結參考文獻

是以,變換一下,得到目标函數:

FaceNet--Google的人臉識别引入FaceNet網絡架構目标函數三元組的選擇網絡模型資料和評測總結參考文獻

目标函數的含義就是對于不滿足條件的三元組,進行優化;對于滿足條件的三元組,就pass先不管。

三元組的選擇

很少的資料就可以産生很多的三元組,如果三元組選的不得法,那麼模型要很久很久才能收斂。因而,三元組的選擇特别重要。

當然最暴力的方法就是對于每個樣本,從所有樣本中找出離他最近的反例和離它最遠的正例,然後進行優化。這種方法有兩個弊端:

  • 耗時,基本上選三元組要比訓練還要耗時了,且等着吧。
  • 容易受不好的資料的主導,導緻得到的模型會很差。

是以,為了解決上述問題,論文中提出了兩種政策。

  • 每N步線下在資料的子集上生成一些triplet
  • 線上生成triplet,在每一個mini-batch中選擇hard pos/neg 樣例。

為了使mini-batch中生成的triplet合理,生成mini-batch的時候,保證每個mini-batch中每個人平均有40張圖檔。然後随機加一些反例進去。在生成triplet的時候,找出所有的anchor-pos對,然後對每個anchor-pos對找出其hard neg樣本。這裡,并不是嚴格的去找hard的anchor-pos對,找出所有的anchor-pos對訓練的收斂速度也很快。

除了上述政策外,還可能會選擇一些semi-hard的樣例,所謂的semi-hard即不考慮alpha因素,即:

FaceNet--Google的人臉識别引入FaceNet網絡架構目标函數三元組的選擇網絡模型資料和評測總結參考文獻

網絡模型

論文使用了兩種卷積模型:

  • 第一種是Zeiler&Fergus架構,22層,140M參數,1.6billion FLOPS(FLOPS是什麼?)。稱之為NN1。
  • 第二種是GoogleNet式的Inception模型。模型參數是第一個的20分之一,FLOPS是第一個的五分之一。
  • 基于Inception模型,減小模型大小,形成兩個小模型。
    • NNS1:26M參數,220M FLOPS。
    • NNS2:4.3M參數,20M FLOPS。
  • NN3與NN4和NN2結構一樣,但輸入變小了。
    • NN2原始輸入:224×224
    • NN3輸入:160×160
    • NN4輸入:96×96

其中,NNS模型可以在手機上運作。

其實網絡模型的細節不用管,将其當做黑盒子就可以了。

資料和評測

在人臉識别領域,我一直認為資料的重要性很大,甚至強于模型,google的資料量自然不能小觑。其訓練資料有100M-200M張圖像,分布在8M個人上。

當然,google訓練的模型在LFW和youtube Faces DB上也進行了評測。

下面說明了多種變量對最終效果的影響

網絡結構的不同

FaceNet--Google的人臉識别引入FaceNet網絡架構目标函數三元組的選擇網絡模型資料和評測總結參考文獻
FaceNet--Google的人臉識别引入FaceNet網絡架構目标函數三元組的選擇網絡模型資料和評測總結參考文獻

圖像品質的不同

FaceNet--Google的人臉識别引入FaceNet網絡架構目标函數三元組的選擇網絡模型資料和評測總結參考文獻

最終生成向量表示的大小的不同

FaceNet--Google的人臉識别引入FaceNet網絡架構目标函數三元組的選擇網絡模型資料和評測總結參考文獻

訓練資料大小的不同

FaceNet--Google的人臉識别引入FaceNet網絡架構目标函數三元組的選擇網絡模型資料和評測總結參考文獻

對齊與否

在LFW上,使用了兩種模式:

  • 直接取LFW圖檔的中間部分進行訓練,效果98.87左右。
  • 使用額外的人臉對齊工具,效果99.63左右,超過deepid。

總結

  • 三元組的目标函數并不是這篇論文首創,我在之前的一些Hash索引的論文中也見過相似的應用。可見,并不是所有的學習特征的模型都必須用softmax。用其他的效果也會好。
  • 三元組比softmax的優勢在于
    • softmax不直接,(三元組直接優化距離),因而性能也不好。
    • softmax産生的特征表示向量都很大,一般超過1000維。
  • FaceNet并沒有像DeepFace和DeepID那樣需要對齊。
  • FaceNet得到最終表示後不用像DeepID那樣需要再訓練模型進行分類,直接計算距離就好了,簡單而有效。
  • 論文并未探讨二進制對的有效性,直接使用的三元對。

參考文獻

[1]. Schroff F, Kalenichenko D, Philbin J. Facenet: A unified embedding for face recognition and clustering[J]. arXiv preprint arXiv:1503.03832, 2015.

更多内容歡迎關注公衆号【雨石記】

FaceNet--Google的人臉識别引入FaceNet網絡架構目标函數三元組的選擇網絡模型資料和評測總結參考文獻

繼續閱讀