朱夢凡,陳博源
(西安交通大學電氣工程學院,西安 710049)
新冠疫情防控已經進入常態化階段,檢測人 們是否佩戴口罩是疫情防控的重要手段,目前針對人們是否佩戴口罩的檢測主要依靠人力,此種方式耗費大量的人力物力,難以滿足不間斷的全天候檢測需求,易出現漏檢錯檢等人為錯誤。近兩年來,隨著計算機視覺的不斷發展,對口罩識別的目標檢測算法也在不斷改進,使得口罩檢測更為快速、便捷、靈敏,符合常態化防控需求。
何育民等[1]提出了一種基于HSV+HOG特征和SVM的人臉口罩檢測算法,通過在人臉口鼻區域提取HSV+HOG特征并使用SVM進行訓練,實現對有無佩戴口罩的檢測,但該方法矩陣運算和圖像預處理過程復雜,缺少大規模訓練能力。劉國明等[2]收集口罩圖片,搭建Resnet-34深度神經網絡實現口罩佩戴檢測,但模型缺少特征定位能力,應用價值受限。
Redmon等[3]于2016年提出YOLO算法,用一個神經網絡實現檢測目標的識別和定位,目前已經經歷了從v1到v5[3-6]的發展,在口罩佩戴檢測領域獲得了一定的應用。周慧麗等[7]提出了基于YOLOv3的戴口罩人臉識別算法,提高了目標圖像的識別速度;薛均曉等[8]提出了基于改進YOLOv4的自然人群口罩佩戴檢測方法,通過加入協調注意力機制提高模型性能。2020年推出的YOLOv5網絡結構具有速度快、體積小、精度高等優點,且在具有成熟開發生態的Pytorch編譯軟件中實現,硬件適配性強,部署簡單。YOLOv5包括了YOLOv5s、YOLOv5m、YOLOv5l和YOLOv5x四個權重模型,本文對YOLOv5s網絡進行改進,將原有的特征金字塔模塊替換為加權雙向特征金字塔(BiFPN)模塊,并統計精度指標,與改進前的模型進行對比分析。
(1)收集到佩戴口罩和未佩戴口罩的人臉圖像各600張,編寫圖像分類程序,以6∶3∶1的比例隨機分配用于訓練模型、驗證模型和測試模型的數據集。
(2)采用labelimg工具對佩戴和未佩戴口罩的人臉圖像進行特征標注(見圖1,mask表示佩戴口罩,no_mask表示未佩戴口罩)。

圖1 labelimg口罩特征標注
(3)編寫程序,將生成的可擴展標記語言(.xml)格式的缺陷信息轉化成文本信息格式(.txt)。每個特征信息表示為帶特征種類系數的張量格式。
圖2為YOLOv5s網絡結構圖,YOLOv5s網絡包含輸入端、Backbone、Neck和Head輸出端。輸入端包含Mosaic數據處理和自適應錨框計算。隨機不重復選取四張圖片,對四張圖片進行拼接。輸入數據集后,程序自行選擇初始錨點框,進而和真實框(GT)進行比對,對二者差值執行反向更新操作,以自適應方式輸出最佳錨框值;Backbone結構包含Focus、跨階段局部融合網絡(CrossStagePartialNetworks,CSPNet[9])和空間金字塔池化(space pyramid pooling,SPP[10])模塊,Focus模塊對輸入圖像進行切片操作和一次32個卷積核的卷積操作,CSPNet模塊提取不同層的特征信息,通過局部跨層融合操作獲得更為豐富的特征圖,SPP模塊采用 四種不同大小的卷積核進行最大池化和張量拼接。Neck結構采用路徑聚合網絡(PathAggregation,PANet[11])對不同層圖像的特征融合。Head輸出端包含損失函數GIOU_Loss[12]的計算和NMS非極大值抑制,通過對相交尺度的測量,解決當兩錨框不相交時難以優化的情況。

圖2 YOLOv5s網絡結構
在YOLO架構的不斷發展下,模型不斷復雜化,特征網絡的維度越來越深,在特征提取過程中不可避免地出現特征丟失的情況。為了使深層網絡具有較高的分辨率,提高精度,需要對特征網絡進行多尺度融合。目前針對YOLO框架的特征網絡融合結構有FPN和PANet。FPN對特征網絡進行簡單的自上而下單向融合,然后輸出融合后的特征。PANet在FPN的基礎上進行了優化改進,對特征網絡在自上而下融合后,進行自下而上二次融合。FPN、PANet結構的多尺度融合存在不同尺度上的特征信息差別,計算量大導致檢測時間長,融合特征的效果較差等不足。
本文采用加權雙向特征金字塔結構BiFPN替換模型原有的PANet結構,對YOLOv5s網絡的特征融合模塊進行改進。BiFPN在FPN中尋找有效的block,然后重復疊加,相較于PANet進行了較復雜的特征融合,從而對FPN大小彈性控制。在PANet基礎上,BiFPN進行簡單的殘差處理以增強特征表示能力,對信息含量較少的單輸入節點移除以減少計算量,給每個尺度上的特征按需賦以權重以提高檢測速度。
圖3為BiFPN網絡結構。深層次的特征網絡包含了較多特征信息,直接進行特征的卷積融合計算量過大,首先需要對特征網絡進行簡單的殘差處理以增強特征表示能力。在融合過程中,忽略信息含量較少的單輸入節點,簡化網絡以減少計算量,同時不影響輸出的有效特征信息。由于同一尺度上的節點間處于相同層,卷積過程中對相同層間的節點間進行跳躍連接不會增加太多的計算量,并且融合更多特征避免特征丟失。BiFPN的融合考慮分別將自下而上和自上而下卷積路徑視為不同的特征網絡,重復融合,以獲得更深層次特征融合。不同尺度上特征的分辨率具有差異性,若對不同輸入特征賦以相同的權重,在輸出貢獻中不平等。賦予每個尺度上的特征不同權重,對不同特征分辨其重要性,從而實現快速融合和較高的識別精確度。

圖3 BiFPN網絡結構
設每一次的特征融合的輸入層為Pl1、Pl2、Pl3…Pln,每一次的特征融合的輸出層分別設為Cl1、Cl2、Cl3…Clm,L代表第L次融合,q代表最終融合次數。最終輸出為自上而下的特征融合路徑—Cupside,自下而上的特征融合路徑—Cdownside。通過多尺度的特征進行不同權重融合,ali表示不同層在正向特征網絡融合時的權重比,bli表示不同層在反向特征網絡層融合中的權重比,對不同層進行卷積融合,融合路徑公式如下:

本實驗的運行環境:CPU為Inteli7-11800H,GPU為NVIDIA GeForce RTX 3060,內存為16 G,操作系統為Windows10,CUDA為11.0版本,開發語言為Python,框架為Pytorch,訓練參數設置見表1。

表1 訓練參數設置
對訓練獲得的口罩佩戴檢測模型進行精度統計,精度評價標準包括識別精確率(precision)、召回率(recall)和均值平均精度(mAP),識別精確率指模型預測的所有目標中預測正確的比例,召回率指所有正樣本中被正確預測的比率,均值平均精度指各類別平均精度的均值。各標準公式如下:


式(5)~(7)中,TP、FN、FP和TN依次代表將正類預測為正類數、將正類預測為負類數、將負類預測為正類數和將負類預測為負類數。
表2為改進前后的YOLOv5s網絡在同一數據集上的性能比較,由表2可知,采用加權雙向特征金字塔(BiFPN)網絡結構替換原有的特征金字塔模塊的改進YOLOv5s結構,對人臉口罩佩戴的檢測精確率為96.9%,召回率為88.3%,mAP值為58.4%,較原YOLOv5s模型分別提高1.4%、6.2%和3.5%,模型性能顯著提升。圖4為改進后模型對人臉口罩佩戴的檢測結果,實現了對口罩是否佩戴的準確識別。

表2 模型性能比較

圖4 口罩佩戴檢測效果
本文提出一種基于改進YOLOv5s的口罩佩戴檢測方法,在原YOLOv5s網絡結構基礎上,采用加權雙向特征金字塔(BiFPN)網絡結構替換原有的特征金字塔模塊,對人臉口罩數據集圖像進行特征標注、迭代訓練和模型性能比較。實驗結果表明,與原YOLOv5s模型相比,改進后的YOLOv5s網絡實現了更加高效的特征提取和特征融合,口罩檢測精度顯著提高,有助于提高防疫水平,適合移動部署。