黃家興,南新元,張文龍,徐明明
(新疆大學(xué)電氣工程學(xué)院,新疆 烏魯木齊 830049)
自2019年12月以來,由新型冠狀病毒(COVID-19)導(dǎo)致的肺炎疫情已經(jīng)蔓延至多個國家和地區(qū),造成了不可估量的損失,影響著人們的安全和健康。截至目前,國內(nèi)新冠疫情雖然已得到基本的控制,但是面對外部環(huán)境的多變性和復(fù)雜性,疫情的防控工作依舊面臨著嚴(yán)峻的挑戰(zhàn)。新冠病毒與以往傳染病的不同之處在于,它可以通過氣溶膠傳播,在短的時間內(nèi)接觸并感染人。研究發(fā)現(xiàn),佩戴口罩等防護用具可以有效地減少被傳染的風(fēng)險。因此,要求人員在乘坐公共交通(火車、地鐵、飛機等)和人員聚集場所(商場、醫(yī)院、農(nóng)貿(mào)市場等)必須佩戴口罩。但是以人力進行監(jiān)督和提醒又會增加相關(guān)人員被感染的風(fēng)險,因此開發(fā)一套人臉口罩檢測系統(tǒng)對于疫情防控有著至關(guān)重要的意義。
截至目前,目標(biāo)檢測領(lǐng)域主要分為基于回歸思想的one-stage算法和基于候選區(qū)域的two-stage算法兩種。其中one-stage算法中以YOLO系列[1-4]和SSD系列[5]為代表,極大的提高了檢測速度但檢測精度較差;而two-stage算法中以Fast-CNN[6]和Faster-CNN[7]為代表,有較高的檢測精度,但由于其模型復(fù)雜導(dǎo)致檢測速度較慢。隨著深度學(xué)習(xí)的快速發(fā)展,越來越多的基于目標(biāo)檢測的算法被部署到嵌入式設(shè)備上以實現(xiàn)目標(biāo)檢測,所以要求算法有較快的檢測速度和較高的檢測精度。YOLO系列是目前使用較為頻繁和成熟的目標(biāo)檢測算法之一,從YOLOv1到Y(jié)OLOv5,該算法經(jīng)過大量學(xué)者優(yōu)化和驗證,逐漸彌補了因提高檢測速度而下降的檢測精度,使其兼顧檢測速度的同時,又能保持較高的檢測精度。
目前,國內(nèi)外用于檢測口罩佩戴情況的算法較少。文獻[8]以YOLOv3為框架引入注意力機制SENet[9]進行特征提取,并使用特征金字塔FPN[10]進行特征融合,提高了檢測精度。文獻[11]在YOLOv3原有的基礎(chǔ)上增加了一個檢測頭,用以提高對小目標(biāo)的敏感度進而提升算法的精度,但是也導(dǎo)致了算法參數(shù)量的暴增。文獻[12]以YOLOv4為框架提出了一個MaxMoudle結(jié)構(gòu)用以獲取目標(biāo)的更多特征進而提高檢測精度。文獻[13]用MobileNetv3替換了原YOLOv4的主干特征提取網(wǎng)絡(luò)用以減少模型的參數(shù)量,并用SiLU激活函數(shù)替代了MobileNetv3淺層網(wǎng)絡(luò)中的ReLU激活函數(shù)以提高其收斂性,最終算法取得了較高的檢測速度但犧牲了檢測精度。文獻[14]提出了一種以MTCNN算法進行人臉關(guān)鍵點定位,并使用MobileNet進行檢測和分類的口罩檢測算法,該算法可以在人臉傾斜、面部遮擋嚴(yán)重及采光不足等多種復(fù)雜環(huán)境下取得較高的精度,但是其檢測速度較慢。文獻[15]使用RetinaFace算法檢測人臉關(guān)鍵點并提取人臉的鼻尖區(qū)域,而后使用YCrCb橢圓膚色模型去判斷鼻尖位置皮膚的暴露情況,以此設(shè)定閾值來判斷是否佩戴口罩,但是該方法在復(fù)雜環(huán)境下魯棒性較差,尤其是當(dāng)佩戴與膚色相近的口罩時較容易造成誤檢。
本文針對上述算法中存在的問題,提出了一種改進型輕量化YOLOv5人臉口罩檢測識別算法。主要改進如下:
1)針對YOLOv5主干特征提取網(wǎng)絡(luò)參數(shù)量大和特征提取不充分的問題,使用了EfficientNetV2輕量化網(wǎng)絡(luò)進行替換,降低了模型的參數(shù)量,大大提高了網(wǎng)絡(luò)的訓(xùn)練速度。
2)提出使用ECA模塊去替換EfficientNetV2中原有的SE注意力模塊,進一步降低模型參數(shù)量和提高模型的收斂性。
3)提出使用DIoU-NMS替代原YOLOv5模型中加權(quán)NMS的方式,提升了對遮擋目標(biāo)的檢測效果,并在刪除冗余預(yù)選框上具有更好的效果。
4)構(gòu)建口罩?jǐn)?shù)據(jù)集,驗證本文算法的有效性。
YOLO是一個基于回歸思想的one-stage算法,它將目標(biāo)檢測重新定義為回歸問題,從而提高檢測速度。YOLOv5是YOLO系列中最新提出來的算法,相較于YOLOv3、YOLOv4,其在保持精度的情況下還能擁有更小的結(jié)構(gòu),權(quán)重更小,更易于布署到移動端設(shè)備。如圖1,YOLOv5的網(wǎng)絡(luò)結(jié)構(gòu)分為三部分:Backbone, Neck, Head。在主干中,輸入圖像分辨率為416×416×3,通過Focus結(jié)構(gòu)進行切片操作,它首先成為208×208×12 Feature map,然后經(jīng)過32個卷積內(nèi)核的卷積操作,最后成為208×208×32 Feature map。CBL模塊包括Conv2D、BatchNormal和LeakyRELU。BottleneckCSP模塊主要對特征圖進行特征提取,從圖像中提取豐富的信息。與其它大規(guī)模卷積神經(jīng)網(wǎng)絡(luò)相比,BottleneckCSP結(jié)構(gòu)可以減少卷積神經(jīng)網(wǎng)絡(luò)優(yōu)化過程中的梯度信息重復(fù),它的參數(shù)量占據(jù)了整個網(wǎng)絡(luò)的大部分參數(shù),通過調(diào)整BottleneckCSP模塊的寬度和深度,就可以得到四種不同參數(shù)的模型,如YOLOv5s、YOLOv5m、YOLOv5l和YOLOv5x。SPP模塊主要是增加網(wǎng)絡(luò)的感受野,獲取不同尺度的特征。YOLOv5的Neck中采用PANet[16]作為其特征融合網(wǎng)絡(luò),該網(wǎng)絡(luò)可以有效地利用細(xì)節(jié)特征信息,來提高網(wǎng)絡(luò)對不同尺度目標(biāo)的檢測能力。
圖1 YOLOv5系統(tǒng)框架
Tan Mingxing等[17]在2019年提出了一種簡單高效的網(wǎng)絡(luò)模型結(jié)構(gòu)EfficientNet。通過使用復(fù)合系數(shù)來實現(xiàn)多維度混合模型的縮放,該方法通過平衡網(wǎng)絡(luò)的深度、寬度和圖像分辨率三個維度的放縮倍率(d,r,w)使網(wǎng)絡(luò)取得更好的性能。EfficientNet的網(wǎng)絡(luò)架構(gòu)借鑒了MnasNet[18],采取了同時優(yōu)化精度及計算量的方法,選擇只在小模型上進行網(wǎng)絡(luò)搜索,大大的減少了計算量。EfficientNetV2[19]是該作者在EfficientNet基礎(chǔ)上進行改進之后提出的新模型。該模型可以有效解決EfficientNet訓(xùn)練過程中存在的三個問題:當(dāng)訓(xùn)練圖像的尺寸很大時,訓(xùn)練的速度非常慢;在淺層網(wǎng)絡(luò)中使用DepthwiseConvolution訓(xùn)練時速度會很慢;同等的放大每個stage是次優(yōu)的。針對以上三個問題,EfficientNetV2引入了Fused-MBConv模塊和改進的漸進式學(xué)習(xí)方法,該方法根據(jù)訓(xùn)練圖像的尺寸動態(tài)調(diào)節(jié)正則方法,相較于EfficientNet,EfficientNetV2在訓(xùn)練速度上提升了11倍,模型的參數(shù)量降低了6.8倍。表1為EfficientNetV2的網(wǎng)絡(luò)結(jié)構(gòu),圖2為MBConv和Fused-MBConv模塊的結(jié)構(gòu)圖。由表1可知,其特征提取網(wǎng)絡(luò)包含一個3×3卷積,3個Fused-MBConv模塊和4個MBConv模塊。其中Fused-MBConv模塊相較于MBConv模塊,用一個3×3的卷積替換了MBConv中的1×1卷積和Depthwise Convolution3×3卷積,原因在于Depthwise Convolution不能充分利用模型進行加速。而在淺層網(wǎng)絡(luò)結(jié)構(gòu)中加入Fused-MBConv模塊能帶來模型在訓(xùn)練速度、精度和浮點計算量上的一個提升[19]。
表1 EfficientNetV2網(wǎng)絡(luò)結(jié)構(gòu)
圖2 MBConv和Fused-MBConv結(jié)構(gòu)圖
本文提出了一種改進YOLOv5的新網(wǎng)絡(luò)結(jié)構(gòu),簡稱YOLOv5-Mask網(wǎng)絡(luò)結(jié)構(gòu),如圖3所示。輸入圖像尺寸為416×416×3,該結(jié)構(gòu)的Backbone是以改進的EfficientNetV2網(wǎng)絡(luò)作為特征提取網(wǎng)絡(luò),在Neck部分,本文通過C3單元替換原結(jié)構(gòu)中的BottleNeckCSP單元,C3單元是由CBL組成的一個網(wǎng)絡(luò)結(jié)構(gòu)更深的殘差結(jié)構(gòu),網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示,通過Concat層和Add層可以完成CBL模塊和上采樣層的張量拼接,增加特征的復(fù)用。
圖3 YOLOv5-Mask網(wǎng)絡(luò)結(jié)構(gòu)圖
圖4 C3單元結(jié)構(gòu)圖
在EfficientNetV2網(wǎng)絡(luò)結(jié)構(gòu)的MBConv模塊和Fused-MBConv模塊中,均采用的SE通道注意力機制。但是該機制中降維對于學(xué)習(xí)通道注意力非常重要,需要適當(dāng)?shù)目缧诺澜换ゲ趴梢栽诮档湍P蛷?fù)雜度的同時保持性能。所以本文提出了使用了一種不降維的局部跨信道交互策略ECA模塊[21]去替換原MBConv模塊和Fused-MBConv模塊中的SE模塊,如圖5。ECA模塊可以在不降低通道維數(shù)的情況下進行逐通道全局平均池化,通過考慮每個通道和它相鄰K個通道的信息來捕獲局部跨通道交互信息,避免特征完全獨立,其結(jié)構(gòu)如圖6。
圖5 改進后的MBConv和Fused-MBConv結(jié)構(gòu)圖
圖6 ECA結(jié)構(gòu)圖
為了避免通過交叉驗證手動調(diào)整K,設(shè)計了一種自適應(yīng)地確定K的方法,內(nèi)核大小K 自適應(yīng)描述如式(1)所示
(1)
其中|t|odd奇數(shù)表示最近的奇數(shù)t,本文在所有實驗中分別將a和b設(shè)置為2和1。從公式可以看出,高維通道具有較長的相互作用,而低維通道則具有較短的相互作用。
與傳統(tǒng)的NMS不同,DIoU-NMS將DIoU視為NMS的準(zhǔn)則,因為不僅考慮重疊區(qū)域的IoU值,還應(yīng)考慮了兩個盒子之間的中心點距離,認(rèn)為兩個中心點較遠(yuǎn)的盒子可能位于不同的對象上,而不應(yīng)將其刪除。如式(2),本文使用該公式來決定一個盒子是否被刪除,對于具有最高分的預(yù)測盒子,DIoU-NMS的ki更新公式定義為:
(2)
(3)
(4)
式中,IoU表示預(yù)測框與真實框的交并比;ρ2(b,bgt)表示邊界框和真實框中心點之間的距離;c2表示兩個框中最小封閉矩形框的對角線長度;ε是手動設(shè)置的NMS閾值;B為檢測盒子;ki是分類得分。
本文實驗環(huán)境為Windows10操作系統(tǒng),運行內(nèi)存16G,CUDA版本10.1,GPU采用NVIDIA GTX2060 6G,CPU采用I7-10875H處理器,深度學(xué)習(xí)框架為Pytorch 1.7.1,編譯環(huán)境為Pycharm/Python。本文算法的訓(xùn)練參數(shù)設(shè)置為:batch size為4,最大迭代次數(shù)為200,優(yōu)化策略采用SGD函數(shù),動量0.937,初始學(xué)習(xí)率為0.01,權(quán)重衰減設(shè)置為0.0005,學(xué)習(xí)率衰減采用余弦退火衰減算法。
本文所使用的口罩?jǐn)?shù)據(jù)集定義了三個類別:T_Mask、N_Mask和F_Mask,分別對應(yīng)正確佩戴口罩、沒有佩戴口罩和錯誤佩戴口罩。由于現(xiàn)有公開數(shù)據(jù)集中主要定義類別為戴口罩(Mask)和不戴口罩(NoMask)兩類,所以本文數(shù)據(jù)集主要分為兩個部分。第一部分來源于公開數(shù)據(jù)集MAFA和Wilder Face數(shù)據(jù)集,該部分主要對兩個公開數(shù)據(jù)進行篩選并刪除誤標(biāo)和錯標(biāo)的圖片整理所得。第二部分為自建數(shù)據(jù)集,采集對象為校園內(nèi)不同場景下的行人,通過錄制視頻進行定時幀截取,然后使用標(biāo)簽標(biāo)注工具LabelImg軟件進行標(biāo)簽標(biāo)注,用以擴充錯誤佩戴口罩的樣本數(shù)量,避免造成訓(xùn)練樣本不均衡,部分圖片如圖7所示。本文數(shù)據(jù)集共包含3504張圖片,按8:2隨機將700張圖片作為驗證集,剩余2804張圖片作為訓(xùn)練集。
圖7 部分?jǐn)?shù)據(jù)集示例
本文算法旨在對疫情期間行人佩戴口罩情況進行檢測,對沒有規(guī)范佩戴口罩的行人發(fā)出提醒,若存在漏報誤報等情況可能會導(dǎo)致病毒的傳播擴散,因此選擇合適的評價指標(biāo)對本文算法有較為重大的意義。本文采取的評價指標(biāo)包含召回率R(Recall)、精準(zhǔn)率P(Precision)、平均精度均值mAP(mean average precision)、模型參數(shù)量(Params)和推理時間FPS作為評價指標(biāo),來評估模型的泛化性能,其定義所示
(5)
(6)
(7)
(8)
其中,tp表示分類正確的正樣本數(shù),fp表示誤將負(fù)樣本分類為正樣本數(shù),fn表示分類錯誤的正樣本數(shù),ts表示推理單張圖片消耗的時間。
將本文算法與YOLOv3-tiny、YOLOv4-tiny和YOLOv5s進行對比,所有算法均采用通用的錨點框比例,訓(xùn)練epoch均設(shè)置為200,實驗對比結(jié)果如表2和圖8所示。
表2 不同結(jié)果算法對比
圖8 不同輕量算法的mAP對比
由上表2中5類檢測指標(biāo)可以看出:本文算法與YOLOv3-tiny和YOLOv4-tiny和YOLOv5s模型相比較,在檢測精度上,分別提高了32.8%、30.4%和1.2%,模型大小分別降低了79.0%、67.1%和45.7%。本文算法相較YOLOv3-tiny雖然推理速度降低了18.9%,但本文算法依舊滿足口罩檢測的實時性要求。綜上所述,本文算法通過使用改進后的EfficientNetV2特征提取網(wǎng)絡(luò)替換YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)中的Backbone,降低了模型的參數(shù)量,大大提高了網(wǎng)絡(luò)的訓(xùn)練速度,通過加入ECA注意力模塊進一步降低模型的參數(shù)量并提升特征提取效果,通過使用Mosaic數(shù)據(jù)增強提高對小目標(biāo)的檢測能力,最后通過使用DIoU-NMS改善了遮擋目標(biāo)的檢測效果,提升了系統(tǒng)的檢測性能。本文算法在減小模型參數(shù)量的基礎(chǔ)上提高了1.2%的檢測精度,同時也保持了較高的推理時間,更適合部署于移動端。最終,實驗結(jié)果表明了本文算法的有效性。
改進前后模型對比效果如表3所示,其中①表示YOLOv5s原模型,②表示使用EfficientNetV2特征提取網(wǎng)絡(luò)替換YOLOv5模型的Backbone融合之后的模型,③表示在模型②的基礎(chǔ)上引入了ECA通道注意力模塊,④表示在模型③的基礎(chǔ)上引入了DIoU-NMS??梢钥闯?使用EfficientNetv2替換YOLOv5的backbone后,參數(shù)量減少了43.9%,mAP提高了0.5%。當(dāng)引入ECA通道注意力模型后,其模型復(fù)雜度更低,推理速度得以提高。最后引入DIoU-NMS,提升了對遮擋目標(biāo)的檢測性能。最終,本文算法的mAP@0.5提高了1.2%,模型大小降低了45.7%,FPS達到了270.3。綜上所述,本文所提出的方法滿足實際檢測場景的實時性和準(zhǔn)確性要求,且模型體積更小、計算需求更低,更適合部署在計算資源不足的移動設(shè)備上。
表3 消融實驗
為了直觀的說明不同算法之間的區(qū)別,本文選取部分圖片進行對比分析,如圖9。
圖9 不同算法檢測效果對比圖
由圖9可看出,YOLOv3-tiny算法和YOLOv4-tiny算法均存在漏檢和誤檢情況,且檢測框位置偏差嚴(yán)重,YOLOv5s算法存在冗余檢測框,而本文算法彌補了以上缺陷,取得了較好的檢測結(jié)果。因此,本文所提算法更為適合規(guī)范佩戴口罩檢測任務(wù)。
本文提出了一種基于YOLOv5-Mask輕量化網(wǎng)絡(luò)為核心的規(guī)范佩戴口罩檢測算法。提出了通過使用改進的EfficientNetv2替換原YOLOv5網(wǎng)絡(luò)中的主干特征提取網(wǎng)絡(luò),使用ECA通道注意力模塊替換原網(wǎng)絡(luò)中的SE注意力模塊,并使用DIoU-NMS替代原YOLOv5模型中加權(quán)NMS的方式,減小了網(wǎng)絡(luò)模型的參數(shù)量,提高了模型的收斂性和精度,并提升了對遮擋目標(biāo)的檢測效果。最后,基于網(wǎng)絡(luò)公開和自然場景下的口罩?jǐn)?shù)據(jù)集的試驗結(jié)果表明,本文提出的輕量化YOLOv5-Mask口罩檢測算法在模型參數(shù)量下降了45.7%,mAP達到了95.3%,推理速度達到了270.3FPS。相比于其它輕量化網(wǎng)絡(luò),本文提出的算法在減少參數(shù)量的同時還能夠保持較高的精度,更適合部署在計算資源不足的移動設(shè)備上,去有效識別人員是否規(guī)范佩戴口罩,來實現(xiàn)對人員的有效監(jiān)控。