【人臉識別(四)】:人臉識別理論、原理、分類、概括,請針對性學習所需算法,不要全學。

人臉識別(一):Ubuntu Python安裝dlib C++ library

人臉識別(二):如何使用 dlib 實現簡單的人臉識別功能

人臉識別(三):使用face_recognition庫實現人臉識別,python實現

人臉識別(五):基於Adaboost的人臉檢測算法,及實例教程

 

前面幾篇博客直接介紹瞭如何使用dlib和face_recognition模塊在python基礎上實現人臉檢測以及定位和拓展功能。

最近幾天看了很多博客和綜述論文,發現CSDN裏的人臉識別博客都是千篇一律的,概括性的文章不具體,理論性的文章不詳細,因此建議讀者可以先了解大致有哪些人臉識別算法,再根據需求去專門研究自己需要的算法。

在專門研究特定算法的時候去找詳細到公式求解的文章或者論文,不然依舊是一知半解。

這篇博客將簡要介紹人臉識別的原理、分類,具體的詳細知識可以自行鍼對感興趣內容詳細研究,儘量不要全學、浪費時間

 

1.人臉識別技術原理

人臉識別無非三步或者四部,即三步:人臉檢測、特徵提取、人臉識別,四步:人臉檢測、檢測特徵點、計算特徵特徵向量、識別計算。可以把四步中的檢測特徵點和計算特徵向量理解爲三步中的特徵提取,不同之處是採取的算法不同。從人臉識別開始到目前,各種各樣的人臉識別算法層出不窮,近些年,CNN快速發展,基於CNN的人臉識別算法不停刷新人臉識別檢測精度。

 

從上述可以知道,人臉識別是通過檢測器和分類器實現的,因此,搭配好檢測器和分類器就可以實現人臉識別。(如PCA+SVM、HOG+CNN等)

檢測器實現檢測圖像中的人臉以及位置,分類器實現將標定後的人臉轉換成特徵值,最後計算歐氏距離辨別人臉(個別方法除外)。

人臉識別同時還附帶其他功能:人臉對齊、人臉匹配(類似識別)

 

2.人臉識別流程

類似於上面的步驟,人臉識別的流程爲:人臉檢測===》特徵提取===》人臉識別

其中,

人臉檢測是使用檢測器對圖像滑動窗口中的分類和定位,確定滑窗內是不是人臉,以及檢測框的具體位置。

特徵提取是即提取特徵向量,蘊含着幾何特徵或者表徵特徵。幾何特徵:如眼、鼻等幾何關係,特點是直觀,量小。表徵特徵:算法提取的局部或者全局特徵。

人臉識別:包括確認、辨識。

 

3.人臉識別(檢測)常用算法

人臉識別算法多種多樣,大致分爲:

  • 基於膚色模型的方法;
  • 基於模板匹配的方法;
  • 基於彈性模型的方法(典型:DLA);
  • 基於特徵臉法(典型:基於KL變換、Eigenface或PCA);
  • 基於神經網絡法(典型:RBFN,最新:CNN);
  • 支持向量機法(典型:HOG+SVM,廣泛應用於各種檢測);
  • 基於積分圖像特徵發(典型:addboost,廣泛應用的方法);
  • 基於概率模型法;
  • 基於核技術方法(典型:PCA和LDA、KFDA)。

可以理解爲:算法多,沒有統一的分類,根據不同的準則可以劃分爲不同的類(還會有交叉),因此在學習人臉識別的時候,可以從經典算法開始,到最新的卷積神經網絡。可以針對自己的需求去專門學習一些算法,不需要全部都學習

 

  • 經典的人臉識別算法:特徵臉法(Eigenface)、局部二值模式(Local Binary Patterns,LBP)、Fisherface
  • 常用人臉識別算法:AdaBoost(即Haar+adaboost)、HOG+SVM(此算法也廣泛應用到各種目標檢測,如行人檢測)、PCA+SVM
  • 最新人臉識別方法:DeepID、MTCNN、PFLD(基本都和深度學習有關)。

 

下一篇將着重介紹採用Haar+AdaBoost方法實現人臉檢測的詳細理論知識,以及使用opencv實現。

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章