于 碩,李 慧,桂方俊,楊彥琦,呂晨陽(yáng)
(1.北京服裝學(xué)院 基礎(chǔ)教學(xué)部,北京 100029;2.中國(guó)礦業(yè)大學(xué)(北京) 機(jī)電與信息工程學(xué)院,北京 100083)
自2019年遭受新型冠狀病毒肺炎(COVID- 19)疫情[1]襲擊以來,我國(guó)一直采取強(qiáng)有力的抗疫、防疫措施。目前疫情態(tài)勢(shì)趨好,抗擊新冠肺炎取得較大成功,但不能因此松懈,而應(yīng)該更加科學(xué)地對(duì)抗疫情、更加重視公共衛(wèi)生工作。現(xiàn)階段有效降低人員間交叉感染風(fēng)險(xiǎn)、嚴(yán)防疫情反彈的有效措施之一就是在公共場(chǎng)所正確佩戴口罩,在對(duì)民眾日常行為規(guī)范做出考驗(yàn)的同時(shí),也對(duì)口罩佩戴的監(jiān)督和管理檢測(cè)技術(shù)提出了一定要求。目前的口罩佩戴檢測(cè)裝置受特定時(shí)刻待檢人數(shù)激增、人員間相互遮擋等復(fù)雜環(huán)境的影響而出現(xiàn)誤檢,同時(shí)由于待檢目標(biāo)小可能導(dǎo)致漏檢,因此復(fù)雜場(chǎng)景下提高口罩佩戴檢測(cè)的精度與速度十分必要。
伴隨卷積神經(jīng)網(wǎng)絡(luò)的興起,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法在人工智能、信息技術(shù)等諸多領(lǐng)域均有廣泛應(yīng)用[2-3],該算法主要分為兩類,一類是兩級(jí)式(two-stage):檢測(cè)方式是區(qū)域提議結(jié)合檢測(cè),以R-CNN系列[4-6]為代表,這類算法精準(zhǔn)度高但時(shí)效性較低;另一類是單級(jí)式(one-stage):檢測(cè)方式是無區(qū)域提議框架,即提議和檢測(cè)一體,以SSD[7]系列、YOLO[8-11]系列為代表,這類算法檢測(cè)速度快但精準(zhǔn)度較差。疫情前目標(biāo)檢測(cè)已應(yīng)用在生產(chǎn)生活等諸多方面,但專業(yè)的口罩佩戴檢測(cè)較少,因此疫情后的急需吸引了國(guó)內(nèi)外眾多學(xué)者參與研究。M.D.Pramita等[12]提出基于深度學(xué)習(xí)的圖像分類模型,使用卷積神經(jīng)網(wǎng)絡(luò)從私有數(shù)據(jù)集中學(xué)習(xí)印度尼西亞人臉特征,實(shí)時(shí)檢測(cè)人員是否戴口罩。B.Xue等[13]結(jié)合口罩佩戴檢測(cè)算法、口罩標(biāo)準(zhǔn)佩戴檢測(cè)算法和人臉識(shí)別算法提出基于改進(jìn)的RETINAFACE算法,在實(shí)現(xiàn)口罩佩戴檢測(cè)的基礎(chǔ)上判斷口罩是否正確佩戴。黃林泉等[14]在YOLOv3中融合SPPNet和PANet提高算法特征融合的質(zhì)量,并且結(jié)合DeepSort目標(biāo)跟蹤技術(shù)以提高檢測(cè)實(shí)時(shí)性。張路達(dá)等[15]提出在YOLOv3基礎(chǔ)上引入多尺度融合進(jìn)行口罩佩戴檢測(cè)。
為達(dá)到更好的檢測(cè)效果,本文在上述研究基礎(chǔ)上利用YOLOv5網(wǎng)絡(luò)模型進(jìn)行復(fù)雜場(chǎng)景下口罩佩戴實(shí)時(shí)檢測(cè)算法研究。經(jīng)驗(yàn)證,本算法在口罩佩戴實(shí)時(shí)檢測(cè)中兼顧了檢測(cè)精度和速度,說明具有較好的實(shí)用性。
YOLOv5在結(jié)構(gòu)上可分為4部分:輸入端、主干部分Backbone、Neck和Prediction,其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)
YOLOv5的輸入端將圖像進(jìn)行一定的數(shù)據(jù)處理,如縮放至統(tǒng)一尺寸然后送入網(wǎng)絡(luò)中學(xué)習(xí)。Backbone包含F(xiàn)ocus、CSP及SPP結(jié)構(gòu)。CSP中的CSP1_X 、CSP2_X結(jié)構(gòu)分別應(yīng)用于Backbone、Neck中。SPP(Spatial Pyramid Pooling,空間金字塔池化)分別采用5、9、13的最大池化,再進(jìn)行concat融合,提高感受野。這些結(jié)構(gòu)有效避免了對(duì)圖像區(qū)域剪裁、縮放操作導(dǎo)致的圖像失真等問題,也解決了卷積神經(jīng)網(wǎng)絡(luò)對(duì)圖像重復(fù)特征提取的問題[16]。Neck部分采用FPN、PAN結(jié)合的結(jié)構(gòu),得到一系列混合和組合圖像特征的網(wǎng)絡(luò)層,并將圖像特征傳遞到預(yù)測(cè)層,加強(qiáng)了信息傳播,具備準(zhǔn)確保留空間信息的能力。輸出端Bounding box損失函數(shù)為GIOU_Loss,NMS對(duì)目標(biāo)最后的檢測(cè)框進(jìn)行非極大值抑制處理以獲得最優(yōu)目標(biāo)框。
YOLOv5的4個(gè)模型YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x在結(jié)構(gòu)上一致,區(qū)別在于模型的深度、寬度設(shè)置不同。如圖2所示,在對(duì)比YOLOv5各版本性能后,本文選用模型大小較適宜、速度較快、精確度較高的YOLOv5m為基礎(chǔ)模型,該模型的寬度、深度控制如圖3所示。
圖2 YOLOv5性能對(duì)比
圖3 YOLOv5m深度、寬度控制
模型深度由CSP結(jié)構(gòu)控制,在YOLOv5m模型中第一個(gè)CSP1使用了2個(gè)殘差組件,因此是CSP1_2;第一個(gè)CSP2使用了2組卷積,因此是CSP2_2,此時(shí)隨著網(wǎng)絡(luò)不斷加深,其網(wǎng)絡(luò)特征提取和特征融合的能力也在不斷增強(qiáng)。同時(shí)模型在不同階段的卷積核數(shù)量不同,直接影響特征圖的厚度,進(jìn)而影響模型寬度,即卷積核數(shù)量越多說明網(wǎng)絡(luò)寬度越寬,網(wǎng)絡(luò)提取特征的學(xué)習(xí)能力也越強(qiáng),其中第一次卷積操作時(shí)將原始圖像640*640*3接入Focus結(jié)構(gòu),通過切片變?yōu)?20*320*12的特征圖,再經(jīng)過48個(gè)卷積核變?yōu)?20*320*48的特征圖,如圖4所示,該操作為后續(xù)的特征提取保留了更完整的圖片下采樣信息。
圖4 Focus結(jié)構(gòu)圖
本文主要從數(shù)據(jù)處理、損失函數(shù)及檢測(cè)框的選擇方面對(duì)網(wǎng)絡(luò)進(jìn)行優(yōu)化。
在一般目標(biāo)檢測(cè)任務(wù)中,數(shù)據(jù)集的圖片尺寸不盡相同,常用的處理方法是訓(xùn)練及測(cè)試時(shí)都將原始圖片縮放至統(tǒng)一的標(biāo)準(zhǔn)尺寸,再送入網(wǎng)絡(luò)中[17]。但由于復(fù)雜場(chǎng)景下待檢測(cè)目標(biāo)小等原因?qū)е聦?shí)際檢測(cè)難度大,采用傳統(tǒng)數(shù)據(jù)處理方法效果并不理想,因此本文算法選擇在輸入端采用自適應(yīng)錨框計(jì)算、Mosaic數(shù)據(jù)增強(qiáng)、自適應(yīng)圖片縮放等數(shù)據(jù)處理方式。
由于網(wǎng)絡(luò)訓(xùn)練前已經(jīng)設(shè)定好了基礎(chǔ)錨框[116,90,156,198,373,326]、[30,61,62,45,59,119]、[10,13,16,30,33,23],網(wǎng)絡(luò)模型將基于此錨框訓(xùn)練得到的預(yù)測(cè)框與真實(shí)框進(jìn)行比較,根據(jù)其差值反向更新、迭代調(diào)整網(wǎng)絡(luò)模型參數(shù)[18]。
Mosaic數(shù)據(jù)增強(qiáng)就是把4張圖片,通過隨機(jī)縮放、隨機(jī)裁減、隨機(jī)排布的方式進(jìn)行拼接,處理過程如圖5所示。這種數(shù)據(jù)處理的方式不僅豐富了待檢測(cè)圖片的背景,也在一定程度使待檢測(cè)目標(biāo)變小進(jìn)而擴(kuò)充小目標(biāo),此時(shí)將處理好的圖片送入網(wǎng)絡(luò)中訓(xùn)練,相當(dāng)于每次計(jì)算4張圖片的數(shù)據(jù),這樣單GPU即可以達(dá)到比較好的效果。
圖5 Mosaic數(shù)據(jù)增強(qiáng)
本算法數(shù)據(jù)處理時(shí)的操作如下:訓(xùn)練時(shí),采用Mosaic數(shù)據(jù)增強(qiáng)結(jié)合自適應(yīng)圖片縮放,既對(duì)原始圖片進(jìn)行了拼接處理又給圖片添加一定程度的灰邊,然后將圖像縮放至同一尺寸640*640*3送入網(wǎng)絡(luò)進(jìn)行訓(xùn)練,如圖6(a)所示。測(cè)試時(shí),僅使用自適應(yīng)圖片縮放,對(duì)原始圖像自適應(yīng)地添加最少的灰邊以減少冗余信息,然后再傳入檢測(cè)網(wǎng)絡(luò)以提高實(shí)際檢測(cè)時(shí)的推理速度,如圖6(b)所示。
圖6 圖片處理
IoU[19]被稱為交并比,是一種評(píng)價(jià)目標(biāo)檢測(cè)器性能的指標(biāo),其計(jì)算的是預(yù)測(cè)框與真實(shí)框間交集和并集的比值。GIoU[20]則是在IoU基礎(chǔ)上引入懲罰項(xiàng)以更準(zhǔn)確地反應(yīng)檢測(cè)框和真實(shí)框相交情況。二者計(jì)算公式如下:
(1)
(2)
其中:A表示檢測(cè)框,B表示真實(shí)框,C代表包含檢測(cè)框和真實(shí)框的最小外接矩形框,|C-(A∪B)|表示懲罰項(xiàng)。
如圖7(a)、圖7(b)所示可知,當(dāng)A、B兩框不相交時(shí)GIoU能衡量?jī)煽虻倪h(yuǎn)近程度;由圖7(c)、圖7(d)可知,GIoU亦能反映兩框的相交方式,即相比于IoU來說,GIoU可以較好地區(qū)分檢測(cè)框和真實(shí)框之間的位置關(guān)系。但當(dāng)檢測(cè)框和真實(shí)框之間出現(xiàn)包含這種特殊情況時(shí),C與A∪B相等,那么GIoU中的懲罰項(xiàng)會(huì)變?yōu)?,即GIoU會(huì)退化成IoU,此時(shí)GIOU優(yōu)勢(shì)消失。
圖7 位置關(guān)系
因此,本文選用CIoU_Loss[21]作為邊界框損失函數(shù)使預(yù)測(cè)框更加貼合真實(shí)框。CIoU計(jì)算過程如下:
(3)
其中,如圖8所示,b和bgt分別表示預(yù)測(cè)邊框和真實(shí)邊框的中心點(diǎn),d=ρ(b,bgt)表示兩框中心點(diǎn)間距離,c表示預(yù)測(cè)框與真實(shí)框的最小外接矩形的對(duì)角線距離。
圖8 CIoU相關(guān)圖示
式(3)中,α是做trade-off的參數(shù),v衡量長(zhǎng)寬比一致性[22],計(jì)算公式如式(4)和式(5)所示:
(4)
(5)
其中:w和wgt分別表示預(yù)測(cè)邊框與真實(shí)邊框的寬度,h和hgt分別表示預(yù)測(cè)邊框與真實(shí)邊框的高度。CIoU_Loss計(jì)算公式為:
CIoU_Loss=1-CIoU
(6)
在經(jīng)典的NMS中,得分最高的檢測(cè)框和其它檢測(cè)框逐一算出對(duì)應(yīng)的IoU值,并將該值超過NMS threshold的框全部過濾掉??梢钥闯鲈诮?jīng)典NMS算法中,IoU是唯一考量的因素。但是在實(shí)際應(yīng)用場(chǎng)景中,當(dāng)兩個(gè)不同物體很近時(shí),由于IoU值比較大,經(jīng)過NMS處理后,只剩下單一檢測(cè)框,這樣容易導(dǎo)致漏檢的情況發(fā)生。而DIoU-NMS不僅考慮到預(yù)測(cè)框與真實(shí)框重疊區(qū)域還考慮到中心點(diǎn)距離,即兩框之間出現(xiàn)IoU較大、兩框的中心距離也較大的情況時(shí),會(huì)認(rèn)為是兩個(gè)物體的框并同時(shí)保留,從而有效提高檢測(cè)精度?;诖?,本文算法選用DIoU-NMS代替NMS。
實(shí)驗(yàn)數(shù)據(jù)集4 930張均來自線上收集,較全面的概括各類場(chǎng)景的圖像,涵蓋了單一人員佩戴、未佩戴口罩以及復(fù)雜場(chǎng)景下多人佩戴、未佩戴口罩等情況,按照8∶1∶1的比例劃分其用于訓(xùn)練、驗(yàn)證及測(cè)試,數(shù)據(jù)集示例如圖9所示。
圖9 數(shù)據(jù)集示例
數(shù)據(jù)集采用PASCAL VOC格式,使用LabelImg對(duì)圖片進(jìn)行標(biāo)注使用,包括face_mask、face、invalid 3種類別,其中face_mask表示待檢測(cè)人員已正確佩戴口罩; face表示未佩戴口罩; invalid表示未規(guī)范佩戴口罩。并且通過對(duì)數(shù)據(jù)集進(jìn)行分析,得到可視化結(jié)果如圖10所示,可知數(shù)據(jù)集中已經(jīng)標(biāo)記部分小目標(biāo),可以一定程度上模擬復(fù)雜場(chǎng)景下待檢目標(biāo)小的情況。
圖10 數(shù)據(jù)集分析
本實(shí)驗(yàn)配置如表1所示。
表1 實(shí)驗(yàn)環(huán)境配置
訓(xùn)練參數(shù)設(shè)置如下:輸入圖像尺寸為640*640,在訓(xùn)練過程中對(duì)學(xué)習(xí)率采用動(dòng)態(tài)調(diào)整策略;初始學(xué)習(xí)率為0.01,學(xué)習(xí)率周期為0.2,學(xué)習(xí)率動(dòng)量為0.937,權(quán)重衰減系數(shù)為0.000 5,若模型連續(xù)3個(gè)epoch的損失不再下降,學(xué)習(xí)率減少為原來的4/5。訓(xùn)練批次大小為16,最大迭代次數(shù)設(shè)置為600。
由公式(7)可知,YOLOv5的損失值由3個(gè)類別損失構(gòu)成,分別是表征物體位置、物體類別及是否包含目標(biāo)物體的損失。
Loss=box_loss+cls_loss+obj_loss
(7)
圖11所示為訓(xùn)練600個(gè)Epoch的損失值收斂曲線,可知模型達(dá)到了較好的擬合效果。
圖11 訓(xùn)練損失下降曲線
采用如下性能指標(biāo)[23]評(píng)估本文算法性能:準(zhǔn)確率(P, precision)、召回率(R,recall)、平均精度均值(mAP, mean average precision)以及每秒檢測(cè)圖片幀數(shù)(FPS,frames per second)。
準(zhǔn)確率是精確性的度量,表示被分為正的示例中實(shí)際為正例的比例。召回率是覆蓋面的度量,計(jì)算有多個(gè)正例被分為正例。公式如下:
Precision=TP/(TP+FP)×100%
(8)
Recall=TP/(TP+FN)×100%
(9)
其中:TP代表預(yù)測(cè)為正例實(shí)際也為正例的數(shù)量,F(xiàn)P代表預(yù)測(cè)為正例但實(shí)際為負(fù)例的數(shù)量,F(xiàn)N代表預(yù)測(cè)為負(fù)例但實(shí)際為正例的數(shù)量。
mAP是用以衡量識(shí)別精度,由所有類別的AP值求均值得到。其中通過計(jì)算不同召回率下最高的精確率可繪制P-R曲線,該曲線圍成的面積即為該類別的AP值。
訓(xùn)練后模型的Precision、Recall、mAP_0.5、mAP_0.5∶0.95最高分別能夠達(dá)到0.998、0.992、0.996、0.958,具體情況如圖12所示。在數(shù)據(jù)集隨機(jī)劃分的493張測(cè)試圖片上進(jìn)行測(cè)試,本文改進(jìn)的YOLOv5算法檢測(cè)結(jié)果的P-R 曲線如圖13所示。
圖12 模型性能評(píng)價(jià)指標(biāo)
圖13 改進(jìn)算法的P-R曲線
FPS衡量的是每秒鐘傳輸?shù)膱D片幀數(shù)。由于人體感官的特殊結(jié)構(gòu),人眼所見畫面之幀率高于16 FPS時(shí),大腦就會(huì)認(rèn)為是連貫的,這一現(xiàn)象也被稱之為視覺暫留[24-25]。經(jīng)驗(yàn)證,本文算法最高每秒檢測(cè)圖片的幀數(shù)最高可以達(dá)到30.0 FPS。
為進(jìn)一步測(cè)試復(fù)雜背景下網(wǎng)絡(luò)實(shí)時(shí)檢測(cè)小目標(biāo)的能力,將圖片自適應(yīng)放縮后又進(jìn)行拼接,送入網(wǎng)絡(luò)模型進(jìn)行測(cè)試,僅需0.035 s得到結(jié)果如圖14所示結(jié)果。
圖14 復(fù)雜背景下檢測(cè)結(jié)果
同時(shí)為了驗(yàn)證本文算法的有效性,將其與RetinaFace[26]、Attention- RetinaFace[27]、YOLOv3、YOLOv4、YOLOv5[18]進(jìn)行對(duì)比,結(jié)果如表2所示。
表2 算法性能對(duì)比
對(duì)于人臉目標(biāo)檢測(cè)而言,RetinaFace算法和Attention- RetinaFace算法均是專門用于人臉定位的單階段檢測(cè)算法,二者原理均是基于人臉對(duì)齊、像素級(jí)人臉分析和人臉密集關(guān)鍵點(diǎn)三維分析來實(shí)現(xiàn)多尺度人臉檢測(cè)[27],因此它們的檢測(cè)精度比較高。而YOLO系列算法中的YOLOv3、YOLOv4、YOLOv5雖不是專業(yè)的單階段人臉檢測(cè)算法,但將其應(yīng)用于口罩佩戴檢測(cè)上其檢測(cè)精度方面已經(jīng)可以與之比肩。本文算法作為基于 YOLOv5的改進(jìn)算法,其AP值、mAP 值較前述算法均有顯著提升,且FPS為30.0達(dá)到了實(shí)時(shí)檢測(cè)目的。綜上所述,本文的改進(jìn)策略能夠勝任復(fù)雜場(chǎng)景下的口罩佩戴實(shí)時(shí)檢測(cè)。
綜上所述,為了兼顧復(fù)雜場(chǎng)景下人員口罩佩戴檢測(cè)精度和速度,本文提出了復(fù)雜場(chǎng)景下基于YOLOv5的實(shí)時(shí)口罩佩戴檢測(cè)算法。經(jīng)實(shí)驗(yàn)測(cè)試,本算法準(zhǔn)確率、召回率等評(píng)價(jià)指標(biāo)上均有較好表現(xiàn),且能達(dá)到視頻圖像實(shí)時(shí)性要求,因此說明本文方法具有一定的優(yōu)勢(shì),但需承認(rèn)的是:在目標(biāo)過多的視頻樣本中檢測(cè)會(huì)出現(xiàn)幀率偏低的現(xiàn)象,且應(yīng)對(duì)遮擋目標(biāo)、小目標(biāo)等特征信息不明顯的情況時(shí)會(huì)存在一定程度的漏檢,因此接下來將在這些方面做進(jìn)一步研究和改進(jìn)。