程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 實驗報告: 人臉識別方法回顧與實驗分析 【OpenCV測試方法源碼】,opencv測試方法

實驗報告: 人臉識別方法回顧與實驗分析 【OpenCV測試方法源碼】,opencv測試方法

編輯:C++入門知識

實驗報告: 人臉識別方法回顧與實驗分析 【OpenCV測試方法源碼】,opencv測試方法


 

趁著還未工作,先把過去做的東西整理下出來~  

Github源碼:https://github.com/Blz-Galaxy/OpenCV-Face-Recognition

(涉及個人隱私,源碼不包含測試樣本,請諒解~)

對實驗結果更感興趣的朋友請直接看 第5章【摘要】這是一篇關於人臉識別方法的實驗報告。報告首先回顧了人臉識別研究的發展歷程及基本分類;隨後對人臉識別技術方法發展過程中一些經典的流行的方法進行了詳細的闡述;最後作者通過設計實驗對比了三種方法的識別效果並總結了人臉識別所面臨的困難與挑戰。一些能反映方法性能的實驗數據同樣會在報告中展現,以便於更直觀的了解其特點。 

 

【關鍵詞】人臉識別;局部二值模式(LBP);線性判別(LDA);主成分分析(PCA)

注: 該報告所使用的方法描述來源於現有文獻,這裡僅以論文格式進行呈現。


 

1 引言

 

        簡單來說,人臉識別就是利用計算機分析人臉視頻或者圖像,並從中提取出有效的識別信息,最終判別人臉對象的身份。它是基於生物識別技術的最要身份識別方法之一,涉及到計算機圖形學、計算機視覺、模式識別、人工智能、計算智能等技術。對於人臉識別問題的研究已有幾十年的時間,在理論研究和實際開發方面都取得了一定的成果,並在不斷的發展與完善。另外,基於人臉圖像的計算機視覺和模式識別問題也成為近些年研究的熱點問題。其中包括人臉檢測,人臉識別,人臉表情識別等各類識別問題。


        人臉與人體的其他生物特征(指紋、虹膜等)一樣與生俱來,其生物特征內在的穩定性和唯一性使其成為了作為身份識別的理想依據。與其他生物識別系統相比,人臉識別系統具有直接、友好、方便等特點,容易被使用者接受。因此,其在信息安全、刑事偵破、出入口控制等領域都有著廣泛的應用前景。

  

1.1 人臉識別發展歷程

        關於人臉識別的研究最早始於心理學家們在20世紀50年代的工作,而真正從工程應用的角度來研究它則開始於20世紀60年代。最早的研究者是Bledsoe,他建立了一個半自動的人臉識別系統,主要是以人臉特征點的間距、比率等參數為特征。早期的人臉識別方法有兩大特點:

        1)大多數識別方法是基於部件的,它們利用人臉的幾何特征進行識別,提取的信息是人臉主要器官特征信息及其之間的幾何關系。這類方法比較簡單,但是很容易丟失人臉的有用信息,從而在視角、表情等變化的情況下識別能力差。鑒於這種情況,後來出現了性能較優的模板匹配方法,即根據圖像庫中的人臉模板與待識別人臉模板在灰度上的相似程度來實現人臉識別,這類方法在一定時期內占據主流。

        2)人臉識別研究主要是在較強約束條件下的人臉圖像識別。假設圖像背景單一或無背景,人臉位置已知或很容易獲得,因此對現實場景產生的圖像處理效果不佳。 

        90年代中期以來,人臉識別方法向著整體識別和部件分析相結合的趨勢發展。研究人員開始逐漸認識到人臉識別算法必須能夠充分地利用人臉的各種特征信息,融合人臉的形狀拓撲結構特征、局部灰度特征和全局灰度分布特征等多種特征。因此,出現了很多新的算法,這些算法是將原先單一的算法結合起來,共同完成人臉的識別。灰度和形狀分離的可變形模型方法就是其中之一。90年代後期,一些商業性的人臉識別系統開始逐漸進入市場,人臉識別技術成為當今國際安全防范最重要的手段之一。但是,這些技術和系統離實用化還有一定的距離,性能和准確率有待提高。1991年Turk和Pentland [1]、[2] 首次提出著名的“特征臉”(Eigenface)方法,利用主成分分析(Principal Component Analysis,PCA)取得了不錯的識別效果;Belhumer [3] 在他的論文中,成功地將Fisher判別准則應用到了人臉分類當中,提出了Fisherface方法;從此基於子空間和統計特征的人臉識別技術成了一種主流的技術,這種基於線性子空間的技術主要包括主成分分析、線形判別分析(Linear Discriminant Analysis,LDA)等方法。總體來說,這一階段的基於機器學習方法的人臉識別技術得到了迅速的發展,在一些識別系統裡面獲得了不錯的識別效果。最近幾年,人臉識別的研究有了新的發展,基於機器學習的理論,研究者提出了許多新穎的方法,其中包括遺傳算法(Genetic Algorithm,GA)、AdaBoost、貝葉斯分類器、支持向量機(Support Vector Machine,SVM)等方法。 

        2000年以後,人臉識別方法的性能雖然有了一定的提高,但仍與人們的要求還有一定的差距,現有方法對光照、年齡、表情、姿態、距離等條件的變化比較敏感,當某些條件發生變化時,識別效果很不理想。目前,人臉識別技術仍只能用於某些對識別准確率要求不高的場合。

 

1.2 人臉識別方法分類

        人臉識別從不同的角度有不同的分類方法,報告基於人臉識別的發展過程將其分為基於幾何特征、基於代數特征和基於機器學習三類人臉識別方法。

1.2.1 基於幾何特征的人臉識別方法

        基於幾何特征的方法是將人臉用一個幾何特征矢量的表示,根據模式識別中層次聚類的思想設計分類器達到識別目的。通常采用的幾何特征有人臉的五官如眼睛、鼻子、嘴巴等的局部形狀特征。臉型特征以及五官在臉上分布的幾何特征。提取特征時往往要用到人臉結構的一些先驗知識。識別所采用的幾何特征是以人臉器官的形狀和幾何關系為基礎的特征矢量,本質上是特征矢量之間的匹配,其分量通常包括人臉指定兩點間的歐式距離、曲率、角度等[9] 。

        基於幾何特征的識別方法比較簡單、容易理解,但所使用的能量函數中各種代價的加權系數的選擇是經驗性的,沒有形成統一的特征提取標准;從圖像中抽取穩定的特征較困難,特別是特征受到遮擋時;對較大的表情變化或姿態變化的魯棒性較差。

1.2.2 基於代數特征的方法

        基於代數特性的方法通常是將空間圖像的像素點變換投影空間[10] ,用一定數量的基本圖像對人臉圖像進行線性編碼。

        1)主成分分析(PCA)。PCA方法最早由Sirovitch和Kirby[5]、[6] 引人人臉識別領。主成分分析是多元統計分析中用來分析數據的一種方法,它是一種用較少數量的特征對樣本進行描述以達到降低特征空間維度的方法,其基礎是KL展開式。Turk等人[1]、[2] 首先提出了基於KL展開式的人臉識別方法,即特征臉(Eigenface)法。

        2)獨立分量分析(ICA)。獨立分量分析是一種對多變量數據進行非正交線性坐標變換的方法,坐標軸方向由可以觀察到的混合數據的二階和高階統計信息確定,變換的目的是使變換後的變量間相互獨立[4] 。與PCA方法不同的是ICA方法要求特征空間的各個分量間統計獨立。

1.2.3 基於機器學習的方法

        在基於幾何特征的方法中,人臉的特征是預先定義好的;而在基於機器學習的方法中,人臉的特征和類別利用統計分析和機器學習的技術從樣本中學習來的。學習所得的人臉特征和類別存在於由各種算法所保證的分布規律、模型和判別函數中,並被用於人臉的檢測和識別。

        基於學習的分類器是現今比較流行的技術,有很多研究者在從事該研究,主要包括人工神經網絡,支持向量機,隱馬爾可夫模型(Hidden Markow Model,HMM)[7],貝葉斯決策和AdaBoost算法等技術。

 

2. 特征臉方法

 

        特征提取是人臉識別系統中最為重要的一個組成部分。主成分分析方法(PCA)是應用最廣泛的一種特征提取方法之一,它是一種統計學方法,在信號處理、模式識別、數字圖像處理等領域已經得到了廣泛的應用。特征臉方法是從主成分分析導出的一種人臉識別和描述技術。它將包含人臉的圖像區域看作一隨機向量,采用K-L變換得到正交K-L基,對應其中較大特征值的基具有與人臉相似的形狀,因此又被稱為特征臉。利用這些基的線性組合可以描述、表達和逼近人臉圖像,所以可進行人臉識別與合成。識別過程就是將人臉圖像映射到由特征臉組成的子空間上,並比較其在特征臉空間中的位置。

 

2.1 人臉空間的建立

    假設一幅人臉圖像包含N個像素點,它可以用一個N維向量Γ表示。這樣,訓練樣本庫就可以用Γi(i=1,...,M)表示。協方差矩陣C的正交特征向量就是組成人臉空間的基向量,即特征臉。

    將特征值由大到小排列:λ1≥λ2≥...≥λr ,其對應的特征向量為μk。這樣每一幅人臉圖像都可以投影到由u1, u2, ..., ur組成的子空間中。因此,每一幅人臉圖像對應於子空間中的一點。同樣,子空間的任意一點也對應於一幅圖像。

 

2.2 特征向量的選取

        雖然協方差矩陣Ω最多有對應於非零特征值的k(k遠小於M)個特征向量,但是通常情況下,k仍然很大,而事實上,根據應用的要求,並非所有的特征向量都有需要保留,而特征空間投影的計算速度是直接與創建子空間所用的特征向量的數目相關,若考慮到計算時間的因素,可以適當的減去一些信息量少的特征向量,而且去掉這些特征向量之後不一定不利於分類結果,有的情況下反而能夠提高識別性能。

 

2.3 預測識別

        有了這樣一個由“特征臉”組成的降維子空間,任何一幅人臉圖像都可以向其投影得到一組坐標系數,這組系數表明了該圖像在子空間中的位置,從而可以作為人臉識別的依據。換句話說,任何一幅人臉圖像都可以表示為這組“特征臉”的線性組合,其加權系數即是K-L變換的展開系數,也可以稱為該圖像的代數特征。因此,在獲得特征臉之後,就可以對每一類別的典型樣本進行投影,由此得到每個人臉的投影特征從而構成人臉特征向量,作為下一步識別匹配的搜索空間。

        輸入圖像及其在人臉空間上的投影(重構圖像),人臉圖像在人臉空間中的投影變化不明顯而非人臉圖像的投影變化明顯。因此,檢測一幅圖像中是否存在人臉的基本思想是,計算該圖像中任意位置處的局部圖像與人臉空間之間的距離ε。其中,ε是局部圖像是否為人臉的度量。因此,只要計算給定圖像任意一點上的ε,就可以得到映射圖ε(x,y) 。

 

3 線性判別分析

 

        線性判別分析(linear/fisher discrimination analysis,LDA)思想是將多維空間上的樣本投影到一條直線上,形成一維特征空間。在該直線上樣本的投影具有最佳可分性,即同類模式盡可能的密集,不同類模式盡可能分開。

        LDA實質上就是多維模式空間到一維特征空間的映射,利用類的成員信息形成一組特征向量,特征向量體現了不同的人臉變化,稱此特征空間為Fisherface。該方法以訓練樣本的類內散布矩陣與類間散布矩陣為基礎構造最優投影空間。與PCA相比,LDA更好地反映了不同人臉之間的差異性,即增加了類間差異,但卻忽略了同一個體由於光照、姿態等因素的不同而產生的類內差異。與基於K -L變換的人臉識別方法相比,基於Fisher的人臉識別方法能夠抑制圖像之間的與識別信息無關的差異,同時能夠提取出異類之間有益於識別的特征,因此具有更加優越的識別性能。

        Fisherfaces方法被Belhumeu等人提出,它是由Fisher線性判別式(Fisher’s lineardiscriminant,FLD)思想派生而來,同時考慮類間離散度和類內離散度,使這兩者的比率達到最大。Belhumeur的實驗證明,Fisherfaces的性能優於Eigen-faces。但即便如此,Fisherfaces還是存在兩個明顯的問題,即小樣本問題(樣本數目小於樣本維數),以及多數實際問題屬於非線性可分,傳統的Fisher線性分析在這些問題上不能取得良好的結果[9]。因此,一系列Fisherfaces的改進方法也被提出。

        在數學上,Fisher鑒別准則最終轉化為求取散布矩陣圖1 基本的LBP算子

        LBP可以用不同尺寸的鄰域來表示,采用圓形領域結合雙線性插值,鄰域的半徑R和像素數目P可以任意選取,用符號(P,R)表示像素的領域關系。我們可以用式子LBP 表示LBP運算(上標u2表示使用統一模式)[8]、[11]。圓形鄰域的實例參見圖2。

圖2 (8,1)、(16,2)、(8,2)鄰域

 

4.2 LBP人臉描述

        LBP方法進行人臉描述,這一過程包括使用紋理描述符對人臉局部進行描述,在將其組合起來成一個整體。人臉圖像被劃分為幾個局部區域,紋理描述符從這些單獨的區域提取出來,這些描述符串聯起來組成了人臉的整體描述。

        把臉部區域分成確定的m份圖3 訓練樣本(部分)

圖4 測試樣本(部分)

       

        圖5顯示了28位同學提供的樣本分別在三種識別算法下的識別情況。

圖5 三種方法的匹配效果對比

 

        其中24號樣本在PCA、Fisher算法下的正確匹配數量少於一半。27號樣本(參見圖6)由於拍照環境過於復雜,在有限的訓練樣本中無法正確匹配。

 

圖6 27號的訓練樣本(上)與測試樣本(下)

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved