洪叁亮
深圳平安綜合金融服務(wù)有限公司,廣東 深圳 518000
借助視覺算法智能識別群眾是否戴口罩,具備良好的應(yīng)用價值,如銀行、保險、微信和支付寶等金融業(yè)務(wù)人臉核驗場景、機(jī)場和火車站閘機(jī)人臉核驗場景、居民樓刷臉進(jìn)樓等。判斷群眾是否佩戴口罩,拒絕佩戴口罩人群,提高人臉識別準(zhǔn)確率,從而進(jìn)一步提高了金融安防等場景的人臉識別的安全性。
傳統(tǒng)的目標(biāo)檢測方法通常是基于手工設(shè)計的特征,如方向梯度直方圖(histogram of oriented gradient,HOG)[1]檢測算法;基于滑窗搜索,如Viola Jones 檢測算法[2]。傳統(tǒng)的目標(biāo)檢測算法對環(huán)境要求比較嚴(yán)格,往往需要在理想環(huán)境下進(jìn)行,特征提取需要人工設(shè)計,不僅工作量大、還存在滑窗搜索性能低等缺點。
隨著深度學(xué)習(xí)在計算機(jī)視覺的廣泛應(yīng)用,卷積神經(jīng)網(wǎng)絡(luò)(convolution neural network,CNN)也廣泛應(yīng)用于目標(biāo)檢測、圖像分類和圖像分割等領(lǐng)域。基于深度學(xué)習(xí)的目標(biāo)檢測主要有3類:第1類是基于二階段(Two-stage)算法;第2類是基于一階段(One-stage)算法;第3類是基于無錨點的檢測(anchor free)。Two-stage 主要是借助啟迪式算法或者區(qū)域候選網(wǎng)絡(luò)(region proposal network,RPN)[3]來生成候選框, 對候選框再進(jìn)一步進(jìn)行分類和回歸達(dá)到目標(biāo)檢測的目的,如空間金字塔池化網(wǎng)絡(luò)(spatial pyramid pooling network,SPPNet)[4]和Fast R-CNN[5], 此類方法檢測準(zhǔn)確率高,但存在檢測速度慢的缺點。One-stage 則是借助CNN 來預(yù)測目標(biāo)的矩形框(即所在位置)和所屬類別,同時使用錨框加速邊框回歸,網(wǎng)絡(luò)輸出再經(jīng)過非極大值抑制(non-maximum suppression,NMS)得到最終結(jié)果。如單次多盒檢測器(single shot multibox detector,SSD)[6]和你只看一次(you only look once,YOLO)[7], 此類方法檢測速度快,適合做實時檢測任務(wù)。anchor free 通常借助heatmap 預(yù)測目標(biāo)中心點并回歸相應(yīng)目標(biāo)的高度和寬度等,如CenterNet[8],該方法召回率高、誤檢少。本文人臉檢測器選擇精度和速度均較優(yōu)的AIZOO 開源算法FaceMaskDetection[9]。該方法是基于單次多盒檢測器(single shot multibox detector,SSD)的人臉口罩檢測,適合做實時檢測任務(wù)。本文方法旨在自然環(huán)境復(fù)雜場景下實現(xiàn)實時的人臉口罩檢測,并可部署應(yīng)用在計算量小的終端設(shè)備上。
目前,有不少學(xué)者致力于人臉口罩檢測的研究。鄧黃瀟[10]基于RetinaNet 遷移學(xué)習(xí)來實現(xiàn)人臉口罩檢測;肖俊杰[11]基于 YOLO 和YCrCb 人臉膚色模型來實現(xiàn)人臉口罩檢測;牛作東等[12]基于RetinaFace 和注意力機(jī)制(attention)來實現(xiàn)人臉口罩檢測。上述算法在計算資源不足的移動設(shè)備實時檢測任務(wù)中,存在實效性和準(zhǔn)確率有待提高和在復(fù)雜環(huán)境下算法的魯棒性有待提高等不足。
綜上所述,設(shè)計一個復(fù)雜場景下的實時人臉口罩檢測器是很有必要的,本文在AIZOO 開源算法FaceMaskDetection 的基礎(chǔ)上設(shè)計一個高精度輕量級人臉口罩分類器,旨在進(jìn)一步提高人臉口罩檢測的整體精度。本文設(shè)計的高精度輕量級人臉口罩分類模型,僅犧牲少量計算資源就能大大提高人臉口罩檢測的整體精準(zhǔn)度。本文提出了快速特征提取模塊FastBlock 和基于多層級特征融合的輕量級人臉口罩分類網(wǎng)絡(luò)(Light MaskNet),實驗結(jié)果表明,該人臉口罩分類模型精度可達(dá)98.852%, ,CPU 推理時間僅為9.8 ms,GPU 可實現(xiàn)亞毫秒級的運(yùn)算,可滿足計算資源較少的邊緣設(shè)備、移動端等應(yīng)用的需求。
本文在AIZOO 開源算法FaceMaskDetection的基礎(chǔ)上設(shè)計一個高精度輕量級人臉口罩分類器,提出了快速特征提取模塊FastBlock 和基于多層級特征融合的輕量級人臉口罩分類網(wǎng)絡(luò)。
人臉檢測采用AIZOO 開源算法FaceMask-Detection,該人臉檢測模型輸出人臉框的同時也輸出人臉是否戴口罩的類別,可以在環(huán)境光線不理想、人臉姿態(tài)多樣等不利條件下較好地召回人臉。
由于FaceMaskDetection 即使能盡可能多召回人臉,但是在人臉口罩的分類精度上還存在較大的缺陷,因此,本文設(shè)計了基于多層級特征融合的輕量級人臉口罩分類網(wǎng)絡(luò)Light MaskNet 來彌補(bǔ)FaceMaskDetection 的精度缺陷。
1.2.1 快速特征提取模塊FastBlock
MobileNetV2[13]的Bottlneck 包含由非線性分離的后續(xù)深度增加擴(kuò)展( depth-increasing expansion) 和深度減少投影( depth-decreasing projection)逐點卷積(pointwise convolutions)。本文做了創(chuàng)新,交換深度可分離(Depthwise, DW)卷積和1×1 卷積的執(zhí)行順序,達(dá)到減少DW 卷積和1×1 卷積中間張量的通道數(shù)量,進(jìn)一步降低計算成本的目的,從而提高了特征提取速度。FastBlock 如圖1 所示。
圖1 快速特征提取模塊FastBlock
1.2.2 特征提取器
特征提取器采用128×128 像素的RGB 輸入,由3 個2D 卷積、11 個FastBlock 組成(完整布局見表1 特征提取器)。最高張量深度(通道分辨率)為96,而最低空間分辨率為8×8。
表1 特征提取器
1.2.3 網(wǎng)絡(luò)結(jié)構(gòu)
Light MaskNet 由特征提取器和1 個全連接層組成,其中特征提取器采取多層級特征融合方式進(jìn)行特征提取,不同層級之間的特征融合可以增大模型的廣度,提高模型的魯棒性。全連接層的輸入為896 個神經(jīng)單元,輸出為2 個分類神經(jīng)單元(即戴口罩與沒戴口罩),Light MaskNet 如圖2。
圖2 Light MaskNet
實驗在Linux 系統(tǒng)下搭建的Pytorch 環(huán)境下進(jìn)行,CPU 為Intel?Core?i7-8750H2.21 GHz,內(nèi)存32 GB,顯卡為GeForceRTX 2080Ti。
實驗數(shù)據(jù)一部分為公開人臉數(shù)據(jù)集(MAsked FAces,MAFA)和AIZOO 提供的公開人臉數(shù)據(jù)集,訓(xùn)練集部分(AIZOO 數(shù)據(jù)集由Widerface 數(shù)據(jù)集標(biāo)注而成,場景種類繁多且復(fù)雜);另一部分為網(wǎng)上爬蟲人臉樣本及相機(jī)拍攝人臉樣本。經(jīng)整理數(shù)據(jù)集共計10 000 張圖片(戴口罩人臉與沒戴口罩人臉),其中訓(xùn)練集8 000 張圖片,測試集2000張圖片。
訓(xùn)練圖像進(jìn)行預(yù)處理,所述預(yù)處理包括數(shù)據(jù)擴(kuò)增和數(shù)據(jù)歸一化處理,數(shù)據(jù)擴(kuò)增包括隨機(jī)裁剪和補(bǔ)邊、隨機(jī)顏色抖動。訓(xùn)練圖像大小為128×128。
損失函數(shù)選用交叉熵?fù)p失公式為
式中:y為真實標(biāo)簽,y′為預(yù)測值。
訓(xùn)練優(yōu)化器Adam;超參數(shù) β1和 β2分別為0.9 和0.999;學(xué)習(xí)率為0.001;batch size 設(shè)置為64,epoch 設(shè)置為20;訓(xùn)練時超過5 個 epoch 準(zhǔn)確率沒有升高則采取early stopping 策略停止訓(xùn)練。
本文為了驗證Light MaskNet 算法的有效性,在相同訓(xùn)練集上另外進(jìn)行了4 組遷移學(xué)習(xí)訓(xùn)練人臉口罩分類器,分別是基于MobileNetV2、ShuffleNetV2(x1.0)[14]、ShuffleNetV2(x0.5)和Mobile-ViT(xxs)[15]進(jìn)行遷移學(xué)習(xí)訓(xùn)練分類器,這4 個網(wǎng)絡(luò)分別去掉最后的分類層和倒數(shù)第1 個全連接層,然后接入自定義的全連接層,輸出都為2 個神經(jīng)元(分別代表戴口罩與沒戴口罩),訓(xùn)練圖像大小均為224×224,數(shù)據(jù)預(yù)處理方式和損失函數(shù)均與Light MaskNet 一致。不同算法在測試集上的測試結(jié)果如表2 所示。
表2 不同算法測試結(jié)果
實驗數(shù)據(jù)表明,本文提出的Light MaskNet 準(zhǔn)確率較其他4 個模型略輸,但差距并不大,但在CPU 推理時間、參數(shù)量(Params)和乘加累積操作數(shù)(MAdds)均優(yōu)于其他4 個模型,所以結(jié)合不同的應(yīng)用需求可以選擇對應(yīng)的模型,如移動端等計算資源有限的邊緣設(shè)備優(yōu)先考慮選擇本文提出的Light MaskNet。
人臉口罩檢測方案由FaceMaskDetection 和本文方法級聯(lián)而成。復(fù)雜場景下待檢測圖像先用FaceMaskDetection 進(jìn)行人臉口罩檢測,將類別為No Mask(算法判斷為沒戴口罩)的人臉區(qū)域從原圖裁剪后送入本文方法Light MaskNet 進(jìn)行進(jìn)一步的人臉口罩分類。
為了進(jìn)一步驗證本文算法的有效性,本文與FaceMaskDetection 的人臉口罩分類準(zhǔn)確率做了比較,驗證集為AIZOO 數(shù)據(jù)集測試集,該數(shù)據(jù)集場景種類多而復(fù)雜,有利于驗證算法在復(fù)雜場景下的魯棒性。根據(jù)AIZOO 數(shù)據(jù)標(biāo)注,從測試集裁出人臉圖片(包括戴口罩與不戴口罩)1 840 張。Light MaskNet 和FaceMaskDetection 在測試集上的測試結(jié)果如表3 所示。
表3 Light MaskNet 和FaceMaskDetection 測試結(jié)果
實際復(fù)雜場景下人臉口罩檢測對比效果如圖3 和圖4 所示。其中,圖3 (a)為FaceMaskDetection的檢測結(jié)果,圖3 (b)為FaceMaskDetection 和本文方法Light MaskNet 級聯(lián)檢測結(jié)果。
圖3 人臉口罩檢測對比效果1
針對FaceMaskDetection 即使能盡可能多召回人臉,但是在人臉口罩的分類精度上還存在較大的缺陷,本文設(shè)計了基于多層級特征融合的輕量級人臉口罩分類網(wǎng)絡(luò)Light MaskNet,并提出快速特征提取模塊FastBlock。并設(shè)計4 套遷移學(xué)習(xí)方案與Light MaskNet 做性能、準(zhǔn)確率等綜合比較,以及基于AIZOO 測試集分析比較Light MaskNet和FaceMaskDetection 的人臉口罩分類準(zhǔn)確率,實驗數(shù)據(jù)表明本文方法能彌補(bǔ)FaceMaskDetection 精度低的缺陷,本文方法精度優(yōu)異,計算量極小,CPU 推理時間僅9.8 ms,GPU 可實現(xiàn)亞毫秒級推理,可很好地滿足計算資源有限的移動端和邊緣設(shè)備的應(yīng)用需求。