杜駿霖
摘 要:人臉識(shí)別技術(shù)在日常生活中的應(yīng)用愈加廣泛。本文著重研究如何在人臉識(shí)別過程中判斷被識(shí)別者是否戴眼鏡的問題。首先采用基于AdaBoost算法的Haar強(qiáng)特征級(jí)聯(lián)分類器,把圖像從起點(diǎn)到各個(gè)點(diǎn)之間形成的矩陣中所有像素點(diǎn)的和作為一個(gè)元素存進(jìn)一個(gè)新的矩陣中,后將人臉眼部圖像單獨(dú)切割出來,并將眼部圖像的像素點(diǎn)所占總像素點(diǎn)的比例作為一個(gè)判斷是否戴眼鏡的條件,運(yùn)用回溯算法確定一個(gè)最佳閾值,最后得到人臉識(shí)別正確率為91.43%。
關(guān)鍵詞:AdaBoost算法;Haar特征;回溯算法
中圖分類號(hào):TP391.41 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1003-5168(2021)26-0013-03
Research on Wearing Glasses in Face Recognition Based on
AdaBoost Algorithm
DU Junlin
(School of Remote Sensing and Geomatics Engineering, Nanjing University of Information Science and Technology, Nanjing Jiangsu 210044)
Abstract: Face recognition technology is more and more widely used in daily life. This paper focuses on how to judge whether the recognized person wears glasses or not in the process of face recognition. Firstly, the Haar strong feature cascade classifier based on AdaBoost algorithm is used to store the sum of all pixels in the matrix formed from the starting point to each point of the image into a new matrix as an element. Then the face eye image is cut out separately, and the proportion of the pixels in the eye image to the total pixels is taken as a condition to judge whether to wear glasses or not. The backtracking algorithm is used to determine an optimal threshold. Finally, the correct rate of face recognition is 91.43%.
Keywords: AdaBoost algorithm;Haar feature;backtracking algorithm
人臉識(shí)別技術(shù)作為一種新型的圖像處理手段,正在逐步取代傳統(tǒng)的身份驗(yàn)證模式。它通過攝像頭采集含有人臉的圖像或者視頻流,自動(dòng)檢測(cè)人臉并進(jìn)行定位,提取其中所蘊(yùn)含的身份特征,然后將檢測(cè)到的人臉與已有數(shù)據(jù)庫中的人臉進(jìn)行比對(duì)。人臉識(shí)別技術(shù)不僅具有非接觸性、不易仿冒性等特點(diǎn),還具有識(shí)別精度高、速度快等優(yōu)點(diǎn),能夠大大提高重要關(guān)口的通行速度。目前,人臉識(shí)別技術(shù)還不夠完善,尤其是面對(duì)人臉形狀、顏色不同且有遮擋物(帽子、眼鏡等)等情形時(shí),檢測(cè)較為困難。因此,加大對(duì)人臉識(shí)別技術(shù)研究方面的投入,進(jìn)一步提高識(shí)別的效率與正確率,并將其應(yīng)用于日常生活中顯得尤為重要。
1 AdaBoost算法模型構(gòu)建
1.1 模型介紹
AdaBoost是英文Adaptive Boosting(自適應(yīng)增強(qiáng))的縮寫[1],其自適應(yīng)性體現(xiàn)在前一個(gè)基本分類器被錯(cuò)誤分類的樣本權(quán)值會(huì)增大,而正確分類的樣本權(quán)值會(huì)減小,并再次被用來訓(xùn)練下一個(gè)基本分類器。同時(shí),在每一輪迭代中加入一個(gè)新的弱分類器,直到達(dá)到某個(gè)預(yù)定的足夠小的錯(cuò)誤率或達(dá)到預(yù)先指定的最大迭代次數(shù)才確定最終的強(qiáng)分類器。Haar特征是計(jì)算機(jī)視覺領(lǐng)域常用的描述圖像特征描述算子,通過像素分模塊求差值來反映圖像中的灰度變化。Haar特征是黑色矩形與白色矩形框內(nèi)的像素和作差求得的值。本文將圖片中的眼睛、鼻梁和嘴巴作為目標(biāo)特征(黑色區(qū)域),將其余部位看作白色區(qū)域,需要提取出減去白色區(qū)域后的黑色區(qū)域[2]。
1.2 算法優(yōu)化
本文采用積分圖計(jì)算Haar的特征值提取,并利用基于AdaBoost算法的Haar強(qiáng)特征級(jí)聯(lián)分類器進(jìn)行人臉識(shí)別框取。如圖1所示,將每張圖像看作無數(shù)個(gè)點(diǎn)的集合,把最左上角的點(diǎn)記為起點(diǎn)0,把圖像從起點(diǎn)到其余各個(gè)點(diǎn)1,2,3,……之間形成的矩陣中的所有像素點(diǎn)的和作為一個(gè)元素存進(jìn)一個(gè)新的矩陣中。直接調(diào)用新矩陣的元素就可以在短時(shí)間內(nèi)快速得到矩陣中的像素點(diǎn)的和。
記起點(diǎn)為0,目標(biāo)矩形的4個(gè)端點(diǎn)分別為1、2、3、4,以a、b為對(duì)角線端點(diǎn)的矩形內(nèi)的像素和為sum[a,b]。調(diào)用已有的像素和矩陣可知,A、B、C、D分別為4個(gè)小矩形內(nèi)像素點(diǎn)的和,則有:
A=sum[0,1]
B=sum[0,2]-sum[0,1]
C=sum[0,3]-sum[0,1]
D=sum[0,4]-sum[0,3]-sum[0,2]+sum[0,1] (1)
2 基于AdaBoost算法的特征比較決策樹模型
2.1 模型建立
級(jí)聯(lián)分類器的訓(xùn)練主要采用的是迭代思想,通過將多個(gè)弱分類器按照一定的策略合理結(jié)合[3],得到一個(gè)強(qiáng)分類器。訓(xùn)練出多個(gè)強(qiáng)分類器后,按照級(jí)聯(lián)的方式把它們組合在一塊,可得到最終的Haar分類器。
首先,初始化各訓(xùn)練數(shù)據(jù)的權(quán)值分布。假設(shè)共有N個(gè)樣本,將每一個(gè)訓(xùn)練樣本在最初都賦予相同的權(quán)值1/N。其次,訓(xùn)練弱分類器。具體訓(xùn)練過程中,若某個(gè)樣本點(diǎn)已經(jīng)被準(zhǔn)確分類,那么在構(gòu)造下一個(gè)訓(xùn)練集時(shí),它的權(quán)值就會(huì)降低。最后,將各個(gè)訓(xùn)練得到的弱分類器組合成強(qiáng)分類器。各個(gè)弱分類器的訓(xùn)練過程結(jié)束后,加大分類誤差率小的弱分類器的權(quán)重,使其在最終的分類函數(shù)中起較大的決定性作用[4],同時(shí)降低分類誤差率大的弱分類器的權(quán)重,使其在最終的分類函數(shù)中起較小的決定作用。
最基本的弱分類器只包含一個(gè)Haar-Like特征,也就是它的決策樹只有一層,被稱為樹樁。以規(guī)格為20×20的圖像為例,包含78 460個(gè)特征。如果直接利用AdaBoost訓(xùn)練,那么工作量極其巨大。所以,必須先篩選出T個(gè)優(yōu)秀的特征值(最優(yōu)弱分類器),然后把這T個(gè)最優(yōu)弱分類器傳給AdaBoost進(jìn)行訓(xùn)練。算法流程如圖2所示。
經(jīng)過反復(fù)迭代訓(xùn)練,級(jí)聯(lián)分類器通過機(jī)器學(xué)習(xí)基本掌握人臉五官的各項(xiàng)特征值,并據(jù)此判斷出眼睛和嘴巴的位置[5]。
2.2 模型求解
采用基于AdaBoost算法的Haar強(qiáng)特征級(jí)聯(lián)分類器對(duì)人臉進(jìn)行分類,可以清晰找出眼睛、鼻子及嘴巴的位置,結(jié)果如圖3所示。
3 眼鏡佩戴檢測(cè)模型
為了快速判斷圖像中的人臉是否戴眼鏡,避免對(duì)整張人臉進(jìn)行遍歷而耗費(fèi)時(shí)間,本文先用Python定位眼睛周圍的圖像并對(duì)其進(jìn)行切割,然后用MATLAB對(duì)圖像進(jìn)一步處理。在MATLAB中將附件所給的灰度圖繪制成網(wǎng)格圖,如圖4所示,其中圖4(a)和圖4(b)為不戴眼鏡圖像,圖4(c)為戴眼鏡圖像。經(jīng)觀察分析得知,圖像戴眼鏡的部位亮度明顯低于周圍沒有被眼鏡覆蓋的部位。
而后對(duì)采集到的100張戴眼鏡的圖像進(jìn)行處理,求出每張圖像中眼鏡所覆蓋的臉部像素點(diǎn)占臉部總像素點(diǎn)的比例,確定一個(gè)最佳閾值,作為判斷是否戴眼鏡的標(biāo)準(zhǔn)。達(dá)到這個(gè)閾值判別為戴眼鏡,反之則沒有戴眼鏡。在確定閾值的過程中采用回溯算法。此外,本文考慮了頭發(fā)、痣等可能影響圖像亮度的因素,并對(duì)其進(jìn)行處理,提高了閾值的精確度。
通過MATLAB找到最佳閾值后,再利用此閾值對(duì)附件中剩余圖像進(jìn)行自動(dòng)識(shí)別,識(shí)別結(jié)果見表1(B開頭編號(hào)為戴眼鏡,A開頭編號(hào)為不戴眼鏡)。通過對(duì)這一識(shí)別過程進(jìn)行概率統(tǒng)計(jì)和判斷,發(fā)現(xiàn)識(shí)別正確率較高,說明本文使用的方法以及確定的篩選閾值正確可行。
4 結(jié)語
本文針對(duì)人臉識(shí)別過程中判斷是否佩戴眼鏡問題進(jìn)行算法優(yōu)化研究。采用基于AdaBoost算法的Haar強(qiáng)特征級(jí)聯(lián)分類器,構(gòu)建所有像素點(diǎn)集合的新矩陣。針對(duì)是否佩戴眼鏡將人臉眼部圖像單獨(dú)切割出來,并將眼部圖像的像素點(diǎn)所占總像素點(diǎn)的比例作為一個(gè)判斷是否戴眼鏡的條件。運(yùn)用回溯算法,對(duì)圖像進(jìn)行處理,確定一個(gè)最佳閾值,達(dá)到這個(gè)閾值判斷為戴眼鏡,未達(dá)到閾值則判斷為不戴眼鏡。
參考文獻(xiàn):
[1]陳昱辰,曾令超,張秀妹,等.基于圖像LBP特征與Adaboost分類器的垃圾分揀識(shí)別方法[J].南方農(nóng)機(jī),2021(21):136-138.
[2]劉仲民,李戰(zhàn)明,王亞運(yùn),等.基于PCA/ICA和誤差補(bǔ)償算法的眼鏡摘除研究[J]. 光學(xué)技術(shù),2014(5):429-433.
[3]張建偉,霍進(jìn),李言章,等.基于人臉識(shí)別的防疫系統(tǒng)研究[J].現(xiàn)代計(jì)算機(jī),2021(24):131-135.
[4]李金羽.多姿態(tài)人臉識(shí)別算法研究[D].北京:北京建筑大學(xué),2020:35-37.
[5]李艷雙,曾珍香,張閩,等.主成分分析法在多指標(biāo)綜合評(píng)價(jià)方法中的應(yīng)用[J].河北工業(yè)大學(xué)學(xué)報(bào),1999(1):96-99.
1139501186281