DeepFace Facebook的人臉識別

2021-07-03 16:32:45 字數 1613 閱讀 2569

**:

連續看了deepid和facenet後,看了更早期的一篇**,即fb的deepface。這篇**早於deepid和facenet,但其所使用的方法在後面的**中都有體現,可謂是早期的奠基之作。因而特寫博文以記之。

人臉識別的基本流程是:

detect -> align -> represent -> classify
分為如下幾步:

a. 人臉檢測,使用6個基點 

b. 二維剪下,將人臉部分裁剪出來 

c. 67個基點,然後delaunay三角化,在輪廓處新增三角形來避免不連續 

d. 將三角化後的人臉轉換成3d形狀 

e. 三角化後的人臉變為有深度的3d三角網 

f. 將三角網做偏轉,使人臉的正面朝前。 

g. 最後放正的人臉 

h. 乙個新角度的人臉(在**中沒有用到)

總體上說,這一步的作用就是使用3d模型來將人臉對齊,從而使cnn發揮最大的效果。

經過3d對齊以後,形成的影象都是152×152的影象,輸入到上述網路結構中,該結構的引數如下:

前三層的目的在於提取低層次的特徵,比如簡單的邊和紋理。其中max-pooling層使得卷積的輸出對微小的偏移情況更加魯棒。但沒有用太多的max-pooling層,因為太多的max-pooling層會使得網路損失影象資訊。

後面三層都是使用引數不共享的卷積核,之所以使用引數不共享,有如下原因:

全連線層將上一層的每個單元和本層的所有單元相連,用來捕捉人臉影象不同位置的特徵之間的相關性。其中,第7層(4096-d)被用來表示人臉。

全連線層的輸出可以用於softmax的輸入,softmax層用於分類。

對於輸出的4096-d向量:

得到表示後,使用了多種方法進行分類:

加權卡方距離計算公式如下:

其中,加權引數由線性svm計算得到。

siamese網路結構是成對進行訓練,得到的特徵表示再使用如下公式進行計算距離:

其中,引數alpha是訓練得到。siamese網路與facenet就很像了。

youtube face(ytf): 3425videos/1595人

deepface與之後的方法的最大的不同點在於,deepface在訓練神經網路前,使用了對齊方法。**認為神經網路能夠work的原因在於一旦人臉經過對齊後,人臉區域的特徵就固定在某些畫素上了,此時,可以用卷積神經網路來學習特徵。

針對同樣的問題,deepid和facenet並沒有對齊,deepid的解決方案是將乙個人臉切成很多部分,每個部分都訓練乙個模型,然後模型聚合。facenet則是沒有考慮這一點,直接以資料量大和特殊的目標函式取勝。

在deepface**中,只使用cnn提取到的特徵,這點倒是開後面之先河,後面的deepid、facenet全都是使用cnn提取特徵了,再也不談lbp了。

[1]. taigman y, yang m, ranzato m a, et al. deepface: closing the gap to human-level performance in face verification[c]//computer vision and pattern recognition (cvpr), 2014 ieee conference on. ieee, 2014: 1701-1708.

DeepFace Facebook的人臉識別

連續看了deepid和facenet後,看了更早期的一篇 即fb的deepface。這篇 早於deepid和facenet,但其所使用的方法在後面的 中都有體現,可謂是早期的奠基之作。因而特寫博文以記之。人臉識別的基本流程是 detect aligh represent classify分為如下幾步...

人臉識別 再識(二)

主成分分析方法是基於k l變換的基礎上實現的。k l變換首先利用樣本的資料構建協方差矩陣,計算出協方差矩陣的特徵值和對應的特徵向量,通過特徵向量來找出促使樣本離散程度達到最大的特徵向量投影方法。pca方法的核心思想是首先將經過預處理後的人臉特徵表達向量進行k l變換,以消除原有向量各個分量之間的相關...

matlab 簡單的人臉識別

如下 clc clear all close all 載入影象 endbw im2bw i,graythresh i 二值化 figure subplot 2,3,1 imshow img title 原影象 fontweight bold subplot 2,3,2 imshow i title ...