人臉識別經典算法一:特徵臉方法(Eigenface)

這篇文章是擼主要介紹人臉識別經典方法的第一篇,後續會有其餘方法更新。特徵臉方法基本是將人臉識別推向真正可用的第一種方法,瞭解一下仍是頗有必要的。特徵臉用到的理論基礎PCA在另外一篇博客裏:特徵臉(Eigenface)理論基礎-PCA(主成分分析法) 。本文的參考資料附在最後了^_^.net

步驟一:獲取包含M張人臉圖像的集合S。在咱們的例子裏有25張人臉圖像(雖然是25個不一樣人的人臉的圖像,可是看着怎麼不像呢,難道我有臉盲症麼),以下圖所示哦。每張圖像能夠轉換成一個N維的向量(是的,沒錯,一個像素一個像素的排成一行就行了,至因而橫着仍是豎着獲取原圖像的像素,隨你本身,只要先後統一就能夠),而後把這M個向量放到一個集合S裏,以下式所示。htm

步驟二:在獲取到人臉向量集合S後,計算獲得平均圖像Ψ ,至於怎麼計算平均圖像,公式在下面。就是把集合S裏面的向量遍歷一遍進行累加,而後取平均值。獲得的這個Ψ 其實還挺有意思的,Ψ 其實也是一個N維向量,若是再把它還原回圖像的形式的話,能夠獲得以下的「平均臉」,是的沒錯,還他媽的挺帥啊。那若是你想看一下某計算機學院男平生均下來都長得什麼樣子,用上面的方法就能夠了。blog

步驟三:計算每張圖像和平均圖像的差值Φ  ,就是用S集合裏的每一個元素減去步驟二中的平均值。ip

步驟四:找到M個正交的單位向量un ,這些單位向量實際上是用來描述Φ  (步驟三中的差值)分佈的。un 裏面的第k(k=1,2,3...M)個向量uk 是經過下式計算的,get

 

當這個λk(原文裏取了個名字叫特徵值)取最小的值時,uk  基本就肯定了。補充一下,剛纔也說了,這M個向量是相互正交併且是單位長度的,因此啦,uk  還要知足下式:博客

上面的等式使得uk 爲單位正交向量。計算上面的uk 其實就是計算以下協方差矩陣的特徵向量:it

其中io

對於一個NxN(好比100x100)維的圖像來講,上述直接計算其特徵向量計算量實在是太大了(協方差矩陣能夠達到10000x10000),因此有了以下的簡單計算。pdf

步驟四另解:若是訓練圖像的數量小於圖像的維數好比(M<N^2),那麼起做用的特徵向量只有M-1個而不是N^2個(由於其餘的特徵向量對應的特徵值爲0),因此求解特徵向量咱們只須要求解一個NxN的矩陣。這個矩陣就是步驟四中的AAT ,咱們能夠設該矩陣爲L,那麼L的第m行n列的元素能夠表示爲:基礎

一旦咱們找到了L矩陣的M個特徵向量vl,那麼協方差矩陣的特徵向量ul就能夠表示爲:

這些特徵向量若是還原成像素排列的話,其實還蠻像人臉的,因此稱之爲特徵臉(以下圖)。圖裏有二十五個特徵臉,數量上和訓練圖像相等只是巧合。有論文代表通常的應用40個特徵臉已經足夠了。論文Eigenface for recognition裏只用了7個特徵臉來代表實驗。

步驟五:識別人臉。OK,終於到這步了,別繞暈啦,上面幾步是爲了對人臉進行降維找到表徵人臉的合適向量的。首先考慮一張新的人臉,咱們能夠用特徵臉對其進行標示:

其中k=1,2...M,對於第k個特徵臉uk,上式能夠計算其對應的權重,M個權重能夠構成一個向量:

perfect,這就是求得的特徵臉對人臉的表示了!

那如何對人臉進行識別呢,看下式:

其中Ω表明要判別的人臉,Ωk表明訓練集內的某我的臉,二者都是經過特徵臉的權重來表示的。式子是對二者求歐式距離,當距離小於閾值時說明要判別的臉和訓練集內的第k個臉是同一我的的。當遍歷全部訓練集都大於閾值時,根據距離值的大小又可分爲是新的人臉或者不是人臉的兩種狀況。根據訓練集的不一樣,閾值設定並非固定的。

後續會有對PCA理論的補充^_^.已補充理論:特徵臉(Eigenface)理論基礎-PCA(主成分分析法)

參考資料:

一、Eigenface for Recognition:http://www.cs.ucsb.edu/~mturk/Papers/jcn.pdf

二、特徵臉維基百科:http://zh.wikipedia.org/wiki/%E7%89%B9%E5%BE%81%E8%84%B8

三、Eigenface_tutorial:http://www.pages.drexel.edu/~sis26/Eigenface%20Tutorial.htm

轉載 http://blog.csdn.net/smartempire/article/details/21406005

相關文章
相關標籤/搜索