付康 陳中舉 杜友福

摘要:針對人臉圖像的像素維度太高,不利于機器識別的問題,提出了基于PCA和SVM的人臉識別系統。以LFW數據集為數據源,使用Python編程語言進行測試。對數據進行預處理后,使用PCA算法對圖像數據降維,最后利用SVM進行模型的訓練與測試,獲得實驗結果。采用網格搜索的方法獲取SVM的最優參數,保證了實驗結果的準確性。
關鍵詞:PCA;SVM;人臉識別;Python;機器學習
中圖分類號:TP393 文獻標識碼:A
文章編號:1009-3044(2019)07-0209-03
Abstract: Aiming at the problem that the pixel dimension of the face image is too high, which is not conducive to machine recognition, a face recognition system based on PCA and SVM is proposed. The LFW data set is used as the data source and the Python programming language is used to test. After preprocessing the data, the PCA algorithm is used to reduce the dimensionality of the image data. Finally, the SVM is used to train and test the model, and the experimental results are obtained. The grid search method is used to obtain the optimal parameters of the SVM, which ensures the accuracy of the experimental results.
Key words:PCA;SVM;face recognition;Python;machine learning
人臉識別是圖像模式識別與計算機視覺領域的一個重要研究內容,它根據人類的面部特征(幾何或統計特征等)來進行身份鑒別。1965年,Bledsoe等人在PanoramicResearchInc上發表了第一篇人臉識別的報告[1],他們用臉部器官間的間距等參數作為特征,構建了一個半自動人臉識別系統,開始了真正意義上的人臉識別研究。1965年至1990年,基于幾何結構特征的方法和基于模板匹配的方法是人臉識別的主要方法。1991年,麻省理工學院的Turk等人提出了特征臉Eigenface[2],該方法是后來其他大多數算法的基準。1992年,Brunelli等通過實驗得出基于模板匹配的方法優于基于幾何結構特征的方法[3]的結論。1997年,Belhumeur等人提出了基于子空間分析的人臉識別算法Fisherface[4],它先通過主成份分析方法將人臉降維,然后采用線性判別分析LDA期望獲得類間差異大且類內差異小的線性子空間,所以它無法對復雜的非線性模型進行建模。到了21世紀,出現了許多對局部領域像素亮度或顏色值進行手工特征提取的方法,例如對人臉比較有效的基于無監督學習的特征LearningDescriptors[5]與GaborFace、LBPFace[6]等。
目前,大多數情況下計算機讀取的是一張靜態二維圖片,這些圖片本質上是由多維數字矩陣組成,如一張256×256的RGB彩色圖片就有196608個數字。針對這種情況,計算機可以使用人類設計的算法從圖像中提取特征或者學習到特征。
以LFW數據集為數據源,首先將數據分為訓練集與測試集,使用PCA(主成分分析)對訓練集的數據進行降維,獲得人臉特征向量(特征臉)。然后將訓練數據放入SVM(支持向量機)中,利用網格搜索的方法獲取最優參數,得到一個支持向量分類器。最后使用支持向量分類器對測試集數據進行預測,得到準確率。
1 相關技術
1.1 PCA降維
降維的過程實質是一個線性變換的過程,它的核心思想是將數據沿方差最大方向投影,使它們更易于區分。PCA(主成分分析)在減少數據集維數的同時,保持著數據集中對方差貢獻最大的特征[7]。
圖片的本質是多維數據矩陣,在Python程序中讀取下載完畢的數據,將其保存為特征向量矩陣[X],其中,矩陣的每一行是一個圖像實例,每一列是一個特征值。使用PCA算法首先將每一行的數據進行零均值化處理并且計算協方差矩陣[Cov=1mXXT]。然后,計算協方差矩陣[Cov]的特征值以及它們對應的特征向量。假設需要將數據降維到k維,那么根據特征值的大小將特征向量從上到下進行排列,取前k行組成新的矩陣Q,最后將矩陣Q與矩陣X相乘之后,便獲得人臉圖像數據降維到k維的數據。
1.2支持向量分類器
SVM(支持向量機)是一種常用的機器學習分類方法,它通過構造最優超平面,使分類誤差達到最小。針對非線性分類問題,SVM通過核函數的非線性變換將輸入空間變換到一個高維空間,然后在這個新空間求得最優分類面[8]。實際上,SVM就是找到一個距離分類樣本點間隔最大的分類超平面[wx+b=0]。針對多分類問題,也可以將其分解為多個二分類問題。人臉識別是典型的非線性支持向量機分類問題,分類流程如下:
使用Python中sklearn包的SVM方法實現分類的過程。其中,kernel的值設為rbf,表示核函數的類型為高斯核函數;class_weight的值設為balanced,表示每個類的權重是它出現頻數的倒數。
1.3網格搜索
在人臉識別問題中,選擇高斯核函數來構造支持向量分類器時,參數[σ]的選擇十分重要。在高維特征空間中,參數[σ]的大小會決定數據分布的復雜程度。同樣地,懲罰參數C的選擇也會對分類器的性能產生影響。遍歷多種參數組合,選擇其中表現最好的組合,是參數選擇中常用的一種方法。因為這種方法像網格一樣交叉,所以被形象地稱為網格搜索。
使用Python的GridSearchCV方法可以實現網格搜索,其中的參數C表示對分類錯誤的懲罰程度,C越高越不能容忍誤差,易過擬合;C越低,分類器對誤差的容忍度越高,易欠擬合。GridSearchCV參數中的gamma=[-12σ2],gamma越大,[σ]越小,對應的支持向量也就越少,gamma值越小則支持向量越多。
2 基于PCA和SVM的人臉識別實驗
2.1實驗數據來源
實驗數據來自LFW數據集,它是2010~2015年知名領導人的一系列照片。在編寫Python程序時,使用sklearn.dataset中的fetch_lfw_people進行數據的加載,選擇最少擁有80張照片的類別。圖片總張數為1140張,特征數為1850個,類的個數為5,數據以數組的形式被加載之后,將數據維度降為150。通過調用train_test_split方法將數據分為訓練數據集與測試數據集兩個部分,訓練數據集占80%,測試數據集占20%。
2.2實現流程
使用Python語言來完成基于PCA和SVM的人臉識別系統設計,具體實現流程如圖1所示:
3 實驗結果
3.1測試結果
在完成支持向量分類器的訓練之后,使用測試集數據對分類器的準確率進行測試,結果如表1所示:
其中,查準率(P)表示所有預測為此人的樣本中,實際上為此人的百分比,越高越好;查全率(R)表示所有實際上為此人的樣本中,成功預測為此人的百分比,越高越好。F1分數=[2PR(P+R)],當F1分數較高時,分類器的表現更好。由表1可知F1分數最后為0.90,所以此分類器具有較好的表現。
3.2效果展示
4 總結
本文利用PCA技術對人臉圖像進行降維,并提取重要特征;使用SVM技術訓練機器識別不同的人臉圖片,將它們進行分類。實驗結果表明,基于PCA與SVM的人臉識別系統在特定的人臉庫中進行人臉識別是可行的。通過網格搜索進行參數選擇,提高了分類器的準確率,要進一步提高準確率,還可以通過選取更具區分力的特征來實現。所以,可以圍繞不同特征維數對識別準確率的影響來展開后續研究。
參考文獻:
[1] BledsoeW W.Man-machinefacialrecognition[J].Rep.PRI,1966,22.
[2] Turk M,Pentland A.Eigenfacesforrecognition[J].Journalofcognitiveneuroscience,1991,3(1):71-86.
[3] Brunelli R,PoggioT.Facerecognition:Featuresvel usternplates[J].IEEEtransactionsonpatternanalysisandmachineintelligence,1993,15(10):1042-1052.
[4] Belhumeur P N,Hespanha J P,Kriegman D J.Eigenfacesvs.fisherfaces:Recognitionusingclassspecificlinearprojection[J].IEEETransactionsonpatternanalysisandmachineintelligence,1997,19(7):711-720.
[5] Winder S A J,Brown M,Learninglocalimagedescriptors[C]//ComputerVisionandPatternRecognition,2007.CVPR07.IEEEConferenceon.IEEE.2007:1-8.
[6] Chen D,Cao X,Wen F,et al.Blessingofdimensionality:High—dimensionalfeatureanditsefficientcompressionforfaceverification[C]//ProceedingsoftheIEEEConferenceonComputerVisionandPattern Recognition,2013:3025-3032.
[7] 李德福,黃新.基于二維PCA和SVM算法的人臉識別系統[J].桂林電子科技大學學報,2017(5):391-395.
[8] 楊梅芳,石義龍.基于2DPCA+PCA與SVM的人臉識別[J].信息技術,2018(2):32-36.
【通聯編輯:唐一東】