Four Approaches to Face Detection

R87526023 陳必衷

bi@turing.csie.ntu.edu.tw


Download Matlab programs


1. Introduction

目前做Face Detection的方法大致可分為下幾種:Neural Network的方法、Feature-based 的方法及 Color-based的方法。其中,Neural Network的方法是用許多的Training Data(一部份是臉部的、一部份是非臉部的)去訓練Neural Network,使其可以辨識出什麼影像是臉、什麼影像不是臉。Feature-based的方法是利用人臉部的一些特徵來偵測人臉,例如:人臉上有眼睛、鼻子、嘴巴,而這些器官都有固定的相對位置;就整張臉而言,大概是呈橢圓形,而臉和背景之間大致會有邊緣線;諸如此類,有許許多多的特徵可利用。而Color-based的方法,則是利用人臉部的顏色來判斷某影像是否是臉;若影像是彩色的,我們知道臉的顏色是橘黃、黃、白、褐、深褐色;若影像是灰階的,我們知道人臉的灰階顏色的變化並不會太大,而眼睛、嘴巴、頭髮會是較黑的部份。

在這個期末專題中,我用四種方法分別來做人臉偵測,分別是:Neural Network的方法、Rule-based的方法(Feature-based方法的一種)、Elliptical Edge的方法(Feature-based方法的一種)及Average Face的方法(Color-based方法的一種)。假設要偵測的是正面、並且沒有歪斜的臉。在以下各段中,將詳細說明每一個方法的細節、優缺點及可以如何改進。

此專題的目的是測試各方法的優缺點,並不期望增加執行的速度。系統的Input是灰階的影像(包含人臉在其中的影像,人臉皆是正面並且沒有歪斜),Output是原影像並在其中1~5個最像人臉的位置以黑框框出。

2. Framework

因為要找尋不同大小、不同位置的人臉,所以系統要在不同大小、不同位置的區域上來做判斷。在此假設人臉的大小最大為輸入影像的1/2,最小為輸入影像的1/10。所以尋找的方式是先設定『可能人臉方塊(PossibleBlock)』的大小為輸入影像大小的1/2,再來是前一次『可能人臉方塊』大小的0.89倍,直到『可能人臉方塊』的大小小於輸入影像的1/10。(如此尋找區域大概有20種不同的大小)

若『可能人臉方塊』的大小已固定,接下來就是用這個大小的方形,掃過整個輸入影像。Step為『可能人臉方塊』大小的1/10。再來,因各種不同方法的需要,有時我們必須要對『可能人臉方塊』做Down Sample,之後便可判斷此方塊為人臉的可能性。最後便可依據之前計算出來的可能性,列出1~5最有可能為人臉的位置。如此,我們便可以偵測不同大小、不同區域的人臉。

本專題所用的各方法,都是利用這個Framework,所不同的是在判斷『可能人臉方塊』究竟是否為人臉時,有的是用Neural Network、有的是用一些規則、有的是比較灰階的差異。故在以下各段中,僅敘述如何計算『可能人臉方塊』的人臉可能性。

2.1 Framework的詳細步驟

  1. Set BlockSize = ImageSize / 2
  2. If BlockSize < ImageSize / 10 then goto (9) else goto(3)
  3. for x = 1 to ImageWidth step by BlockWidth/10
  4. for y = 1 to ImHeight step by BlockHeight/10
  5. PossibleBlock is the block centered at (x , y) on the input image.
  6. Resize PossibleBlock to proper size
  7. Compute the Possibility that the PossibleBlock is a face region.
  8. Set BlockSize = BlockSize * 0.89 then goto (2)
  9. Select the most possible region as the face detected.

3. Average Face Approach

Average Face 是典型的人臉影像,此方法是在輸入影像中,找尋與這個典型影像最相似的某幾個區域。在此所用的Average Face是16 x 16的影像,所以我們要『可能人臉方塊(PossibleBlock)』縮小成 16 x 16,然後計算此 16 x 16的Block與Average Face的Mean Square Error。並把Error最小的1~5個區域當作人臉部的區域。

3.1 Average Face Approach的詳細步驟

  1. Resize PossibleBlock to 16 x 16
  2. Possibility = Negative of Mean Square Error between Average Face and PossibleBlock.

3.2 Average Face Approach的特性

這是一個非常簡單的方法,對於簡單背景的圖片似乎都還可以找得到臉的部位,但當背景複雜起來時,就會很容易有錯誤。

  1. 簡單且容易 implement。
  2. 可以算出每個『可能人臉方塊』與人臉的相似度數值。
  1. 背景複雜時很容易錯誤。
  2. 人臉的亮度太黑或太亮時都很容易出錯。
  3. 人臉表情太大時也易出錯。

偵測到覆雜的區域而非人臉 當背景簡單時可偵測到人臉

  1. 背景為較單純的黑色或白色時可以很快找到人臉。
  2. 因為此方法可以算出每個『可能人臉方塊』與人臉的相似度數值,所以可以結合於一些用Rule或Neural Network﹍﹍等不易計算相似度數值的方法。在這樣的結合中,Rule或Neural Network扮演filter的角色,把不像人臉的區域過濾掉,最後再用Average Face取出最像臉的1~5個區域。

4. Rule-based Approach

Rule-based方法是用一些人臉上的一些規則來判斷人臉的存在,如:在灰階的影像中,眼睛的部位較暗,並且兩個眼睛會成對出現。當然,我們只要仔細的觀察,便可以列出許許多多的規則,但並不是每個都適用。

在這裡我所提出的方法是先用4 x 4的Mosaic Image來大概判斷是否為人臉,若像人臉的可能性蠻高的,則再用 8 x 8的Mosaic Image來找出眼睛的位置【Ref 1】。當然若找不出眼睛,這塊區域就應該不會是人臉了。之後再用Average Face的方法計算此區域為人臉的可能性。最後列出最可能的1~5人臉區域。

4.1 Rule-based Approach 詳細步驟

  1. Resize PossibleBlock to 4 x 4
  2. Apply 4 x 4 Rules:
    1. The center part of the face has 4 cells with a basically uniform gray level. (mean of difference is less then 30)
    2. The upper round part of face has a basically uniform grey level. (mean of difference is less then 70)
    3. The difference between the average gray levels of 1, 2.is significant. (the difference is large then 50)
  1. If the PossibleBlock obeys the 4 x 4 Rules then goto (4) else Possibility = 0 and STOP.
  2. Apply 8 x 8 Rules to find EYES:
    1. There is a local minimum of gray level along vertical direction.
    2. In the horizontal direction, there are two local minimum of gray level, the distance between these minimum d: 2 < d < 5. The 2 local minimum are called Eye Pairs.
    3. Number of Eye Pairs in one 8 x 8 block is less then 7.
  1. If tht PossibleBlock obeys the 8 x 8 Rules then goto (6) else Possibility = 0 and STOP
  2. Use the Eye Pairs found in step (4) to reform the PossibleBlock. Ensure that eye positions are at the right positions.
  3. Use the reformed PossibleBlock to compute Mean Square Error between this block and average face. And the Possibility = the Mean Square Error.

4.2 Rule-based Approach的特性

Rule-based的方法是利用人臉部灰階的一些規則來判斷人臉的存在,再 4x4的Rule中,我們假設人臉部的顏色會比臉上面的顏色亮一些,這個規則對於有頭髮並膚色較淡的人臉而言是有效的,但若輸入影像中的人是光頭或是黑人,則此方法遍佈適用了。再者在8 x 8的Rule中,我們主要是希望能找到Eye Pairs,並利用此Eye Pairs來校正PossibleBlock的位置。在此我們假設人眼睛的部位會有一個灰階的極小值,這個假設是很合理的,並且在一些paper中也指出,人臉上的眼睛是比較不會隨人表情變化的特徵。因此只要輸入影像的人不是光頭或黑人,這個方法應該大致適用。

  1. 判斷出來的位置幾乎就一定是人臉。。
  2. 用階層(Hierarchical)的搜尋法,會使執行速度增加。
  1. 4 x 4 Rule無法判定出光頭及膚色很黑(或亮度很暗)的人臉。
  2. 4 x 4 Rule有可能會找不道人臉,即使輸入影像中有人臉。

(1) 此方法適用於頭髮深色、臉部較明亮的人臉。

實際抓到的人臉,可能為眼睛的區域也由方框框出。

5. Elliptical Edge Approach

Elliptical Edge的方法是假設人臉都是近似橢圓的形狀,並且假設人臉與背景之間有一條較明顯的邊緣線。所以我們只要在輸入影像中尋找有橢圓邊緣的區域,在用此區域和Average Face做比較,最後便可框出最像人臉的1~5個區域。在判斷橢圓邊緣時,我用有橢圓邊緣與輸入影像的邊緣影像做convolution,並取出最值最大點作為PossibleBlock的中心點。

    

5.1 Elliptical Edge Approach的詳細步驟

此方法與其他三個方法比較不同,並不適用第二節中所提出來的Framework,此方法也是將PossibleBlock由輸入影像的1/2找到1/10。只是此方法不用將PossibleBlock掃過整張輸入影像並且一一比對,而是用convolution的方法,一次就定位出最可能的區域。用convolution的好處是他可以使用FFT,如此便可增加執行速度。

  1. Find edges of the input image using Sobel operator.
  2. Convolute the edge image with elliptical edge image.
  3. Find 5~10 points which have the maximum value.
  4. Form the PossibleBlocks centered at the points found in step (3).
  5. Compute the Mean Square Error between the PossibleBlocks and the average face. And set Possibility = the Mean Square Error.

5.2 Elliptical Edge Approach的特性

Elliptical Edge Approach是個執行速度很快的方法,但誤判的機會也很高。只要人臉與其背景並沒有明顯的邊緣線,這個方法基本上就失效了。或者當背景中有明顯的一塊白色區域或黑色區域,這個方法就會誤判其為人臉。

  1. 簡單快速。
  2. 當人臉區域明顯時,效果不錯。
  1. 當人臉與背景沒有明顯邊緣時便找不到人臉。
  2. 當背景中有明顯邊緣時,可能會誤判此為人臉。
  3. 當背景有複雜邊緣線時,也容易誤判為人臉。

(1) 當背景較為單純時,此方法是快速有效的方法。

  1. 此方法最大的缺點是較容易找不到人臉,所以應該要讓PossibleBlock的數量增加,並且在判斷Edge時做Normalization。如此會有較多的區域進行average face的比對,如此應該可以較容易找到人臉。
  2. 可以用Image processing中Enhance Edge的方法對輸入影像做前處理,如此人臉的邊緣應該會較為明顯。
  3. 可用一些Morphological operation的方法把細小的邊緣清除,如此可減少False Detection的區域。

6. Neural Network-based Approach

Neural Network的方法是用許多人臉及非人臉的影像去訓練Neural Network,使其可以學到什麼是人臉,什麼不是人臉。在偵測時就直接把PossibleBlock的每一個pixel喂到Neural Network中,如果此區塊為人臉則output 1,否則output 0。

Neural Network的架構用Feed-forward 的Back-propagation Neural Network,Input layer是20 x 23的image,Output layer只有一個Neuron,若是人臉output為1,否則為0。Hidden layer只有一層,總共20個Neuron。而Transfer Function,在Hidden layer中是用從-1到1的sigmoid function;在Output layer中則是用從0到1的sigmoid function。Train Set包含1000張人臉影像、4000張非人臉影像。

6.1 Neural Network-based Approach的詳細步驟

Network Properties:

Hidden layer: Sigmoid function, range from -1 to 1.

Output layer: Sigmoid function, range form 0 to 1.

Training Procedure:

  1. Initial network. Randomly assign all weights.
  2. Initial training set. Normalize training set or do PCA.
  3. Batch training (use Resilient backpropagation) until:
  4. Mean Square Error < 10 -5 or

    Epoch > 400 or

    Training time > 1 hour

  5. Set Threshold = 1/2 + ( min face output + max non-face output ) / 4
  6. Use the Threshold to test the network performance of Test Set. (Test Set consist of 100 faces and 500 non-faces)
  7. If there are still unused Non-face Set (total number of Non-face blocks is 8000) , put the Non-face Set to Training Set, and goto (2) else goto (7)
  8. Test network performance. If there is NO error of Test Set, then STOP else goto (8).
  9. If the network has best performance then store the network.
  10. Goto (1)

6.2 Neural Network-based Approach的特性

Neural Network方法的好壞,與Training Data的好壞有密切的關係,因為我所用的Training Data都是自己由一張張包含人臉的影像中剪下來的,所以Training Data的大小沒有辦法太大,因此偵測人臉的效果也因此不太好。而Neural有與多的參數可以調整,例如:Hidden layer的個數及層數、transfer function的類型、training的方法……等等,所以要調到最佳的狀況是一件很不容易的事。我想我的network應該並沒有到最佳狀況,所以大概會有2 %的false detection。而人臉的位置通常一定可以偵測到。

  1. 通常人臉的位置一定可以偵測到。
  2. 訓練Neural Network很自動化的動作,所以可以讓電腦自己跑。
  1. 偵測的好壞與Training Set的好壞非常相關。
  2. Network的參數很難調整到最佳狀況。
  3. 在我的實驗中,False detection的比率稍高。
  4. 可以達到偵測效果的原因較難明瞭,因此也較難做微調。
  5. 執行速度是四種中最慢的。
  1. 改進Training Set。
  2. 可用cross-correlation operation增快執行速度【Ref 4】。

7. Conclusion

經過一些實驗,發現Average face approach適合做人臉偵測的最後確認;Rule-based approach適合偵測深色頭髮、膚色較淺的人臉,而且判斷的正確率算是相當的高;Elliptical edge approach適用於臉部輪廓明顯的影像,而且速度相當快;而Neural Network則可適用於一般的人臉偵測,但是好的Training data不一取得,而Network的參數又不易調整。

其實一般來說,要讓Face detection做得又快有準,輸入影像通常要先做前置處理,例如:Morphological operations 【Ref 3】…等。並且可以整合多種方法加以判斷,然此精準對便可提升。在此這個期末專題中,我嘗試了4種Face detection的方法,並整理出其優缺點,相信對於日後的方法整合可以提供一些建議。

Reference

  1. Guangzheng Yang and Thomas S. Huang, "Human Face Detection in a Complex Background", Pattern Recognition, Vol. 27. No. 1 ,1994.
  2. Kazuhiro Hotta , Takio Kurita and Taketoshi Moshima, "Scale Invariant Face Detection Method using Higher-Order Local Autocorrelation Features extracted from Log-Polar Image", IEEE 1998
  3. Chin-Chung Han, Hong-Yuan Mark Liao, Kuo-Chung Yu, and Liang-Hua Chen, "Fast Face Detection via Morphology-based Pre-processing", Academia Sinica, Taipei, Taiwan.
  4. Beat Fasel, Souleil Ben-Yacoub, Juergen Luettin and Stphane Marchand-Maillet, "Fast Multi-Scale Face Detection", IDIAP-Com 98-04