程浩男
摘 要 人臉識別一直是模式識別中的熱門問題,而主成分分析又是其中的主流方法之一。這里我們用隨機過程的觀點去看待一個灰度圖像,每個像素中有隨機性的存在,也有人臉之間的類內(nèi)差別,但人臉區(qū)別于其他圖片,有自己專屬于這一類隨機過程的特點。我們采用基于SVD的主成分分析,將人臉的主成分提取出并用測試集測試其準確度。之后,并采用特征值分解的方法大大提高效率且不改變實驗結果。
關鍵詞 人臉識別;主成分分析;奇異值分解;特征值分解
中圖分類號 TP3 文獻標識碼 A 文章編號 1674-6708(2017)179-0040-02
隨著人工智能的飛速發(fā)展,人臉識別吸引了越來越多的關注及研究。主成分分析因為其方便簡單的特點成為比較常用的方法之一,而SVD分解又成為主成分分析中的主流實現(xiàn)方法,但該方法有一定缺陷,比如處理大矩陣效率較低。為了得到更高效率的主成分分析方法,越來越多的工作者開始研究如何提高主成分分析的效率。
經(jīng)過研究,當矩陣的兩個維度相差很大時,將矩陣與其轉(zhuǎn)置相乘得到相關矩陣,即一個維度較小的矩陣,再求其特征值與特征向量能夠得到與直接進行SVD分解相同的結果,而上述相關矩陣求特征值的替代方法卻能極大地提高效率。
第二節(jié)將詳細介紹基于SVD的主成分分析和基于特征值分解的替代算法的基本原理。第三節(jié)將詳細介紹的兩種方法對應的實驗步驟。第四節(jié)將詳細比較這兩種方法的異同,主要是算法耗費時間的差異。第五節(jié)總結根據(jù)我們設計的實驗得到的結論。
1 基本原理
主成分分析的主要思想是提取出訓練集中圖片的主成分,使測試集與其主成分做內(nèi)積觀察結果,進而將人臉圖片與其他圖片相區(qū)別。
我們將訓練集的圖片讀入,并將每一張圖片都拉成“一條向量”放在一個矩陣的一行中,減去平均值,此時的圖像矩陣示意圖如下:
我們的數(shù)據(jù)集共有35個圖片,圖片拉長之后的向量長為108×75=8 100,故矩陣的行數(shù)為8 100,列數(shù)為35。可知這是一個行列維度相差很多的矩陣。
1.1 基于SVD的主成分分析
奇異值分解是主成分分析的主流方法,其原理在于將原矩陣P分解為3個矩陣相乘:
U×S×V=P
其中U和V是單位正交矩陣,S是對角陣。通過這樣的分解,我們得到U和V代表兩個維度上的主成分,而S的對角元素代表對應主成分的重要程度。在本實驗中,V的每一行有著明確的物理意義,代表圖片的主成分。
1.2 基于相關矩陣特征值分解的快速算法
當需要奇異值分解的矩陣在兩個維度上相差較大時,我們可以用相關矩陣特征值求解的辦法來提高計算效率,并且得到相同的結果。首先我們需要得到P的相關矩陣R:
然后,將奇異值分解的結果帶入相關矩陣,由于正交陣的轉(zhuǎn)置即是它自身的逆,故不難發(fā)現(xiàn)經(jīng)過推倒得到了特征值分解的形式,所以我們僅需要做特征值分解的計算即可得到奇異值分解中的S和U矩 陣。
至此,我們用相關矩陣求特征值分解的方法已經(jīng)完全求出奇異值分解的結果。
2 實驗方法
訓練集由35張人臉的灰度圖像構成,如圖2:
測試集如圖3:
實驗過程由matlab仿真進行。首先,我們將訓練集的圖片讀入,并將每一張圖片都拉成“一條向量”放在一個矩陣的一行中,減去平均值,待后續(xù)處理。在傳統(tǒng)的方法中,我們對該矩陣進行SVD分解,但由于兩個維度相差過大,導致較大的維度上的值相對很小,故而在正規(guī)奇異值分解算法中浪費了很多時間,而這也正是SVD分解算法效率較低的關鍵。實驗中,我們就傳統(tǒng)算法和相關矩陣的特征值算法進行了討論。繼而,我們對SVD的中間的對角陣觀察對角元素,可知最大項約為次大項的一倍,故可知在后續(xù)的分類中,只需考慮最大項對應的主成分。在訓練集輸入完成以后,我們將待檢測圖片按照同樣的方法拉成“一條向量”,再與最大主成分求相關系數(shù),即直接做內(nèi)積并與前面圖片作比較即可,可知人臉和馬臉圖片的運算結果相差一個數(shù)量級,故而得以區(qū)分。
3 實驗結果
在上述實驗過程中,將矩陣分解為U×S×V,左右兩個矩陣為標準正交陣,中間是對角陣。觀察對角陣元素見圖4。
可知第一個項是第二個2倍左右,相差較多,故我們可以重點區(qū)分以是否像第一個主成分作為判別標準。即第一項可以被看作人臉圖像的最主要成分。我們將第一主成分經(jīng)過線性放縮到0到255灰度值區(qū)間并可視化觀察,如圖5左,可以看作是一個近似每張人臉平均的這樣一個結果。而實際上排序相對靠后地主成分也有特定地物理含義,例如第4個主成分,如圖5右,主要表征了肩上頭發(fā)的多少的區(qū)別。
我們用主成分去和測試集地人臉圖片和馬臉圖片分別作內(nèi)積,得到圖6??擅黠@觀察到,測試集人臉圖片和上面分析的主成分進行內(nèi)積明顯高于測試集馬臉地內(nèi)積結果。我們根據(jù)圖中觀察可得出將2 000設為判定是否為人臉地閾值:即當內(nèi)積值大于或等于2 000,我們把測試圖片判定為人臉,若內(nèi)積值小于2 000,我們把測試圖片判定為非人臉。
4 算法對比
我們經(jīng)過原理分析和實驗結果均證明兩種方法得到的結果完全相同。但是兩者的耗費時間卻相差很多,我們在matlab上進行試驗,對比運行時間發(fā)現(xiàn),傳統(tǒng)SVD方法耗時約2.7S,而我們的基于特征值分解的快速替代算法耗時約0.0026S,效率提高了大約1 000倍。這在大量級數(shù)據(jù)集上將發(fā)揮著至關重要的作用。
5 結論
基于SVD主成分分析人臉識別方法是一種簡單可靠的方法,能夠得到很清晰的分類效果。而其效率較低地問題在待分解矩陣維度相差較大情況下可以通過特征值分解的方式,在保證得到相同結果的前提下,大大提高算法運行效率。
參考文獻
[1]何婧,馮國燦.奇異值分解在人臉識別中的應用[J].廣東第二師范學院學報,2006,26(3):92-96.
[2]羅小桂.矩陣奇異值分解(SVD)的應用[J].井岡山醫(yī)專學報,2005,12(4):133-135.
[3]梁毅雄,龔衛(wèi)國,潘英俊,等.基于奇異值分解的人臉識別方法[J].光學精密工程,2004,12(5):543-549.
[4]龐彥偉,劉政凱,俞能海.融合奇異值分解和主分量分析的人臉識別算法[J].信號處理,2005,21(2):202-205.
[5]牟雪嬌.奇異值分解和主成分分析在車型識別中的應用[D].上海:上海交通大學,2008.