童小念,文衛(wèi)蔚
(中南民族大學(xué)計(jì)算機(jī)科學(xué)學(xué)院,武漢430074)
人臉識(shí)別技術(shù)是利用計(jì)算機(jī)對(duì)人臉圖像進(jìn)行分析,從中提取有效信息以辨認(rèn)身份的一門(mén)技術(shù),相對(duì)于指紋識(shí)別、視網(wǎng)膜和虹膜掃描等其他基于生物特征識(shí)別的技術(shù),它更直觀、更容易鑒別,被廣泛地應(yīng)用于證件識(shí)別、門(mén)禁監(jiān)控和視頻會(huì)議中.隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,移動(dòng)環(huán)境下將人臉識(shí)別作為身份認(rèn)證的應(yīng)用場(chǎng)合也日益趨多,已成為當(dāng)前的一個(gè)研究課題.
可是,移動(dòng)互聯(lián)網(wǎng)中的人臉識(shí)別計(jì)算受到網(wǎng)絡(luò)速度以及移動(dòng)終端電池續(xù)航能力等諸多因素的限制,其大量樣本數(shù)據(jù)的復(fù)雜計(jì)算不適合在移動(dòng)終端進(jìn)行.隨著云計(jì)算技術(shù)的提出,云計(jì)算服務(wù)端可以提供很好的存儲(chǔ)與計(jì)算能力,移動(dòng)互聯(lián)網(wǎng)中的諸多應(yīng)用也都趨向于云計(jì)算方向發(fā)展.因此,探討在移動(dòng)互聯(lián)網(wǎng)環(huán)境下應(yīng)用云計(jì)算方法進(jìn)行人臉識(shí)別,有很好的實(shí)用意義.
支持向量機(jī)(SVM)是一種基于統(tǒng)計(jì)學(xué)理論的學(xué)習(xí)算法[1],它以結(jié)構(gòu)風(fēng)險(xiǎn)最小化原理為基礎(chǔ)[2],通過(guò)構(gòu)造最優(yōu)超平面對(duì)未知樣本進(jìn)行分類(lèi).支持向量機(jī)能夠有效地克服“維度災(zāi)難”問(wèn)題,在文本分類(lèi)、生物信息、圖像分類(lèi)等領(lǐng)域有很好的應(yīng)用.MapReduce[3]是由Google提出的一種應(yīng)用于云計(jì)算的編程模型,它能夠提供較強(qiáng)的并行處理能力,在機(jī)器學(xué)習(xí)的過(guò)程中,可達(dá)到減少訓(xùn)練時(shí)間的目的.本文利用MapReduce模型訓(xùn)練支持向量機(jī)來(lái)進(jìn)行人臉識(shí)別,旨在加速支持向量機(jī)的人臉學(xué)習(xí)訓(xùn)練時(shí)間,以適應(yīng)移動(dòng)環(huán)境下的人臉識(shí)別要求.
人臉特征表示方法主要有基于幾何特征的表示方法與基于統(tǒng)計(jì)特征的表示方法[4].基于幾何特征的表示方法通過(guò)對(duì)人臉特征例如眼睛、鼻子、嘴巴等部位的相對(duì)位置進(jìn)行提取,其效果的好壞依賴于是否存在滿足識(shí)別要求的精確的人臉特征檢測(cè)機(jī)制,所以到目前為止對(duì)人臉特征的精確檢測(cè)仍然比較困難.而基于統(tǒng)計(jì)特征的識(shí)別方法不僅僅針對(duì)人臉的某一具體幾何特征,它還從整個(gè)人臉的角度利用統(tǒng)計(jì)原理從多張人臉中提取它們的共有特征,利用這些特征進(jìn)行人臉識(shí)別.相對(duì)于人臉幾何特征識(shí)別,人臉統(tǒng)計(jì)特征降低了特征描述的困難,因此基于統(tǒng)計(jì)特征的人臉表示方法越來(lái)越得到重視,并得到了廣泛應(yīng)用.本文采用主成分分析(PCA)[5]進(jìn)行人臉特征提取,PCA是一種掌握事物主要矛盾的統(tǒng)計(jì)分析方法,它的特點(diǎn)是將主要影響因素從復(fù)雜的多元事物中分離,使復(fù)雜的問(wèn)題簡(jiǎn)化.
PCA 由 K-L 變換[6,7]實(shí)現(xiàn)數(shù)據(jù)降維,對(duì)于一幅 l×h的人臉圖像,PCA將其構(gòu)造成M=l×h維的列向量,M即為人臉向量的維度,訓(xùn)練樣本集的總體散布矩陣如公式(1)所示.
公示(1)中,μ為樣本集的平均向量,N為訓(xùn)練樣本總數(shù)(N<M),xk為第k個(gè)訓(xùn)練樣本的圖像向量,令:
構(gòu)造矩陣Q=XTX,則矩陣St最多有M個(gè)特征值與特征向量,矩陣Q最多有N個(gè)特征值與特征向量.根據(jù)奇異值分解定理,St和Q的前N個(gè)最大的特征值是相同的,首先通過(guò)Q矩陣計(jì)算出其特征值λ1≥λ2≥…≥λN及對(duì)應(yīng)的標(biāo)準(zhǔn)正交特征向量u1,u2,…,un,然后根據(jù)公式(3)計(jì)算St中前N個(gè)最大的特征值對(duì)應(yīng)的標(biāo)準(zhǔn)正交特征向量v1,v2,…,vN.
對(duì)于樣本x,主成分特征如公式(4)所示.
如此將原圖像從M維下降到維,維的投影系數(shù)則作為人臉圖像的特征向量輸入到分類(lèi)器進(jìn)行識(shí)別.
支持向量機(jī)(SVM)是由 Corinna Cortes和Vapnik等人首先提出的[8],它由統(tǒng)計(jì)學(xué)習(xí)理論發(fā)展而來(lái),是一種新的機(jī)器學(xué)習(xí)算法.
支持向量機(jī)方法首先需要構(gòu)造最優(yōu)超平面,支持向量機(jī)使一組高維向量在超平面作用下進(jìn)行分隔以達(dá)到距離最大化.在這個(gè)過(guò)程中,需要通過(guò)適當(dāng)?shù)暮撕瘮?shù)(Kernel Function)將兩組不同類(lèi)別的向量組在高維空間分散開(kāi),然后在這個(gè)新空間求最優(yōu)分類(lèi)面.
設(shè)線性可分訓(xùn)練集樣本為S=((x1·y1),(x2·y2),…,(xl·yl),其中 xi∈ Rd;yi∈ (1,- 1),為了使所有樣本能夠被一個(gè)超平面正確分開(kāi),必須滿足公式(5).
利用拉格朗日優(yōu)化方法,可將上述問(wèn)題轉(zhuǎn)化為對(duì)偶問(wèn)題,αi為原問(wèn)題中對(duì)應(yīng)每個(gè)約束條件的拉格朗日乘子:
其中C>0作為對(duì)線性不可分樣本的分類(lèi)錯(cuò)誤懲罰因子,求解這個(gè)二次規(guī)劃問(wèn)題,可以從訓(xùn)練樣本中得到一系列對(duì)應(yīng)αi≠0的向量,這些向量作為支持向量決定分類(lèi)面.
傳統(tǒng)的支持向量機(jī)只能解決兩分類(lèi)的問(wèn)題,而人臉識(shí)別是多分類(lèi)問(wèn)題,因此針對(duì)人臉識(shí)別需要使用多分類(lèi)的支持向量機(jī).目前主要有“一對(duì)多”分類(lèi)法與“一對(duì)一”分類(lèi)法.
“一對(duì)多”分類(lèi)法是由 Vapnik[9]提出的,它的主要思想是對(duì)訓(xùn)練集中的N類(lèi)樣本訓(xùn)練N個(gè)支持向量機(jī),在對(duì)識(shí)別第i類(lèi)的樣本SVM進(jìn)行訓(xùn)練時(shí),該類(lèi)樣本為正樣本,其它不屬于第i類(lèi)樣本的樣本作為負(fù)樣本.在進(jìn)行分類(lèi)判別的過(guò)程中將待識(shí)別的特征輸入每個(gè)分類(lèi)器,輸出值最大的分類(lèi)器對(duì)應(yīng)識(shí)別結(jié)果.“一對(duì)多”分類(lèi)法具有實(shí)現(xiàn)簡(jiǎn)單、訓(xùn)練時(shí)間短、容易進(jìn)行類(lèi)別擴(kuò)展等優(yōu)點(diǎn),相對(duì)“一對(duì)一”分類(lèi)法只需要較少的分類(lèi)器數(shù)量,但是由于訓(xùn)練樣本數(shù)量間的不均衡使得“一對(duì)多”分類(lèi)法的泛化能力較弱.
“一對(duì)一”分類(lèi)法在N類(lèi)樣本間兩兩構(gòu)造分類(lèi)器,因此該方法對(duì)于N類(lèi)的樣本總共需要訓(xùn)練N(N-1)/2個(gè)分類(lèi)器[10].在進(jìn)行判別的過(guò)程中,“一對(duì)一”分類(lèi)法采用投票的方式取出現(xiàn)次數(shù)最多的結(jié)果作為識(shí)別結(jié)果.“一對(duì)一”分類(lèi)法中構(gòu)造單個(gè)支持向量機(jī)的過(guò)程相對(duì)比較簡(jiǎn)單,但是相比“一對(duì)多”分類(lèi)法,其需要構(gòu)造的總分類(lèi)器的數(shù)目較多,隨著類(lèi)別的增加以平方增長(zhǎng),分類(lèi)的速度也會(huì)隨之變慢.
利用支持向量機(jī)進(jìn)行人臉識(shí)別,降低機(jī)器學(xué)習(xí)的訓(xùn)練時(shí)間開(kāi)銷(xiāo)是一個(gè)重要的問(wèn)題.通過(guò)MapReduce提供的并行處理能力,能夠減少訓(xùn)練時(shí)間的開(kāi)銷(xiāo).
MapReduce將訓(xùn)練數(shù)據(jù)集分為多個(gè)子集,針對(duì)子集開(kāi)發(fā)多級(jí)SVM,即通過(guò)指定的map函數(shù)并行處理各個(gè)子集,再通過(guò)Reduce函數(shù)對(duì)分塊處理的結(jié)果按照特定的規(guī)則進(jìn)行歸并處理,得到新的SVM.MapReduce系統(tǒng)能夠自動(dòng)處理數(shù)據(jù)的分塊、分配與調(diào)度等問(wèn)題,降低了使用難度.
如上所述,MapReduce由兩個(gè)執(zhí)行階段組成:Map階段與Reduce階段.在Map階段通過(guò)用戶指定一個(gè)Map函數(shù)將輸入的鍵值對(duì)轉(zhuǎn)化為一系列的中間鍵值對(duì)以<key,value>的形式輸出,具有相同key值的鍵值對(duì)會(huì)交由相應(yīng)的Reduce函數(shù)處理.在Reduce階段,對(duì)接收到的<key,value>鍵值對(duì)規(guī)約為<key,list(values)>鍵值對(duì)的形式,對(duì)每個(gè) <key,list(values)>鍵值對(duì)調(diào)用reduce方法并輸出結(jié)果.
為了在MapReduce模型下訓(xùn)練支持向量機(jī),考慮對(duì)于識(shí)別任務(wù)最終決定分類(lèi)面的是支持向量,而且處于兩個(gè)最優(yōu)超平面間的樣本對(duì)于支持向量機(jī)的調(diào)節(jié)具有重要作用,本文首先將訓(xùn)練樣本集劃分為若干個(gè)小的訓(xùn)練樣本集,在Map任務(wù)中針對(duì)每個(gè)小樣本集訓(xùn)練得到支持向量機(jī),然后選取每個(gè)支持向量機(jī)對(duì)應(yīng)的最優(yōu)超平面附近的樣本,即0<αi<C的樣本數(shù)據(jù)(xi,yi)作為 Reduce的輸入,并在 Reduce階段訓(xùn)練一個(gè)新的支持向量機(jī)來(lái)作為最終使用的決策函數(shù).利用MapReduce訓(xùn)練支持向量機(jī)的算法如圖1所示.
圖1 利用MapReduce訓(xùn)練支持向量機(jī)Fig.1 Using MapReduce to train Support Vector Machine
對(duì)于人臉識(shí)別這種多分類(lèi)問(wèn)題,利用本文算法針對(duì)“一對(duì)多”方法下訓(xùn)練支持向量機(jī)的步驟如下:
Step 1 對(duì)含有類(lèi)訓(xùn)練樣本的數(shù)據(jù)標(biāo)號(hào)并規(guī)約為<key,value>格式的數(shù)據(jù),其中key值為樣本的類(lèi)別,value為樣本特征數(shù)據(jù).
Step 2 將<key,value>格式的數(shù)據(jù)輸入Map函數(shù)進(jìn)行處理,在每個(gè)Map函數(shù)中對(duì)輸入數(shù)據(jù)求解最優(yōu)化問(wèn)題得到個(gè)支持向量機(jī),輸出格式為<key,value>格式的中間數(shù)據(jù),其中key為支持向量機(jī)類(lèi)別,該類(lèi)別對(duì)應(yīng)被支持向量機(jī)分為正樣本的類(lèi)別,value為經(jīng)過(guò)標(biāo)記的支持向量,標(biāo)記為1表示在該支持向量對(duì)應(yīng)的支持向量機(jī)中該支持向量對(duì)應(yīng)的訓(xùn)練樣本為正樣本,標(biāo)記為-1則表示該支持向量對(duì)應(yīng)的訓(xùn)練樣本為負(fù)樣本.
Step 3 對(duì)中間鍵值對(duì)數(shù)據(jù)進(jìn)行Partition階段操作將具有相同key值的數(shù)據(jù)發(fā)送到相同的Reduce節(jié)點(diǎn)進(jìn)行處理.
Step 4 中間鍵值對(duì)數(shù)據(jù)傳送到Reduce節(jié)點(diǎn)被排序規(guī)約為格式為<key,list(values)>的數(shù)據(jù),其中key為支持向量機(jī)類(lèi)別,list(values)為從中間鍵值對(duì)數(shù)據(jù)中收集到的所有該類(lèi)別對(duì)應(yīng)的數(shù)據(jù).
Step 5 Reduce函數(shù)對(duì)<key,list(values)>格式的數(shù)據(jù)進(jìn)行處理,通過(guò)求解最優(yōu)化問(wèn)題得到一個(gè)新的支持向量機(jī),該支持向量機(jī)即用來(lái)識(shí)別key對(duì)應(yīng)的人臉樣本類(lèi)別.Reduce階段執(zhí)行完畢后,得到新的個(gè)支持向量機(jī)以<key,value>格式輸出,其中key為支持向量機(jī)類(lèi)別,value為支持向量機(jī)對(duì)應(yīng)的參數(shù).
本文在4臺(tái)PC機(jī)(CPU 2.2GHz以上,2GB內(nèi)存)上構(gòu)建 Hadoop集群,Hadoop版本為 Hadoop0.21.0.實(shí)驗(yàn)采用ORL標(biāo)準(zhǔn)人臉庫(kù)作為數(shù)據(jù)集,ORL人臉庫(kù)中共有40個(gè)人,每人10幅圖像,圖像大小為112×92像素,共400幅人臉圖像,每個(gè)人的不同人臉圖像包含了表情、姿態(tài)和面部飾物的變化.采用直方圖均衡化對(duì)圖像進(jìn)行預(yù)處理以減小環(huán)境、光照等條件的影響,選取數(shù)據(jù)集中每個(gè)人的前6幅圖像作為訓(xùn)練集,剩下4張作為測(cè)試集進(jìn)行實(shí)驗(yàn),采用“一對(duì)多”分類(lèi)法進(jìn)行識(shí)別.
本文采用了RBF徑向基函數(shù)作為SVM的核函數(shù),如公式(7)所示,參數(shù) g=0.01,C=100.本文分別在單機(jī)以及2Map、3Map和4Map下進(jìn)行實(shí)驗(yàn).圖2顯示了對(duì)ORL庫(kù)中人臉圖像進(jìn)行直方圖均衡化的效果.
圖2 ORL庫(kù)中的人臉圖像以及直方圖均衡化效果Fig.2 A face picture of ORL and its histogram equalization
圖3顯示了不同實(shí)驗(yàn)條件下支持向量機(jī)的訓(xùn)練時(shí)間(設(shè)單機(jī)環(huán)境訓(xùn)練時(shí)間為100%為參照)及識(shí)別率.
圖3 不同環(huán)境下支持向量機(jī)的訓(xùn)練時(shí)間以及識(shí)別率Fig.3 Train time and recognition rate of Support Vector Machine in different conditions
由圖3可見(jiàn),在機(jī)器學(xué)習(xí)時(shí)間方面,采用MapReduce模型訓(xùn)練支持向量機(jī)的時(shí)間與不使用MapReduce模型的單機(jī)環(huán)境相比得到了較大幅度的降低,2Map,3Map和4Map情況下訓(xùn)練時(shí)間分別是單機(jī)情況下的62.2%,40.5%和28.5%.圖3中的識(shí)別率指標(biāo)體現(xiàn)出單機(jī)的人臉識(shí)別率是93.1%,并行情況下2Map,3Map和4Map的識(shí)別率分別為91.9%,92.5% 和 90.6%.并行環(huán)境下的識(shí)別率比單機(jī)環(huán)境有些微下降,其原因在于原來(lái)整體樣本中的部分支持向量在分塊處理中被丟棄.本文方法在支持向量機(jī)的訓(xùn)練時(shí)間方面獲得了明顯的加速,但付出了1%~2%的識(shí)別率代價(jià).權(quán)衡移動(dòng)互聯(lián)網(wǎng)環(huán)境對(duì)人臉識(shí)別復(fù)雜計(jì)算的應(yīng)用需求,在保證人臉識(shí)別率達(dá)到90%以上的前提下,本文側(cè)重了機(jī)器學(xué)習(xí)時(shí)間的優(yōu)化.
本文利用MapReduce模型訓(xùn)練支持向量機(jī)進(jìn)行人臉識(shí)別.實(shí)驗(yàn)結(jié)果表明,該算法提升了支持向量機(jī)的訓(xùn)練速度,保證了人臉識(shí)別的準(zhǔn)確率.Hadoop技術(shù)與MapReduce模型已經(jīng)在移動(dòng)互聯(lián)網(wǎng)上獲得了廣泛應(yīng)用,本文所采用的方法對(duì)于移動(dòng)互聯(lián)網(wǎng)環(huán)境下的人臉識(shí)別,特別是對(duì)識(shí)別效率有較高要求的人臉識(shí)別應(yīng)用具有一定的實(shí)用價(jià)值.下一步將分析并行度與識(shí)別率之間的關(guān)系,研究?jī)?yōu)化支持向量機(jī)性能的策略,力求在加速人臉識(shí)別運(yùn)算的同時(shí),進(jìn)一步提高其識(shí)別率.
[1]Vapink V N.統(tǒng)計(jì)學(xué)理論的本質(zhì)[M].北京:清華大學(xué)出版社,2000.
[2]胡正平,張 曄.結(jié)構(gòu)風(fēng)險(xiǎn)最小化近鄰分析解決大規(guī)模訓(xùn)練集支持向量機(jī)學(xué)習(xí)問(wèn)題[J].信號(hào)處理,2007(1):161-164.
[3]Deng J,Ghemawat S.MapReduce:Simplied data processing on large clusters[C]//USENIX.Proceedings of the 6th USENIX Symposium on Operating System Design and Implementation(OSDI).New York:ACM Press,2004:137-150.
[4]趙武鋒.人臉識(shí)別中特征提取方法的研究[D].杭州:浙江大學(xué),2009.
[5]高全學(xué),潘 泉,梁 彥,等.基于描述特征的人臉識(shí)別研究[J].自動(dòng)化學(xué)報(bào),2006,32(3):386-391.
[6]蘇宏濤.基于統(tǒng)計(jì)特征的人臉識(shí)別技術(shù)研究[D].西安:西北工業(yè)大學(xué),2005.
[7]徐 仲,張凱院,陸 全,等.矩陣論簡(jiǎn)明教程[M].北京:科學(xué)出版社,2005:118-123.
[8]Cortes C,Vapink V.Support vector networks[J].Machine,1995,20:273-297.
[9]Vaprink V N.Statistical learning theory[M].New York:Wiley,1998:493-520.
[10]Krebel U.Pairwise classification and support vector machine[M].Cambridge,USA:The MIT Press,1999:255-268.