張持健,劉 雪,張 賀,張燕習
(安徽師范大學 物理與電子信息學院,安徽 蕪湖 241000 )
人臉識別是基于人的五官信息提取面部特征,用以進行身份辨識的智能識別技術(shù)。1965年,Chan和Bledsoe設計了第一個人臉識別系統(tǒng),所采用的主要方法是基于人臉幾何結(jié)構(gòu)特征辨別法,從而進行對人體的身份識別。該方法提取并分析面部剪影曲線的結(jié)構(gòu)特征; 1991年美國MIT的Turk和Pentland提出著名的特征人臉識別方法,使用特征臉與歸一化的協(xié)相關量作為人臉識別的性能測試基準算法,從而進一步提高了人臉識別的準確度。而人臉識別的應用發(fā)展則是由美國 “911事件”推動,2006年FRV國際測試走進人們的視線,2008年北京奧運會在安保方面應用了大規(guī)模的人臉識別技術(shù)[1]。
因此,人臉識別不僅是當今科學家們研究的熱點,也是應用領域經(jīng)久不衰的重要研究課題。但是,隨著科學技術(shù)的發(fā)展,在數(shù)據(jù)集越來越紛亂的當下,人臉識別也逐漸由單一式研究發(fā)展為多項式研究,從而衍生出大數(shù)據(jù)集的人臉識別系統(tǒng)和小數(shù)據(jù)集的人臉識別算法2個分支方向。在小數(shù)據(jù)集的基礎上,存在一些經(jīng)典的人臉識別研究方法。
文獻[2]提出基于PCA特征提取和距離哈希K近鄰分類的人臉表情識別,這種方法主要利用了PCA對高維數(shù)據(jù)的特征提取,驗證了PCA主成分分析在多維數(shù)據(jù)中的應用效果十分優(yōu)秀。但PCA算法和K近鄰算法的結(jié)合在小數(shù)據(jù)集上的應用效果較為良好,而在多個特征多人表情識別中則效果不盡人意。文獻[3]提出PCA算法和SVM支持向量機算法的人臉識別,在ORL數(shù)據(jù)庫中識別效果良好。但因為作者構(gòu)建多類SVM算法時,選取的核函數(shù)不同識別率也隨之改變,因此需要進行多次試驗以求得最優(yōu)核函數(shù)以及其他相關參數(shù),耗費了大量的實驗時間。
本文提出一種基于PCA主成分特征提取和數(shù)據(jù)降維,聯(lián)合可自主選取最優(yōu)參數(shù)的SVC非線性支持向量機的組合學習器,用于精準分類并節(jié)省人工選取參數(shù)時間成本的人臉識別應用。實驗結(jié)果表明,本文提出的組合學習器在經(jīng)典的ORL和WILD數(shù)據(jù)庫中不僅識別精度高,和同類方法相比該學習器識別時間成本更低。
在圖像數(shù)據(jù)的原始高維空間中,包含著的冗余信息和噪聲信息,會在一些實際應用中(例如圖像識別或圖像處理等過程中)造成一定的誤差干擾,不僅增加了計算的復雜度,而且降低了識別效果的準確率。研究者期望通過對這樣的高維數(shù)據(jù)使用降維技術(shù),進行空間變換處理,以減少冗余信息造成的誤差,從而提高識別的準確度。主成分分析 (PCA)是多類變量降維處理與分析研究問題中最早出現(xiàn)的基礎理論之一,它起源于通信與系統(tǒng)理論中的 K-L散度[1]。PCA通過一種線性變換將高維樣本數(shù)據(jù)投影到低維空間中生成對應低維樣本數(shù)據(jù),并發(fā)現(xiàn)一組比原始的像素基向量更能有效表示輸入數(shù)據(jù)的基函數(shù)[4]。因此,只需要保留一部分特征,PCA就能揭示某些復雜數(shù)據(jù)集中的潛在隱含信息。即描述對象的最顯著的特征[1]。人的面部具有多種顯著的人臉特征,在PCA的基礎上可以形成部分特征提取的PCA人臉識別[4]。
本次實驗中,通過使用PCA的最近重構(gòu)性來進行圖像數(shù)據(jù)的降維處理。
(1)
(2)
(3)
PCA算法流程為:
通過交叉驗證法選取最佳低維空間維數(shù)為d;
② 過程: 對所有樣本進行中心化操作:
(4)
至此,就是主成分分析的優(yōu)化目標,即通過對樣本數(shù)據(jù)進行協(xié)方差矩陣的特征值分解,從而得到經(jīng)原數(shù)據(jù)集下降維的新數(shù)據(jù)集,并且把這個已經(jīng)降維的新數(shù)據(jù)集用于接下來的非線性支持向量機svc算法中,作為數(shù)據(jù)輸入。
在使用ORL數(shù)據(jù)庫進行實驗時,輸入的樣本數(shù)據(jù)大小為m*n,m,n分別為圖片數(shù)據(jù)的長和寬。令d為輸入的維數(shù),一般情況下d=m*n。d'則為通過PCA處理后的數(shù)據(jù)維數(shù),通常使用交叉驗證得到最優(yōu)的降維后維數(shù)。輸入的訓練集樣本為:x=[x1,x2,...,xN],共N個樣本。
支持向量機簡單來說,它是一種二分類模型。SVM在小數(shù)據(jù)集上比較容易抓取數(shù)據(jù)和特征之間的非線性關系,因此SVM在一般情況下可以解決部分非線性問題,并且避免神經(jīng)網(wǎng)絡結(jié)構(gòu)選擇和陷入局部最優(yōu)缺陷。但是由于SVM對于有殘缺的樣本數(shù)據(jù)和一些非線性問題并沒有通用的解決方案。研究者發(fā)現(xiàn)采用核函數(shù)后,支持向量機可以用于正規(guī)的非線性分類。本文采用的支持向量機SVC就是python中的非線性分類支持向量機。當訓練數(shù)據(jù)不可分時,通過使用核函數(shù)學到一個非線性支持向量機[4]。
因此2類樣本的幾何間隔最大化從而等價于2類樣本間隔最小化:
(5)
在此引入拉格朗日乘子αi:
(6)
得到目標函數(shù)對偶形式:
(7)
分類決策函數(shù)為:
(8)
在SVM支持向量機的基礎上,給定核函數(shù),利用求解線性分類問題的方法求解非線性分類問題的支持向量機。非線性分類SVC可以支持多分類應用,并且有多個核函數(shù)提供選擇。如線性核函數(shù)Linear、多項式核函數(shù)poly、RBF高斯核徑向基函數(shù)以及sigmoid核函數(shù)。
本文算法中,使用的是RBF的高斯徑向基核函數(shù)(Gaussian Radial Basis Kernel Function):
(9)
(10)
式中,C為懲罰項系數(shù),ε為松弛變量。
引入拉格朗日乘子后的對偶問題目標函數(shù)為:
(11)
分類決策函數(shù)變?yōu)椋?/p>
(12)
SVC的主流算法是O(n)2,因此,當出現(xiàn)大數(shù)據(jù)集時,SVC明顯計算量爆增。在本次實驗中使用SVC中的高斯徑向基核函數(shù)來進行分類實驗。高斯核徑向基函數(shù)中的參數(shù)γ和C懲罰項無法通過概率方法進行計算,只能通過窮舉實驗求出。這樣就更增加了實驗中的時間成本和計算量。因此,本文提出改進型的SVC算法,即結(jié)合網(wǎng)格搜索法實現(xiàn)算法自動尋優(yōu)的SVC算法。
2.2.1 網(wǎng)格搜索法原理
網(wǎng)格搜索法是自動化調(diào)整參數(shù)值中的常見技術(shù)之一。自動化調(diào)參進行參數(shù)優(yōu)化省去了人工調(diào)參的繁瑣和經(jīng)驗不足。因此,在PCA和SVC算法中加入網(wǎng)格搜索技術(shù),使得組合的學習器通過調(diào)節(jié)每一個參數(shù)來跟蹤評分結(jié)果,在運行過程中自動進行交叉驗證,最終使得學習器的效果性能為最佳[5]。
網(wǎng)格搜索法,將待搜索參數(shù)gamma(γ)和C在一定的空間范圍內(nèi)劃分成網(wǎng)格,先使用大的步長對網(wǎng)格中的參數(shù)進行大范圍內(nèi)的粗略搜索,在確定一個最優(yōu)參數(shù)區(qū)間后,使用小步長再進行精細搜索[6]。使用網(wǎng)格搜索算法不但保證了搜索參數(shù)過程中的準確度,也節(jié)省了搜索時間。
SVC算法流程如下:
① 輸入
C≥αi≥0,i=1,2,...,N,
(13)
② 計算
(14)
(15)
③ 構(gòu)造分類決策函數(shù)
(16)
④ 加入網(wǎng)格搜索算法,求得高斯核函數(shù)最佳參數(shù)gamma和C。
實驗利用python編程實現(xiàn),使用Olivetti實驗室的ORL人臉庫和從外部網(wǎng)站Labeled Faces in the Wild獲取的人臉識別數(shù)據(jù)庫。
ORL人臉庫數(shù)據(jù)集中一共有400幅人臉圖像(其中總共包含40個人,每個人各有10幅人臉圖,每幅圖像大小為112 * 92,每幅圖像的維數(shù)等于10 304)。
ORL數(shù)據(jù)集中的面部表情和細節(jié)有不同程度的改變,因此導致數(shù)據(jù)集中同一個人的人臉姿態(tài)也有不同程度的變化。對于某些個體,圖像在不同時間拍攝并且改變照明和面部細節(jié),所有的圖像均采用黑色均勻背景,個體處于直立的正面位置。
Labeled Faces in the Wild集是帶標記的人臉圖像,里面包含了數(shù)千張公開的人臉照片。每個圖像包含(62*47),接近3 000像素。
本次實驗環(huán)境為Windows 10 系統(tǒng),處理器為i5。編輯學習器使用的語言為python 3.7版本,搭建的識別系統(tǒng)運行平臺為PyCharm。
① PCA特征提取
首先,將ORL人臉庫中400張圖像標注劃分為2類數(shù)據(jù):訓練數(shù)據(jù)集和測試數(shù)據(jù)集。讀進訓練數(shù)據(jù)集中隨機的300張人臉圖像,使用PCA對其進行特征提取和降維的預處理。實驗將PCA主成分的數(shù)據(jù)確定為150維,經(jīng)過PCA處理,訓練集中每個人的臉樣本特征向量由102 304維降維150維。
圖1為原圖和pca提取特征后的圖片。
圖1 原始圖像與PCA特征提取后的圖像對比
② 構(gòu)建高斯徑向基核函數(shù)的非線性支持向量機
在多類SVC訓練階段,每一對分類直接定義一個二類非線性支持向量機,一共有N*(N-1)/2個類別的非線性支持向量機組成一個多分類的非線性支持向量機。同時,指定每個類別的權(quán)重是它出現(xiàn)的頻數(shù)的倒數(shù)。在分類階段,通過投票確定其類別。
③ 網(wǎng)格搜索
通過網(wǎng)格搜索和交叉驗證確定SVC最佳參數(shù)Gamma=0.005,C=10,對ORL測試集中的10個人的100幅圖片進行分類,識別率為:Train_score:1.0,Test_Score:0.96。
在Wild數(shù)據(jù)集上做分類,識別率為:Train_Score:1.0,Test_Score:0.85。其中,訓練分數(shù)為1.0,說明該分類器已達到在訓練數(shù)據(jù)上百分百的分類準確率;測試分數(shù)為0.96,說明該分類器在用于驗證系統(tǒng)模型數(shù)據(jù)集上的準確率為96%。
④ 本文所用的學習器和其他研究者所用的方法在WILD數(shù)據(jù)集上準確率和時間成本對比如表1所示。
表1 人臉識別方法效果比對
由表1可知,本文提出的PCA&SVC算法識別分類器與其他學者提出的PCA&SVM算法相比,對數(shù)據(jù)集的分類準確率有所提高,且節(jié)省了人工選取參數(shù)的時間成本;與另外一種常用的PCA&KNN分類器相比,雖然訓練分類器所用時間稍顯過久,但準確率有了質(zhì)的飛躍,而單獨的非線性支持向量機做人臉識別則準確率更為低下。
本次實驗提出基于PCA和SVC算法相結(jié)合的人臉識別算法,在應用小數(shù)據(jù)集的人臉識別上效果比單獨的SVC分類器要好,在應用數(shù)據(jù)量大的數(shù)據(jù)集上效果略差。但總體來說,運算速度和精度都比單獨的SVC分類器要有所提升。相比文獻[2]提出的PCA和K近鄰的學習器組合來說,本文提出的組合學習器效果更優(yōu),而相對于文獻[1]提出的PCA和SVM的識別算法,本文節(jié)省了大量的時間成本。
隨著科學技術(shù)的進步和智能化的發(fā)展,人臉識別的應用將愈來愈廣泛,而對人臉識別的精度也將成為一個研究熱點。本文針對其他方法的參數(shù)尋優(yōu)時間過程提出了改進型SVC算法,經(jīng)試驗證明有良好的效果,而且準確度也得以保持。存在的不足是本文提出的算法準確度仍有可提升的空間,對本算法進行研究和改進將是接下來的實驗目標。