林志健 周設(shè)營 陳延清
(廣東海洋大學(xué)寸金學(xué)院,廣東 湛江 524094)
人臉識別是一種身份識別的生物識別技術(shù),主要是通過攝像頭采集人臉圖像,提取人的臉部特征信息并與原始數(shù)據(jù)庫中的人臉圖像進(jìn)行對比,完成身份識別。目前,人臉識別技術(shù)已經(jīng)應(yīng)用于考勤、手機(jī)解鎖、交通安全、金融、電子商務(wù)、電子支付等領(lǐng)域,為人們的工作生活提供了便利。人臉識別系統(tǒng)主要的實(shí)現(xiàn)過程包括獲取人臉圖像,建立人臉圖像原始數(shù)據(jù)庫作為系統(tǒng)的圖像基礎(chǔ),通過攝像頭獲取目標(biāo)圖像,檢測并預(yù)處理人臉圖像結(jié)構(gòu),提取人臉圖像特征,并根據(jù)人臉圖像特征結(jié)構(gòu)與編碼好的圖像原始庫中既有的人臉圖像進(jìn)行比對識別,從數(shù)據(jù)庫中篩選出識別身份和輸出比對結(jié)果。
機(jī)器學(xué)習(xí)是模擬神經(jīng)學(xué)習(xí)的處理過程,使用已有的大量數(shù)據(jù),采用統(tǒng)計(jì)學(xué)的方法發(fā)掘其中的規(guī)律,利用計(jì)算機(jī)強(qiáng)大的計(jì)算能力訓(xùn)練出數(shù)據(jù)模型,使其學(xué)習(xí)執(zhí)行任務(wù),當(dāng)輸入新數(shù)據(jù)時(shí),通過該模型可以預(yù)測出該數(shù)據(jù)結(jié)果[1]。隨著機(jī)器學(xué)習(xí)研究探索的深入,深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)方法已經(jīng)在人工智能的多個(gè)領(lǐng)域有所應(yīng)用,在以人臉識別為代表的計(jì)算機(jī)視覺應(yīng)用上也形成了許多有效的識別方法。有基于幾何特征的人臉識別方法、基于模板的人臉識別方法,這些主要都是提取面部特征,構(gòu)造特征向量模型,對人臉圖像進(jìn)行編碼,將編好碼的圖像存儲成庫,對預(yù)測圖像的相同編碼進(jìn)行比較,設(shè)定閾值顯示結(jié)果,典型的有主動外觀模型、LBP 模板匹配方法。基于神經(jīng)網(wǎng)絡(luò)的人臉識別方法,是在人臉特征提取方法的基礎(chǔ)上,通過輸入大量人臉樣本圖片,自動形成特征提取器和分類器,利用計(jì)算機(jī)重復(fù)訓(xùn)練形成適合于檢測和識別任務(wù)的模型,常用于模型訓(xùn)練的神經(jīng)網(wǎng)絡(luò)算法有卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)、遞歸神經(jīng)網(wǎng)絡(luò)(Recursive Neural Network,RNN)以及深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)[2]。
根據(jù)人臉識別方法搭建人臉識別系統(tǒng)實(shí)施流程規(guī)則,人臉識別系統(tǒng)實(shí)現(xiàn)身份識別的主要包括人臉圖像的采集與檢測、人臉圖像預(yù)處理、人臉特征提取與匹配識別3 個(gè)部分[3]。
在人臉識別系統(tǒng)中,采集圖像系統(tǒng)可以進(jìn)行人臉圖像的批量導(dǎo)入和人臉圖像的實(shí)時(shí)采集。批量導(dǎo)入圖像的過程就是把采集好的人臉圖像批量導(dǎo)入系統(tǒng),人臉識別系統(tǒng)再實(shí)現(xiàn)人臉圖像的逐個(gè)采集工作。人臉圖像實(shí)時(shí)采集是通過攝像頭自動實(shí)時(shí)抓取人臉圖像,將人臉圖像上傳到系統(tǒng)中完成采集工作。一些較為先進(jìn)的人臉識別系統(tǒng)在抓拍圖像或上傳圖像的過程中具有過濾功能,會初步對圖像進(jìn)行基本屬性篩查,過濾掉質(zhì)量差、模糊的人臉圖像,從而保證圖像的質(zhì)量和識別精準(zhǔn)性。
人臉檢測系統(tǒng)在采集圖像時(shí)需要對圖像進(jìn)行檢測與跟蹤,根據(jù)人臉的結(jié)構(gòu)特點(diǎn)獲取圖像中的模式特征,例如結(jié)構(gòu)特征、顏色特征、矩形特征等信息,找到人臉圖像的特征信息,在圖像中標(biāo)定出特征的位置和大小,利用這些特征進(jìn)行人臉檢測,從而完整準(zhǔn)確地采集人臉識別系統(tǒng)的圖像。Adaboost 是一種將弱學(xué)習(xí)算法通過一定規(guī)則訓(xùn)練成一個(gè)強(qiáng)學(xué)習(xí)算法的強(qiáng)分類器,從而形成高準(zhǔn)確率的人臉檢測的算法[4]。通過Adaboost 算法人臉檢測,輸入典型代表的人臉特征信息,按照神經(jīng)網(wǎng)絡(luò)的加權(quán)統(tǒng)計(jì)方法和針對圖像特征信息的機(jī)器訓(xùn)練,形成一個(gè)強(qiáng)檢測分類模型,能快速有效地檢測出輸入的新圖像數(shù)據(jù)的人臉特征結(jié)構(gòu),去除圖像中多余的數(shù)據(jù)信息,精確定位出圖像中人臉的位置、姿態(tài)和結(jié)構(gòu)特點(diǎn),從而保證能夠快速有效地進(jìn)行人臉檢測和人臉圖像的精準(zhǔn)采集。
人臉的圖像預(yù)處理是在人臉檢測的基礎(chǔ)上,對圖像進(jìn)行處理,使系統(tǒng)能方便地提取人臉特征。由于受光照、亮度、表情等條件的限制和隨機(jī)干擾,系統(tǒng)獲取的原始人臉圖像一般是不能直接使用的,所以人臉識別系統(tǒng)在實(shí)現(xiàn)圖像識別前需要進(jìn)行圖像預(yù)處理,主要的人臉圖像預(yù)處理包括圖像的灰度校正、噪聲過濾、光線補(bǔ)償、旋轉(zhuǎn)、縮放等復(fù)雜的圖形圖像處理過程,從而避免了現(xiàn)實(shí)環(huán)境下采集圖像因光照不均勻、人臉角度傾斜、人臉的遮蓋等外在因素造成的圖像信息不足或干擾,經(jīng)過預(yù)處理使該人臉圖像在清晰度、特征度、結(jié)構(gòu)尺寸等方面均能夠滿足人臉圖像的特征提取的標(biāo)準(zhǔn)要求。
人臉識別特征提取是圖像匹配識別的關(guān)鍵,是在預(yù)處理好的人臉圖像的基礎(chǔ)上,根據(jù)人臉圖像的顏色清晰度、大小形狀等結(jié)構(gòu)特征,提取出有效匹配識別所需的數(shù)據(jù)信息,包括曲率、距離、體積和角度等多維的特征向量,作為人臉結(jié)構(gòu)的幾何特征,構(gòu)建出人臉特征信息的模型[5]?;趲缀翁匦源鷶?shù)表征方法是根據(jù)人臉主要面部器官構(gòu)成如眼額頭、眼睛、鼻子、嘴巴等特點(diǎn),由于每一個(gè)人的人臉結(jié)構(gòu)存在局部的差異性,所構(gòu)成的人臉特征不同,通過對人臉結(jié)構(gòu)特點(diǎn)標(biāo)定而形成的幾何特征就可代表人臉圖像的幾何特征,具體采用代數(shù)方法,描述各特征點(diǎn)間的距離、角度、曲率等特性,從而構(gòu)建出該幅人臉圖像的幾何代數(shù)特征模型。
人臉圖像匹配與識別是根據(jù)人臉圖像特征提取出的特征模型與相同編碼保存的原始圖像,再對數(shù)據(jù)庫中的圖像進(jìn)行特征模板搜索匹配,在人臉識別系統(tǒng)中設(shè)定人臉相似程度的閾值,當(dāng)所輸入的人臉圖像與系統(tǒng)中保存的圖像進(jìn)行對比時(shí),得到的相似度超過這一閾值,則在人臉圖像庫中篩選出識別對象。因此,人臉識別系統(tǒng)的匹配識別過程就是根據(jù)對比識別結(jié)果的相似程度,從高到低進(jìn)行身份信息的精確篩選,從而給出最確定的身份信息判斷結(jié)果。
近年來Python 語言發(fā)展迅速,在人臉識別技術(shù)中也有應(yīng)用,其有豐富的第三方機(jī)器視覺庫,其中OpenCV 庫提供了3 種人臉識別器。即基于PCA 的特征人臉識別器、基于LDA 的人臉識別器和基于人臉局部特征提取的算法的LBPH 人臉識別器,因此可以通過基于機(jī)器學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)算法,利用Python 編程語言和OpenCV 第三方機(jī)器視覺庫實(shí)現(xiàn)人臉識別[6]。
機(jī)器學(xué)習(xí)需要對數(shù)據(jù)集進(jìn)行訓(xùn)練,高質(zhì)量的訓(xùn)練數(shù)據(jù)集對模型的性能有很大影響,而深度學(xué)習(xí)需要大數(shù)據(jù)的訓(xùn)練來提高模型的泛化能力,減少過擬合的發(fā)生。目前開源的人臉圖像數(shù)據(jù)集有olivettifaces 人臉數(shù)據(jù)集、LFW 人臉數(shù)據(jù)集等。olivettifaces 是紐約大學(xué)提供的一個(gè)非常小的人臉數(shù)據(jù)集,它由40 個(gè)人組成,共有400 張人臉圖。LFW 人臉數(shù)據(jù)集由馬薩諸塞大學(xué)提供,是從互聯(lián)網(wǎng)上采集的、無約束的、處于自然場景中的人臉圖片數(shù)據(jù)集。數(shù)據(jù)集是由來自世界各地的13 000 多張名人的臉組成的自然場景。
使用OpenCV 進(jìn)行人臉檢測前,需要先下載2 個(gè)訓(xùn)練好的Haar 級聯(lián)分類器XML 文件, 將下載的文件放在與運(yùn)行腳本相同的目錄中,通過使用Adaboost 算法進(jìn)行分類訓(xùn)練,得到算法制定規(guī)則的強(qiáng)分類器模型。在獲得OpenCV 預(yù)訓(xùn)練好的模型之后,我們就可以根據(jù)這個(gè)模型來對輸入圖像中特定區(qū)域的特征進(jìn)行人臉檢測。人臉檢測過程方法簡要描述及關(guān)鍵程序如下。
首先,導(dǎo)入OpenCV 分類器庫,創(chuàng)建人臉檢測級聯(lián)分類器對象實(shí)例、創(chuàng)建人眼檢測級聯(lián)分類器實(shí)例,采用lBP特征進(jìn)行檢測。
face_cascade= cv2. CascadeClassifier('haarcascade_frontalface_default.xml')
face_cascade= cv2. CascadeClassifier('lbpcascade_frontalface. xml')
eye_cascade= cv2. CascadeClassifier('haarcascade_eye. xml')
其次,載入圖片,對圖片進(jìn)行灰度化、結(jié)構(gòu)形狀預(yù)處理。
img=cv2. imread('lena. jpg')
gray=cv2. cvtColor(img,cv2. COLOR_BGR2GRAY)
最后,調(diào)用級聯(lián)分類器進(jìn)行多尺度檢測,檢測人臉區(qū)域、眼晴和遍歷檢測到的結(jié)果。
faces=face_cascade,detectMultiscale(gray,1. 3,5)
eyes = eye_cascade. detectMultiscale(roi gray)
for(x,y,w,h)in faces:
cv2. imwrite('detected_face. jpg',img)
人臉識別是人工智能領(lǐng)域的研究熱點(diǎn),人臉識別系統(tǒng)在安全、身份驗(yàn)證、智能門禁、銀行系統(tǒng)以及智能交通等方面有很大的應(yīng)用前景。隨著人工智能技術(shù)的發(fā)展、機(jī)器學(xué)習(xí)的深度研究,相信通過該領(lǐng)域研究人員的不懈努力,人臉識別技術(shù)將會更加精準(zhǔn)、安全和便捷,人臉識別系統(tǒng)的應(yīng)用將會越來越廣泛。