李冠楠 ,李 強
(順德職業(yè)技術(shù)學院電子與信息工程系,廣東 順德528300)
人臉識別中常用的PCA(Principle Component Analysis,主成分分析方法)方法,是一種被廣泛應(yīng)用的標準人臉識別方法。該方法是利用K-L 變換抽取人臉主要成分,構(gòu)成特征臉空間,識別時將測試圖像投影到此空間,得到一組投影系數(shù),通過與各個人臉進行比較進行識別。但是傳統(tǒng)的PCA 人臉識別技術(shù)還遠未達到實用的程度,準確率為30% ~70%左右,這其中一個重要的原因是PCA 算法對人臉的大小、角度、光照等因素比較敏感[1]。
近年來對于人臉識別較好的Adaboost 是一種具有自適應(yīng)的Boosting 算法[2],它通過建立多學習機組合使得弱學習機的性能得到提升,由于具有對學習機性能的自適應(yīng)和對學習現(xiàn)象的免疫性,受到廣泛關(guān)注。而且基于Haar-like 特征的Adaboost 對象檢測算法已經(jīng)比較成熟,人臉檢測的準確率可達到90% ~95%。本文提出了利用Adaboost 算法提取人臉核心特征,包括左眼、右眼、鼻子和嘴巴,然后根據(jù)人臉核心特征識別人臉,可以有效克服人臉識別中的大小、角度、光照等不利因素,顯著提高了人臉識別率,并成功應(yīng)用到了智能相片搜索系統(tǒng)中。
PCA 方法,也叫做特征臉方法,是一種基于整幅人臉圖像的識別算法,被廣泛應(yīng)用于降維,在人臉識別領(lǐng)域也表現(xiàn)突出。對于一副M×N 的人臉圖像,將其每列相連構(gòu)成一個大小為D=M×N 維的列向量。D 是人臉圖像的維數(shù),也是圖像空間的維數(shù)。設(shè)n 是訓練樣本的數(shù)目,Xj表示第j 幅人臉圖像形成的人臉向量,則所需樣本的協(xié)方差矩陣為:
其中u 為訓練樣本的平均圖像向量:
令A(yù)=[x1-u,x2-u,…,xn-u],則有sr=AAT,其維數(shù)為D×D。
根據(jù)K-L 變換原理,需要求得的新坐標系由矩陣AAT的非零特征值所對應(yīng)的特征向量組成。直接計算的計算量比較大,所以采用奇異值分解SVD(Singular Value Decomposition)定理,通過求解AAT的特征值和特征向量來獲得AAT的特征值和特征向量。
依據(jù)SVD 定理,令li為矩陣AAT的r 個非零特征值,υi為AAT對應(yīng)于li的特征向量,則AAT的正交歸一特征向量ui為:
則“特征臉”空間為:w=(u1,u2,…,ur)。
將訓練樣本投影到“特征臉”空間,得到一組投影向量W=wTw,構(gòu)成人臉識別的數(shù)據(jù)庫。識別時,先將每一幅待識別的人臉圖像投影到“特征臉”空間,再利用最鄰近分類器比較其與庫中人臉的位置,從而識別出該圖像是否是庫中的人臉,如果是,是哪一幅人臉。
AdaBoost 是一種分類器算法,其基本思想是利用大量的分類能力一般的弱分類器(Weak Classifier)通過一定的方法疊加(Boost)起來,構(gòu)成一個分類能力很強的強分類器(Stage Classifier),生成強分類器的算法步驟為:設(shè)輸入為n 個訓練樣本{x1,y1},{x2,y2},…,{xn,yn},其中yi={0,1}對應(yīng)假樣本和真樣本,已知訓練樣本中有m 個假樣本,l 個真樣本,第j個特征生成的簡單分類器形式為:
式中:hj表示簡單分類器的值,θj為閾值,pj表示不等號的方向,只能取±1,fj(x)表示特征值。
(1)初始化權(quán)重,對于yi= 0 的樣本,w1,i=1/(2m);對于yi=1 的樣本,w1,i=1/(2l)。
(2)對每個t=1,2,…,T(T 為訓練的次數(shù)):
②對于每個特征j,按上面方法生成相應(yīng)的簡單分類器hj,計算當前誤差εj=∑iwi|hj(xi)-yi|。
③選擇具有最小誤差εt的簡單分類器ht加入到強分類器中去。
④更新每個樣本對應(yīng)的權(quán)重wt+1,i=wt,iβt1-θi,如果第i 個樣本xi被正確分類,則ei=0,反之ei=1,βt=εt/(1-εt)。
(3)最后形成強分類器:
式中,αt=lg(1/βt)。
最后將強分類器按照強弱次序串聯(lián)起來,形成級聯(lián)分類器。
基于人臉核心特征的PCA 人臉識別算法的流程如圖1 所示。包括建立人臉核心特征樣本庫,生成人臉核心特征檢測分類器,形成人臉核心特征記憶空間,根據(jù)人臉核心特征識別人臉四個步驟。本文使用OpenCV 計算機視覺函數(shù)庫實現(xiàn)基于人臉核心特征的PCA 人臉識別算法,OpenCV 是Intel?開源計算機視覺庫,它由一系列C 函數(shù)和少量C++類構(gòu)成,實現(xiàn)了圖像處理和計算機視覺方面的很多通用算法[3]。
圖1 基于人臉核心特征的PCA 人臉識別算法流程圖
為了實現(xiàn)人臉核心特征的檢測,包括左眼、右眼、鼻子、嘴巴,需要建立左眼、右眼、鼻子、嘴巴樣本庫。建立樣本庫的流程如圖2 所示,首先,準備人臉圖片,我們使用美國耶魯大學的Yale 人臉樣本庫,如圖3 所示;然后從人臉樣本圖片中截取人臉核心特征樣本,包括左眼、右眼、鼻子、嘴巴;最后對樣本進行歸一化處理,包括大小調(diào)整,角度調(diào)整等。
圖2 建立人臉核心特征樣本庫流程圖
圖3 Yale 人臉樣本庫部分圖片
檢測分類器是根據(jù)對象樣本庫生成的樣本特征文件,生成一種對象的檢測分類器后,系統(tǒng)將能夠根據(jù)分類器檢測出圖片中的對象?;贖aar-like 特征的Adaboost 算法分類器是目前較成熟的對象檢測算法,該算法生成包含對象Haar-like 特征的級聯(lián)的分類器,可以快速檢測對象。
基于Haar-like 特征的Adaboost 算法分類器的生成流程如圖4 所示。首先,準備樣本庫,樣本庫中包括正樣本(包含檢測對象的圖片),以及負樣本(不包含檢測對象的圖片);并設(shè)置訓練集和測試集,即將樣本庫中的正負樣本的一部分設(shè)置為訓練圖片,另一部分作為測試圖片;然后,根據(jù)訓練集訓練檢測分類器;最后,根據(jù)測試集進行測試,完善檢測分類器。生成了人臉核心特征,包括左眼、右眼、鼻子、嘴巴分類器后,就可以進行人臉核心特征的檢測與提?。?]。
圖4 生成人臉核心檢測分類器流程圖
傳統(tǒng)PCA 人臉識別算法是根據(jù)用戶輸入的若干已知名稱的人臉圖片形成人臉記憶空間,基于人臉核心特征的PCA 人臉識別算法則生成人臉核心特征記憶空間,其流程如圖5 所示。首先,用戶輸入若干已知名稱的人臉圖片;然后,系統(tǒng)使用人臉核心特征檢測分類器,檢測并截取人臉中的核心特征,包括左眼、左眼、右眼、鼻子、嘴巴;最后使用PCA 算法生成人臉核心特征記憶空間,包括左眼、右眼、鼻子、嘴巴記憶空間[6]。
圖5 形成人臉核心特征記憶空間流程圖
形成人臉核心特征記憶空間的PCA 算法步驟包括:
第1 步 假設(shè)有P 幅已知名稱的對象圖像(如左眼、右眼、鼻子、嘴巴),每個對象圖像大小為M×N,對象矩陣X=(x1,x2,…,xP)T。其中向量xi為由第i 個圖像的每一列向量堆疊成一列的MN 維列向量,即把矩陣向量化。
第2 步 計算平均對象。
第3 步 計算差值對象,每一個對象與平均對象的差值di=xi-ψ,i=1,2,…,P。
第4 步 構(gòu)建協(xié)方差矩陣。
第5 步 形成對象記憶空間W=(u1,u2,…,uQ),其中協(xié)方差矩陣的特征向量和ui是ATA 的特征值和正交歸一化特征向量,Q 滿足條件。
基于人臉核心特征識別人臉的流程圖如圖6 所示,首先,用戶輸入待識別人臉;然后,系統(tǒng)根據(jù)人臉核心特征檢測分類器提取出待識別人臉的核心特征,包括左眼、右眼、鼻子、嘴巴;然后,系統(tǒng)將待識別人臉的核心特征對象與人臉核心特征記憶空間中的對象進行比較;最后,系統(tǒng)根據(jù)各個人臉核心特征的比較結(jié)果和系統(tǒng)設(shè)置的閾值確定識別結(jié)果[6]。
圖6 基于人臉核心特征識別人臉流程圖
基于人臉核心特征識別人臉的算法步驟如下:
第1 步 將待識別的人臉核心特征圖像(左眼、右眼、鼻子、嘴巴)與平均對象的差值對象投影到對象記憶空間,得到其特征向量,其中是將每一個對象與平均對象的差值矢量投影到對象記憶空間。
第2 步 定義閾值。
第3 步 采用歐式距離來計算與每個對象的距離。為了區(qū)分對象和非對象,還需要計算原始圖像與由對象空間重建的圖像之間的距離。
第4 步 根據(jù)比較結(jié)果確定識別結(jié)果。
隨著數(shù)碼相機、攝像機以及個人電腦的普及,大家的數(shù)碼相片、視頻的數(shù)量急劇增長,要找出包含某人的相片和視頻要耗費較長的時間和較多的精力。本文使用基于人臉核心特征的PCA 人臉識別算法實現(xiàn)了智能相片搜索系統(tǒng),該系統(tǒng)可以根據(jù)已知人臉搜索電腦中的相片和視頻,經(jīng)過測試,準確率達到75%左右。
高于使用傳統(tǒng)的PCA 人臉識別算法識別的結(jié)果,表明本文提出的方法的有效性。
智能相片搜索系統(tǒng)的運行流程如圖7 所示。首先,管理人臉核心特征記憶空間,即向系統(tǒng)輸入已知姓名的人臉相片;然后,設(shè)置搜索選項,包括搜索人數(shù)、搜索路徑等;最后進行相片或視頻搜索。
圖7 智能相片搜索系統(tǒng)運行流程圖
基于人臉核心特征的人臉識別算法通過人臉核心特征,包括左眼、右眼、鼻子、嘴巴進行人臉識別,充分利用了成熟、可靠的基于Haar-like 特征的Adaboost對象檢測算法,有效克服了傳統(tǒng)PCA 人臉識別中的大小、角度、光照等不利因素。但當人臉有劇烈表情,如大笑、大哭、驚等,會導致該算法的識別率降低。下一步,將在增加核心特征識別權(quán)重,增加新的人臉核心特征,如人臉輪廓、等方面進行進一步探索。
[1] Viola P,Jones M J Robust.Real-Time Face Detection[J].International Journal of Computer Vision,2004,57(2):137-154.
[2] Viola P,Jones M.Rapid Object Detection Using a Boosted Cascade of Simple Features[C]//Proc. IEEE Conf. Computer Vision and Pattern Recognition,2001:511-518.
[3] Kirby M,Sirovich L.Application of the KL Procedure for the Characterization of Human Faces[J].IEEE Tran Pattern Anal Machine Intell,1990(12):103-108.
[4] Turk M,Pentland A. Eigenfaces for Recognition[J]. J Cognitive Neuroscience,1991,3(1):71-86.
[5] Yambor W,Draper B,Beveridge J R.Analysis of PCA-Based Face Recognition Algorithms:Eigenvector Selection and Distance Measures[C]//Second Workshop on Empirical Evaluation Methods in Computer Vision,2000.
[6] 甘玲,朱江.擴展Haar 特征檢測人眼的方法[J]. 電子科技大學學報,2010(2):247-250.
[7] 秦宏偉,孫勁光.基于自適應(yīng)預(yù)處理和PCA 的人臉識別方法的研究[J].計算機工程與應(yīng)用,2011(14):186-188.