• 沒有找到結果。

對本篇論文做結論,以及未來展望。

第二章 文獻探討

在實作人臉辨識上,首先會對整張圖像做人臉偵測,經由人臉偵測所得到 的人臉,再接著做人臉辨識,所以本章文獻探討會著重於人臉偵測與人臉辨識 的相關技術。

第一節 人臉偵測

根據 Yang[19] 的研究指出,人臉偵測的方法大致可分為四類,分別為 Knowledge-Based method、Feature-Based method、Template-Based method 以及 Appearance-Based method。

(1) 基於知識的方法(Knowledge-Based method)

Knowledge-Based 是透過描述人臉的外觀型態來當作判斷的依據,像 是利用人臉的眼睛、嘴巴還有鼻子之間的相對位置與距離來建立規則,藉 由這些規則來找尋影像中人臉的區域。若此規則定義條件式過於嚴謹,則 很難符合條件找出人臉,反之,則容易找出非人臉的區域。此方法不適用 於人臉角度傾斜的情形,因為無法一一定出所有規則。

(2) 基於特徵的方法(Feature-Based method)

此方法主要是在人臉中尋找出明顯的特徵來找出影像出人臉的位置,

像是可以利用臉的輪廓、膚色以及五官等資訊當作特徵來判斷是否為人臉。

以膚色特徵為例, [7, 9]根據色彩模型可以快速地將非膚色部分濾除,減 少影像中需要處理的範圍進而達到執行速度增加,並保留膚色部分進行後 續分析。此方法較不易受到姿勢、視角以及外在環境光線變化的影響,通 常都會結合多種以上特徵來做人臉偵測[1],因為若單獨使用某一特徵,可 能會略顯不足,因為每一種特徵都極易受到外在環境的干擾而影響判斷的 正確率。

(3) 樣板比對的方法(Template-Based method)

此方法是一種比較直觀的方法,主要是定義幾種臉的樣本,特徵主要 是利用多張人臉的輪廓以及五官形狀的特徵定義出一個或多個標準樣本,

如 Brunelli[2]提出的以平均人臉為樣板的方式再與輸入之測試影像逐一進 行比對,計算影像中和樣本之間的相似程度。此方法的優點為簡單容易實 行,但只適用於與樣本相對位置差異不大的影像,無法處理人臉的縮放

(Scale)、姿勢(Position)、旋轉(Rotation)或是扭曲(Skew)的情況。

(4) 基於表像的方法(Appearance-Based method)

Appearance-Based 的方法是透過學習、統計數據的方式來做人臉偵測,

將人臉與非人臉的影像作分群,利用人臉的外觀變化透過大量的影像訓練 建立模型。如 Viola 與 Jones[17]提出利用積分影像特徵計算 Haar-Like

Feature,再配合 Adaboots 演算法與 Cascade 分類器來建立人臉偵測模型,

此方法目前廣為人們所用,其優點為快速且辨識率高,但需耗費大量計算 時間以及記憶體空間。

圖 5 Viola 與 Jones 提出的方法之結果[17]

第二節 人臉辨識

臉辨識的基本流程通常為人臉偵測、影像前處理、特徵擷取、相似度距離計 算,而每個步驟又可因其狀況或需求而有不同的方法,其中人臉辨識較重要的 步驟為特徵擷取,以下將歸類並介紹幾種常用的特徵擷取方法:

(1) Eigenface

是指用於機器視覺領域中的人臉識別問題的一組特徵向量。使用特徵臉 進行人臉識別的方法首先由 Sirovich and Kirby (1987)提出,並由 Matthew Turk 和 Alex Pentlan[16]用於人臉分類。該方法被認為是第一種有效的人臉識別方法。

這些特徵向量是從高維矢量空間的人臉圖像的協方差矩陣計算而來。

(2) Fisherface

基於線性鑑別分析(Linear Discriminant Analysis)思想而演變過來的。

線性鑑別分析方法的目的是從高維特徵空間中提取出最具有鑑別能力的低 維特徵,並在 1998 年時被 W.Zhao[5]應用於人臉辨識上。

(3) Local Binary Patterns

局部二值模式在紋理分類問題上是一個非常強大的特徵,於 2006 年被 應用於人臉特徵的描述[14];如果局部二值模式特徵與方向梯度直方圖結合,

則可以在一些集合上十分有效的提升檢測效果。局部二值模式是一個簡單但 非常有效的紋理運算符。它將各個像素與其附近的像素進行比較,並把結果 保存為二進制。由於其辨別力強大和計算簡單,局部二值模式紋理算子已經 在不同的場景下得到應用。LBP 最重要的屬性是對諸如光照變化等造成的 灰度變化的魯棒性。它的另外一個重要特性是它的計算簡單,這使得它可以 對圖像進行實時分析,由於其快速且準確,不少研究針對其運算子做修改進 而達到不同需求如[3, 6, 11]。

第三節 影像處理實作於 Android platform phone

在 Android platform phone 上實作影像處理通常用 Java 語言去實現,但 由於 Java 會先轉 Java bytecode,所以速度會比不用轉的語言稍微慢一點,所 以有些應用會用 C 語言去實作,在透過 JNI(Java Native Interface)這個 Framework 使 Java 去調用 C 寫好的 function,讓複雜的計算給 C 語言執行。

在參考[13]所提出的語言速度的比較後,在本篇論文的人臉偵測是調用 C Function 為之,人臉辨識則是用 java 進行計算。

第三章 研究方法

本章節共分為五個小節:第一小節為本系統的架構,第二節為人臉偵測,第 三小節為影像前處裡,第四小節為影像特徵擷取,第五小節為特徵分類,第六 小節為特徵距離相似度計算。

第一節 系統架構與演算法流程

本節會介紹系統架構與本論文所用的演算法流程圖,本系統架構如圖 6 所 示,安裝完本系統後,點擊手持裝置上面任一項 APP 後會立即跳出人臉辨識的 視窗,使用者將其對準臉,系統就會開始判斷使用者的身分,如果該使用者有 可以使用該 APP 的權限,那麼就會進入 APP,如果沒有則不能進入。

圖 7 為演算法流程,首先要先對每個使用者取取訓練人臉集,從手持裝前鏡頭 所取到的原始影像要先對其做人臉偵測,取出人臉後再接著做特徵擷取,將所 有人臉影像的特徵取出來後,由於數量過多,所以要對其做分類,取出具代表 性的特徵,接著測試時的測試影像也是做一樣的流程,最後再跟訓練集的特徵 做距離相似度計算,即可知道該測試使用者身分。

圖 6 系統示意圖 點擊某 APP 後,

系統立即跳出人 臉辨識頁面。

系統開始判斷使 用者為何人

該使用者有權限進 入此 APP,所以可 使用該 APP。

該使用者無權限進 入此 APP,所以不 可使用該 APP。

V

X

圖 7 演算法示意圖

Image Pre-Processing

Training frame

Face Detection

Image Feature Extraction

Feature Classification Testing frame

RGB to grayscale Gamma correction Difference of Gaussian

Using LBP feature or Use LBP-like feature

Distance Similarity Calculation

第二節 人臉偵測(Face Detection)

本系統一開始需要先請使用者拿著手機,對著前置竟頭若干秒,使系統可 以擷取使用者的臉,當作訓練資料,而擷取人臉的演法用的是 Viola 與 Jones [17]

所提出的方法來做人臉偵測,利用 Integral Image 快速算出大量 Haar-Like

Feature 的值,AdaBoost 演算法在每一回合的訓練中選取最重要的 Haar-Like Feature,多個 Haar-Like Feature 組合起來成一個強分類器,配合 Cascade 分類 器的概念,便可快速過濾掉非人臉的圖片,最後留下的即為人臉影像。

圖 8 為 Viola 與 Jones[17]所使用的 Haar-Like Feature,這些 feature 的大小 都不相同,但是白色面積和灰色面積都會一樣大,這些 feature 會像 filter 一樣,

在每一張影像中移動並且計算白色面積像素值的加總減去灰色面積像素值的加 總,由於 Haar-Like feature 的數量相當龐大,因此 Viola 與 Jones[17]提出利用

Integral Image 演算法來加快計算每個 Feature 的值。

圖 8 Haar-Like Feature [3]

ii(x, y)=∑

𝑥≤𝑥,𝑦≤𝑦

𝑖(𝑥

, 𝑦

) (1)

對於一張輸入影像 I,𝑖𝑖(𝑥, 𝑦)表示點(𝑥, 𝑦)的積分影像,𝑖(𝑥, 𝑦)

為點

(𝑥, 𝑦)

灰階 像素值,如圖 9 綠色面積為點(𝑥, 𝑦)的積分影像

圖 9 點(x, y)的積分影像

根據遞迴的方式:

s(x, y)=s(s, y-1)+i(x, y) (2) ii(x, y)=ii(x-1, y)+s(x, y) (3)

s(x, y)表示該行x到y灰階質的總和,s(x, -1)=0且ii(-1, y)=0,積分影像就可從原 始影像中得到。

要訓練的影像分為人臉與非人臉兩類,分別有多張影像,在初步時的權重 值皆相同,會隨著每回合的訓練而有所不同。假使要挑選 T 個 feature ,AdaBoost 演算法首先將所有權重值做正規化使得所有的值加起來為 1,接著會在每回合 挑選一個能使得錯誤最小的 feature 並記錄其參數,最後則會更新權重值,共做 T 個回合。每個 feature 可視為一個弱分類器,將這 T 個弱分類器組合起來便可 成為一個強分類器,藉由每個 feature 對影像進行投票,決定此張影像是否為人

臉,由於每個 feature 的權重值皆不相同,因此只有當權重值的加總過半時,才 認可為一張人臉,詳細的演算法如表 1。

表 1 AdaBoost Learning Algorithm[17]

 Given example images (x1, y1), . . . , (xn, yn) where yi = 0, 1 for negative and

positive examples respectively.

 Initialize weights w1,i = 2m12l1 for yi=0 ,1 respectively, where m and l are the

number of negatives and positives respectively.

 For t = 1, . . . , T :

1. Normalize the weights, wt,i wt,iw

n t,j j=1

2. Select the best weak classifier with respect to the weighted error ϵt=minf,p,θ∑ wi i|h(x i, f, p, θ)− y i|.

A weak classifier h(x i, f, p, θ) thus consists of a feature (f), a threshold (θ) and

a polarity (p) indicating the direction of the inequality:

h(x i, f, p, θ) = { 1 if pf(x) < 𝑝θ 0 otherwise

3. Define ht(x) = h(x t, ft, pt, θt) where ft, pt, and θt are the minimizes of ϵt. 4. Update the weights:

w t+1,i= w t,iβt1−ei

Cascade 分類器的概念可以讓 AdaBoost 演算法更有效的進行。將所有 feature 分成好幾層分類器,每一層的分類器皆會濾掉非人臉的影像,再將剩下 的影像交給下一層分類器處理,如此一來最後留下來的則為人臉的影像,如圖

10。再節點 1 先進行第一次的人臉判斷,若成功辨識為人臉(T 代表辨識成功,

F 代表辨識失敗),則在往下一個節點 2 進行第二階層之判斷,依此類推。

Cascade 分類器最主要的概念為愈前面的分類器其辨識度愈低,可以快速過濾 掉一大半非人臉的影像,越後面的分類器辨識度越高,雖然影像較難處理,但 要判斷的影像數量已不如前面的多了,因此可以加快辨識的速度以提高其效 能。

圖 10 Cascade 分類器

第三節 影像前處理(Image Pre-Processing)

從上個章節中會取得人臉的影像,此時的人臉影像為彩色影像,因為只需 要灰階的部分,所以會先將影像轉為灰階,因為在人臉識別中,光線所引起的 各種變化都會使辨識率下降,所以第三節的部分目的就是解決這個問題,因此 本論文前處理包含三個部分,依序執行的順序分別為灰階化,Gamma correction,

Difference of Gaussian (DoG),下面將會依序介紹這幾像演算法的目的及用途。

(1) 灰階化

因為只需要灰階的部分,所以先對彩色影像作灰階化,公式如下:

I = R × 0.299 + G × 0.587 + B × 0.114 (4)

其中 I 是由彩色影像經過上式所轉成的灰階化影像,R 為彩色影像中特定 像素的紅色值,G 為綠色值,B 為藍色值。

(2) Gamma correction

光線不均勻的問題往往是影像辨識的一大挑戰,因此本研究在得到灰階影 像時,為了減少光線所造成的影響,通過增強陰影處或是降低太亮的區域 的灰階值,把整灰階圖做一個非線性的變換,公式如下:

光線不均勻的問題往往是影像辨識的一大挑戰,因此本研究在得到灰階影 像時,為了減少光線所造成的影響,通過增強陰影處或是降低太亮的區域 的灰階值,把整灰階圖做一個非線性的變換,公式如下:

相關文件