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