1. 程式人生 > >人臉識別演算法調研

人臉識別演算法調研

1.神經網路:

來源:人的大腦

發展至今,一共有三波浪潮:

1957年~1969年 Perceptrons:無法解決異或問題

1985年~1990年 Neural Networks(BP):被svm幹掉

2006年~今天 Deep Neural Networks(DBN) 

DNN:Geoffrey Hinton 

CNN:Yann LeCun 

RNN:Yoshua Bengio 

優點:

(1)使用的和人腦相同的構造 
(2)非常容易擴充套件模型容量和資料規模 
(3)無需人工提取特徵,端到端
(4)規律的擬合到資料的擬合 

問題:

太多的trick,都是依靠直覺提出來的,需要有solid學習機制和理論支援 

2.機器學習的常用概念:

準確率:它表示的是預測為正的樣本中有多少是對的

召回率:針對我們原來的樣本而言的,它表示的是樣本中的正例有多少被預測正確了

過擬合:訓練集錯誤率很低,但測試集錯誤率很高。

迴歸:連續型數值,諸如識別人臉關鍵點、房價預測等

分類問題:諸如判斷性別

3.傳統機器學習演算法

(1)分類問題:

logistic(sigmoid):二分類問題

z = w0x0+w1x1+w2x2+w3x3+...+wnxn

svm支援向量機: 

adaboost元演算法:

對其他多個分類器進行組合的一種方式,每個分類器具有一定的權重

(2)迴歸問題:

線性迴歸:

(3)聚類問題:

k-means:

4.CNN(卷積神經網路)

LeNet-5網路結構,如下:

區域性感知:

引數共享、多卷積核:

池化操作:取最大,取均值等

卷積過程:

5.國內外主流人臉識別演算法對比:

FaceNet:Google

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

網路架構:

特點:

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

DeepFace:Facebook

網路架構:

特點:

先是使用3D模型來將人臉對齊,從而使CNN發揮最大的效果

沒有用太多的Max-pooling層,因為太多的Max-pooling層會使得網路損失影象資訊。

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

  • 對齊的人臉圖片中,不同的區域會有不同的統計特徵,卷積的區域性穩定性假設並不存在,所以使用相同的卷積核會導致資訊的丟失
  • 不共享的卷積核並不增加抽取特徵時的計算量,而會增加訓練時的計算量
  • 使用不共享的卷積核,需要訓練的引數量大大增加,因而需要很大的資料量,然而這個條件本文剛好滿足。

DeepId:共有三代,第一代DeepID,第二代DeepID2,第三代DeepID2+

人臉預處理:

網路架構:

特點:

該結構與普通的卷積神經網路的結構相似,但是在隱含層,也就是倒數第二層,與Convolutional layer 4和Max-pooling layer3相連,鑑於卷積神經網路層數越高視野域越大的特性,這樣的連線方式可以既考慮區域性的特徵,又考慮全域性的特徵。

DeepID2相對於DeepID有了較大的提高。其主要原因在於在DeepID的基礎上添加了驗證訊號。

DeepID2+相比於DeepID2,將DeepID層從160維提高到512維,同時將DeepID層不僅和第四層和第三層的max-pooling層連線,還連線了第一層和第二層的max-pooling層。

6.人臉識別技術分類:

(1)檢測:

傳統人臉檢測:

特徵提取:LBP/HOG/Harr

訓練:Adaboost/SVM

識別:滑動視窗

深度學習在人臉檢測上的應用:

(2)屬性分析:

傳統框架:

深度學習的應用:基於CDNN的人臉屬性識別框架

(3)驗證和識別:

基本框架:


7.傳統機器學習演算法與深度學習在影象識別上的不同

最大不同:深度學習輸入影象原資料即可,而傳統機器學習演算法,需要對影象做很多的操作,諸如:灰度化、歸一化等等,最後才把處理好的特徵送到機器學習演算法中去訓練。

深度學習:

(1)Advantages:準確度高,效果好

(2)Disadvantages:需要龐大的計算資源,這也是為什麼近幾年才開始又火起來的原因

8.CPU vs GPU

CPU:更適合邏輯複雜的運算,序列的運算

GPU:快取和控制單元很小,計算單元多,適合邏輯不復雜的大規模並行運算

9.常用分類:

sigmoid:二分類問題

10. 深度學習PK人腦

11.what is the next?