程廷豪,崔宇超,吳新淼
(四川大學(xué)電子信息學(xué)院,成都 610065)
隨著新冠疫情的爆發(fā),健康問題引起人們的注意,防疫工作的順利進(jìn)行顯得尤其重要。在人流量密集的公共場所極易出現(xiàn)病毒的傳播感染,預(yù)防病毒傳播的有效途徑就是佩戴口罩。目前防疫工作主要是通過人工的方式進(jìn)行,由工作人員檢測(cè)體溫并督促行人佩戴口罩,這在很大程度上造成了資源的浪費(fèi)。應(yīng)用快速發(fā)展的計(jì)算機(jī)視覺技術(shù)可以達(dá)到無接觸自動(dòng)化檢測(cè)的目的,能在很大程度上取得更高效精準(zhǔn)的防疫效果。
對(duì)于行人是否佩戴口罩的檢測(cè),歸根結(jié)底來說是目標(biāo)檢測(cè)所研究的問題。近年來,神經(jīng)網(wǎng)絡(luò)算法得到廣泛應(yīng)用,有關(guān)目標(biāo)檢測(cè)的算法與成果層出不窮:傳統(tǒng)的目標(biāo)檢測(cè)算法通過滑動(dòng)窗口對(duì)圖像遍歷,設(shè)置不同尺度的窗口得到候選區(qū)域,再對(duì)候選區(qū)域提取SIFT[1]、HOG[2]等特征,最后使用訓(xùn)練的分類器進(jìn)行目標(biāo)分類。2014年,Ross B. Girshick等人[3]使用region proposal[4]+CNN[5]編寫了R-CNN框架。然而,即使是后來出現(xiàn)的Faster R-CNN算法,也依然達(dá)不到實(shí)時(shí)檢測(cè)的標(biāo)準(zhǔn)。與此同時(shí),YOLO[6]系列的目標(biāo)檢測(cè)方法出現(xiàn)。
YOLO算法最早由Joseph Redmon等人于2015年提出,該算法基于DarkNet網(wǎng)絡(luò)框架。研究者們?cè)赮OLOv1的基礎(chǔ)上,將該算法開發(fā)了YOLOv2[7]和YOLOv3[8]版本。2020年,Alexey Bochkovskiy提出YOLOv4[9]版本的算法。
現(xiàn)有的目標(biāo)檢測(cè)算法應(yīng)用于人臉口罩佩戴檢測(cè)中,可能出現(xiàn)因口罩的顏色及形狀各異、佩戴者膚色差別以及室外自然環(huán)境影響而導(dǎo)致檢測(cè)成功率低,識(shí)別魯棒性差。本文基于YOLOv4算法,提出一種優(yōu)化的口罩佩戴檢測(cè)模型。在YOLOv4算法的基礎(chǔ)上,修改原始網(wǎng)絡(luò)相關(guān)參數(shù),增加卷積層以提高網(wǎng)絡(luò)對(duì)目標(biāo)特征的提取能力。實(shí)驗(yàn)結(jié)果表明,基于YOLOv4的優(yōu)化模型在實(shí)際應(yīng)用中有理想的效果。
YOLOv4算法與YOLO系列算法類似:先將輸入圖像劃分成S×S的網(wǎng)格,每個(gè)網(wǎng)格都預(yù)測(cè)固定數(shù)量的邊框,然后根據(jù)閾值去除可能性較低的目標(biāo)窗口,最后通過NMS[10]方法去除冗余窗口。在此基礎(chǔ)上,YOLOv4算法提出了一種高效強(qiáng)大的目標(biāo)檢測(cè)模型。首先,YOLOv4在輸入端采用了包括Mosaic數(shù)據(jù)增強(qiáng)[11]、cmBN、SAT自對(duì)抗訓(xùn)練的技術(shù)[12]。其次,主干網(wǎng)絡(luò)加入了CSPNet(Center and Scale Prediction Net)[13],組成新的CSPDarkNet53結(jié)構(gòu)。YOLOv4的SPP模塊改進(jìn)了最大池化方式并加入了FPN+PAN[14]的結(jié)構(gòu),實(shí)現(xiàn)了從不同的主干層對(duì)不同的檢測(cè)層進(jìn)行特征聚合。最后在預(yù)測(cè)部分,使用了CIOU_Loss[15]損失函數(shù),使得預(yù)測(cè)框回歸的速度和精度都更高一些。
YOLOv4的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示??梢娫摼W(wǎng)絡(luò)主要由主干特征提取網(wǎng)絡(luò)CSPDarkNet53,空間金字塔池化結(jié)構(gòu)SPP以及路徑聚合網(wǎng)絡(luò)PANet三部分組成。每個(gè)CSP模塊前面的卷積核的大小都是3×3,步長為2,因此下采樣5次后得到的特征圖大小為19×19[16]。激活函數(shù)方面,YOLOv4也只在Backbone中采用了Mish[17]激活函數(shù),網(wǎng)絡(luò)后面仍然采用Leaky_relu激活函數(shù)。這樣的結(jié)構(gòu),減少了計(jì)算量,提高了網(wǎng)絡(luò)模型的推理速度和準(zhǔn)確性。
圖1 YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)
對(duì)于輸入端,YOLOv4采用了Mosaic數(shù)據(jù)增強(qiáng)技術(shù)。該技術(shù)來自2019年底提出的CutMix[18]數(shù)據(jù)增強(qiáng)方式,如此豐富了檢測(cè)數(shù)據(jù)集,特別是隨機(jī)縮放增加了很多小目標(biāo),讓網(wǎng)絡(luò)的識(shí)別性能有所提升。
YOLOv4的特征金字塔部分采用了SPP和PANet的結(jié)構(gòu)。L5網(wǎng)絡(luò)層的輸出經(jīng)過了三次卷積再輸入到SPP進(jìn)行1×1、5×5、9×9、13×13的最大池化,再經(jīng)過三次卷積最后輸入到PANet結(jié)構(gòu)。原本PANet網(wǎng)絡(luò)的PAN結(jié)構(gòu)[19]中,兩個(gè)特征圖結(jié)合是采用shortcut操作,而YOLOv4中則采用concat操作,特征圖融合后的尺寸發(fā)生了變化。
損失函數(shù)的設(shè)計(jì)會(huì)影響檢測(cè)模型的性能。最初,IOU_Loss就是反映預(yù)測(cè)框與目標(biāo)框的交并比,但存在問題。當(dāng)預(yù)測(cè)框與目標(biāo)框不相交,或者預(yù)測(cè)框與目標(biāo)框之間的IOU大小相等而具有不同的重疊方式,IOU_Loss便會(huì)失效。
后來的研究者提出了GIOU_Loss[20],然而,當(dāng)預(yù)測(cè)框全部位于真實(shí)框內(nèi),此時(shí)GIOU_Loss也出現(xiàn)IOU_Loss相似的問題。如圖2所示。
圖2 GIOU的不足
此后,研究者提出了DIOU_Loss,具體表達(dá)式由公式1定義:
(1)
公式(1)中,IOU指預(yù)測(cè)框與目標(biāo)框之間的交并比,Distance_2是指預(yù)測(cè)框和目標(biāo)框的中心點(diǎn)之間的歐式距離,C指包含預(yù)測(cè)框和目標(biāo)框的最小矩形,Distance_C指該最小矩形的對(duì)角線距離。
在YOLOv4中,進(jìn)一步采用了CIOU_Loss的損失函數(shù),在公式(1)基礎(chǔ)上引入了一個(gè)box長寬比的懲罰項(xiàng)。具體表達(dá)式由公式(2)定義:
(2)
其中,v是衡量長寬比一致性的參數(shù),定義為:
(3)
可見,該損失函數(shù)增加了影響因子,會(huì)更加傾向于往重疊區(qū)域增多的方向優(yōu)化,尤其是在IOU為零的時(shí)候。
YOLOv4在COCO數(shù)據(jù)集上采用K-means[21]聚類出9個(gè)錨框用來邏輯回歸邊界框,這也意味著一旦設(shè)置好了錨框的大小,當(dāng)檢測(cè)目標(biāo)發(fā)生改變時(shí),目標(biāo)檢測(cè)器的性能就會(huì)受到影響。為了減小錨框?qū)z測(cè)的影響,我們采用矩形框的平均交并比(Avg IOU)這個(gè)指標(biāo),對(duì)訓(xùn)練集的所有目標(biāo)使用K-means聚類方法,重新獲得適合訓(xùn)練集的錨框大小。聚類的平均交并比目標(biāo)函數(shù)p可由公式(4)定義:
(4)
(5)
公式4中,b表示樣本,c表示通過K-means算法聚類的簇中心,m表示樣本總個(gè)數(shù),k表示聚類中心個(gè)數(shù),i和j分別表示樣本序號(hào)和聚類中的樣本序號(hào),mk表示在第k個(gè)聚類中的樣本個(gè)數(shù)。公式5中,IIou表示真實(shí)框和預(yù)測(cè)框交集面積和并集面積的比值。
d(box,cen)=1-IIOU(box,cen)
(6)
公式(6)為利用K-means聚類算法的距離度量,box表示矩形框大小,cen表示一個(gè)簇中心矩形框大小。基于口罩佩戴檢測(cè)數(shù)據(jù)集特點(diǎn)及實(shí)際檢測(cè)需求,運(yùn)用K-means聚類算法,重新設(shè)計(jì)的錨框大小為(11 19,27 44,55 68,62 125,112 106,107 207,181 190,210 307,322,381)。與原算法相比,檢測(cè)精度得到提升。
YOLOv4的輸入經(jīng)過CSPDarkNet53后輸出三個(gè)不同大小的特征層。特征層L3和L4分別經(jīng)過一次卷積再輸入PANet進(jìn)行特征融合,卷積核大小均為1×1。特征層L5的輸出經(jīng)過三次卷積再輸入到SPP結(jié)構(gòu)進(jìn)行最大池化,卷積核大小為1×1,3×3,1×1。這樣的設(shè)計(jì)雖然在一定程度上提高了網(wǎng)絡(luò)對(duì)目標(biāo)的識(shí)別能力,但出于行人佩戴口罩這種特征區(qū)分度不明顯且檢測(cè)效果易受到佩戴者膚色以及自然環(huán)境條件影響的考慮,若直接使用YOLOv4原始網(wǎng)絡(luò)結(jié)構(gòu),檢測(cè)效果不能達(dá)到最優(yōu)。
因此,可以通過增加卷積網(wǎng)絡(luò)層,以實(shí)現(xiàn)更深層次特征的提取。受到Y(jié)OLOv4原始網(wǎng)絡(luò)結(jié)構(gòu)的啟發(fā),使L3和L4的輸出經(jīng)過卷積核大小分別為1×1、3×3、1×1的三次卷積再輸入PANet。同時(shí),將SPP結(jié)構(gòu)的上下三個(gè)卷積層增加至5個(gè)卷積層,卷積核大小分別為1×1、3×3、1×1、3×3、1×1。這樣的結(jié)構(gòu),不僅加深了網(wǎng)絡(luò)的容量和深度,而且能獲得更大的感受野以及語義層次更高的特征信息。改進(jìn)的YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 改進(jìn)的YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)
NMS(Non Maximum Suppression)是在目標(biāo)檢測(cè)最后階段抑制非極大值元素,搜索局部的極大值并保留其對(duì)應(yīng)的矩形框,最終去掉冗余的檢測(cè)框,保留最好的一個(gè)。
在傳統(tǒng)NMS中,IOU指標(biāo)常用于抑制冗余檢測(cè)框,對(duì)于目標(biāo)有遮擋的情況經(jīng)常產(chǎn)生錯(cuò)誤抑制。在訓(xùn)練的過程中,YOLOv4配置文件的NMS類型依然是傳統(tǒng)類型的NMS(greedy-NMS[22])方法,我們可修改配置文件信息,使得訓(xùn)練過程中NMS使用DIOU-NMS[23]方法。經(jīng)過實(shí)驗(yàn)驗(yàn)證,相比YOLOv4原算法,檢測(cè)模型的召回率也會(huì)有小幅的提升。
本文研究的是口罩佩戴場景下的目標(biāo)檢測(cè)問題,目前有關(guān)口罩佩戴檢測(cè)的公開數(shù)據(jù)集并不多。實(shí)驗(yàn)中采用的數(shù)據(jù)主要通過爬蟲技術(shù)從網(wǎng)絡(luò)爬取了一部分符合要求的圖片,同時(shí)結(jié)合AIZOO數(shù)據(jù)集和RMFD數(shù)據(jù)集開放下載的部分圖片,以及通過網(wǎng)絡(luò)和視頻幀抽取的圖片。為了獲取更加豐富的訓(xùn)練圖片,又在室內(nèi)和室外拍攝了小部分圖片。最終構(gòu)成本實(shí)驗(yàn)的口罩佩戴檢測(cè)數(shù)據(jù)集。
本文實(shí)驗(yàn)使用的操作系統(tǒng)為Ubuntu 16.04,處理器型號(hào)為Intel Core i5-9600KF,顯卡型號(hào)為NVIDIA GTX 1080 Ti,采用NVIDIA CUDA10.2加速工具箱。
對(duì)優(yōu)化的YOLOv4算法開始訓(xùn)練時(shí),訓(xùn)練階段的學(xué)習(xí)率設(shè)置為0.001,batchsize設(shè)置為16,輸入圖像的尺寸設(shè)置為608×608,decay設(shè)置為0.0005,momentum設(shè)置為0.949。當(dāng)訓(xùn)練迭代次數(shù)達(dá)到8000次和9000次時(shí),衰減學(xué)習(xí)率會(huì)使損失函數(shù)進(jìn)一步收斂,設(shè)置衰減率為0.1。
為了評(píng)價(jià)網(wǎng)絡(luò)的性能和說明口罩佩戴檢測(cè)網(wǎng)絡(luò)的有效性,選取下列評(píng)價(jià)指標(biāo):
(1)查準(zhǔn)率(Precision,P)和召回率(Recall,R)[24]:查準(zhǔn)率是針對(duì)預(yù)測(cè)結(jié)果而言的,它表示預(yù)測(cè)為正的樣本中有多少是真的正樣本。預(yù)測(cè)為正有兩種可能,一種就是把正類預(yù)測(cè)為正類(TP),另一種就是把負(fù)類預(yù)測(cè)為正類(FP)[25],也就是公式(7):
(7)
召回率是針對(duì)原有的樣本而言的,它表示的是樣本中的正例有多少被預(yù)測(cè)正確了。由公式(8)給出:
(8)
(2)平均準(zhǔn)確率(Average Precision,AP)和平均準(zhǔn)確率均值(mean Average Precision,mAP):通常情況下用查準(zhǔn)率-召回率(Precision-Recall,P-R)曲線來顯示目標(biāo)檢測(cè)器在準(zhǔn)確率和召回率之間的平衡。對(duì)于每一個(gè)類別的平均準(zhǔn)確率定義為該類別P-R曲線下方的面積。公式(9)和公式(10)分別定義了AP和mAP的計(jì)算公式。
(9)
(10)
公式(10)中,N表示所有目標(biāo)類別的數(shù)量。
三種優(yōu)化方法對(duì)網(wǎng)絡(luò)模型的影響效果如表1所示。用“√”表示使用了相應(yīng)的方法。
表1 不同優(yōu)化方法對(duì)算法性能的提升
在原算法的基礎(chǔ)上,重新設(shè)計(jì)錨框并改進(jìn)網(wǎng)絡(luò)結(jié)構(gòu),網(wǎng)絡(luò)mAP性能提升了1.86個(gè)百分點(diǎn),平均交并比提高2.39個(gè)百分點(diǎn),說明優(yōu)化的網(wǎng)絡(luò)結(jié)構(gòu)確實(shí)能提高網(wǎng)絡(luò)對(duì)目標(biāo)特征的提取能力。在此基礎(chǔ)上再改變NMS方法,也會(huì)使YOLOv4算法的檢測(cè)精度有0.2個(gè)百分點(diǎn)的提升,這證明了改進(jìn)NMS方法能減小YOLOv4算法的定位誤差,可以小幅提高算法的性能。從表2可以看出,使用DIOU-NMS方法去訓(xùn)練網(wǎng)絡(luò),可以提高算法的召回率。
表2 不同NMS方法對(duì)算法召回率的影響
此外,在測(cè)試集中使用優(yōu)化的YOLOv4算法,將假正樣本數(shù)量降低了18.16%,使真正樣本的數(shù)量提升了1.52%。
表3 FP和TP數(shù)值評(píng)價(jià)
最后,實(shí)驗(yàn)結(jié)果顯示優(yōu)化的YOLOv4算法具有更強(qiáng)的檢測(cè)性能。究其原因,其實(shí)是每一項(xiàng)優(yōu)化的方法都是結(jié)合YOLOv4算法在實(shí)際檢測(cè)過程中可能存在的改進(jìn)點(diǎn)進(jìn)行設(shè)計(jì)的,而使用組合的優(yōu)化方法可以很好地解決YOLOv4在口罩佩戴檢測(cè)中存在的瑕疵。訓(xùn)練過程及結(jié)果如圖4所示。
可以看出,用原始的YOLOv4模型在數(shù)據(jù)集上迭代10000次,最終的mAP是90.2%,而使用優(yōu)化后的YOLOv4模型再在同樣的數(shù)據(jù)集上迭代10000次,最終的mAP是92.3%,在準(zhǔn)確度上有了提升。
如圖5所示,對(duì)于佩戴口罩的檢測(cè),對(duì)比P-R圖,可見優(yōu)化后的算法其P-R圖與坐標(biāo)軸圍成的面積更大,說明優(yōu)化后的算法性能更好。
圖5 P-R圖對(duì)比
本文運(yùn)用YOLOv4算法與優(yōu)化的YOLOv4算法對(duì)現(xiàn)實(shí)生活的不同場景進(jìn)行口罩佩戴檢測(cè),良好環(huán)境下同一場景的檢測(cè)效果如圖6所示,可見YOLOv4原算法在檢測(cè)該場景時(shí),出現(xiàn)了少數(shù)錯(cuò)檢和漏檢的情況,而優(yōu)化的YOLOv4算法則能較好地避免這些問題。
圖6 良好環(huán)境下檢測(cè)效果圖對(duì)比
檢測(cè)也存在環(huán)境條件較差,如陰雨天的情況,如圖7所示。對(duì)此,優(yōu)化的YOLOv4算法表現(xiàn)出了較好的性能,能正確檢測(cè)出更多目標(biāo)。
圖7 陰雨天檢測(cè)效果圖對(duì)比
對(duì)比YOLOv4原算法與優(yōu)化的YOLOv4算法在不同環(huán)境同一場景的檢測(cè)效果,可以直觀地反映出經(jīng)過優(yōu)化后算法的優(yōu)勢(shì)。這也從實(shí)際應(yīng)用的角度證明了優(yōu)化后的模型確實(shí)具有更好的性能。
本文基于YOLOv4模型,通過對(duì)算法優(yōu)化后再訓(xùn)練,最終得到的模型在人臉口罩佩戴檢測(cè)中的準(zhǔn)確率和召回率分別達(dá)到了92.30%和88.20%,并且在較為復(fù)雜的公共場景下也能有不錯(cuò)的檢測(cè)效果。但當(dāng)待測(cè)人員面部光線發(fā)生變化時(shí),該檢測(cè)模型也會(huì)存在錯(cuò)檢、漏檢等問題。所以在下一步的研究工作中,將嘗試對(duì)輸入圖像進(jìn)行預(yù)處理,進(jìn)一步改進(jìn)網(wǎng)絡(luò)性能,提升檢測(cè)精度。