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