朱夢凡,陳博源
(西安交通大學(xué)電氣工程學(xué)院,西安 710049)
新冠疫情防控已經(jīng)進(jìn)入常態(tài)化階段,檢測人 們是否佩戴口罩是疫情防控的重要手段,目前針對人們是否佩戴口罩的檢測主要依靠人力,此種方式耗費大量的人力物力,難以滿足不間斷的全天候檢測需求,易出現(xiàn)漏檢錯檢等人為錯誤。近兩年來,隨著計算機(jī)視覺的不斷發(fā)展,對口罩識別的目標(biāo)檢測算法也在不斷改進(jìn),使得口罩檢測更為快速、便捷、靈敏,符合常態(tài)化防控需求。
何育民等[1]提出了一種基于HSV+HOG特征和SVM的人臉口罩檢測算法,通過在人臉口鼻區(qū)域提取HSV+HOG特征并使用SVM進(jìn)行訓(xùn)練,實現(xiàn)對有無佩戴口罩的檢測,但該方法矩陣運算和圖像預(yù)處理過程復(fù)雜,缺少大規(guī)模訓(xùn)練能力。劉國明等[2]收集口罩圖片,搭建Resnet-34深度神經(jīng)網(wǎng)絡(luò)實現(xiàn)口罩佩戴檢測,但模型缺少特征定位能力,應(yīng)用價值受限。
Redmon等[3]于2016年提出YOLO算法,用一個神經(jīng)網(wǎng)絡(luò)實現(xiàn)檢測目標(biāo)的識別和定位,目前已經(jīng)經(jīng)歷了從v1到v5[3-6]的發(fā)展,在口罩佩戴檢測領(lǐng)域獲得了一定的應(yīng)用。周慧麗等[7]提出了基于YOLOv3的戴口罩人臉識別算法,提高了目標(biāo)圖像的識別速度;薛均曉等[8]提出了基于改進(jìn)YOLOv4的自然人群口罩佩戴檢測方法,通過加入?yún)f(xié)調(diào)注意力機(jī)制提高模型性能。2020年推出的YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)具有速度快、體積小、精度高等優(yōu)點,且在具有成熟開發(fā)生態(tài)的Pytorch編譯軟件中實現(xiàn),硬件適配性強,部署簡單。YOLOv5包括了YOLOv5s、YOLOv5m、YOLOv5l和YOLOv5x四個權(quán)重模型,本文對YOLOv5s網(wǎng)絡(luò)進(jìn)行改進(jìn),將原有的特征金字塔模塊替換為加權(quán)雙向特征金字塔(BiFPN)模塊,并統(tǒng)計精度指標(biāo),與改進(jìn)前的模型進(jìn)行對比分析。
(1)收集到佩戴口罩和未佩戴口罩的人臉圖像各600張,編寫圖像分類程序,以6∶3∶1的比例隨機(jī)分配用于訓(xùn)練模型、驗證模型和測試模型的數(shù)據(jù)集。
(2)采用labelimg工具對佩戴和未佩戴口罩的人臉圖像進(jìn)行特征標(biāo)注(見圖1,mask表示佩戴口罩,no_mask表示未佩戴口罩)。
圖1 labelimg口罩特征標(biāo)注
(3)編寫程序,將生成的可擴(kuò)展標(biāo)記語言(.xml)格式的缺陷信息轉(zhuǎn)化成文本信息格式(.txt)。每個特征信息表示為帶特征種類系數(shù)的張量格式。
圖2為YOLOv5s網(wǎng)絡(luò)結(jié)構(gòu)圖,YOLOv5s網(wǎng)絡(luò)包含輸入端、Backbone、Neck和Head輸出端。輸入端包含Mosaic數(shù)據(jù)處理和自適應(yīng)錨框計算。隨機(jī)不重復(fù)選取四張圖片,對四張圖片進(jìn)行拼接。輸入數(shù)據(jù)集后,程序自行選擇初始錨點框,進(jìn)而和真實框(GT)進(jìn)行比對,對二者差值執(zhí)行反向更新操作,以自適應(yīng)方式輸出最佳錨框值;Backbone結(jié)構(gòu)包含F(xiàn)ocus、跨階段局部融合網(wǎng)絡(luò)(CrossStagePartialNetworks,CSPNet[9])和空間金字塔池化(space pyramid pooling,SPP[10])模塊,F(xiàn)ocus模塊對輸入圖像進(jìn)行切片操作和一次32個卷積核的卷積操作,CSPNet模塊提取不同層的特征信息,通過局部跨層融合操作獲得更為豐富的特征圖,SPP模塊采用 四種不同大小的卷積核進(jìn)行最大池化和張量拼接。Neck結(jié)構(gòu)采用路徑聚合網(wǎng)絡(luò)(PathAggregation,PANet[11])對不同層圖像的特征融合。Head輸出端包含損失函數(shù)GIOU_Loss[12]的計算和NMS非極大值抑制,通過對相交尺度的測量,解決當(dāng)兩錨框不相交時難以優(yōu)化的情況。
圖2 YOLOv5s網(wǎng)絡(luò)結(jié)構(gòu)
在YOLO架構(gòu)的不斷發(fā)展下,模型不斷復(fù)雜化,特征網(wǎng)絡(luò)的維度越來越深,在特征提取過程中不可避免地出現(xiàn)特征丟失的情況。為了使深層網(wǎng)絡(luò)具有較高的分辨率,提高精度,需要對特征網(wǎng)絡(luò)進(jìn)行多尺度融合。目前針對YOLO框架的特征網(wǎng)絡(luò)融合結(jié)構(gòu)有FPN和PANet。FPN對特征網(wǎng)絡(luò)進(jìn)行簡單的自上而下單向融合,然后輸出融合后的特征。PANet在FPN的基礎(chǔ)上進(jìn)行了優(yōu)化改進(jìn),對特征網(wǎng)絡(luò)在自上而下融合后,進(jìn)行自下而上二次融合。FPN、PANet結(jié)構(gòu)的多尺度融合存在不同尺度上的特征信息差別,計算量大導(dǎo)致檢測時間長,融合特征的效果較差等不足。
本文采用加權(quán)雙向特征金字塔結(jié)構(gòu)BiFPN替換模型原有的PANet結(jié)構(gòu),對YOLOv5s網(wǎng)絡(luò)的特征融合模塊進(jìn)行改進(jìn)。BiFPN在FPN中尋找有效的block,然后重復(fù)疊加,相較于PANet進(jìn)行了較復(fù)雜的特征融合,從而對FPN大小彈性控制。在PANet基礎(chǔ)上,BiFPN進(jìn)行簡單的殘差處理以增強特征表示能力,對信息含量較少的單輸入節(jié)點移除以減少計算量,給每個尺度上的特征按需賦以權(quán)重以提高檢測速度。
圖3為BiFPN網(wǎng)絡(luò)結(jié)構(gòu)。深層次的特征網(wǎng)絡(luò)包含了較多特征信息,直接進(jìn)行特征的卷積融合計算量過大,首先需要對特征網(wǎng)絡(luò)進(jìn)行簡單的殘差處理以增強特征表示能力。在融合過程中,忽略信息含量較少的單輸入節(jié)點,簡化網(wǎng)絡(luò)以減少計算量,同時不影響輸出的有效特征信息。由于同一尺度上的節(jié)點間處于相同層,卷積過程中對相同層間的節(jié)點間進(jìn)行跳躍連接不會增加太多的計算量,并且融合更多特征避免特征丟失。BiFPN的融合考慮分別將自下而上和自上而下卷積路徑視為不同的特征網(wǎng)絡(luò),重復(fù)融合,以獲得更深層次特征融合。不同尺度上特征的分辨率具有差異性,若對不同輸入特征賦以相同的權(quán)重,在輸出貢獻(xiàn)中不平等。賦予每個尺度上的特征不同權(quán)重,對不同特征分辨其重要性,從而實現(xiàn)快速融合和較高的識別精確度。
圖3 BiFPN網(wǎng)絡(luò)結(jié)構(gòu)
設(shè)每一次的特征融合的輸入層為Pl1、Pl2、Pl3…Pln,每一次的特征融合的輸出層分別設(shè)為Cl1、Cl2、Cl3…Clm,L代表第L次融合,q代表最終融合次數(shù)。最終輸出為自上而下的特征融合路徑—Cupside,自下而上的特征融合路徑—Cdownside。通過多尺度的特征進(jìn)行不同權(quán)重融合,ali表示不同層在正向特征網(wǎng)絡(luò)融合時的權(quán)重比,bli表示不同層在反向特征網(wǎng)絡(luò)層融合中的權(quán)重比,對不同層進(jìn)行卷積融合,融合路徑公式如下:
本實驗的運行環(huán)境:CPU為Inteli7-11800H,GPU為NVIDIA GeForce RTX 3060,內(nèi)存為16 G,操作系統(tǒng)為Windows10,CUDA為11.0版本,開發(fā)語言為Python,框架為Pytorch,訓(xùn)練參數(shù)設(shè)置見表1。
表1 訓(xùn)練參數(shù)設(shè)置
對訓(xùn)練獲得的口罩佩戴檢測模型進(jìn)行精度統(tǒng)計,精度評價標(biāo)準(zhǔn)包括識別精確率(precision)、召回率(recall)和均值平均精度(mAP),識別精確率指模型預(yù)測的所有目標(biāo)中預(yù)測正確的比例,召回率指所有正樣本中被正確預(yù)測的比率,均值平均精度指各類別平均精度的均值。各標(biāo)準(zhǔn)公式如下:
式(5)~(7)中,TP、FN、FP和TN依次代表將正類預(yù)測為正類數(shù)、將正類預(yù)測為負(fù)類數(shù)、將負(fù)類預(yù)測為正類數(shù)和將負(fù)類預(yù)測為負(fù)類數(shù)。
表2為改進(jìn)前后的YOLOv5s網(wǎng)絡(luò)在同一數(shù)據(jù)集上的性能比較,由表2可知,采用加權(quán)雙向特征金字塔(BiFPN)網(wǎng)絡(luò)結(jié)構(gòu)替換原有的特征金字塔模塊的改進(jìn)YOLOv5s結(jié)構(gòu),對人臉口罩佩戴的檢測精確率為96.9%,召回率為88.3%,mAP值為58.4%,較原YOLOv5s模型分別提高1.4%、6.2%和3.5%,模型性能顯著提升。圖4為改進(jìn)后模型對人臉口罩佩戴的檢測結(jié)果,實現(xiàn)了對口罩是否佩戴的準(zhǔn)確識別。
表2 模型性能比較
圖4 口罩佩戴檢測效果
本文提出一種基于改進(jìn)YOLOv5s的口罩佩戴檢測方法,在原YOLOv5s網(wǎng)絡(luò)結(jié)構(gòu)基礎(chǔ)上,采用加權(quán)雙向特征金字塔(BiFPN)網(wǎng)絡(luò)結(jié)構(gòu)替換原有的特征金字塔模塊,對人臉口罩?jǐn)?shù)據(jù)集圖像進(jìn)行特征標(biāo)注、迭代訓(xùn)練和模型性能比較。實驗結(jié)果表明,與原YOLOv5s模型相比,改進(jìn)后的YOLOv5s網(wǎng)絡(luò)實現(xiàn)了更加高效的特征提取和特征融合,口罩檢測精度顯著提高,有助于提高防疫水平,適合移動部署。