原文發表在個人博客Technology-機器學習-人臉識別,轉載請注明出處。
深度學習是機器學習研究中的一個新的領域,其動機在于建立、模擬人腦進行分析學習的神經網絡,它模仿人腦的機制來解釋數據。
卷積神經網絡(CNN)
局部連接
傳統的神經網絡是全連接,即一層的神經元與上一層的所有神經元都建立連接,這樣導致參數非常多,計算量非常大,而CNN是局部連接,一層的神經元只與上一層的部分神經元建立連接,這樣可以減少參數和計算量。
權值共享
給一張輸入圖片,用一個filter去掃時,filter里面的數就叫權重。用該filter對整個圖片進行了某個特征的掃描,例如Edge detection,這個過程就是權值共享,因為權重不變。
人臉識別
多個CNN加其他層,遍歷而成的人臉識別處理結構:
層提取到的信息的演進:
人臉檢測
傳統算法
識別:滑動窗口+分類器
用一個固定大小的窗口去滑動掃描圖像,并通過分類器去分辨是否是人臉。有時候人臉在圖片中過小,所以還要通過放大圖片來掃描。
訓練:特征+Adaboost
傳統特征:LBP/HOG/Harr
圖片原始的RGB信息,維度太高,計算量過大,且不具備魯棒性,即光照和旋轉,對RGB信息影響非常大。
利用LBP得到二進制值,再轉換成十進制:

效果圖:
Adaboost
由于移動設備對計算速度有一定要求,所以用多個弱分類器加權疊加來完成一個強分類器,從而保證速度。
深度學習
特征的選取是比較復雜的,可能需要大量的統計學和生物學知識積累,而深度學習不需要選擇特征,這是其很大優勢,另外通過GPU代替CPU等方式,可以得到一個更好的效果。
關鍵點檢測、跟蹤
傳統算法
Cascade regression/ESR/SDM
傳統算法步驟:
- 根據人臉檢測的框位置,先初始化初始臉部輪廓位置;
- 進行上一步位置和圖形特征檢測下一步位置(一般是迭代殘差);
- 進行迭代,最終得到相對準確的輪廓位置。
深度學習
深度學習算法步驟:
- 對圖像進行輪廓定位態校正;
- 全局粗定位;
- 局部精細定位。
典型應用:
人臉語義分割
人臉語義分割:自定確定人臉每個pixel的所屬類別(哪個器官)。
基于CDNN訓練一個直接model輸入圖像到輸出概率map的模型,然后將圖像輸入,即可得出pixel-level的分類概率輸出。
典型應用:

屬性識別
人臉屬性識別:自動估計人臉的屬性,比如性別、年齡、表情、人種、是否佩戴眼鏡、美丑等。
傳統算法
步驟:
- 基于特征點定位結果進行幾何矯正;
- 手工特征提取(HOG\LBP\GABOR)
- 分類器/回歸(SVM\BOOSTRING)
深度學習
基于CDNN,直接在一個網絡中學習并識別出多個屬性。
典型應用:
活體檢測
活體檢測:確定識別的物體是活物,而非死物。
人臉識別
人臉識別:根據人臉的表觀特征自動識別人的身份。
深度學習
通過深度學習來進學習特征,讓同一個人在特征空間中距離非常近,而不同人則非常遠,且必須具備不受光照等影響的魯棒性。
基本步驟
- 人臉檢測;
- 關鍵點定位;
- 人臉表示。
人臉切割
將人臉切割成小塊,每塊去學習Model。
特征融合
將每一塊學習到的特征,進行特征融合。
訓練過程
- 訓練分類;
- 對于兩張照片的比較,用pairwise模式進行訓練,得到兩張圖的特征,并計算特征間的距離,小于閾值時,則判斷為同一個人;
- 對于三張照片的比較,用triplet模式進行訓練,得到三張圖之間的關系,而不是關注于距離值。
看了又看: