程澤華,韓俊英
(甘肅農(nóng)業(yè)大學(xué) 信息科學(xué)技術(shù)學(xué)院,甘肅 蘭州 730070)
自新型冠狀病毒(COVID-19)肺炎爆發(fā)以來(lái),人們的生產(chǎn)和生活方式都受到不同程度的影響,嚴(yán)重影響我國(guó)經(jīng)濟(jì)發(fā)展的同時(shí)也對(duì)人們的生命健康產(chǎn)生了極大威脅。為了防止病毒的肆意傳播,合理佩戴口罩已經(jīng)成為一種重要的保護(hù)手段。隨著病毒的不斷變異,其傳播能力也變得更強(qiáng)。在一些人口密集區(qū)域(例如超市、醫(yī)院和車(chē)站等)僅靠人工檢測(cè)是否合理佩戴口罩,在消耗大量人力的同時(shí)還存在漏檢情況,因此利用計(jì)算機(jī)視覺(jué)代替人工,完成對(duì)是否正確佩戴口罩的檢測(cè)具有重要意義。
近幾年,隨著科技的不斷發(fā)展,深度學(xué)習(xí)也得以快速發(fā)展。目前,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法主要分為One-Stage[1]和Two-Stage[2]兩類(lèi)。One-Stage 算法有檢測(cè)速度快、網(wǎng)絡(luò)模型小、非常適合移動(dòng)設(shè)備等優(yōu)點(diǎn),但它檢測(cè)精度相對(duì)較低,主要代表算法有SSD、YOLO[3]系列。隨著YOLO 系列不斷發(fā)展,到Y(jié)OLOv5 網(wǎng)絡(luò),已經(jīng)解決了檢測(cè)精度低的問(wèn)題。Two-Stage 算法具有檢測(cè)精度高的特點(diǎn),但其檢測(cè)速度較慢、訓(xùn)練時(shí)間長(zhǎng),主要的代表算法有Fast-CNN[4]、Faster R-CNN[5]等。目前,已產(chǎn)生了大量的口罩識(shí)別檢測(cè)算法,如文獻(xiàn)[6]設(shè)計(jì)一種高激活性鬼影模塊,以輕量的計(jì)算代價(jià)減少特征圖中的冗余;文獻(xiàn)[7]通過(guò)增加Max Module 結(jié)構(gòu)以獲得更多目標(biāo)的主要特征,提高檢測(cè)準(zhǔn)確率;文獻(xiàn)[8]提出一種多尺度特征融合的輕量化口罩佩戴檢測(cè)算法,通過(guò)多層級(jí)交叉融合結(jié)構(gòu)最大程度地提取有用信息以提高特征利用率。雖然,他們對(duì)網(wǎng)絡(luò)模型做了一定改進(jìn),但忽略了在人群密集、光線昏暗、檢測(cè)目標(biāo)存在部分遮擋等復(fù)雜環(huán)境中,輕量化的網(wǎng)絡(luò)可能會(huì)導(dǎo)致特征提取能力不足的問(wèn)題。針對(duì)上述問(wèn)題,本文通過(guò)加入數(shù)據(jù)增強(qiáng)方法和設(shè)計(jì)輕量化的特征提取模塊,解決了光線昏暗、人群密集復(fù)雜環(huán)境下特征提取能力不足的問(wèn)題,同時(shí)也實(shí)現(xiàn)了對(duì)YOLOv5算法的輕量化改進(jìn)。
可分離卷積包括空間可分離卷積和深度可分離卷積[9]??臻g可分離卷積通常將卷積核拆分為兩個(gè)較小的卷積核進(jìn)行計(jì)算,在較小的損失情況下降低計(jì)算成本。本文將一個(gè)3×3 的卷積核拆分成一個(gè)3×1 的卷積核和一個(gè)1×3 的卷積核,先使用3×1 的卷積核對(duì)特征圖進(jìn)行卷積操作,將卷積的結(jié)果再使用1×3 的卷積核進(jìn)行卷積操作,得到輸出的特征圖。深度可分離卷積采用對(duì)每個(gè)通道分別進(jìn)行卷積計(jì)算的方式,減少卷積計(jì)算的參數(shù)個(gè)數(shù)。其卷積計(jì)算要分兩步完成,首先對(duì)每個(gè)通道(深度)分別進(jìn)行空間卷積,并對(duì)卷積結(jié)果進(jìn)行拼接,然后使用單位卷積核進(jìn)行通道卷積得到輸出的特征圖。
在圖像處理的特征融合過(guò)程中,常用的融合方式有通道維度上的拼接和相加兩種方式,特征表達(dá)能力并不強(qiáng)。本文提出了自適應(yīng)權(quán)重特征融合方式(Adaptive Feature Fusion,AFF),首先通過(guò)神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)得到不同特征之間的權(quán)重,然后使用通道維度上拼接或相加的方式進(jìn)行特征融合,計(jì)算方法如式(1)所示,通道維度拼接的自適應(yīng)特征融合方式如圖1 所示,通道維度相加的自適應(yīng)特征融合與之類(lèi)似。
Fig.1 Adaptive feature fusion圖1 自適應(yīng)特征融合
本文是對(duì)YOLOv5 算法的改進(jìn),在網(wǎng)絡(luò)的整體結(jié)構(gòu)上與YOLOv5 網(wǎng)絡(luò)保持一致,有4 個(gè)部分組成:輸入網(wǎng)絡(luò)、骨干網(wǎng)絡(luò)、頸部網(wǎng)絡(luò)、頭部網(wǎng)絡(luò)。輸入網(wǎng)絡(luò)主要是對(duì)圖片進(jìn)行數(shù)據(jù)增強(qiáng)處理;骨干網(wǎng)絡(luò)主要是對(duì)輸入的圖片進(jìn)行特征提??;頸部網(wǎng)絡(luò)主要由PAN 結(jié)構(gòu)和FPN 結(jié)構(gòu)組成,PAN 結(jié)構(gòu)是將輸出特征進(jìn)行下采樣與骨干網(wǎng)絡(luò)中的特征進(jìn)行信息融合,F(xiàn)PN 結(jié)構(gòu)是將輸出的特征進(jìn)行上采樣與PAN 結(jié)構(gòu)中的特征進(jìn)行信息融合;頭部網(wǎng)絡(luò)的主要作用是根據(jù)得到的特征層預(yù)測(cè)目標(biāo)的類(lèi)別信息。
改進(jìn)后的網(wǎng)絡(luò)與原始YOLOv5網(wǎng)絡(luò)的區(qū)別主要體現(xiàn)在以下方面:在輸入網(wǎng)絡(luò)原有的數(shù)據(jù)增強(qiáng)基礎(chǔ)上添加了隨機(jī)遮擋和自適應(yīng)對(duì)比度的方法,將骨干網(wǎng)絡(luò)中第一個(gè)C3 模塊刪除,其余的C3 模塊和頸部網(wǎng)絡(luò)中的C3 模塊全部使用SDC 模塊(Spatial Deep Convolution)進(jìn)行替換,不但使網(wǎng)絡(luò)的參數(shù)量減小,同時(shí)也使網(wǎng)絡(luò)具有更好的性能。在細(xì)節(jié)方面,使用SIoU 作為邊框回歸損失函數(shù),重新定義了懲罰指標(biāo),提高了模型精度。改進(jìn)后的YOLOv5 網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
Fig.2 YOLOv5 network structure圖2 YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)
為了讓網(wǎng)絡(luò)參數(shù)量減少的同時(shí),網(wǎng)絡(luò)的特征提取能力還可以得到提升,本文設(shè)計(jì)了一種融合注意力的特征提取模塊SDC,其主要由瓶頸網(wǎng)絡(luò)(BottleNeck)、深度可分離卷積網(wǎng)絡(luò)、注意力網(wǎng)絡(luò)3部分組成。
瓶頸網(wǎng)絡(luò)中使用一個(gè)3×1 的卷積核和一個(gè)1×3 的卷積核對(duì)輸入的特征進(jìn)行卷積,其作用效果與直接使用3×3 的卷積核相似,但使用空間可分離卷積使得網(wǎng)絡(luò)的參數(shù)量減少。同時(shí),瓶頸網(wǎng)絡(luò)有BottleNeck1 和BottleNeck2 兩種結(jié)構(gòu),在骨干網(wǎng)絡(luò)中的SDC 模塊,使用BottleNeck1 結(jié)構(gòu),在頸部網(wǎng)絡(luò)中的SDC 模塊,使用BottleNeck2 結(jié)構(gòu)。為了提取到小目標(biāo)更深層次的信息,使用卷積核為7×7 的深度可分離卷積進(jìn)行特征提取,既增強(qiáng)了網(wǎng)絡(luò)的特征提取能力又避免了計(jì)算量增加的問(wèn)題,將深度可分離卷積網(wǎng)絡(luò)的輸出和瓶頸網(wǎng)絡(luò)的輸出通過(guò)通道維度拼接的自適應(yīng)特征融合方式進(jìn)行特征融合。為了降低一些不太顯著的特征權(quán)重,將基于歸一化的注意力模塊(Normalization-based Attention Module)[10]融入到SDC 模塊中,首先對(duì)輸入特征進(jìn)行批歸一化得到每個(gè)通道的縮放因子,然后根據(jù)縮放因子計(jì)算出每個(gè)通道的權(quán)重,最后通過(guò)Sigmoid 激活函數(shù)將每個(gè)通道的縮放因子和權(quán)重的乘積進(jìn)行歸一化操作,得到每個(gè)通道的注意力,將注意力分別加權(quán)到輸入特征的每個(gè)通道上,得到注意力網(wǎng)絡(luò)的輸出。將注意力網(wǎng)絡(luò)的輸出和前面融合的特征再使用通道維度相加的自適應(yīng)特征融合方式進(jìn)行特征融合得到SDC 模塊,其結(jié)構(gòu)如3所示。
目標(biāo)檢測(cè)的有效性很大程度取決于損失函數(shù)的定義,邊框損失函數(shù)也是目標(biāo)檢測(cè)任務(wù)中重要的損失函數(shù),傳統(tǒng)的邊框損失函數(shù)(CIoU、GIoU、DIoU 等[11-12])并沒(méi)有考慮到所需真實(shí)框與預(yù)測(cè)框之間不匹配的問(wèn)題,這樣會(huì)出現(xiàn)收斂速度慢的問(wèn)題。本文使用SIoU[13]為邊框損失函數(shù),其考慮到所需回歸之間的向量角度,提高了訓(xùn)練速度和推理準(zhǔn)確性,如式(2)所示。在YOLOv5 網(wǎng)絡(luò)的訓(xùn)練過(guò)程中,邊框損失函數(shù)分別使用CIoU Loss 和SIoU Loss 進(jìn)行訓(xùn)練,得到如圖4 的實(shí)驗(yàn)結(jié)果??梢钥闯?,相較于CIoU 損失函數(shù),SIoU 損失函數(shù)的損失值下降更快,模型也可以在訓(xùn)練過(guò)程中更快速地收斂,提高了模型推理速度。
Fig.4 Box loss function圖4 邊框損失函數(shù)
本文對(duì)YOLOv5算法添加了隨機(jī)遮擋和自適應(yīng)對(duì)比度的數(shù)據(jù)增強(qiáng)方法,隨機(jī)遮擋數(shù)據(jù)增強(qiáng)方法是將輸入的圖片,隨機(jī)遮擋若干個(gè)矩形區(qū)域。使用隨機(jī)遮擋數(shù)據(jù)增強(qiáng)的方法以防止過(guò)擬合現(xiàn)象出現(xiàn),同時(shí)也可以模擬真實(shí)場(chǎng)景下部分目標(biāo)出現(xiàn)遮擋的現(xiàn)象,從而提高模型泛化能力。
在實(shí)際生活中存在光線昏暗、對(duì)比度低等復(fù)雜場(chǎng)景,可采用自適應(yīng)對(duì)比度的方法對(duì)數(shù)據(jù)進(jìn)行增強(qiáng)。自適應(yīng)對(duì)比度圖像增強(qiáng)算法來(lái)自于Gamma 變換[14],對(duì)輸入圖像灰度值進(jìn)行非線性操作,可以模擬出一幅圖片在不同光線下的場(chǎng)景,從而達(dá)到數(shù)據(jù)增強(qiáng)的目的,經(jīng)過(guò)自適應(yīng)對(duì)比度數(shù)據(jù)增強(qiáng)后的圖片如圖5所示。
Fig.5 Gamma transform圖5 Gamma變換
本文實(shí)驗(yàn)使用的操作系統(tǒng)為Ubuntu20.04,顯卡為Nvidia GeForce RTX 2080Ti,11GB 顯存,處理器為Intel(R)Xeon(R)Platinum 8,CUDNN 版本為11.3,在PyTorch1.8 框架上完成訓(xùn)練和測(cè)試,使用Python 版本為Python3.8。
目前,對(duì)于是否正確佩戴口罩的數(shù)據(jù)集較少,在口罩識(shí)別的公開(kāi)數(shù)據(jù)集中只有佩戴口罩和沒(méi)有佩戴口罩兩種類(lèi)別,并沒(méi)有不規(guī)范佩戴口罩的類(lèi)別,因此需要重新搜集和標(biāo)注數(shù)據(jù)集。根據(jù)實(shí)際需求,使用爬蟲(chóng)技術(shù)在互聯(lián)網(wǎng)上共采集了5 000 張圖片,將這些圖片進(jìn)行數(shù)據(jù)清洗后剩余3 100 張圖片。選取不同場(chǎng)景、不同時(shí)間段的100 張圖片作為測(cè)試集,將剩余3 000 張圖片使用LabelImg 工具進(jìn)行樣本標(biāo)注。一共標(biāo)注了4 935 個(gè)目標(biāo),其中不佩戴口罩(Nmask)目標(biāo)有1 930 個(gè),不規(guī)范佩戴口罩(Fmask)目標(biāo)有1 380 個(gè),正確佩戴口罩(Tmask)目標(biāo)有1 625 個(gè),將標(biāo)注的3 類(lèi)圖片分別按照8∶2 的比例劃分訓(xùn)練集和驗(yàn)證集。將數(shù)據(jù)集進(jìn)行數(shù)據(jù)增強(qiáng)處理后部分圖片如圖6 所示,其中圖6(a)表示訓(xùn)練集圖片,圖6(b)表示測(cè)試集圖片。
Fig.6 Partial pictures of data set圖6 數(shù)據(jù)集部分圖片
在檢測(cè)速度方面,本文使用檢測(cè)的幀率(FPS)作為評(píng)估指標(biāo),即每秒內(nèi)可以處理圖片的數(shù)量或者處理一張圖片所需要的時(shí)間。在檢測(cè)準(zhǔn)確性方面,本文選用平均精度均值(mAP)、精確率(Precision)、召回率(Recall)作為評(píng)價(jià)指標(biāo),其計(jì)算公式如下:
其中,c代表類(lèi)別數(shù)目,APi表示第i類(lèi)的平均精度(Average Precision),即精確率—召回率曲線下的面積,TP 表示樣本被分為正樣本且分配正確,TN 表示樣本被分為負(fù)樣本且分配正確,F(xiàn)P 表示樣本被分為正樣本但分配錯(cuò)誤,F(xiàn)N 表示樣本被分為負(fù)樣本但分配錯(cuò)誤。
為驗(yàn)證本文對(duì)YOLO 算法改進(jìn)的性能,將改進(jìn)的YOLOv5 算法與目前主流的輕量化目標(biāo)檢測(cè)算法,在相同的數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn)結(jié)果對(duì)比,得到如表1 所示實(shí)驗(yàn)結(jié)果。其中模型的評(píng)價(jià)指標(biāo)有平均精度均值、精確率、召回率、幀率。在平均精度均值評(píng)價(jià)指標(biāo)上,改進(jìn)后的YOLOv5 算法相較于Faster R-CNN 和YOLOX[15]算法分別降低0.2%和0.1%,但比SSD[16]、YOLOv3-tiny[17]、YOLOv4[18]、YOLOv5算法分別提升7.1%、5.8%、5%、1.3%。在精確率和召回率的評(píng)價(jià)指標(biāo)上,改進(jìn)后的YOLOv5 算法只比Faster R-CNN和YOLOX 算法略低,說(shuō)明改進(jìn)后的YOLOv5 算法在檢測(cè)精度上達(dá)到了現(xiàn)有算法的先進(jìn)水平。同時(shí),模型檢測(cè)速度也是非常重要的評(píng)價(jià)指標(biāo),它決定了模型是否可以更好地應(yīng)用于實(shí)際場(chǎng)景中。在檢測(cè)速度評(píng)價(jià)指標(biāo)上,改進(jìn)后的YOLOv5 算法達(dá)到42frame/s,分別比SSD300、YOLOv3-tiny、YOLOv4、YOLOX、YOLOv5 提升210%、168%、150%、175%、140%。改進(jìn)后YOLOv5 網(wǎng)絡(luò)的檢測(cè)速度更加滿足實(shí)際場(chǎng)景的需求。
Table1 Comparative experimental results表1 對(duì)比實(shí)驗(yàn)結(jié)果
為了評(píng)估幾種改進(jìn)方法對(duì)模型的影響,設(shè)置了5 組不同的實(shí)驗(yàn)進(jìn)行驗(yàn)證。實(shí)驗(yàn)1:使用原始的YOLOv5 算法模型;實(shí)驗(yàn)2:使用SIoU Loss 作為YOLOv5 的邊框損失函數(shù);實(shí)驗(yàn)3:在實(shí)驗(yàn)2 的基礎(chǔ)上使用SDC 模塊替換YOLOv5 骨干網(wǎng)絡(luò)和頸部網(wǎng)絡(luò)中的C3 模塊;實(shí)驗(yàn)4:在實(shí)驗(yàn)3 的基礎(chǔ)上,加入了隨機(jī)遮擋的數(shù)據(jù)增強(qiáng)方法;實(shí)驗(yàn)5:在實(shí)驗(yàn)4 的基礎(chǔ)上,增加了自適應(yīng)對(duì)比度的數(shù)據(jù)增強(qiáng)方法。消融實(shí)驗(yàn)結(jié)果如表2所示。
Table 2 Ablation experimental results表2 消融實(shí)驗(yàn)結(jié)果
將數(shù)據(jù)集中的圖片分別輸入到這5 組實(shí)驗(yàn)中進(jìn)行訓(xùn)練和測(cè)試,得到如表2 所示的實(shí)驗(yàn)結(jié)果。通過(guò)對(duì)比實(shí)驗(yàn)1和實(shí)驗(yàn)2 可知,使用SIoU 邊框損失函數(shù)在預(yù)測(cè)框的回歸過(guò)程中,考慮到所需真實(shí)框與預(yù)測(cè)框之間不匹配的方向,使預(yù)測(cè)框可以更準(zhǔn)確地進(jìn)行回歸,從而提高了模型精度和檢測(cè)速度。
從實(shí)驗(yàn)2 和實(shí)驗(yàn)3 可以看出,使用SDC 模塊使模型精確率提升了0.5 個(gè)百分點(diǎn),因?yàn)樵赟DC 模塊中使用了基于歸一化的注意力,可以幫助神經(jīng)網(wǎng)絡(luò)抑制通道中不太顯著的特征,從而提升模型精確率;模型召回率提升了1.9 個(gè)百分點(diǎn),因?yàn)樵赟DC 模塊中使用了7×7 的大卷積核進(jìn)行特征提取,通過(guò)自適應(yīng)權(quán)重的方法進(jìn)行信息融合,可以使輸出特征融合更豐富的語(yǔ)義特征和位置信息,故召回率提升幅度相對(duì)較大;模型大小減小了4.1M,檢測(cè)速度提升了1.4倍,因?yàn)樵赟DC 模塊中主要使用深度可分離卷積和空間可分卷積,相對(duì)于普通卷積它的計(jì)算量和參數(shù)量大幅度減少,通過(guò)減小計(jì)算量使模型檢測(cè)速度得到提升,通過(guò)減少參數(shù)量使模型大小減?。幌噍^于C3 模塊,SDC 模塊具有更好的特征提取能力。
由實(shí)驗(yàn)3、實(shí)驗(yàn)4 和實(shí)驗(yàn)5 可知,使用隨機(jī)遮擋和自適應(yīng)對(duì)比度數(shù)據(jù)增強(qiáng)方法,可以模擬人群密集和光線昏暗等復(fù)雜場(chǎng)景,從而提高了模型泛化能力,使模型在平均精度均值、精確率、召回率上都有所提升,說(shuō)明本文使用的兩種數(shù)據(jù)增強(qiáng)方式非常有效。
將測(cè)試集中的圖片分別輸入到訓(xùn)練好的YOLOv5網(wǎng)絡(luò)模型和改進(jìn)后的YOLOv5 網(wǎng)絡(luò)模型進(jìn)行測(cè)試,選取部分測(cè)試結(jié)果如圖7 所示。從測(cè)試結(jié)果可以看出,YOLOv5 網(wǎng)絡(luò)在光線昏暗人群密集的場(chǎng)景下,存在部分目標(biāo)無(wú)法識(shí)別,個(gè)別目標(biāo)即會(huì)被識(shí)別為不規(guī)范佩戴口罩,又會(huì)被識(shí)別為正確佩戴口罩的問(wèn)題,而改進(jìn)后的YOLOv5 算法特征提取能力更強(qiáng),可以正確識(shí)別出每個(gè)目標(biāo)。在光線充足人群密集的情況下,YOLOv5 算法會(huì)出現(xiàn)個(gè)別目標(biāo)漏檢的問(wèn)題,使用改進(jìn)后的YOLOv5 算法在復(fù)雜環(huán)境下也不存在漏檢情況。在檢測(cè)速度上,改進(jìn)后的YOLOv5 算法檢測(cè)效率有了顯著提升,同時(shí)改進(jìn)后的YOLOv5 算法模型的參數(shù)量也只有原始YOLOv5 算法的72%,實(shí)現(xiàn)了對(duì)YOLOv5 算法的輕量化改進(jìn)。
Fig.7 Partial test results圖7 部分測(cè)試結(jié)果
本文通過(guò)設(shè)計(jì)一種輕量化的特征提取模塊,解決了YOLOv5 網(wǎng)絡(luò)對(duì)是否正確戴口罩識(shí)別能力不足的問(wèn)題,同時(shí)也在很大程度上減小了網(wǎng)絡(luò)的參數(shù)量。在原有的數(shù)據(jù)增強(qiáng)基礎(chǔ)上新添加隨機(jī)遮擋的方法,解決了過(guò)擬合現(xiàn)象和人群密集場(chǎng)景下存在的遮擋現(xiàn)象,添加自適應(yīng)對(duì)比度的方法解決在光線昏暗場(chǎng)景下檢測(cè)能力低的問(wèn)題。使用SIoU邊框損失函數(shù)加快了模型推理速度。本文實(shí)現(xiàn)了YOLOv5算法的輕量化改進(jìn),但還存在網(wǎng)絡(luò)參數(shù)量不夠少、訓(xùn)練所得模型不夠小的不足,后續(xù)將在這兩方面對(duì)模型繼續(xù)加以改進(jìn),提升算法在復(fù)雜場(chǎng)景下口罩識(shí)別的性能。