重慶師范大學(xué) 楊杰之 袁玉杰
人臉識別在課堂簽到領(lǐng)域的應(yīng)用越來越廣泛,同時人臉識別也容易受到人為的攻擊,例如頭戴面具或者手持照片讓網(wǎng)絡(luò)做出錯誤的判斷,針對目前基于深度學(xué)習(xí)的活體檢測算法大都為大型卷積神經(jīng)網(wǎng)絡(luò),而部署到移動端的課堂簽到系統(tǒng)對于網(wǎng)絡(luò)具有輕量化要求的問題,搭建了一種基于輕量級網(wǎng)絡(luò)的快速人臉識別系統(tǒng)。
首先,利用SSD進(jìn)行人臉檢測,對輸入圖片進(jìn)行人臉區(qū)域的識別再利用OpenCV對人臉區(qū)域進(jìn)行分割,其次,以基于VGG改進(jìn)的輕量級網(wǎng)絡(luò)VGG_light為基礎(chǔ)網(wǎng)絡(luò)進(jìn)行活體檢測,從RGB圖中提取特征,再使用Softmax層作出真假人臉的判斷,最后利用ArcFace進(jìn)行人臉匹配,判斷輸入人臉是否在庫中,從而得到簽到是否成功的判斷。然后,將此技術(shù)部署到了移動端,利用JAVA與Android SDK完成了一個課堂簽到APP,并在APP進(jìn)行了應(yīng)用。實(shí)驗(yàn)結(jié)果顯示,改進(jìn)的輕量化網(wǎng)絡(luò)不僅保證了活體檢測算法的高效性,同時也具有很高的準(zhǔn)確率,滿足實(shí)時性需求,并且對于多種欺騙手段的都具有很好的防御效果,使得整個系統(tǒng)在人臉識別上更加可靠,得到的判斷結(jié)果更加準(zhǔn)確。
本系統(tǒng)主要功能是搭建一個輕量級的網(wǎng)絡(luò),以手機(jī)端為數(shù)據(jù)傳輸入口,可以快速的對人臉進(jìn)行活體檢測,判別識別出來的人臉是真實(shí)的人臉,還是采用了欺騙手段的假體人臉。總體步驟如圖1所示。
圖1 總體算法流程圖
主要包括人臉識別,人臉活體檢測兩個部分。人臉識別采取的是SSD方法,以矩形框的形式找到人臉的區(qū)域;人臉活體檢測是將識別出來的人臉區(qū)域利用改進(jìn)的輕量級VGG網(wǎng)絡(luò)進(jìn)行真實(shí)以及欺騙的判斷,并得到一個為真實(shí)人臉的得分,然后將最后的結(jié)果以及得分返回到使用者的移動端設(shè)備當(dāng)中,在移動端進(jìn)行一個實(shí)時的檢測。
在人臉識別的過程中,它也面臨著許多2D(2紙質(zhì)面具、視頻、電子照片等)或者3D(逼真的頭模頭套以及面具等)的假體人臉攻擊,因此,為系統(tǒng)配置魯棒的抗欺騙干擾算法是非常有必要的,該方法能夠?qū)铙w以及假體人臉進(jìn)行辨別,保證人臉識別系統(tǒng)的完全性。
為了保證活體檢測模型在一定準(zhǔn)確率的情況下,同時保證算法的實(shí)時性以及魯棒性,需要對網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行調(diào)整,尤其對于移動端的部署更加需要網(wǎng)絡(luò)模型的參數(shù)足夠小,因此本文選擇對VGG網(wǎng)絡(luò)進(jìn)行輕量化改進(jìn),使其滿足對移動端部署要求。
VGG是一種在多分類任務(wù)上十分有效的卷積神經(jīng)網(wǎng)絡(luò),采用的是Conv2D卷積層以及邊緣補(bǔ)0的相等池化,即給圖像矩陣四周都加0。卷積核使用為大小為3x3,卷積核個數(shù)為64的濾波器,一個卷積核掃完圖像矩陣數(shù)據(jù)后,生成一個新的矩陣,有64個卷積核就會生成64層新的矩陣,然后再使用使用局部歸一化層,加快模型的訓(xùn)練和防止模型訓(xùn)練過擬合,然后在卷積后使用relu激活函數(shù),最后做3層全連接層,前兩個全連接層的神經(jīng)元個數(shù)為4096。本系統(tǒng)的方法主要是在VGGNet的基礎(chǔ)上進(jìn)行的輕量化改進(jìn),利用了VGGNet的模型模塊,搭建了一個全新的輕量級網(wǎng)絡(luò)VGG_light,網(wǎng)絡(luò)的結(jié)構(gòu)如圖2所示。
人臉識別是基于人的臉部特征信息進(jìn)行身份驗(yàn)證的一種生物識別技術(shù),系統(tǒng)首先通過讀取攝像頭中傳入帶有人臉的照片,對照片中人臉的部分通過人臉檢測算法進(jìn)行提取,將提取后的人臉傳入卷積神經(jīng)網(wǎng)絡(luò)提取特征,通過計算數(shù)據(jù)庫中的特征于傳入進(jìn)來的人臉的特征進(jìn)行比對(如求歐式距離或余弦相似度),選擇距離最小的作為比對的結(jié)果,判斷該結(jié)果是否滿足閾值設(shè)置,滿足則輸出比對結(jié)果,不滿足則人臉匹配失敗。
圖2 VGG_light模型圖
使用深度卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行大規(guī)模人臉的特征提取,中心損失會懲罰歐式空間中深層特征與其對應(yīng)的類中心之間的距離,具有類內(nèi)緊湊性,導(dǎo)致不同人臉之間容易混淆網(wǎng)絡(luò)的判斷。ArcFace提出了“相加角余量損失”,以獲取用于面部識別的高緯判別特征。由于與超平面上的歐式距離精確對應(yīng),因此ArcFace具有清晰的幾何解釋。ArcFace在10多個人臉識別比賽,充分驗(yàn)證了其在不同數(shù)據(jù)集中都具備泛化能力,其中包括具有萬億對的新的大型圖像數(shù)據(jù)庫和大型視頻數(shù)據(jù)集。在ArcFace中,加法角余量損失(ArcFace)可以進(jìn)一步提高人臉識別模型的判別能力并穩(wěn)定訓(xùn)練過程。如圖3所示,DCNN特征和最后一個完全連接的層之間的點(diǎn)積等于特征和權(quán)重歸一化后的余弦距離。
圖3 ArcFcae模型示意圖
ArcFace利用反余弦函數(shù)來計算當(dāng)前特征與目標(biāo)權(quán)重之間的角度。然后向目標(biāo)角度添加一個附加的角余量,通過余弦函數(shù)再次獲得目標(biāo)對數(shù),再按照固定的特征范數(shù)重新縮放。
圖4 活體檢測數(shù)據(jù)集
ArcFace具有以下優(yōu)點(diǎn):(1)通過歸一化超平面中角度與弧線的對應(yīng)關(guān)系,優(yōu)化距離間距,使之能夠很好的區(qū)別類內(nèi)關(guān)系。(2)ArcFace在十項(xiàng)人臉識別的比賽中取得了最好的結(jié)果。(3)ArcFace易于通過各類深度學(xué)習(xí)框架復(fù)現(xiàn),并且對各類人臉數(shù)據(jù)庫都有很好的收斂性。(4)在訓(xùn)練期間,ArcFace的計算復(fù)雜度低,足以保證系統(tǒng)運(yùn)行時的實(shí)時性需求。
實(shí)驗(yàn)環(huán)境配置CPU為Intel(R)Core(TM)i7-8700 3.20GHz,內(nèi)存32GB,顯卡NVIDIA GeForce GTX 1070Ti,Windows 10系統(tǒng)下搭建。模型框架的搭建基于Keras+opencv,服務(wù)器端基于Flask框架,移動端開發(fā)在AndroidStudio環(huán)境下完成。
4.2.1 數(shù)據(jù)集
(1)活體檢測的數(shù)據(jù)
考慮到活體檢測任務(wù)對于欺騙手段的多樣性要求,以及本系統(tǒng)部署到移動端對于攝像頭的要求,采集了針對于本系統(tǒng)的數(shù)據(jù)集。關(guān)于人臉活體檢測數(shù)據(jù)集的采集方式,對于真實(shí)人臉的數(shù)據(jù)集,采樣了三個樣本,具體的采集方式如下所示,固定攝像頭,每個樣本錄制了一段時間在15 s左右的視頻,期間樣本在攝像頭前前后移動,小幅度的轉(zhuǎn)頭,再在視頻上以每5幀為間隔截取圖片,一共采集了709個真實(shí)人臉照片;對于欺騙人臉,人手持欺騙樣本,同樣固定攝像頭,樣本在攝像頭前前后移動,小幅度的轉(zhuǎn)頭,每個樣本錄制時長15s左右的視頻,一共采集了512張欺騙人臉的照片。
圖5 LFW數(shù)據(jù)集
視頻的格式為avi。圖像的格式要求為jpg。部分?jǐn)?shù)據(jù)集如圖4所示。
(2)人臉匹配數(shù)據(jù)集
對于人臉匹配任務(wù),利用對于人臉匹配模塊,采用LFW(Labeled Faces in the Wild)數(shù)據(jù)集中的6000對國內(nèi)外人臉進(jìn)行訓(xùn)練,3000對用于比對驗(yàn)證。數(shù)據(jù)集可以從下面的網(wǎng)址中獲得http://vis-www.cs.umass.edu/lfw/。數(shù)據(jù)集的部分?jǐn)?shù)據(jù)如圖5所示。
4.2.2 結(jié)果展示
圖6 桌面程序結(jié)果展示
圖7 APP結(jié)果展示
本系統(tǒng)搭建了一個活體檢測桌面程序和人臉識別課堂簽到手機(jī)APP,并在課堂簽到的任務(wù)上面進(jìn)行應(yīng)用,具體結(jié)果分別對這兩個部分進(jìn)行闡述。
(1)活體檢測桌面程序展示
桌面程序主要展示的是人臉活體檢測的模塊,綠色的方框代表框出來的人臉部分是真實(shí)人臉,方框上的數(shù)字代表的是真實(shí)人臉的置信度;紅色的方框代表框出來的人臉是欺騙人臉,同樣,方框上的數(shù)字代表的是欺騙人臉的置信度。如圖6所示。
(2)課堂簽到APP結(jié)果展示
主要展示的是包含了人臉檢測,活體檢測以及人臉匹配三個模塊的課堂簽到APP的效果,對于輸入到APP的照片,上傳到本地服務(wù)器之后,將對于此人臉的真假以及此人臉是否在庫中進(jìn)行判斷,其中,若系統(tǒng)判定該人臉為欺騙樣本將返回:“請不要試圖攻擊神經(jīng)網(wǎng)絡(luò)”;若系統(tǒng)判斷人臉為真實(shí)樣本但不在人臉庫中返回:“未在簽到名單之內(nèi)”;若系統(tǒng)判斷人臉為真實(shí)人臉,并且該人臉在人臉庫中返回:“簽到成功”,具體結(jié)果如圖7所示。
總結(jié):基于改進(jìn)的VGG的移動端快速活體檢測系統(tǒng)的功能是從移動端輸入的圖片進(jìn)行人臉檢測,再進(jìn)行人臉活體檢測,最后進(jìn)行人臉匹配,該系統(tǒng)包含SSD人臉檢測,OpenCV人臉區(qū)域剪裁模塊,改進(jìn)的輕量級網(wǎng)絡(luò)VGG_light人臉活體檢測模塊,以及基于ArcFace的人臉匹配模塊。并且在移動端對于集成了上訴模塊的課堂簽到APP進(jìn)行了部署與測試。
系統(tǒng)基于JAVA以及Python語言的集成開發(fā)環(huán)境,以類的方式進(jìn)行編寫,結(jié)構(gòu)清晰。系統(tǒng)界面簡潔、操作簡單,并且本系統(tǒng)不僅僅適用于課堂簽到,還可以應(yīng)用到人臉支付,門禁等場景當(dāng)中。