胡 鐵,付曉峰
(杭州電子科技大學(xué)計(jì)算機(jī)學(xué)院,浙江 杭州310018)
本文研究基于人臉識(shí)別的高??爝f領(lǐng)取系統(tǒng),目標(biāo)是便利學(xué)生的同時(shí)降低快遞被誤領(lǐng)的風(fēng)險(xiǎn),保障用戶的財(cái)產(chǎn)安全,因此需要從人臉檢測(cè)、人臉欺騙檢測(cè)和人臉識(shí)別3個(gè)角度去完善整個(gè)人臉識(shí)別系統(tǒng)。
人臉檢測(cè)有許多流行的應(yīng)用,諸如dlib人臉檢測(cè)方法提取人臉上的68個(gè)特征點(diǎn)、opencv的haar+Adaboost對(duì)人臉特征的提取,上述2個(gè)方法雖然反應(yīng)速度快,但是準(zhǔn)確率比較低,容易將背景的雜物識(shí)別成人臉,且對(duì)光線和角度等因素非常敏感,因此后續(xù)又提出了許多先進(jìn)的人臉檢測(cè)方法。
本文使用的方法是:基于人臉檢測(cè)得到的人臉像素照片,使用ⅠnceptionResNetV1對(duì)每個(gè)人多張照片進(jìn)行編碼,計(jì)算得到的特征點(diǎn)和特征值的平均值,最后計(jì)算人臉間的歐氏距離,通過設(shè)定一定的閾值,對(duì)人臉進(jìn)行辨別,以提高在復(fù)雜場(chǎng)景下的人臉識(shí)別準(zhǔn)確率。
本文基于此對(duì)MobileNet進(jìn)行改造,得到SE-MobileNetV2,用MTCNN提取出的特征點(diǎn)作為輸入,輸出人臉真假的置信度。
PyQt5是一套將python綁定到Digia Qt5的界面編寫框架,提供成熟的交互界面和簡潔易用的控件,作為python的一個(gè)模塊,它提供620多個(gè)類和6 000個(gè)函數(shù)和方法,可以跨平臺(tái),在目前主流的操作系統(tǒng)上都可運(yùn)行,包括UNⅠX、Windows和Mac OS。
本系統(tǒng)所需要的數(shù)據(jù)是學(xué)生個(gè)人的快遞信息,考慮到系統(tǒng)的容量,因此限定每人的未領(lǐng)快遞數(shù)在10以內(nèi),包括姓名、學(xué)號(hào)、快遞的單號(hào)和快遞的名字。
2.2.1 MTCNN
MTCNN多任務(wù)卷積神經(jīng)網(wǎng)絡(luò),結(jié)構(gòu)上分為P-Net、R-Net和O-Net三層.P-Net(建議網(wǎng)絡(luò)),通過一個(gè)全卷積神經(jīng)網(wǎng)絡(luò)提取出一定數(shù)量的特征和標(biāo)定邊框,然后對(duì)提取的特征進(jìn)行Bounding-Box回歸和NMS,輸出很多張可能存在人臉的人臉區(qū)域,這些區(qū)域進(jìn)入R-Net進(jìn)行下一步處理。R-Net(精煉網(wǎng)絡(luò)),在R-Net里會(huì)對(duì)輸入進(jìn)行篩選,對(duì)最后選定的預(yù)測(cè)窗口進(jìn)行進(jìn)一步的Bounding-Box回歸和NMS,過濾掉P-Net中錯(cuò)誤的輸入,將更精確的預(yù)測(cè)窗口輸入到O-Net中。而R-Net保留了圖像更多的特征。O-Net(輸出網(wǎng)絡(luò)),也是一個(gè)卷積神經(jīng)網(wǎng)絡(luò),但是相比R-Net多了一個(gè)卷積層,對(duì)人臉的面部特征進(jìn)行回歸,輸出5個(gè)特征點(diǎn)。
2.2.2 InceptionResNetV1和人臉識(shí)別
ⅠnceptionResNetV1提出了Ⅰnception Module的新模塊,提出卷積分解的概念,利用1×3和3×1兩層卷積代替一層3×3卷積,有效提高特征提取能力和降低計(jì)算量。在本文中利用ⅠnceptionResNetV1編碼128D特征,最后將得出的128D特征與人臉數(shù)據(jù)庫中的特征均值進(jìn)行比對(duì),計(jì)算歐氏距離,所得置信度最高的身份即是確定的身份,若所有的計(jì)算結(jié)果都低于設(shè)定的閾值,則認(rèn)定為未知的人臉。
2.2.3 活體檢測(cè)
本文提出用SE-MobileNetV2檢測(cè)人臉欺騙攻擊。MobileNetV2是一個(gè)輕量級(jí)網(wǎng)絡(luò),相對(duì)于MobileNetV1增加了倒殘差和線性瓶頸層的模塊,該網(wǎng)絡(luò)有效彌補(bǔ)了MobileNetV1的缺陷,同時(shí)保持輕量化、高精度等特征,MobileNetV2檢測(cè)人臉欺騙在實(shí)驗(yàn)中取得不錯(cuò)的效果。本文認(rèn)為MobileNetV2中無殘差的塊前向傳播時(shí),會(huì)導(dǎo)致部分特征丟失,因此在無殘差模塊部分后加入空間注意力模塊,空間注意力模塊對(duì)特征圖的每個(gè)通道全局平均池化,經(jīng)過一層全連接層得到一組1×1×C(C為特征圖通道數(shù)量)的向量,乘上對(duì)應(yīng)的特征圖后輸出。最終得到的網(wǎng)絡(luò)主要包含2個(gè)結(jié)構(gòu),如圖1、圖2所示。
圖1 SE-MobileNet結(jié)構(gòu)1
在人臉檢測(cè)方面,dlib或haar+Adaboost的人臉檢測(cè)方面本文中使用的MTCNN采用多重網(wǎng)絡(luò)結(jié)構(gòu),多次回歸人臉框,具有較大的魯棒性,可以提取細(xì)粒度更高的特征,對(duì)人臉的框定更加精確。
本文使用的ⅠnceptionResNetV1將人臉特征編碼后得到128D的特征向量,將每個(gè)人的多張人臉的特征向量去均值和方差后,就可以得到個(gè)人的特征向量,計(jì)算需要檢測(cè)的人臉和人臉庫中每個(gè)特征向量的歐氏距離,比較提取出來的更細(xì)粒度的特征差異,降低了角度和光線的干擾,一定程度上減小了遮擋物的影響。
人臉欺騙檢測(cè)方面,考慮實(shí)用場(chǎng)景中應(yīng)用的模型應(yīng)滿足識(shí)別率高和輕量的特點(diǎn),因此選擇SVM、MobileNetV2和SE-MobileNetV2對(duì)比實(shí)驗(yàn)。將截好的人臉照片傳入人臉欺騙檢測(cè)模塊,其中SVM對(duì)整體特征進(jìn)行處理,會(huì)受到訓(xùn)練集的亮度、飽和度等因素的干擾,對(duì)訓(xùn)練集要求高,也難以適應(yīng)測(cè)試場(chǎng)景的多樣性,而MobileNetV2能對(duì)照片進(jìn)行更細(xì)粒度的特征提取,有效提升了識(shí)別的準(zhǔn)確率和魯棒性,通過加入空間注意力SE模塊,對(duì)區(qū)域特征的區(qū)分更加敏感,使用最終所得的SE-MobileNetV2進(jìn)行檢測(cè)。
本文實(shí)驗(yàn)測(cè)試集采用自己制作的人臉數(shù)據(jù)集,總共14個(gè)人,每人30張圖片,包括不同的角度、光線、表情和分辨率。
經(jīng)過一系列實(shí)驗(yàn)本文總結(jié)出以下結(jié)論:傳統(tǒng)方法使用haar+Adaboost和dlib進(jìn)行人臉檢測(cè),其中haar+Adaboost人臉檢測(cè)準(zhǔn)確率低,抗干擾性弱,對(duì)光線和角度等因素十分敏感,容易將背景誤測(cè)為人臉;dlib的準(zhǔn)確率相對(duì)較高,不會(huì)將背景錯(cuò)誤地檢測(cè)為人臉,但是檢測(cè)速度慢,角度的因素對(duì)dlib的人臉檢測(cè)干擾大,在本實(shí)驗(yàn)中使用MTCNN,在光線過曝和人臉分辨率低的情況下都能取得較好的檢測(cè)效果。在MTCNN截出的人臉上,本文展開一系列實(shí)驗(yàn),具體方法為:提取PCA特征后計(jì)算歐氏距離、ResNet50多分類、2DPCA+SVM的人臉識(shí)別和ⅠnceptionNetV1編碼后的特征值計(jì)算歐氏距離,ResNet50在訓(xùn)練集上取得95%的準(zhǔn)確率,而在測(cè)試集上僅僅只有70%的準(zhǔn)確率,對(duì)未知人臉的識(shí)別能力也很弱。PCA提取人臉圖片的特征向量后計(jì)算歐氏距離,人臉識(shí)別成功率達(dá)到89%,相對(duì)于ResNet50取得了較為不錯(cuò)的成功率,本實(shí)驗(yàn)考慮對(duì)輸入的特征處理,用ⅠnceptionNetV1對(duì)識(shí)別出的人臉進(jìn)行特征編碼,得到最后128D的特征向量,對(duì)特征向量做歐氏距離計(jì)算,實(shí)驗(yàn)后在測(cè)試集上得到的準(zhǔn)確率是97.2%,具有較好的魯棒性,有效降低了光線和角度等因素的干擾,實(shí)驗(yàn)結(jié)果表明臉部在有一定遮擋物的情況下也能有較好的識(shí)別效果。
分別比對(duì)人臉和手機(jī)中的人臉照片,從結(jié)果來看效果較好。在閾值為0.9且光線良好的情況下得到真人的人臉置信度在0.7左右,假臉的置信度也大多是0.74。在人臉數(shù)據(jù)庫中標(biāo)記的人臉也都被成功識(shí)別出來,而不在人臉庫中的人臉都標(biāo)記為”Unknown”。經(jīng)過一系列實(shí)驗(yàn)發(fā)現(xiàn),此時(shí)仍存在一些比較明顯的缺陷,比如當(dāng)圖像亮度過高時(shí),會(huì)出現(xiàn)將真臉認(rèn)成人臉欺騙攻擊、假臉認(rèn)成真臉的情況。經(jīng)過多次試驗(yàn)發(fā)現(xiàn),在光線良好的情況下,人臉欺騙檢測(cè)的準(zhǔn)確率在75%上下,人臉識(shí)別的準(zhǔn)確率能達(dá)到95%。
利用PyQt5編寫界面作為功能的載體,主界面設(shè)置一個(gè)窗口、一個(gè)文本框和一個(gè)按鈕,窗口顯示攝像頭畫面,文本框顯示快遞信息,按鈕控制攝像頭是否打開??爝f信息來自后臺(tái)自己寫的文本,經(jīng)過檢測(cè),使用效果良好,信息顯示正常。在快遞站門口背景復(fù)雜的情況下,能正確地標(biāo)識(shí)身份、檢測(cè)人臉欺騙攻擊和顯示對(duì)應(yīng)身份的快遞信息。
首先加載保存checkpoints下的經(jīng)由訓(xùn)練得到的模型20_best.path.tar的模型參數(shù)到SE-MobileNet,再加載MTCNN的參數(shù),然后循環(huán)從攝像頭讀取圖像,通過人臉檢測(cè)程序得到框定的人臉,經(jīng)過一系列預(yù)處理,得到224×224的圖像。將得到的人臉圖像傳入人臉欺騙檢測(cè)程序,判斷出是否為人臉欺騙攻擊,如果是人臉欺騙攻擊,則不傳入人臉匹配,出入登記失敗,快遞領(lǐng)取無效。如果通過檢測(cè),則進(jìn)行人臉識(shí)別匹配,將圖像特征編碼成128D特征向量,與人臉庫中的特征向量進(jìn)行歐氏距離的計(jì)算,得到最小的歐氏距離,若高于閾值,則會(huì)判斷為未知的身份。如果低于閾值,則判斷為最低閾值的身份,通過匹配后對(duì)快遞信息進(jìn)行校驗(yàn),如果認(rèn)領(lǐng)的快遞在數(shù)據(jù)庫的快遞信息內(nèi),則登記出庫。應(yīng)用在快遞領(lǐng)取場(chǎng)景下的流程為:進(jìn)入快遞站前進(jìn)行人臉識(shí)別,登記進(jìn)入信息;拿取快遞后在快遞站出口驗(yàn)證信息時(shí),攝像頭獲取人臉信息,首先辨別是否為人臉欺騙攻擊,如果是,則拒絕識(shí)別;如果不是,則傳入識(shí)別模塊,將識(shí)別出的身份信息和快遞信息進(jìn)行匹配,如果匹配成功,則快遞成功出庫。
MTCNN人臉檢測(cè)、ⅠnceptionNetV1+歐氏距離和SEMobileNetV2的搭配使用在本項(xiàng)目中解決了當(dāng)前存在的問題,雖然達(dá)到了預(yù)期的目標(biāo),但是仍存在一些不足,例如真假人臉的檢測(cè)結(jié)果有一定的振蕩。盡管一些明顯的虛假人臉能檢測(cè)出來,但是局限于用來訓(xùn)練SE-MobileNetV2的數(shù)據(jù)集的規(guī)模,會(huì)導(dǎo)致一些檢測(cè)有誤,將過度曝光的真人圖片誤判為假臉,后續(xù)可以采取一些更大更具有代表性的人臉欺騙數(shù)據(jù)集訓(xùn)練MobileNetV2。在識(shí)別人臉、身份匹配、欺騙檢測(cè)的快遞領(lǐng)取實(shí)用場(chǎng)景下,能取得不錯(cuò)的效果。