面部識別系列-三期-Viola–Jones 實時面部識別框架

背景

面部識別系列-三期-Viola–Jones 實時面部識別框架

Viola-Jones Framework 是實時面部識別的算法之一。實際上如果不考慮數學部分,只從抽象理解和代碼實踐,感覺並沒有那麼難。這可能要成為我最短的系列了。。。。

Viola-Jones其包含了下面四個步驟:

  1. Haar Feature Selection HAAR特徵提取
  2. Creating an Integral Image 某種形式的圖片處理(不好翻譯)
  3. Adaboost Training Adaboost Classifier 訓練
  4. Cascading Classifiers Cascade Classifier 梯度Classifier

另外,需要注意的是Viola-Jones實現的是real-time,所以速度 與 效率對其尤其重要

Haar Feature

任何圖片處理的算法,面對的第一個問題就是特徵提取,現在比較火的CNN也是如此。

我們知道圖片是一些像素點的集合,那麼就是一個0~255範圍的矩陣(假設是黑白圖片)。當然,這些像素本身就是最原始的特徵值。但是很明顯 real-time的面部識別不能使用這些最原始的特徵值。

Viola-Jones提出一種叫做Haar Feature的特徵。該特徵就是將下圖中的,黑白的形狀在圖片中掃描。

面部識別系列-三期-Viola–Jones 實時面部識別框架

然後如下圖計算出,像素差的均值。也就是黑色像素點- 白色框框的像素點 ,再除以n

當然Faar Feature 特徵的提取是用上圖的框,去掃描整張圖。同時,這個框的大小也會變化。

面部識別系列-三期-Viola–Jones 實時面部識別框架

大致的計算過程如上面解釋的。那麼接下來的問題是,為什麼要這麼設計特徵呢?

我們的任務是識別面部。那麼人的臉是有明顯的特徵的。比如鼻樑之間像素差、眼睛的像素差、嘴巴也是。 如下圖,Haar Feature最終捕捉到的就是像素差較大的地方。對於下圖可能最終形成的就是一個非常模糊的五官。這就是為什麼要使用Haar Feature的原因

面部識別系列-三期-Viola–Jones 實時面部識別框架

Integral Image

上一部分提到了為了得到Haar Feature,我們需要用 黑白相間的框框去掃描圖片。 但是這會帶來一個問題,就是計算量的問題。因為,我們要用不同的size的框框去掃描,沒掃描一次都要重新把黑色部分-白色部分。其計算兩集是 N的平方

面部識別系列-三期-Viola–Jones 實時面部識別框架

Integral Image的方法很直接,他將圖片的數字進行轉換。每個格子的數字等於所有左上角的總和。

那麼當我要計算下圖黃色部分的合計時,我只需要用3.7+0.2-0.5-1.7.

這樣只需要四個角的數字 的加減就能算出 這個部分的像素和。

面部識別系列-三期-Viola–Jones 實時面部識別框架

Integral Image的最大意義在於能夠快速算出特徵值。 記得,目標是real-time的面部識別

Adaboost Training &Cascading Classifiers

上一期有詳細的解釋Adaboost,就是將很多個weak classifier 組合在一起成為一個Strong Classifier。當然其中一個很重要的一步是 每一個Weak Classifier之後,都要將分類錯誤的數據 權重加大,這樣後面的classifier自然就更關注上一次錯誤的數據。

面部識別系列-三期-Viola–Jones 實時面部識別框架

那麼這對於Viola-Jones模型的意義是什麼呢?

在實時的面部識別中,一個圖片中大部分特徵是不包括面部的。如果要做到實時,一個合理的做法是, 能夠快速的判斷不是面部, 對於有疑慮的再慢慢看。

這就是Cascading Classifier的意義,如下圖,每一個Classifier 如果是No,那麼判斷結束;如果是Yes進入下一個環節。這麼做最大的好處能快速過濾掉否定的答案。

同時Cascading Classifier梯度判斷 也 於Adaboosting Training結合起來了。

面部識別系列-三期-Viola–Jones 實時面部識別框架

總結下

首先呢,Viola-Jones的模型採用了Haar Feature 這種特徵,對於面部識別非常有效,畢竟於面部的特徵和契合;

其次呢,Viola-Jones採用了Integral Image能夠快速的計算出特徵值;

然後呢,它還採用了 梯度判斷,能夠快速的篩選掉 不含面部的像素特徵;

最終呢,Viola-Jones 做到了Real-time

下期預告

下一期肯定就是本系列最後一期了,本期已經把Viola-Jones模型的框架概念講完了。

下一期只能帶來代碼了。等我週末琢磨下吧。


分享到:


相關文章: