林志謀
(廈門海洋職業(yè)技術(shù)學(xué)院)
人臉識別技術(shù)是圖像模式識別與計算機(jī)視覺領(lǐng)域中很重要的一個研究課題, 它在人工智能,機(jī)器學(xué)習(xí),生物識別、安全監(jiān)控、數(shù)碼設(shè)備、商業(yè)貿(mào)易等領(lǐng)域都有著非常廣泛的應(yīng)用.中國外學(xué)者研究出了很多優(yōu)秀的人臉識別算法,比如Turk等提出的PCA算法[1],基于模板匹配的方法[2-3],基于子空間分析的算法[4],還有基于無監(jiān)督學(xué)習(xí)的特征LearningDescriptors算法[5],GaborFace、LBPFace算法[6],以及SRC算法[7]等.Hasan等人提出了基于PCA與SVM聯(lián)合的算法[8],但是精度不夠高,文中提出了一種改進(jìn)的雙曲正切函數(shù)PSO算法進(jìn)行SVM參數(shù)尋優(yōu),同時聯(lián)合PCA和SVM進(jìn)行人臉識別的算法,加快了算法的收斂速度.實驗結(jié)果表明該算法比其他算法有較高的識別精度,有更好的實際應(yīng)用前景.
PCA(Principal Component Analysis),即主成分分析方法[9],PCA的思路是盡量減少數(shù)據(jù)集的維數(shù)[10],同時保持?jǐn)?shù)據(jù)集對方差共享最大的特征.利用PCA變換可以較大幅度地降低人臉數(shù)據(jù)特征的維數(shù),減少圖像中冗余的信息和噪聲,又能保留有效的識別信息.假設(shè)有n個d維空間中的樣本x1,x2,…,xn,其中xi=(xi1,xi2,…,xid)TRd,假設(shè)X為這n個樣本構(gòu)成的數(shù)據(jù)矩陣,即X=(x1,x2,…,xn).假定需要降到m維,即給定m (2)假設(shè)協(xié)方差矩陣為S,計算公式為: (3)計算協(xié)方差矩陣S的前m個最大特征值,對它們按大小進(jìn)行排序,即λ1≥λ2≥…≥λm,ψ1,ψ2,…,ψm,ψj(j=1,2,…,m)∈Rd為它們對應(yīng)的特征向量,由它們構(gòu)成的矩陣φm=(ψ1,ψ2,…,ψm). 利用PCA算法降低了人臉數(shù)據(jù)的維數(shù),接下來就可以利用SVM算法,對提取得到的人臉數(shù)據(jù)進(jìn)行分類處理,就可以確定每個人臉圖像的身份. SVM(Support Vector Machines),即支持向量機(jī),它的主要原理是把數(shù)據(jù)映射到一個高維空間上,使數(shù)據(jù)變稀疏,比較容易找到一個分割面來將數(shù)據(jù)分類,而這個高維的分割面就是超平面.SVM算法的主要目的是找到一個使得數(shù)據(jù)點離這個超平面盡可能遠(yuǎn)的超平面,通過這個超平面進(jìn)行分類的的效果才會好.人臉識別是典型的非線性支持向量機(jī)分類問題,分類的主要流程如下[11]: 假設(shè)輸入的訓(xùn)練數(shù)據(jù)用T表示,T={(x1,y1), (x2,y2),…,(xm,ym)},其中xi∈Rn,yi∈ {-1,1},i=1,2,…,m,步驟如下: (1)選擇核函數(shù)K(xi,yi)和懲罰參數(shù)C,構(gòu)造并求解最優(yōu)化問題: 0≤αi≤C,i=1,2,…,m 使用二次規(guī)劃法,求得最優(yōu)解: (2)計算求向量w*和截距b*,w*可以通過下列式子求得: b*可以通過滿足下列式子的樣本求得: (3)這樣就可以得到最優(yōu)分類面函數(shù): f(x)=sgn{(w*·x)+b*} 常見的SVM參數(shù)選擇方法主要為梯度下降法和網(wǎng)格算法[12],但這些方法有些缺陷,比如尋優(yōu)速度慢或者容易獲得局部最優(yōu)解,而采用粒子群優(yōu)化算法(PSO:Particle Swarm Optimization)則可以克服這些缺陷. PSO算法[13]具有如下優(yōu)點:實現(xiàn)比較容易,有較好的準(zhǔn)確度,可以快速收斂.PSO算法首先在D維搜索空間中[14],隨機(jī)生成N個粒子的初始種群,各個粒子有各自的初始位置并且以一定的速度飛行.假設(shè)第i個粒子的位置用xi表示,速度用vi表示,個體極值用pi表示,群體極值用pg表示.通過下面的兩個公式,PSO算法可以調(diào)整粒子本身的位置和速度: vid=ω·vid+c1r1(pid-xid)+c2r2(pgd-xid) xid=xid+vid 其中c1,c2為學(xué)習(xí)因子,r1,r2為[0,1]范圍內(nèi)的均勻隨機(jī)數(shù),ω為慣性權(quán)重,i=1,2,…N;d=1,2,…D. PSO算法可以通過增大慣性權(quán)重數(shù)值可以提高算法的全局搜索能力,減少慣性權(quán)重數(shù)值可以提高算法的局部搜索能力.要避免陷入局部最優(yōu)同時實現(xiàn)高效搜索的目的,必須設(shè)計合理的慣性權(quán)重.文中引入了一種改進(jìn)的雙曲正切函數(shù)算法來設(shè)計合理的慣性權(quán)重. 傳統(tǒng)的PSO算法中慣性權(quán)重ω一般是隨著迭代次數(shù)線性遞減, 但是經(jīng)過研究發(fā)現(xiàn),在迭代的過程中,迭代次數(shù)t較小的時候,ω的調(diào)整一般希望能夠使粒子早期具有比較強(qiáng)的全局搜索能力,這就要求ω應(yīng)該在初始迭代的時候緩慢減少;迭代次數(shù)t逐漸變大的時候,為了獲得快速的收斂速度,ω的調(diào)整應(yīng)該是減小的速度要加快;迭代次數(shù)很大的時候,ω的調(diào)整一般希望能夠使粒子后期具有比較強(qiáng)的局部搜索能力,這就要求ω應(yīng)該在后期迭代的時候也緩慢減少[14].傳統(tǒng)的線性遞減的慣性權(quán)重ω顯然無法滿足要求,于是文中提出了一種采用改進(jìn)的雙曲正切函數(shù)算法來設(shè)計滿足要求的慣性權(quán)重ω.為了便于表述,引入如下定義: 定義1 雙曲正切函數(shù)定義為如下公式: 定義2 改進(jìn)的雙曲正切函數(shù)定義為如下公式: 式中k為陡降調(diào)整因子,t是當(dāng)前的迭代次數(shù),Tmax為迭代的最大次數(shù). 定義3 改進(jìn)的雙曲正切函數(shù)的慣性權(quán)重ω定義為如下公式: 式中ωmax為最大慣性權(quán)重,ωmin為最小慣性權(quán)重.ω隨t變換如圖1所示. 圖1 權(quán)重ω隨t變換圖 圖中ωmin=0.6,ωmax=0.8,陡降調(diào)整因子k=5,Tmax=50.從圖中可以看出,前期慣性權(quán)重變化緩慢,可以提高前期的全局搜索能力;中期慣性權(quán)重變化加快,可以提高中后期收斂的速度;后期慣性權(quán)重變化又趨于平緩,可以提高后期局部搜索能力.上述參數(shù)可以滿足該次SVM參數(shù)算法優(yōu)化的需求 改進(jìn)的雙曲正切函數(shù)的PSO算法的優(yōu)勢決定了它可以用來對SVM參數(shù)進(jìn)行優(yōu)化.算法的主要流程如圖2所示. 圖2 改進(jìn)的PSO優(yōu)化SVM參數(shù)算法流程圖 文中使用Matlab軟件,采用Ackley測試函數(shù)對改進(jìn)的雙曲正切函數(shù)的PSO算法(tansigPSO)的性能進(jìn)行測試,并和標(biāo)準(zhǔn)的PSO算法、隨機(jī)權(quán)重算法rwPSO[15]做比較,三個算法的相關(guān)參數(shù)保持一致,具體設(shè)置如下:最大迭代次數(shù)設(shè)為50,種群規(guī)模為30,各算法分別獨立運(yùn)行50次.得到最優(yōu)個體適應(yīng)度結(jié)果如圖3所示,采用tansigPSO算法比其他兩個算法有更強(qiáng)的全局搜索能力和更快的收斂速度,它有效的改善了標(biāo)準(zhǔn)PSO算法容易進(jìn)入局部最優(yōu),收斂速度慢的缺點. 圖3 改進(jìn)的雙曲正切的PSO算法最優(yōu)個體適應(yīng)度 為了驗證文中提出的改進(jìn)的基于改進(jìn)的雙曲正切函數(shù)的PSO算法參數(shù)尋優(yōu),同時聯(lián)合PCA和SVM進(jìn)行人臉識別的算法的性能,文中利用Matlab軟件進(jìn)行仿真測試.臺灣大學(xué)林智仁教授等開發(fā)設(shè)計的集成庫LIBSVM[15]內(nèi)置了訓(xùn)練函數(shù)和預(yù)測函數(shù),可以用它來實現(xiàn)SVM算法.文中采用ORL人臉庫來進(jìn)行算法驗證,文中把它們分成兩組,用前8張人臉圖片作為SVM模型訓(xùn)練樣本,后2張圖片作為SVM模型預(yù)測的樣本,算法的主要流程如下: (1)讀入ORL人臉庫所有的圖片,分別用作訓(xùn)練樣本和預(yù)測樣本. (2)利用PCA算法對人臉數(shù)據(jù)庫的訓(xùn)練樣本降維并且提取人臉圖像的特征向量. (3)SVM參數(shù)的優(yōu)化采用改進(jìn)的雙曲正切函數(shù)的PSO算法,從而得到SVM參數(shù)的最優(yōu)解. (4)把第2步得到的人臉圖像的特征向量和第3步得到參數(shù)的最優(yōu)解,輸入到SVM分類器中進(jìn)行訓(xùn)練識別. (5)利用PCA對人臉測試樣本進(jìn)行特征降維,提取人臉圖像的特征向量,然后輸入SVM測試函數(shù)中. (6)比較SVM測試函數(shù)產(chǎn)生的標(biāo)簽和預(yù)測樣本的人臉圖片的標(biāo)簽,得到人臉識別的準(zhǔn)確率. 利用改進(jìn)的雙曲正切函數(shù)PSO算法對LIBSVM人臉識別模型進(jìn)行參數(shù)優(yōu)化的適應(yīng)度收斂曲線如圖4所示,最大進(jìn)化代數(shù)為200,采用高斯核函數(shù)RBF作為SVM的核函數(shù).可以得到最優(yōu)參數(shù)為懲罰系數(shù)c=0.082963,核函數(shù)參數(shù)g=0.01.利用tansigPSO算法尋找得到的最優(yōu)參數(shù)訓(xùn)練LIBSVM模型,在利用人臉圖像訓(xùn)練集進(jìn)行訓(xùn)練的過程中人臉識別的精度為96.25%. 圖4 改進(jìn)的tansigPSO算法的適應(yīng)度曲線 然后再利用訓(xùn)練好的模型對人臉數(shù)據(jù)庫圖像的測試集進(jìn)行預(yù)測,預(yù)測錯誤有3幅圖像,預(yù)測的精度也為96.25%,如圖5所示. 圖5 人臉圖像測試集的實際分類和預(yù)測分類圖 文中算法(tansigPSO +PCA+SVM)與其他算法精度比較見表1,常規(guī)的PCA+SVM算法識別精度為93.5%,文獻(xiàn)[16]采用KICA+SVM的識別方法,識別精度為93%,文獻(xiàn)[17]采用KICA和Relief人臉識別算法,達(dá)到的識別精度為91.4%.與這些算法比較,文中提出的算法識別精度更高,達(dá)到了96.25%,明顯優(yōu)于其他算法. 表1 文中算法與其他人臉識別算法精度比較 文中采用改進(jìn)的雙曲正切函數(shù)的PSO算法獲得SVM分類模型的最優(yōu)參數(shù),再聯(lián)合PCA算法和SVM算法對人臉進(jìn)行識別,具有較高的準(zhǔn)確率.在模型預(yù)測精度達(dá)到了96.25%,明顯優(yōu)于常規(guī)的PCA和SVM聯(lián)合的算法,表明運(yùn)用改進(jìn)的雙曲正切函數(shù)的PSO算法確實提高了模型在人臉識別上的精度,加快了算法的收斂速度,增加了可操作性,具有較為廣闊的應(yīng)用空間.1.2 SVM算法主要原理
2 改進(jìn)的PSO優(yōu)化算法和SVM參數(shù)尋優(yōu)
2.1 PSO算法
2.2 改進(jìn)的雙曲正切函數(shù)的PSO算法和SVM參數(shù)尋優(yōu)
3 文中算法的主要流程
4 實驗結(jié)果和分析
4.1 文中算法性能測試
4.2 與其他人臉識別算法比較
5 結(jié)束語