傳統人臉檢測識別的簡述總結及現今流行框架

因為最近人臉檢測與識別火熱的進行著,本平台想進一步詳細介紹關於人臉領域的相關知識與分析,讓更多人的有進一步深入的熟知!

之後我會不斷更新最新的人臉檢測識別相關知識,希望有興趣和該領域的朋友,把你們的認識與了解投稿在我們的「計算機視覺戰隊」專欄,讓我們一起學習,共同進步,謝謝!

最近因為種種原因,這方面的知識有得到大家的認可和對其有很大的興趣,所以今天想再一次分享這知識,讓已明白的人更加深入理解,讓初學者有一個好的開端與認知,謝謝大家的支持!

現在打開谷*公司的搜索器,輸入 「face detect」,估計大家都能夠想到,都是五花八門的大牛文章,我是羨慕啊!最近的VALSE2017在廈門舉辦的非常成功,也得到了更過的人的關注!原歸正傳,讓我開始說說人臉這個技術,真的是未來不可估計的IT技術,不知道未來會有多少企業為了這個技術潛心研究,現在就來看看最近的技術和未來的發展吧!

我先大概說下遇到的一些問題:

? 圖像質量:人臉識別系統的主要要求是期望高質量的人臉圖像,而質量好的圖像則在期望條件下被採集。圖像質量對於提取圖像特徵很重要,因此,即使是最好的識別演算法也會受圖像質量下降的影響;

? 照明問題:同一張臉因照明變化而出現不同,照明可以徹底改變物體的外觀;

? 姿勢變化:從正面獲取,姿勢變化會產生許多照片,姿態變化難以準確識別人臉;

? 面部形狀/紋理隨著時間推移的變化:有可能隨著時間的推移,臉的形狀和紋理可能會發生變化;

? 相機與人臉的距離:如果圖像是從遠處拍攝的,有時從較長的距離捕獲的人臉將會遭遇質量低劣和噪音的影響;

? 遮擋:用戶臉部可能會遮擋,被其他人或物體(如眼鏡等)遮擋,在這種情況下很難識別這些採集的臉。

就先說這些問題吧,還有其他問題,讀者你可以自己再去總結一些,其實很easy!

在沒有DL沒有正式普及之前,大家都是在用傳統的機器演算法和統計學的演算法來對以上問題進行研究,仔細想想,大牛真的好厲害,能想出那麼多經典的演算法,下面我先簡單介紹幾個:

1) 基於Adaboost人臉檢測

Adaboost人臉檢測演算法,是基於積分圖、級聯檢測器和Adaboost演算法的方法,該方法能夠檢測出正面人臉且檢測速度快。其核心思想是自動從多個弱分類器的空間中挑選出若干個分類器,構成一個分類能力很強的強分類器。

  • 缺點:而在複雜背景中,AdaBoost人臉檢測演算法容易受到複雜環境的影響,導致檢測結果並不穩定,極易將類似人臉區域誤檢為人臉,誤檢率較高。

2) 基於特徵的方法(引用「Summary of face detection based on video」)

基於特徵的方法實質就是利用人臉的等先驗知識導出的規則進行人臉檢測。

  • 邊緣和形狀特徵:人臉及人臉器官具有典型的邊緣和形狀特徵,如人臉輪廓、眼瞼輪廓、虹膜輪廓、嘴唇輪廓等都可以近似為常見的幾何單元;

  • 紋理特徵:人臉具有特定的紋理特徵,紋理是在圖上表現為灰度或顏色分布的某種規律性,這種規律性在不同類別的紋理中有其不同特點;

  • 顏色特徵:人臉的皮膚顏色是人臉表面最為顯著的特徵之一,目前主要有RGB,HSV,YCbCr,YIQ,HIS等彩色空間模型被用來表示人臉的膚色,從而進行基於顏色信息的人臉檢測方法的研究。

3) 基於模板的方法

基於模板匹配的方法的思路就是通過計算人臉模板和待檢測圖像之間的相關性來實現人臉檢測功能的,按照人臉模型的類型可以分為兩種情況:

  • 基於通用模板的方法,這種方法主要是使用人工定義的方法來給出人臉通用模板。對於待檢測的人臉圖像,分別計算眼睛,鼻子,嘴等特徵同人臉模板的相關性,由相關性的大小來判斷是否存在人臉。通用模板匹配方法的優點是演算法簡單,容易實現,但是它也有自身缺點,如模板的尺寸、大小、形狀不能進行自適應的變化,從而導致了這種方法適用範圍較窄;

  • 基於可變形模板的方法,可變形模板法是對基於幾何特徵和通用模板匹配方法的一種改進。通過設計一個可變模型,利用監測圖像的邊緣、波峰和波谷值構造能量函數,當能量函數取得最小值時,此時所對應的模型的參數即為人臉面部的幾何特徵。這種方法存在的不足之處在於能量函數在優化時十分複雜,消耗時間較長,並且能量函數中的各個加權係數都是靠經驗值確定的,在實際應用中有一定的局限性。

4) 基於統計理論的方法

基於統計理論的方法是指利用統計分析與機器學習的方法分別尋找人臉與非人臉樣本特徵,利用這些特徵構建分類,使用分類進行人臉檢測。它主要包括神經網路方法,支持向量機方法和隱馬爾可夫模型方法。基於統計理論的方法是通過樣本學習而不是根據人們的直觀印象得到的表象規律,因此可以減小由於人眼觀測不完整和不精確帶來的錯誤而不得不擴大檢測的範圍,但是這種方法需要大量的統計特性,樣本訓練費時費力。

以上也都是通過快速閱讀得到的一些結論,大部分都是直接引用文章作者的語句。其中在這些方法中,都有很多改進,比如PCA+Adaboost,HMM等。。。。。。

現在用傳統的技術已經不能再有新的突破,所以現在流行了DL架構,打破了人類的極限,又將檢測,識別,跟蹤等技術上升到另一個高度。

現在來簡單講講最近幾年神經網路的牛X之處。

  • Retinal Connected Neural Network (RCNN)
  • Rotation Invariant Neural Network (RINN)

  • Principal Component Analysis with ANN (PCA & ANN)
  • Evolutionary Optimization of Neural Networks

  • Multilayer Perceptron (MLP)

  • Gabor Wavelet Faces with ANN

(具體網路結構,如有感興趣的自己詳細查看!)

還有好多就不一一介紹看了(先進的沒有介紹,因為想必大家都有閱讀,所以。。。嘿嘿,相信大家通過大量閱讀一定已經有了自己的想法,趕快去實現吧!)。在此推薦讀者你閱讀《Recent Advances in Face Detection》,分析的特別詳細,希望對大家有幫助,謝謝!

對了,現在不是因為圖像中的人臉檢測,識別都已經很出色了,很多團隊都做到接近滿分了,所以現在來說說未來的趨勢,也許這已經不算趨勢,因為現在已經有很多人在這條路上摸爬打滾,而且有些團隊也有一些成就,希望接下來大家在這領域都能取得好成就。加油!!!

最新深度網路用語人臉的部分介紹與分析:

DeepID網路結構

DeepID是第一代,其結構與普通的卷積神經網路差點兒相同。結構圖例如以下:

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

實驗結論

  • 使用multi-scale patches的convnet比僅僅使用一個僅僅有整張人臉的patch的效果要好。

  • DeepID自身的分類錯誤率在40%到60%之間震蕩,儘管較高。但DeepID是用來學特徵的。並不須要要關注自身分類錯誤率。

  • 使用DeepID神經網路的最後一層softmax層作為特徵表示,效果非常差。

  • 隨著DeepID的訓練集人數的增長,DeepID本身的分類正確率和LFW的驗證正確率都在添加。

DeepID2

相對於DeepID有了較大的提高。其主要原因在於在DeepID的基礎上加入了驗證信號。詳細來說。原本的卷積神經網路最後一層softmax使用的是Logistic Regression作為終於的目標函數,也就是識別信號;但在DeepID2中,目標函數上加入了驗證信號。兩個信號使用加權的方式進行了組合。

兩種信號及訓練過程

識別信號公式例如以下:

驗證信號公式例如以下:

因為驗證信號的計算須要兩個樣本,所以整個卷積神經網路的訓練過程也就發生了變化,之前是將所有數據切分為小的batch來進行訓練。 如今則是每次迭代時隨機抽取兩個樣本,然後進行訓練。

實驗結論

  • 對lambda進行調整。也即對識別信號和驗證信號進行平衡,發現lambda在0.05的時候最好。使用LDA中計算類間方差和類內方差的方法進行計算。

得到的結果例如以下:

能夠發現,在lambda=0.05的時候,類間方差差點兒不變,類內方差下降了非常多。 這樣就保證了類間區分性,而降低了類內區分性。

DeepID2+

DeepID2+有例如以下貢獻,第一點是繼續更改了網路結構;第二點是對卷積神經網路進行了大量的分析,發現了幾大特徵。包含:+ 神經單元的適度稀疏性,該性質甚至能夠保證即便經過二值化後,仍然能夠達到較好的識別效果;+ 高層的神經單元對人比較敏感,即對同一個人的頭像來說。總有一些單元處於一直激活或者一直抑制的狀態。+ DeepID2+的輸出對遮擋很魯棒。

網路結構變化

相比於DeepID2。DeepID2+做了例如以下三點改動:

  • DeepID層從160維提高到512維。

  • 訓練集將CelebFaces+和WDRef數據集進行了融合。共同擁有12000人,290000張圖片。

  • 將DeepID層不僅和第四層和第三層的max-pooling層連接,還連接了第一層和第二層的max-pooling層。

DeepID3

DeepID3有兩種不同的結構,分別為DeepID3 net1,DeepID3 net2。相對DeepID2+,它的層數更多,網路更深。同時還借鑒了VGG和GoogLeNet,引入了inception layer,這個主要是用在了DeepID3 net2裡面。網路中還出現了連續兩個conv layer直接相連的情況,這樣使得網路具有更大的receptive fields和更複雜的nonlinearity,同時還能限制參數的數量。

性能

在訓練樣本上,DeepID3仍採用原來DeepID2+中使用的樣本,在25個image patches產生的網路上作對比時,DeepID3 net1優勢最為明顯,而DeepID3 net2提升不大顯著。

之後我會不斷更新最新的人臉檢測識別相關知識,希望有興趣和該領域的朋友,把你們的認識與了解投稿在我們的「計算機視覺戰隊」專欄,讓我們一起學習,共同進步,謝謝!

最後來說說VALSE 2017

VALSE 的發起者之一——中科院計算所的山世光研究員的報告:《人臉檢測與識別年度進展概述

這就不詳細寫,因為該鏈接都有清楚的表示:

VALSE 2017 | 人臉檢測與識別技術年度進展概述

最後我附上我近期做的效果圖,是基於視頻中人臉檢測與識別的,因為沒有標準,公共的數據集,所以我就用室內場景劇作為訓練數據,最後的效果很不錯,希望以後有同學做人臉的,我們可以一起討論,共同進步,謝謝!

有興趣的朋友,可以看我上傳的視頻,謝謝!(發現檢測過程還是有一些問題,主要是因為訓練數據集不夠)

網址:pan.baidu.com/s/1i563RW

密碼:ehw5

額外還做了一些靜態的人臉檢測:

效果很不錯,最近也在閱讀「企鵝」公司做的人臉,在國際權威人臉識別資料庫LFW上,騰訊優圖實驗室在無限制條件下人臉驗證測試(unrestricted labeled outside data)中提交的最新成績為99.80%,提升了上次99.65%的成績,再次在這一測試中刷新紀錄拔得頭籌,參與測試的還有百度、Face++等團隊。

很厲害,不愧是互聯網三巨頭之一,值得向他們學習!

我也展示下我做的一些小實驗,效果也很好。

非常感謝大家的支持,謝謝!希望有興趣和該領域的朋友,把你們的認識與了解投稿在我們的「計算機視覺戰隊」專欄,讓我們一起學習,共同進步,謝謝!


推薦閱讀:

谷歌人臉識別系統FaceNet解析

TAG:深度学习DeepLearning | 人脸识别 | 人工智能 |