基于PCA的人脸特征抽取
我們將應(yīng)用PCA技術(shù)來(lái)抽取人臉特征。一幅人臉照片往往由比較多的像素構(gòu)成,如果以每個(gè)像素作為1維特征,將得到一個(gè)維數(shù)非常高的特征向量, 計(jì)算將十分困難;而且這些像素之間通常具有相關(guān)性。這樣,利用PCA技術(shù)在降低維數(shù)的同時(shí)在一定程度上去除原始特征各維之間的相關(guān)性自然成為了一個(gè)比較理想的方案。
數(shù)據(jù)集簡(jiǎn)介
本案例采用的數(shù)據(jù)集來(lái)自著名的ORL人臉庫(kù)。首先對(duì)該人臉庫(kù)做一個(gè)簡(jiǎn)單的介紹:
- ORL數(shù)據(jù)庫(kù)共有400幅人臉圖像(40人, 每人1O幅, 大小為112像素x92像素)
- 這個(gè)數(shù)據(jù)庫(kù)比較規(guī)范, 大多數(shù)圖像的光照方向和強(qiáng)度都差不多.
- 但有少許表情、姿勢(shì)、伸縮的變化, 眼睛對(duì)得不是很準(zhǔn), 尺度差異在10%左右。
- 并不是每個(gè)人都有所有的這些變化的圖像,即有些人姿勢(shì)變化多一點(diǎn),有些人表情變化多一點(diǎn), 有些還戴有眼鏡, 但這些變化都不大
正是基于ORL人臉庫(kù)圖像在光照, 以及關(guān)鍵點(diǎn)如眼睛、嘴巴的位置等方面比較統(tǒng)一的特點(diǎn), 實(shí)驗(yàn)可以在該圖片集上直接展開(kāi), 而不是必須要進(jìn)行歸一化和校準(zhǔn)等工作。
生成樣本矩陣
首先要做的是將這 200 幅人臉圖像轉(zhuǎn)換為向量形式,進(jìn)而組成祥本矩陣。函數(shù) ReadFaces()用于實(shí)現(xiàn)
主成分分析
經(jīng)過(guò)上面的處理,矩陣FaceContainter 每一行就成了一個(gè)代表某個(gè)人臉樣本的特征向量。通過(guò)主成份分析的方法可將這些10304維的樣本特征向量降至20維。這樣數(shù)據(jù)集中每個(gè)人臉樣本都可以由一個(gè)20維的特征向量來(lái)表示, 以作為后續(xù)分類(lèi)所采用的特征。
我們將對(duì)樣本矩陣FaceContainer進(jìn)行主成份分析的整個(gè)過(guò)程封裝在下面的main函數(shù)中,其參數(shù)k 是主分量的數(shù)目, 即降維至K 維。該函數(shù)首先調(diào)用ReadFaces函數(shù)得到了人臉樣本矩陣FaceContainer,而后利用10.3.4小節(jié)中的fastPCA算法計(jì)算出樣本矩陣的低維表示LowDimFaces 和主成分分量矩陣W, 并將LowDimFaces 保存至Mat 目錄下的LowDimFaces.m出文件中。
function main(k) % ORL 人臉數(shù)據(jù)集的主成分分析 % % 輸入:k --- 降至 k 維% 定義圖像高、寬的全局變量 imgRow 和 imgCol,它們?cè)?ReadFaces 中被賦值 global imgRow; global imgCol;% 讀入每個(gè)人的前5副圖像 nPerson=40; nFacesPerPerson = 5; display('讀入人臉數(shù)據(jù)...'); [imgRow,imgCol,FaceContainer,faceLabel]=ReadFaces(nFacesPerPerson,nPerson); display('..............................');nFaces=size(FaceContainer,1);%樣本(人臉)數(shù)目 display('PCA降維...'); % LowDimFaces是200*20的矩陣, 每一行代表一張主成分臉(共40人,每人5張),每個(gè)臉20個(gè)維特征 % W是分離變換矩陣, 10304*20 的矩陣 [LowDimFaces, W] = fastPCA(FaceContainer, 20); % 主成分分析PCA visualize_pc(W);%顯示主成分臉 save('Mat/LowDimFaces.mat', 'LowDimFaces'); display('計(jì)算結(jié)束。');上述命令運(yùn)行后會(huì)在Mat目錄下生成LowDimFaces.mat文件,其中的200X20維矩陣LowDimFaces是經(jīng)過(guò)PCA降維后,原樣本矩陣FaceContainer的低維表示。200個(gè)人臉樣本所對(duì)應(yīng)的每一個(gè)特征向量由原來(lái)的10304維變成了20維,這就將后續(xù)的分類(lèi)問(wèn)題變成一個(gè)在 20維空間中的劃分問(wèn)題,過(guò)程大大簡(jiǎn)化。
主成分臉可視化分析
fastPCA函數(shù)的另一個(gè)輸出為主分量陣w. 它是一個(gè)10304X20的矩陣,每列是一個(gè)10304維的主分量(樣本協(xié)方差矩陣的本征向量),在人臉?lè)治鲋?#xff0c;習(xí)慣稱(chēng)之為主成份臉.事實(shí)上我們可以將這些列向量以112X92的分辨率來(lái)顯示,該工作由函數(shù)visualizepc完成,實(shí)現(xiàn)如下:
結(jié)合主成份臉圖像的分析
首先,我們可以看到,圖中的所有20個(gè)主成分臉圖像的一個(gè)共同點(diǎn)是人臉區(qū)域之外的圖像背景相對(duì)較暗。比較典型的如第1行的第3副圖像,其背景幾乎為黑色,這是因?yàn)?ORL數(shù)據(jù)集中的人臉圖像背景較為均勻一致,在原始d維空間中樣本在對(duì)應(yīng)背景的這些維上差異很小,從樣本分布云團(tuán)上看,這些維上的云團(tuán)的散布最小。因此ek對(duì)應(yīng)于這些維的加權(quán)系數(shù)很小,在顯現(xiàn)出的圖像中就是灰度小,從而表現(xiàn)為主成分臉的暗背景。
繼續(xù)按照這種思路分析, 拿第1個(gè)主成份臉來(lái)說(shuō),眉毛、鼻子和上嘴唇是圖像中灰度相對(duì)較高的區(qū)域,這說(shuō)明實(shí)驗(yàn)數(shù)據(jù)集中的200個(gè)人臉之間在這些位置存在較大的差異;再比如第1行的第5個(gè)主成分臉, 面部區(qū)域整體亮度較高,這可能是由數(shù)據(jù)集人臉之間的膚色差異
導(dǎo)致;其他典型如第2行的第3個(gè)以及第3行的第2個(gè)主成分臉中的眼睛,第2行第1個(gè)以及第4行第2個(gè)主成份臉的嘴,這些高亮度區(qū)域反映了實(shí)驗(yàn)數(shù)據(jù)集中人臉之間的五官差異。此外,我們還注意到同為五官之一的鼻子似乎井不“ 搶眼”,僅第3行的第1幅圖像的鼻梁區(qū)
域亮度相對(duì)高一些。這說(shuō)明正面為主的人臉圖像中鼻子之間差異不大,這正好和學(xué)術(shù)界普遍認(rèn)可的鼻子在正面圖像為主的人臉識(shí)別中的作用不大的結(jié)論一致。
降維對(duì)分類(lèi)性能的影響
人類(lèi)能夠識(shí)別人臉,正是由于不同的人在眼睛、嘴和眉毛等一些重要器官上的差別較大。經(jīng)線(xiàn)性變換后,原始d維空間中那些差別較大的維在變換至低維空間的過(guò)程中被較大的加權(quán)而保留;而那些每幅人臉圖像都類(lèi)似(缺乏區(qū)分力)的特征,如背景、鼻子和額頭等被賦予了較低的權(quán)值, 從而在d’維空間中幾乎沒(méi)有得到體現(xiàn)。這樣經(jīng)PCA處理后,在特征向量維數(shù)大大降低的同時(shí),原圖像中那些差異最大的特征被最大程度的保留(以一種線(xiàn)性組合的形式),而那些相對(duì)一致、區(qū)分力較差的特征則被丟棄。這就是為什么在很多
情況下降維后,分類(lèi)的識(shí)別率并不會(huì)明顯下降的原因。PCA降維丟棄某些特征所損失的信息通過(guò)在低維空間中更加精確地映射可以得到補(bǔ)償, 從而可以在低維空間中得到和高維空間中相當(dāng)?shù)淖R(shí)別率。
PCA能夠很好工作的前提
細(xì)心的讀者可能會(huì)發(fā)現(xiàn),在某些主成分臉圖像的人臉邊緣處也出現(xiàn)了較高的灰度,這是由數(shù)據(jù)集圖像中人臉姿態(tài)和位置的差異造成的, 幸好這種差異不大(10%左右)。實(shí)際上在我們的系統(tǒng)中,經(jīng)過(guò)PCA降維后的20維樣本矩陣能夠很好地用于入臉識(shí)別的另一個(gè)關(guān)鍵點(diǎn)在
于ORL人臉數(shù)據(jù)庫(kù)中的大部分人臉在圖像中占據(jù)著大致相同的區(qū)域,姿態(tài)差異度不大,井且眼睛、鼻子、發(fā)跡和嘴的位置也大體相同。否則, 200個(gè)人臉圖像之間的差異就不再是人長(zhǎng)相本身的差異, 而是這些人的臉部區(qū)域在圖像中位置的差異,姿態(tài)的差異、以及器官位置的差異。當(dāng)然,此時(shí)PCA可以照常計(jì)算,但將降維后的樣本矩陣用于人臉識(shí)別就不會(huì)取得理想的識(shí)別率,而可能更適合于姿態(tài)分類(lèi)
基于主分量的人臉重建
下面利用式(10-19)來(lái)實(shí)現(xiàn)對(duì)個(gè)體人臉圖像的重建。我們提供的的函數(shù)approx可以勝任這一工作。其中參數(shù)x是需要重建的個(gè)體人臉樣本, K是重建使用的主分量數(shù)目, 輸出xApprox為對(duì)于原樣本向量x的重建(近似)。具體實(shí)現(xiàn)如:
當(dāng)使用200個(gè)主分量進(jìn)行重建時(shí),幾乎沒(méi)有差異。
總結(jié)
以上是生活随笔為你收集整理的基于PCA的人脸特征抽取的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Android实现监测网络状态
- 下一篇: ubuntu安装谷歌浏览器 typora