鄧黃瀟
(中國(guó)礦業(yè)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 江蘇省徐州市 221000)
人臉識(shí)別作為計(jì)算機(jī)視覺(jué)領(lǐng)域的最基本和最具挑戰(zhàn)性的問(wèn)題,近些年來(lái)取得了很大的成就,Viola 和Jones 提出了基于AdaBoost[1]的人臉檢測(cè)算法。Chen[2]等人提出了RPN 網(wǎng)絡(luò)和RCNN 網(wǎng)絡(luò)。Le[3]等人提出了多尺度檢測(cè)的Faster-RCNN 的方法。2017年,文獻(xiàn)[4]提出了RetinaNet 網(wǎng)絡(luò),該網(wǎng)絡(luò)利用了Focal Loss 函數(shù)成功控制了正負(fù)樣本、難分易分樣本產(chǎn)生的損失值,這使得one stage 目標(biāo)檢測(cè)模型在COCO 數(shù)據(jù)集上首次超過(guò)了當(dāng)時(shí)最先進(jìn)的two stage 目標(biāo)檢測(cè)模型的結(jié)果。
由此,本文希望通過(guò)利用RetinaNet 網(wǎng)絡(luò),來(lái)對(duì)復(fù)雜環(huán)境下佩戴口罩的人臉和未佩戴口罩的人臉進(jìn)行識(shí)別檢測(cè)。
本文選擇ResNet101 作為遷移學(xué)習(xí)的BackBone,數(shù)據(jù)集來(lái)自WIDER Face 和MAFA 共計(jì)7959 張圖片,將人臉目標(biāo)分為兩類,包括佩戴口罩人臉(face_mark)、未佩戴口罩人臉(face)。
RetinaNet 為何凱明和Girshick R 等人在2017年提出的通用目標(biāo)檢測(cè)網(wǎng)絡(luò),對(duì)于多尺度目標(biāo)檢測(cè)問(wèn)題,該算法采用特征FPN(特征金字塔網(wǎng)絡(luò))來(lái)預(yù)測(cè)不同尺度的目標(biāo)。對(duì)于檢測(cè)樣本圖片中正負(fù)樣本不均衡的問(wèn)題,該算法采用Focal Loss 來(lái)代替交叉熵?fù)p失函數(shù)來(lái)提高檢測(cè)精度。如圖1 所示[4]。
Retinanet 由Backbone、FPN、預(yù)測(cè)結(jié)構(gòu)構(gòu)成,Backbone 主要作用是提取圖像特征,F(xiàn)PN 主要用主網(wǎng)絡(luò)提取的特征提高對(duì)多尺度檢測(cè)精度的提高,預(yù)測(cè)結(jié)構(gòu)用于生成包含目標(biāo)的邊界框。
常用目標(biāo)檢測(cè)網(wǎng)絡(luò)的Backbone 有VGGNet[5]、GoogleNet[6]、ResNet[7]等。VGGNet 通過(guò)疊加3x3 的卷積核來(lái)達(dá)到提取圖像特征的目的,常用的是包含13 層卷積層與3 層全連接層的VGG-16。GoogleNet 基于Inception 模塊構(gòu)建基礎(chǔ)結(jié)構(gòu),深度達(dá)到22 層,提取到的特征更為多樣。
圖1:Retinanet 結(jié)構(gòu)
ResNet 基于ResNet 模塊構(gòu)建,因其具有跨層連接的特性,極大的減輕了梯度消失在深度神經(jīng)網(wǎng)絡(luò)中訓(xùn)練的問(wèn)題[8],常用的ResNet 為ResNet50 與ResNet101。本 文 選 擇ResNet101 作 為Backbone。
一般分類問(wèn)題采用交叉熵函數(shù)作為損失函數(shù),表達(dá)式為式(1),該損失函數(shù)在圖像分類中效果顯著,但對(duì)于需要預(yù)選框的目標(biāo)檢測(cè)卻效果一般。而Focal Loss 損失函數(shù)[表達(dá)式見(jiàn)式(2)]中的權(quán)重系數(shù)α 針對(duì)正負(fù)樣本不均衡的情況,由于實(shí)際圖片中包含目標(biāo)的預(yù)選框非常少,大多數(shù)預(yù)選框并不包含待檢測(cè)目標(biāo),而通過(guò)調(diào)整權(quán)重系數(shù)α,能有效解決正負(fù)樣本損失值的比例問(wèn)題。
針對(duì)圖像底層特征語(yǔ)義信息少、高層語(yǔ)義信息多、目標(biāo)位置粗糙的特點(diǎn),F(xiàn)PN 通過(guò)自底向上、自頂向上、橫向連接三個(gè)部分將不同層的特征圖進(jìn)行融合,使得小目標(biāo)被易于檢測(cè)。
自底向上是CNN 的前向傳播過(guò)程。自頂向下過(guò)程采用上采樣進(jìn)行。橫向連接將上采樣的結(jié)果和自底向上的結(jié)果進(jìn)行相加操作。這對(duì)單張圖片能有效構(gòu)建多尺度特征圖,使FPN 的每一層均可以用于不同尺寸的目標(biāo)檢測(cè)。
為了滿足在復(fù)雜環(huán)境下對(duì)人臉是否佩戴口罩進(jìn)行檢測(cè),本文采用WIDER Face 和MAFA 兩個(gè)數(shù)據(jù)集7959 張圖片。其中6067 張作為訓(xùn)練集,300 張作為驗(yàn)證集,1592 張作為測(cè)試集。數(shù)據(jù)集含有兩類標(biāo)簽,分別是佩戴口罩的人臉(face_mark)與未佩戴口罩的人臉(face),并將其制作為PASCAL VOC2007 數(shù)據(jù)集格式。
表1
表2
表3
本文的試驗(yàn)平臺(tái)的配置為Ubuntu18.04、CUDA10.0、cuDNN7.6.5、NVIDIA RTX2080Ti(11GB)。在此基礎(chǔ)上使用keras 深度學(xué)習(xí)框架,并用Python 語(yǔ)言編程實(shí)現(xiàn)網(wǎng)絡(luò)的訓(xùn)練和測(cè)試。
對(duì)VOC2007 數(shù)據(jù)集進(jìn)行訓(xùn)練之前,需要先將所有標(biāo)簽轉(zhuǎn)化為CSV 文件,然后使用預(yù)訓(xùn)練好的模型初始化網(wǎng)絡(luò)參數(shù)。初始化學(xué)習(xí)率設(shè)置為0.00001,訓(xùn)練300 輪。訓(xùn)練后在在驗(yàn)證集上的mAP 值為86.45%,平均檢測(cè)一張圖像的速度為233ms。
為了驗(yàn)證訓(xùn)練模型對(duì)于佩戴口罩的有效性,試驗(yàn)將與基于DackNet 的YOLOv3 的檢測(cè)效果進(jìn)行對(duì)比,比較兩種種算法在復(fù)雜情況下的檢測(cè)表現(xiàn),并得出試驗(yàn)結(jié)論。
由于需要直觀的對(duì)識(shí)別結(jié)果做出評(píng)價(jià),因此評(píng)價(jià)指標(biāo)要同時(shí)考慮到準(zhǔn)確率和召回率,設(shè)定 J 作為口罩佩戴識(shí)別結(jié)果的評(píng)價(jià)指標(biāo),J 為召回率與準(zhǔn)確率的函數(shù),定義如下式(3)。
式中:P——準(zhǔn)確率;
R——召回率。
在實(shí)際的檢測(cè)中,由于一對(duì)一的檢測(cè)將會(huì)耗費(fèi)大量的時(shí)間,因此多數(shù)情況下將會(huì)有多人臉在一幀圖像中同時(shí)進(jìn)行檢測(cè),此時(shí)就會(huì)出現(xiàn)一些人臉輪廓不完整、人臉較小以及人臉之間存在遮擋的情況。由此設(shè)計(jì)了在不同人臉數(shù)目下檢測(cè)結(jié)果的對(duì)比。未佩戴口罩人臉測(cè)試集下的檢測(cè)效果圖與原圖如圖3 所示[9],佩戴口罩的人臉測(cè)試集檢測(cè)效果圖與原圖如圖4 所示[9]。
從圖3 可以看到,當(dāng)檢測(cè)單張人臉時(shí)兩種算法的效果都很好,檢測(cè)密集的多張人臉時(shí)雖然檢測(cè)出的數(shù)量相差無(wú)幾,但在檢測(cè)精度上RetinaNet 明顯領(lǐng)先YOLOv3,且數(shù)量也更為準(zhǔn)確。從測(cè)試集中選取兩種數(shù)目不同的含有人臉圖像各20 張,分別用上述兩種算法計(jì)算評(píng)價(jià)指標(biāo)J 的值,并重復(fù)三次,求取J 值的平均值,可以發(fā)現(xiàn)RetinaNet 在檢測(cè)密集的多張人臉上效果顯著,J 值明顯高于YOLOv3。結(jié)果如表1 所示。
圖2:ResNet 模塊
圖3
從圖4 可以看到,如同圖3 的情況,在檢測(cè)單一佩戴口罩的人臉時(shí)兩種算法精度均很高,但在密集多人臉的情況下YOLOv3 表現(xiàn)明顯不如RetinaNet。從測(cè)試集中選取兩種數(shù)目不同的含有佩戴口罩的人臉圖像各20 張,分別用上述兩種算法計(jì)算評(píng)價(jià)指標(biāo)J 的值,并重復(fù)三次,求取J 值的平均值,可以發(fā)現(xiàn)RetinaNet 在檢測(cè)密集多張佩戴口罩的人臉同樣更加出色,但在檢測(cè)佩戴口罩的人臉的任務(wù)上兩種網(wǎng)絡(luò)都比檢測(cè)未佩戴的口罩更加出色。結(jié)果如表2。
在實(shí)際情況中戴口罩與不帶口罩的人會(huì)同時(shí)出現(xiàn)在圖像幀中,因此有必要測(cè)試當(dāng)兩類待檢測(cè)目標(biāo)同時(shí)出現(xiàn)時(shí)兩種網(wǎng)絡(luò)的檢測(cè)效果,效果圖與原圖如圖5 所示[9]。
圖4
圖5
可以看到,YOLOv3 不僅在精度上低于RetinaNet,同時(shí)對(duì)于像素值很小的人臉也不能將其識(shí)別出來(lái),且在像素值很小時(shí),還會(huì)錯(cuò)將佩戴口罩的人臉誤識(shí)別成未佩戴口罩的人臉。從測(cè)試集中選取同時(shí)含有佩戴口罩和未佩戴口罩的人臉圖像20 張,分別用上述兩種算法計(jì)算評(píng)價(jià)指標(biāo)J 的值,并重復(fù)三次,求取J 值的平均值,也能證明RetinaNet 比YOLOv3 出色,計(jì)算結(jié)果如表3。
本文提出一種基于RetinaNet 的人臉口罩佩戴檢測(cè)的方法,通過(guò)實(shí)驗(yàn)表明在復(fù)雜環(huán)境下該模型具有較高的精度與魯棒性。通過(guò)遷移學(xué)習(xí)利用預(yù)訓(xùn)練的ResNet 模型來(lái)幫助新模型訓(xùn)練,經(jīng)過(guò)GPU 加速訓(xùn)練后在驗(yàn)證集上的AP 值為86.45%,檢測(cè)一張圖片的時(shí)間為233ms。通過(guò)與目前流行的YOLOv3 模型進(jìn)行對(duì)比,RetinaNet 也展示出了更好的檢測(cè)效果。受限于數(shù)據(jù)集大小,以后將對(duì)現(xiàn)有數(shù)據(jù)集進(jìn)行擴(kuò)充,進(jìn)行更深入的研究并與硬件設(shè)備相結(jié)合,為社會(huì)治安發(fā)揮應(yīng)有的貢獻(xiàn)。