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