黃紹欣,田秀云
(廣東海洋大學(xué)電信學(xué)院,廣東湛江 524088)
近年來(lái),由于深度學(xué)習(xí)的興起,人臉?lè)治黾夹g(shù)得到了大幅度的研究。從一張圖片或者從一個(gè)視頻中提取人臉的位置坐標(biāo)、姿態(tài)、年齡、情感、性別、表情等方面信息以應(yīng)用于硬件設(shè)備上[1],硬件設(shè)備根據(jù)人臉的特征做出相應(yīng)服務(wù),從而提升硬件設(shè)備的智能化。隨著深度學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)的興起,人臉檢測(cè)取得了顯著的突破,其優(yōu)越的性能漸漸被應(yīng)用到日常生活。
人臉檢測(cè)的研究主要有兩個(gè)方向,第一個(gè)方向是早期的基于手動(dòng)提取特征的人臉檢測(cè),Viola-Jones 提出的圖片Haar 特征提取算法[2](邊緣特征、線性特征、中心特征和對(duì)角線特征)開辟了人臉檢測(cè)新征程;第二個(gè)方向是基于卷積神經(jīng)網(wǎng)絡(luò)的通用的人臉檢測(cè)算法,該算法是繼承于一些高性能的通用目標(biāo)檢測(cè)算法,這些通用的目標(biāo)檢測(cè)算法第一個(gè)方法是基于區(qū)域回歸的人臉檢測(cè),基于區(qū)域回歸實(shí)現(xiàn)的目標(biāo)檢測(cè)算法有Fast R-CNN[3]、FPN[4]。基于卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)人臉檢測(cè)的另外一個(gè)方法是基于滑動(dòng)窗口,基于此滑動(dòng)窗口實(shí)現(xiàn)的目標(biāo)檢測(cè)算法有YOLO[5]系列等,最近被提出的人臉檢測(cè)RetinaFace[6]算法即基于滑動(dòng)窗口,利用額外監(jiān)督和自監(jiān)督結(jié)合的多任務(wù)學(xué)習(xí),對(duì)不同尺寸的人臉進(jìn)行像素級(jí)的定位,取得了比較好的結(jié)果。除此之后還有通過(guò)結(jié)合人臉五點(diǎn)關(guān)鍵點(diǎn)回歸的人臉檢測(cè)算法,例如MTCNN[7]通過(guò)回歸眼睛、鼻子和嘴巴五點(diǎn)關(guān)鍵點(diǎn)定位人臉,并且可以在同一個(gè)訓(xùn)練任務(wù)中同時(shí)學(xué)習(xí)“識(shí)別人臉”、“邊界框回歸”、“人臉關(guān)鍵點(diǎn)識(shí)別”,經(jīng)過(guò)實(shí)驗(yàn)證實(shí)該多任務(wù)損失[6-7]措施可以有效提高算法的性能。
本文采取ResNet34[8]作為特征提取層,基于其有效提取低分辨率人臉特征信息的特點(diǎn)作為人臉檢測(cè)的主干網(wǎng)絡(luò);利用特征金字塔結(jié)構(gòu),上采樣不同特征層下不同分辨率的人臉,有效提取不同分辨率下的人臉特征信息;之后利用Inception 結(jié)構(gòu)[9]融合多尺度特征圖,進(jìn)一步增加感受野區(qū)域獲取全局特征,使得檢測(cè)效果更精確。使用多任務(wù)損失函數(shù)同時(shí)對(duì)人臉?lè)诸悺⑷四樳吔缈?、人臉關(guān)鍵點(diǎn)進(jìn)行回歸。
主干網(wǎng)絡(luò)如圖1 所示,采用ResNet34 和3 個(gè)特征金字塔網(wǎng)絡(luò)作為特征提取層主干結(jié)構(gòu),特征金字塔中的P2、P3、P4 層的輸入?yún)?shù)對(duì)應(yīng)ResNet34 中的3 個(gè)被定義為C2、C3、C4 的殘差結(jié)構(gòu)的輸出參數(shù)。P2、P3、P4 對(duì)殘差結(jié)構(gòu)C2、C3、C4 分別采用上采用線性插值(nearest)和橫向鏈接C2、C3、C4層,使用1×1的卷積核合并P2~P4 和C2~C4 的數(shù)據(jù)使得模型能夠融合不同尺度特征圖的數(shù)據(jù)。C2、C3、C4分別是預(yù)訓(xùn)練ResNet34的3個(gè)分類輸出層。為了使模型能夠?qū)W習(xí)尺度變化的人臉,與錨相關(guān)的卷積層輸出應(yīng)該要對(duì)應(yīng)于不同的感受野(receptive filed),因此采用學(xué)習(xí)不同感受野的Inception 模型增加全局特征。采用的Inception 包含4 個(gè)卷積層分支作為接收不同尺度,Inception 模型是連接在FPN 的輸出層中的,每個(gè)FPN 輸出的特征圖都對(duì)應(yīng)連接一個(gè)Inception網(wǎng)絡(luò)。
圖1 主干網(wǎng)絡(luò)
對(duì)于負(fù)錨,只有二分類損失函數(shù)被應(yīng)用;對(duì)于正錨,將會(huì)采用多任務(wù)損失函數(shù)計(jì)算。用于實(shí)現(xiàn)多任務(wù)損失函數(shù)的回歸層輸入特征圖的尺寸大小為Hn×Wn×256{n=1, 2, 3}。輸入網(wǎng)絡(luò)的圖片尺寸為840×840,經(jīng)過(guò)FPN 層之后輸出的特征圖的尺度和輸入到Inception 的尺度分別為Xi×Xi×256{Xi=27, 53, 105}。經(jīng)過(guò)Inception 之后的特征圖尺寸沒(méi)有改變,之后傳入到多任務(wù)損失層。多任務(wù)損失層將Inception 層輸入的特征圖進(jìn)行合并,使得模型輸出的特征圖即人臉邊界框、分類、五點(diǎn)關(guān)鍵點(diǎn)輸出特征分別為[BatchSize,None,4],[BatchSize,None,2],[BatchSize,None,10]。
該訓(xùn)練模型含有12 880 張圖片額外標(biāo)注的WIDER FACE 訓(xùn)練數(shù)據(jù)集[10],該數(shù)據(jù)集包含32 203 張圖片以及393 703 個(gè)人臉標(biāo)注框。其中158 989 個(gè)標(biāo)注人臉用于訓(xùn)練,39 496 個(gè)標(biāo)注人臉用于驗(yàn)證。每一個(gè)子數(shù)據(jù)集都包含3 個(gè)級(jí)別的檢測(cè)難度:Easy、Medium、Hard。該數(shù)據(jù)集的制作者來(lái)自于香港大學(xué),其中按照40%、10%、50%劃分?jǐn)?shù)據(jù)集作為訓(xùn)練、驗(yàn)證、測(cè)試數(shù)據(jù)集。這些人臉在尺度、分辨率、姿態(tài)、光照、表情、遮擋方面都有很大的變化范圍。有研究人員將WIDER FACE 中的訓(xùn)練數(shù)據(jù)集進(jìn)行額外的人臉五點(diǎn)關(guān)鍵點(diǎn)標(biāo)注。在本論文中,訓(xùn)練的檢測(cè)器也是采用進(jìn)行額外標(biāo)注的訓(xùn)練數(shù)據(jù)集,測(cè)試和驗(yàn)證數(shù)據(jù)集保持不變。
2.2.1 數(shù)據(jù)增強(qiáng)
本論文中數(shù)據(jù)增強(qiáng)的方式有隨機(jī)裁剪、尺度轉(zhuǎn)換、鏡像翻轉(zhuǎn)、顏色增強(qiáng)[11]。
(1)隨機(jī)裁剪:隨機(jī)選擇5 種不同的比例因子對(duì)原始圖片進(jìn)行裁剪,根據(jù)不同的比例因子(0.3, 0.45, 0.6,0.8,1.0)分別對(duì)圖片寬高中的短邊進(jìn)行裁剪,并且裁剪后的圖片要全覆蓋原人臉邊界框。
(2)尺度轉(zhuǎn)換:通過(guò)隨機(jī)裁剪之后,將圖片的大小調(diào)整為840×840。
(3)鏡像翻轉(zhuǎn):對(duì)原始圖片按照50%的概率進(jìn)行鏡像翻轉(zhuǎn)。
(4)顏色增強(qiáng):按照50%的概率對(duì)圖片的亮度、對(duì)比度、飽和度、色調(diào)進(jìn)行失真增強(qiáng)。
2.2.2 多任務(wù)損失
通常人臉檢測(cè)訓(xùn)練過(guò)程會(huì)包含人臉和非人臉?lè)诸愐约叭四樳吔缈蚧貧w,甚至還會(huì)在訓(xùn)練過(guò)程增加其他的訓(xùn)練任務(wù)。Zhu[12]訓(xùn)練人臉檢測(cè)任務(wù)時(shí)還進(jìn)行姿態(tài)檢測(cè)以及關(guān)鍵點(diǎn)定位的任務(wù);有研究人員在訓(xùn)練人臉檢測(cè)器時(shí),對(duì)人臉和非人臉、邊界框回歸、人臉五點(diǎn)關(guān)鍵點(diǎn)同時(shí)回歸。這種多任務(wù)損失有助于提高人臉檢測(cè)的性能,因此也將這種訓(xùn)練策略應(yīng)用到本文中。
訓(xùn)練人臉檢測(cè)器時(shí)結(jié)合人臉和非人臉、人臉邊界框回歸、人臉五點(diǎn)關(guān)鍵進(jìn)行多任務(wù)損失:
人臉?lè)诸悡p失為L(zhǎng)cls(pi,pi*),人臉檢測(cè)中的分類損失是兩分類(人臉/非人臉)問(wèn)題。分類損失函數(shù)Lcls使用交叉熵(softmax)分類損失具體如下:
式中:pi為第i個(gè)錨的人臉的概率,pi*=1 對(duì)于錨為正,pi*=0時(shí)則為負(fù)。
人臉邊框架損失為L(zhǎng)box(ti,ti*),邊界框損失函數(shù)Lbox使用的是smooth-L1[4]函數(shù)如下:
人臉五點(diǎn)關(guān)鍵點(diǎn)損失為L(zhǎng)pts(li,li*),人臉五點(diǎn)關(guān)鍵點(diǎn)指的是左眼、右眼、鼻子、左邊嘴角、右邊嘴角具體如下:
(4)參數(shù)設(shè)置:為了平衡損失函數(shù)L,設(shè)置參數(shù)(r1,r2,r3)分別為(1,2,1),這樣有助于從低分辨率的特征圖中更好的回歸定位人臉。
2.2.3 難負(fù)例挖掘
難負(fù)例挖掘(Hard Negative Mining):經(jīng)過(guò)錨匹配策略步驟之后,更多的錨容易來(lái)自于負(fù)樣本,即圖片中沒(méi)有目標(biāo)卻在訓(xùn)練的過(guò)程中分類器將其看成是正樣本,這會(huì)導(dǎo)致檢測(cè)準(zhǔn)確率降低。為了提升錨的匹配準(zhǔn)確率和加快優(yōu)化速度,的損失值和選擇頂部的假陽(yáng)性和陽(yáng)性之間的比例低于3∶1,即負(fù)樣本數(shù):正樣本數(shù)大約為3∶1用于訓(xùn)練,以使訓(xùn)練過(guò)程中有效降低假陽(yáng)性的檢測(cè)。故稱這種選擇策略為難負(fù)例挖掘[11]。
2.2.4 匹配策略
在訓(xùn)練的過(guò)程中,想要錨能夠真實(shí)的人臉邊界框能夠?qū)?yīng)上,因此為了能夠使得錨更好的匹配人臉,因此需要每個(gè)錨的候選框與真實(shí)的人臉邊界框交并比(Jaccard overlap)大于0.35。
式中:A為真實(shí)的人臉邊界框;B為訓(xùn)練中特征圖的候選框。
2.2.5 其他策略
使用Pytorch 深度學(xué)習(xí)框架訓(xùn)練模型,使用SGD optimiser 優(yōu)化器(momentum = 0.9,weigh decay = 0.000 5,batchsize=12,gamma=0.1)于單顯卡Tesla K80(12GB)GPU 優(yōu)化模型,初始化學(xué)習(xí)率設(shè)置為0.001,訓(xùn)練85 個(gè)epoch之后學(xué)習(xí)率降為0.000 1,訓(xùn)練95個(gè)epoch之后學(xué)習(xí)率降為0.000 01,一共訓(xùn)練100個(gè)epoch。
通過(guò)多任務(wù)損失進(jìn)行訓(xùn)練的,訓(xùn)練100 次的邊界框損失、分類損失和人臉五點(diǎn)關(guān)鍵點(diǎn)損失及總損失loss 分別如圖2~5所示。通過(guò)訓(xùn)練的損失來(lái)看,模型的參數(shù)還可以通過(guò)增加訓(xùn)練周期進(jìn)行降低損失函數(shù)。邊界框損失的權(quán)重是其他損失權(quán)重的2 倍,因此在優(yōu)化的過(guò)程中,收斂相對(duì)比其他的損失函數(shù)要好一些。從損失函數(shù)圖像上分析,分類損失的值較大,這說(shuō)明在搭建模型的過(guò)程中正負(fù)樣本并沒(méi)有處理好,即難例挖掘處理不好,在分類過(guò)程中可能含有人臉的樣本被判定為無(wú)人臉,于是檢測(cè)器無(wú)法檢測(cè)有人臉的困難樣本,導(dǎo)致在Hard 數(shù)據(jù)集上的平均準(zhǔn)確率低。
圖2 人臉邊界框回歸訓(xùn)練損失
圖3 人臉?lè)诸愑?xùn)練損失
圖4 人臉五點(diǎn)關(guān)鍵點(diǎn)訓(xùn)練損失
圖5 多任務(wù)訓(xùn)練訓(xùn)練損失
通過(guò)WIDER FACE 數(shù)據(jù)集劃分的3 種不同檢測(cè)難度的數(shù)據(jù)集驗(yàn)證模型的性能,分別是Easy、Medium和Hard數(shù)據(jù)集。采用NMS[11]去篩選置信度比較高的邊界框,在設(shè)置IOU 閾值為0.5 時(shí),在Easy、Medium 和Hard 的驗(yàn)證AP(準(zhǔn)確率)分別為93.79%、91.92%、55.75%,如表1所示。在人臉密集、遮擋嚴(yán)重、背景復(fù)雜的場(chǎng)景下檢測(cè)的效果并不是很理想,而在人臉稀疏的情況下取得較好的結(jié)果。
表1 測(cè)試結(jié)果
本文研究了人臉檢測(cè)的不同實(shí)現(xiàn)方法,提出改進(jìn)的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。實(shí)驗(yàn)證明以ResNet34 網(wǎng)絡(luò)作為特征提取層,通過(guò)FPN 融合上下文分辨率信息以及Inception網(wǎng)絡(luò)融合多尺度。為了驗(yàn)證模型的實(shí)際應(yīng)用效果,分別使用不同尺度、不同分辨率、不同背景下的圖片進(jìn)行測(cè)試。從檢測(cè)效果來(lái)看,該模型不僅可以準(zhǔn)確檢測(cè)在戶外場(chǎng)景下稀疏的人臉,還可以檢測(cè)遮擋、分辨率低的人臉。該模型在顯卡型號(hào)NVIDIA GeForce 920MX,CPU 型號(hào)Intel(R) Core(TM) i5-7200U CPU@ 2.50GHz (4 CPUs)~2.7 GHz測(cè)試執(zhí)行效率,測(cè)試結(jié)果顯示在筆記本電腦攝像頭拍攝VGA圖片上(640×480)的每秒傳輸幀數(shù)為2.80。