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