當前位置:
首頁 > 最新 > 白話機器學習之人臉識別原理簡介篇

白話機器學習之人臉識別原理簡介篇

判斷兩張人臉圖片的相似度,學術上叫做人臉對比,實際上是一對一的關係。而人臉識別一般就是一對多的關係,即在多張圖片中找到哪兩個圖片中的是相同的人。

總的來說,人臉識別主要分為三個部分:人臉檢測,人臉校正和人臉識別。

常用的方法現在已經比較成熟了,主要分為基於統計的和基於深度學習的兩種方法。

基於深度學習的:

基於深度學習的主要就是卷積神經網路了,卷積神經網路的基本原理就是用卷積核作為一個滑動「窗口」在圖像矩陣上去滑動,將與卷積核相類似的特徵放大,然後再進行池化,池化的作用主要就是降低卷積層輸出特徵向量的規模,防止過擬合,然後再經過若干個卷積和池化層,最終利用SoftMax等整理後輸出結果。

大規模神經網路可以實現檢測,校正和識別三個部分,可以最終直接輸出人臉的特徵,好處就是識別率很高很高,缺點就是在CPU條件下運算速度會較慢。


(1)人臉檢測:haar,HOG特徵,一般結合adaboost演算法以取得較好的運算效果

(2)人臉校正:由於人臉識別主要有用的是人臉的輪廓,其膚色,光照等等相比之下並不重要,而人臉校正主要是將不同姿態的人臉進行所謂的「擺正」,也稱之為人臉對齊,這樣使得輸出的人臉特徵具有可比性,這個基本原理是計算機圖形學中仿射變換。這部分現在一般用卷積神經網路處理得就比較好了。

(3)人臉識別:Haar,Hog,LBP演算法本身就是用來提取特徵的,一般對於人臉用LBP特徵比較合適,將特徵提取出來後可能還需要降維,一般結合PCA主成分分析的方法。也有用LDA演算法來處理的。

基於統計的方法好處是在CPU下運算較快,缺點是識別率相對較低,因為特徵都是人工首先指定好的,並不像深度學習那樣「自主」。

當特徵都提取出來之後,就可以計算特徵之間的差距了,這是最簡單的,距離計算的方法有:

餘弦距離,歐氏距離,馬氏距離,皮爾遜相關係數,對於某些特定的場景還可能是漢明距離~~~

所以,對於google開源的一款人臉識別引擎,就事採用了統計和深度學習結合的方法,使用基於統計的方法來定位人臉,使用深度學習來提取人臉特徵,這樣兼顧了速度和準確率。

值得一提的是,在人臉識別過程之前,有些方法往往還有一些預處理,一般是高斯低通濾波器,主要是用於濾出高斯雜訊,還有一些使圖像更為平滑的預處理。

開源庫:

開源的人臉識別庫也不少,國內比較著名的有中科院山世光教授組的SeetaFace引擎,但是該代碼在部署的時候會有些小坑,一般認為是人臉識別開源出來的一股清流。

除此之外,比較著名的還有FaceBook的DeepFace、Google的FaceNet、湯曉鷗教授的DeepID,以及github上的一系列開源產品(包括演算法)。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器學習 的精彩文章:

人工智慧及機器學習與深度學習揭秘
Kaggle 推出四門免費線上課程:機器學習、R語言、數據可視化、深度學習

TAG:機器學習 |