馮婧 顧梅花



摘要:基于OpenCV的人臉識別算法,具體為局部二值模式直方圖(LBPH),特征臉(Eigenface)以及Fisherface算法。介紹了各個算法的核心思想、具體實現步驟、應用場景以及優(yōu)缺點,并在OpenCV平臺上采用Python語言對三種算法進行仿真調試。實驗結果顯示,LBPH、Eigenface、Fisherface三種算法的正確率分別可達98.56%、81.16%和89.13%。
關鍵詞:人臉識別;OpenCV;LBPH;Eigenface;Fisherface
中圖分類號:TP391 文獻標識碼:A
文章編號:1009-3044(2020)14-0003-03
1引言
人臉識別作為一種主流的生物識別方法,被廣泛應用于眾多身份鑒別場景,是當下計算機視覺與模式識別領域的研究熱點。但是,當面臨不同的采集環(huán)境,人臉的多姿態(tài)問題,即光照問題,表情變化問題,遮擋干擾問題等都給人臉識別帶來了挑戰(zhàn),因此人臉識別算法的研究仍有重大意義。本文介紹了基于OpenCV的三種經典人臉識別算法,即局部二值模式直方圖(LBPH)算法,特征臉(Eigenface)算法以及Fisherface算法,并給出了相關實驗結果與分析。
2基于openCV的三種經典人臉識別算法
2.1局部二值模式直方圖(LBPH)算法
2.1.1原理
局部二值模式(Local Binary Patterns,LBP)在1996年由Timo Ojala等人提出。算法的核心原理是先將人臉灰度圖像分成若干小的區(qū)域,通過對這些小的區(qū)域采用相應的LBP算子進行處理,獲得相應的LBP值后,再繪制體現人臉特征信息的LBP統(tǒng)計直方圖,并將測試統(tǒng)計直方圖與訓練統(tǒng)計直方圖進行相似度比較,與測試樣本最為相似的訓練樣本即為識別結果。
2.1.2方法步驟
第一步:將人臉灰度圖像劃分為若干相同大小的圓形子區(qū)域。
第二步:利用公式(1)進行LBP圓形算子處理。LBP圓形算子的主要思想是在子區(qū)域內,用圓周上的某個像素點灰度值與中心像素點的灰度值相比較,大于或等于的情況下,該位置像素用l替換,反之,該位置像素用0替換。
第三步:利用公式(2)獲得LBP值。即將第二步的結果按一定順序排列成二進制碼序列,再將其轉換為十進制數,即得LBP值。在公式(2)中,P代表圓形子區(qū)域的圓周上采樣像素點個數,R代表圓形子區(qū)域的區(qū)域半徑。
第四步:分別繪制訓練集和測試集的LBP統(tǒng)計直方圖。
第五步:將測試樣本的每個圓形子區(qū)域的直方圖與訓練集中的所有圓形子區(qū)域的直方圖作比較,與測試樣本相似度最高的訓練樣本即為識別結果。
局部二值模式直方圖(LBPH)算法的流程圖如圖1。
2.2特征臉(Eigenface)算法
2.2.1原理
特征臉(Eigenface)算法最早在1987年由Sirovich.L和Kirby.M提出,在1991年由Turk.M和Pentland.A進一步完。應用特征臉算法的前提是待識別圖像人臉尺寸與特征臉尺寸一致,且為正面。算法的基本原理是使用主成分分析(PrincipalComponent Analysis,PCA)方法對人臉灰度圖像進行降維處理,去除不必要的信息,保留最能體現人臉特征的向量。再先后求得訓練集和測試集相應的特征向量。遍歷所有訓練集的特征向量后,與測試樣本最為接近的訓練樣本即為識別結果,其中,接近程度可采用歐式距離來衡量。
2.2.2方法步驟
2.3 Fisherface算法
2.3.1原理
線性判別分析(Linear Discriminant Analysis,LDA)在1996年由Belhumeur等人首次應用到人工智能和模式識別領域。算法的核心思想是先對原始數據集進行PCA降維,目的是去除冗余信息,找到最能代表人臉特征的向量表達,緊接著再使用LDA線性判別分析,用Fisher特征向量來體現樣本的分類特征,再通過求取歐式距離等方法進行人臉相似性判斷,以實現人臉識別。
2.3.2方法步驟
第一步:對原始數據集進行PCA降維。
第二步:利用LDA方法對第一步提取到的特征進行分類。目的是要讓不同人的圖像之間的距離變大,與此同時,同一個體的不同圖像間的距離變小。不同人多圖像之間的距離Sh用類間離散度矩陣來衡量,如公式(9)。
第四步:用Fisher特征向量重新描述訓練樣本和測試樣本。
第五步:比較兩者的Fisher特征向量相似度,給出識別結果。
Fisherface算法流程圖如圖3。
3實驗結果與分析
實驗選取The CNBC Face Database人臉數據集Caucasian部分中的70人,共計采用560幅人臉圖像進行實驗。所選取實驗數據集特點為光照影響較為明顯,拍攝角度略有偏轉,表情變化明顯。
人臉檢測采用OpenCV中的AdaBoost算法進行人臉框定,檢測效果如圖4。
然后,采用LBPH,Eigenface和Fisherface三種算法模型對經過歸一化的訓練集進行訓練,再用剩余的部分作為測試集進行測試,得到相應的識別正確率。
由表1可知,在光照影響較明顯,有一定拍攝角度偏差的條件下,可認為Eigenface和Fisherface算法的識別正確率偏低,選擇LBPH算法為最佳。另外,分析表1數據可知,當訓練樣本規(guī)模增加時,三種算法的正確率均有所提升,且Fisherface的提升效果最為明顯,可見,增加訓練樣本集規(guī)模是一種提升算法識別正確率的途徑。
相應地,對每種算法模型各執(zhí)行10次,取其識別時間的平均值,可得Eigenface算法所花時間為1.32毫秒,Fisherface算法用時2.43毫秒,而LBPH需花費2.69毫秒。不難看出,在上述條件下,雖然Eigenface識別正確率偏低,但其識別速度更快。
4小結
在進行人臉識別時,LBPH算法適合于應用在光照影響較明顯的場景;Eigenface算法對人臉的正面圖像識別效果較好,但是,當人臉的拍攝角度有一定偏轉時,識別率仍有待提高;Fisherface算法在降維的基礎上利用LDA來選擇出人臉樣本的最優(yōu)分類特征,分類效果較好。