特征臉(Eigenface)是指用于機器視覺領域中的人臉識別問題的一組特征向量。使用特征臉進行人臉識別的方法首先由Sirovich and Kirby (1987)提出,并由Matthew Turk和Alex Pentland用于人臉分類。該方法被認為是第一種有效的人臉識別方法。這些特征向量是從高維矢量空間的人臉圖像的協(xié)方差矩陣計算而來。
生成特征臉一組特征臉可以通過在一大組描述不同人臉的圖像上進行主成分分析(PCA)獲得。任意一張人臉圖像都可以被認為是這些標準臉的組合。例如,一張人臉圖像可能是特征臉1的10%,加上特征臉2的55%,在減去特征臉3的3%。值得注意的是,它不需要太多的特征臉來獲得大多數(shù)臉的近似組合。另外,由于人臉是通過一系列向量(每個特征臉一個比例值)而不是數(shù)字圖像進行保存,可以節(jié)省很多存儲空間。1
實現(xiàn)以下是特征臉的實現(xiàn)過程:
準備一個訓練集的人臉圖像。構成訓練集的圖片需要在相同的照明條件下拍攝的,并將所有圖像的眼睛和嘴對齊。他們還必須在預處理階段就重采樣到一個共同的像素分辨率(R×C)。現(xiàn)在,簡單地將原始圖像的每一行的像素串聯(lián)在一起,產(chǎn)生一個具有R×C個元素的行向量,每個圖像被視為一個向量。現(xiàn)在,假定所有的訓練集的圖像被存儲在一個單一的矩陣T中,矩陣的每一行是一個圖像。
減去均值向量. 均值向量a要首先計算,并且T中的每一個圖像都要減掉均值向量。
計算協(xié)方差矩陣S的特征值和特征向量。每一個特征向量的維數(shù)與原始圖像的一致,因此可以被看作是一個圖像。因此這些向量被稱作特征臉。他們代表了圖像與均值圖像差別的不同方向。通常來說,這個過程的計算代價很高(如果可以計算的話)。
選擇主成分。一個DxD的協(xié)方差矩陣會產(chǎn)生D個特征向量,每一個對應R×c圖像空間中的一個方向。具有較大特征值的特征向量會被保留下來,一般選擇最大的N個,或者按照特征值的比例進行保存,如保留前95%。
這些特征臉現(xiàn)在可以用于標識已有的和新的人臉:我們可以將一個新的人臉圖像(先要減去均值圖像)投影到特征臉上,以此來記錄這個圖像與平均圖像的偏差。每一個特征向量的特征值代表了訓練集合的圖像與均值圖像在該方向上的偏差有多大。將圖像投影到特征向量的子集上可能丟失信息,但是通過保留那些具有較大特征值的特征向量的方法可以減少這個損失。例如,如果當前處理一個100 x 100的圖像,就會得到10000個特征向量。在實際使用中,大多數(shù)的圖像可以投影到100到150個特征向量上進行識別,因此,10000個特征向量的絕大多數(shù)可以丟棄。
計算特征向量直接在圖像的協(xié)方差矩陣上進行PCA計算在計算量上是不可行的。如果圖像比較小,如100×100的灰度圖像,則每個圖像是一個10000維空間的一個點,協(xié)方差矩陣S則具有10,000× 10,000= 10個元素。然而,協(xié)方差矩陣的秩受到訓練圖像的限制:如果有N個訓練樣本,則最多有N?1 個對應非零特征值的特征向量。如果訓練樣本的數(shù)目比圖像的維數(shù)低,則可以通過如下方法簡化主成分的計算。
設T是預處理圖像的矩陣,每一列對應一個減去均值圖像之后的圖像。則,協(xié)方差矩陣為S=TTT,并且對S的特征值分解為
然而,TTT是一個非常大的矩陣。因此,如果轉而使用如下的特征值分解
此時,我們發(fā)現(xiàn)如果在等式兩邊乘以T,可得到
這就意味著,如果ui是T****TT的一個特征向量,則vi=Tui是S的一個特征向量。假設我們的訓練集有300張100×100像素的圖像,則T****TT是一個300×300的矩陣,這就比原先的 10,000× 10,000 協(xié)方差矩陣要容易處理許多。需要注意的是,上面的特征向量vi沒有進行歸一化,如果需要,應該在后面在進行處理。
應用特征臉的最直接的應用就是人臉識別。在這個需求下,特征臉相比其他手段在效率方面比較有優(yōu)勢,因為特征臉的計算速度非??欤虝r間就可以處理大量人臉。但是,特征臉在實際使用時有個問題,就是在不同的光照條件和成像角度時,會導致識別率大幅下降。因此,使用特征臉需限制使用者在統(tǒng)一的光照條件下使用正面圖像進行識別。2
相關領域主成分分析
人臉識別
模式識別
本詞條內(nèi)容貢獻者為:
何星 - 副教授 - 上海交通大學