深度學習與人臉識別
IDL內部分享的人臉識別技術。
深度學習是機器學習研究中的一個新的領域,其動機在於建立、模擬人腦進行分析學習的神經網路,它模仿人腦的機制來解釋資料。
卷積神經網路(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模式進行訓練,得到三張圖之間的關係,而不是關注於距離值。