FaceNet---深度學習與人臉識別的二次結合

今天我給你們帶來一篇來自谷歌的文章,衆所周知,谷歌是全世界最有情懷,最講究技術的公司,比咱們天朝的莆田廣告商良心多了。還有就是前段時間的最強大腦,莆田廣告商的那個小機器,也就忽悠忽悠行外人了,懂的人深深知道。感受本身就是黑子,固然,最強大腦節目組自己就是演員。算法

傳統的進行人臉識別的模型通常都是這樣:網絡

    

 

 

可是如今咱們要換個思路了,facenet直接學習圖像到歐式空間上的映射,那麼若是兩張圖片在歐式空間的距離很近,是否是說明就是很類似?若是離得遠就不類似,也就不是同一我的?函數

下面的圖詳細的說明了,具體過程。學習

你看若是是一我的的照片,他們的距離就會低於這個閥值,此處應該是1.05左右。這個有點相似於LDA的思想了。類內的距離就小,類間的距離就大,其實本質上並無什麼差異。優化

Facenet的結構以下圖:spa

前面就是一個傳統的卷積神經網絡,而後在求L2範數以前進行歸一化,就創建了這個嵌入空間,最後的損失函數,就是本文的最大亮點。blog

Triplet loss三重損失函數:之前咱們的損失函數通常都是一個的,或者是兩個的。這裏弄三個,結構圖以下:圖片

我來帶你們理解這個結構圖。如今咱們有一個樣本名字叫anchor,還有兩個樣本名字叫positive,另一個叫Negative。一開始啊,咱們都覺得這個三我的是親兄弟,可是呢Negative一個是隔壁老王的,並且這我的和咱們的Anchor關係很好,這不行,這是仇人的孩子,咱們得讓這兩我的遠離,因而咱們就讓神經網絡學習,讓positive和anchor近一點,讓Negative滾蛋。(固然例子可能取的不恰當,還請見諒,哈哈)ip

課外補充:在高維或者無窮維中,距離的度量沒有意義的,由於他們都在一個超球面上,你又如何度量他們的遠近呢(這就是爲何不能直接用KNN分類的緣由,他在處理高維數據就玩不轉了),因此咱們纔要用深度卷積神經網絡進行訓練啊,至於其中的原理,神經網絡就是一個黑匣子,我不懂啊,鬼知道他是怎麼玩的。it

記住下面的全部數據都是通過歸一化的,沒有通過歸一化求距離就是胡扯!

分別表明三個不一樣的樣本,咱們必定想要:

這個是咱們前面所說的參數。

那麼咱們的優化函數就出來了:

優化問題解決:

可是呢,知道這些還不夠,爲何呢,一個算法的優劣,還要經過他的時間複雜度來判斷,這裏必定要確保他的收斂速度。

那麼咱們怎作呢,其實也很簡單,假設給你一個anchor,咱們找一個positive就要在這一類中找到一個最難分類的,什麼樣叫最難分類呢,就是在歐式空間距離最遠的那個,可是屬於一類,這叫hard_positive,另外找nepositive那就找最近的,這樣不就完美解決了麼。固然在找nepositive很容易產生局部最優,因此咱們要知足:。這叫semi-hard,防止找到他一類裏了。

本文的CNN結構:

一種是來自M. D. Zeiler and R. Fergus. Visualizing and understanding convolutional networks. CoRR, abs/1311.2901, 2013. 2, 4, 6。

結構:

另外一種來自:C. Szegedy, W. Liu, Y. Jia, P. Sermanet, S. Reed,D. Anguelov, D. Erhan, V. Vanhoucke,and A. Rabinovich.Going deeper with convolutions. CoRR, abs/1409.4842,2014. 2, 4, 5, 6, 9

結構:

結果在LFW上正確率很高,在這裏我就不說了。

 

論文:FaceNet: A Unified Embedding for Face Recognition and Clustering

相關文章
相關標籤/搜索