苑穎 劉旭峰
摘? 要:面對(duì)當(dāng)前疫情防控的實(shí)際需求,自動(dòng)化檢測(cè)可以減少管理人員與他人接觸感染的風(fēng)險(xiǎn)且能使疫情防控管理更加高效。針對(duì)人臉佩戴口罩識(shí)別問(wèn)題,利用深度學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)自動(dòng)提取目標(biāo)特征的優(yōu)點(diǎn),將獲取的數(shù)據(jù)集通過(guò)LabelImg標(biāo)注軟件進(jìn)行標(biāo)注,使用YOLOv5目標(biāo)檢測(cè)算法訓(xùn)練網(wǎng)絡(luò)模型,實(shí)現(xiàn)對(duì)佩戴口罩和未佩戴口罩的檢測(cè);通過(guò)PyQt5設(shè)計(jì)并實(shí)現(xiàn)了疫情防控口罩佩戴檢測(cè)系統(tǒng),提高了疫情防控效率。
關(guān)鍵詞:深度學(xué)習(xí);YOLOv5;口罩佩戴檢測(cè)
中圖分類號(hào):TP183? 文獻(xiàn)標(biāo)識(shí)碼:A? 文章編號(hào):2096-4706(2023)07-0065-05
Abstract: Faced with the actual needs of current epidemic prevention and control, automated testing can reduce the risk of infection between management personnel and others and make epidemic prevention and control management more efficient. Aiming at the recognition problem of a face mask wearing, the advantage of deep learning neural network to automatically extract target features is utilized. The obtained dataset is labeled using LabelImg labeling software, and the YOLOv5 target detection algorithm is used to train the network model to achieve the detection whether the mask is worn or not; The epidemic prevention and control mask wearing detection system is designed and implemented through PyQt5, improving the efficiency of epidemic prevention and control.
Keywords: deep learning; YOLOv5; mask wearing detection
0? 引? 言
2019年年底,新冠疫情開(kāi)始在全球范圍蔓延,至此文寫(xiě)成之時(shí)仍在全球流行。我國(guó)疫情防控仍處于“外防輸入,內(nèi)防反彈”的關(guān)鍵階段,疫情防控工作面臨著巨大的挑戰(zhàn)。因病毒主要通過(guò)近距離飛沫和密切接觸傳播,人群普遍易感。規(guī)范佩戴口罩能有效避免人們呼吸時(shí)吸入空氣中的新冠病毒,從而降低被病毒感染的風(fēng)險(xiǎn)[1]。因此佩戴口罩是防止病毒傳播的重要手段。國(guó)家衛(wèi)生健康委員會(huì)發(fā)布的預(yù)防新冠感染的指南明確指出,個(gè)人在公共場(chǎng)所必須佩戴醫(yī)用外科口罩。但隨著全國(guó)疫情防控進(jìn)入常態(tài)化階段,人們也間歇性出現(xiàn)對(duì)自己放松疫情防控管理要求的現(xiàn)象,經(jīng)常會(huì)在公共場(chǎng)所不佩戴口罩及不保持安全距離,這一行為增加了人們感染病毒的風(fēng)險(xiǎn)。
目前在火車(chē)站、醫(yī)院、商場(chǎng)等公共服務(wù)的大部分場(chǎng)合對(duì)人員是否佩戴口罩都是人工進(jìn)行檢測(cè)。但是人工檢測(cè)存在工作強(qiáng)度大、效率低、覆蓋面窄、時(shí)效性差等問(wèn)題[2]。針對(duì)此問(wèn)題,本文利用目標(biāo)檢測(cè)算法和計(jì)算機(jī)視覺(jué)設(shè)計(jì)口罩佩戴檢測(cè)系統(tǒng),此系統(tǒng)可以降低一線監(jiān)管人員的勞動(dòng)強(qiáng)度,有效規(guī)避上述弊端,具有重要的研究意義。
1? 目標(biāo)檢測(cè)算法YOLO概述
近年來(lái),目標(biāo)檢測(cè)任務(wù)成為大眾焦點(diǎn),它實(shí)現(xiàn)了在不同的場(chǎng)景中標(biāo)記出需要檢測(cè)的目標(biāo)并且確定它們的位置和類別。21世紀(jì)初,目標(biāo)檢測(cè)在卷積神經(jīng)網(wǎng)絡(luò)的大量應(yīng)用中得到了快速發(fā)展。在本系統(tǒng)中口罩佩戴檢測(cè)本質(zhì)是在人臉的基礎(chǔ)上對(duì)是否佩戴口罩進(jìn)行識(shí)別,因此需要使用目標(biāo)檢測(cè)類的神經(jīng)網(wǎng)絡(luò)。現(xiàn)階段基于深度學(xué)習(xí)目標(biāo)檢測(cè)算法主要分為兩大類:一類是以R-CNN為代表的兩階段檢測(cè)算法,另一類是以YOLO為代表的一階段檢測(cè)算法[3]。兩階段檢測(cè)算法在特征提取的基礎(chǔ)上,先由獨(dú)立的網(wǎng)絡(luò)分支生成大量的候選區(qū),再對(duì)其進(jìn)行分類與回歸,該算法的優(yōu)勢(shì)主要體現(xiàn)在可擴(kuò)展性和高準(zhǔn)確率性方面。一階段檢測(cè)算法在生成候選區(qū)的同時(shí)進(jìn)行分類和回歸,該算法的主要優(yōu)勢(shì)是識(shí)別速度快,更適合用于需要實(shí)時(shí)檢測(cè)的場(chǎng)景[4]。
YOLO算法是2015年Redmon等人提出的一種使用神經(jīng)網(wǎng)絡(luò)提供實(shí)時(shí)對(duì)象檢測(cè)的算法。它將單個(gè)卷積神經(jīng)網(wǎng)絡(luò)(CNN)應(yīng)用于整個(gè)圖像,將圖像分成網(wǎng)格,并預(yù)測(cè)每個(gè)網(wǎng)格的類概率和邊界框。該算法因其速度快和準(zhǔn)確性高[5]而廣受歡迎,已廣泛應(yīng)用于檢測(cè)交通信號(hào)、人員、停車(chē)計(jì)時(shí)器和動(dòng)物中。YOLO算法在發(fā)展的過(guò)程中推出了很多版本。YOLOv2在YOLO算法的基礎(chǔ)上使用卷積層代替了全連接層。YOLOv3為了實(shí)現(xiàn)多尺度檢測(cè)增加了FPN架構(gòu),輸出3個(gè)不同尺度的卷積層進(jìn)行判斷,使網(wǎng)絡(luò)能夠檢測(cè)不同比例大小的物體[6]。YOLOv4在YOLOv3的基礎(chǔ)上加入了Mish激活、加權(quán)殘差連接等實(shí)用技巧,在檢測(cè)精度和速度上進(jìn)行了一定取舍,使綜合性能進(jìn)一步提高[7]。并且YOLO算法還在不斷的改進(jìn)和更新,時(shí)至今日YOLO算法已經(jīng)更新到了第5個(gè)版本。綜合實(shí)際應(yīng)用考慮,在保證實(shí)時(shí)性和準(zhǔn)確率的情況下本系統(tǒng)選用YOLOv5模型進(jìn)行訓(xùn)練。
2? 口罩佩戴檢測(cè)算法設(shè)計(jì)
2.1? 口罩佩戴檢測(cè)數(shù)據(jù)集
本次數(shù)據(jù)集從CSDN、Roboflow等各大平臺(tái)以及現(xiàn)場(chǎng)采集共獲取了9 848張圖片,包括人員佩戴口罩和未佩戴口罩兩種情況。將采集的數(shù)據(jù)按照訓(xùn)練數(shù)據(jù)與測(cè)試數(shù)據(jù)之比為8:2進(jìn)行分組,其中訓(xùn)練數(shù)據(jù)圖片有7 803張,測(cè)試數(shù)據(jù)圖片有2 045張,圖1為數(shù)據(jù)集中部分圖片。
2.2? 數(shù)據(jù)集標(biāo)注
獲取到圖像數(shù)據(jù)之后需要對(duì)圖像數(shù)據(jù)進(jìn)行標(biāo)注。標(biāo)注的主要目的是對(duì)圖片中人臉是否佩戴口罩進(jìn)行標(biāo)識(shí)。數(shù)據(jù)集的標(biāo)注使用的是LabelImg圖像標(biāo)注工具。LabelImg是基于Python語(yǔ)言開(kāi)發(fā)的圖形界面的圖像標(biāo)注軟件,可以采用多種不同的格式來(lái)標(biāo)注圖像,有VOC、YOLO以及createML格式,這里我們選擇YOLO格式。
在標(biāo)注開(kāi)始之前首先創(chuàng)建一個(gè)名為predefined_calsses.txt的文本文件來(lái)存放所要標(biāo)注的類別名稱。訓(xùn)練模型的標(biāo)注分為兩個(gè)類別:佩戴口罩的人臉標(biāo)注為Mask,沒(méi)有佩戴口罩的人臉標(biāo)注為No_Mask。圖2為使用LabelImg圖像標(biāo)注工具對(duì)圖像進(jìn)行佩戴口罩標(biāo)注的示意圖,佩戴口罩的標(biāo)注信息為Mask。
每一張圖片經(jīng)過(guò)LabelImg工具標(biāo)注之后,會(huì)生成與圖片名字相對(duì)應(yīng)的文本文件。文本文件中的信息為<object-class><x><y><width><height>。<object-class>是標(biāo)注類別,<x>、<y>是目標(biāo)的中心坐標(biāo),<width>、<height>是目標(biāo)的寬和高。這些坐標(biāo)是通過(guò)歸一化處理過(guò)的,其中x、width是使用原圖的width進(jìn)行歸一化,而y、height是使用原圖的height進(jìn)行歸一化。
2.3? 訓(xùn)練模型的選取
在目標(biāo)檢測(cè)算法中,YOLOv5算法是YOLO系列的最新算法。YOLOv5官方發(fā)布的檢測(cè)網(wǎng)絡(luò)共有四個(gè)版本,依次為YOLOv5x、YOLOv5l、YOLOv5m、YOLOv5s。其中最核心的是YOLOv5s模型。YOLOv5s是YOLOv5系列中深度和特征圖寬度均最小的網(wǎng)絡(luò)模型,其他的三個(gè)版本都是在YOLO5s模型的基礎(chǔ)上進(jìn)行加深、加寬處理。
從圖3可以看出,YOLOv5s模型在COCO測(cè)試數(shù)據(jù)集上AP值最低,但相對(duì)而言識(shí)別速度最快。YOLOv5x模型在COCO數(shù)據(jù)集上AP值最高,識(shí)別速度最慢。準(zhǔn)確性最高的YOLOv5x模型的網(wǎng)絡(luò)空間最大,但是推理所需要的時(shí)間長(zhǎng),不符合實(shí)時(shí)檢測(cè)的要求。YOLOv5s模型網(wǎng)絡(luò)空間小,推理所需要消耗的時(shí)間短。雖然YOLOv5s模型在COCO測(cè)試數(shù)據(jù)集上AP值最低,但因?yàn)镃OCO數(shù)據(jù)集中有80個(gè)類別,而對(duì)于口罩佩戴檢測(cè)的這種兩分類目標(biāo)任務(wù)而言,YOLOv5s能完全夠滿足需求,故模型最終選擇YOLOv5s。圖4為YOLOv5s模型結(jié)構(gòu)圖。
Focus模塊將一張640×640×3的彩色圖片通過(guò)切片操作轉(zhuǎn)化為320×320×12的特征圖,然后經(jīng)過(guò)32個(gè)卷積核進(jìn)行卷積操作,最終生成320×320×32的特征圖;Conv模塊對(duì)輸入的特征圖進(jìn)行卷積操作進(jìn)一步地提取特征;BCSPn模塊分成了兩部分,一部分將輸入的特征圖分成兩半,一半進(jìn)行兩次卷積,將卷積之后的結(jié)果與另一半進(jìn)行相加,實(shí)現(xiàn)減少計(jì)算量。另一部分將輸入的特征圖全部進(jìn)行卷積操作,然后再將卷積之后得到的特征圖與之前的特征圖進(jìn)行拼接進(jìn)行更好的特征融合;SPP模塊將上一個(gè)模塊得到的特征圖通過(guò)1×1的卷積減少特征圖的個(gè)數(shù),然后使用13×13、9×9和5×5的池化核進(jìn)行MaxPool最大值池化減少參數(shù)量,并將池化結(jié)果進(jìn)行拼接再通過(guò)1×1的卷積減少特征圖的個(gè)數(shù)。
2.4? 模型訓(xùn)練流程及參數(shù)配置
PyTorch是Facebook人工智能研究院(FAIR)團(tuán)隊(duì)開(kāi)發(fā)的一個(gè)開(kāi)源的深度學(xué)習(xí)框架,是目前主流的深度學(xué)習(xí)框架之一。在當(dāng)前開(kāi)源的框架中,沒(méi)有哪一個(gè)框架在靈活性、易用性、速度這三方面有兩個(gè)能同時(shí)超過(guò)PyTorch[8]。因此,本系統(tǒng)所用目標(biāo)檢測(cè)模型以PyTorch為訓(xùn)練框架,模型訓(xùn)練基本流程如圖5所示。具體如下:
1)將輸入模型的圖片調(diào)整為640×640大小,并將圖片進(jìn)行旋轉(zhuǎn)、平移等數(shù)據(jù)增強(qiáng)操作。
2)將圖像數(shù)據(jù)輸入到Y(jié)OLOv5s網(wǎng)絡(luò)模型中(每個(gè)神經(jīng)網(wǎng)絡(luò)對(duì)輸入數(shù)據(jù)進(jìn)行加權(quán)累加再輸入到激活函數(shù)作為該神經(jīng)元的輸出值)通過(guò)前向傳播,得到得分值。
3)將得分值輸入到損失函數(shù)中,與真實(shí)值相差較大再計(jì)算損失值,通過(guò)損失值判斷識(shí)別程度的好壞。
4)通過(guò)反向傳播(反向求導(dǎo),損失函數(shù)和網(wǎng)絡(luò)模型中的每個(gè)激活函數(shù)都要求,最終目的是使誤差最?。﹣?lái)確定梯度向量。
5)最后通過(guò)梯度向量來(lái)調(diào)整每一個(gè)權(quán)值,使得誤差趨于0或者模型趨于最優(yōu)解。
6)重復(fù)上述過(guò)程直到設(shè)定的次數(shù)。
模型選用YOLOv5中網(wǎng)絡(luò)結(jié)構(gòu)最小的YOLOv5s模型,圖片尺度統(tǒng)一縮放為640×640的圖片,批處理通道數(shù)batch-size設(shè)置為8,訓(xùn)練代數(shù)(epoch)為300。具體網(wǎng)絡(luò)參數(shù)修改如表1所示。
2.5? 模型評(píng)估
模型評(píng)估是對(duì)訓(xùn)練好的模型通過(guò)預(yù)測(cè)結(jié)果的精確率、召回率、mAP指標(biāo)對(duì)模型進(jìn)行評(píng)估,并且對(duì)模型從現(xiàn)實(shí)角度開(kāi)展實(shí)驗(yàn)分析,驗(yàn)證YOLOv5s模型在人臉口罩佩戴檢測(cè)中的效果。
圖6是模型隨著訓(xùn)練輪次epoch的數(shù)量增加精確率的變化情況。精確率指實(shí)際是正樣本而模型預(yù)測(cè)也為正樣本占被預(yù)測(cè)為正樣本的比例。計(jì)算公式為:
圖7為模型隨著訓(xùn)練輪次epoch的數(shù)量增加召回率的變化情況。召回率指正樣本被預(yù)測(cè)為正樣本占總的正樣本的比例。值越大,性能越好。召回率直觀地反映了模型找到所有正樣本的能力。計(jì)算公式為:
式中,TP是預(yù)測(cè)為正且實(shí)際為正的樣本數(shù)量,F(xiàn)P是預(yù)測(cè)為正但實(shí)際為負(fù)的樣本數(shù)量,F(xiàn)N是預(yù)測(cè)為負(fù)但實(shí)際為正的樣本數(shù)量,TN是預(yù)測(cè)為負(fù)且實(shí)際為負(fù)的樣本數(shù)量。此外,TP+FP表示預(yù)測(cè)為正樣本的總數(shù),TP+FN表示實(shí)際為正樣本的總數(shù)。
圖8為模型隨著訓(xùn)練輪次epoch的數(shù)量增加mAP的增長(zhǎng)變化。mAP(mean Average precision)是多分類平均精確率,它代表了所有類別的AP平均值。AP(Average precision)是衡量單個(gè)類別檢測(cè)好壞的評(píng)價(jià)指標(biāo)。AP計(jì)算公式為:
式中:Recall為橫坐標(biāo),AP為縱坐標(biāo),表示P-R曲線下方的面積,AP值越高說(shuō)明模型的平均準(zhǔn)確率越高。
mAP在目標(biāo)檢測(cè)中是評(píng)估所有類別優(yōu)劣的一項(xiàng)重要的指標(biāo)。mAP計(jì)算公式為:
3? 系統(tǒng)實(shí)現(xiàn)
3.1? 系統(tǒng)搭建
為了應(yīng)用基于YOLOv5算法的人臉口罩佩戴檢測(cè)模型,本系統(tǒng)采用Python中的PyQt5框架進(jìn)行系統(tǒng)搭建,將系統(tǒng)分為圖像檢測(cè)模塊和視頻檢測(cè)模塊。運(yùn)用Python語(yǔ)言和OpenCV計(jì)算機(jī)視覺(jué)庫(kù)對(duì)上傳的圖像數(shù)據(jù)、視頻數(shù)據(jù)以及攝像頭實(shí)時(shí)捕獲的數(shù)據(jù)進(jìn)行處理,將處理好的數(shù)據(jù)送入模型進(jìn)行推理,識(shí)別出數(shù)據(jù)中的人臉是否佩戴口罩。最后通過(guò)屏幕顯示和語(yǔ)音提示提高系統(tǒng)的交互性。系統(tǒng)操作流程如圖9所示。
3.2? 實(shí)現(xiàn)結(jié)果
當(dāng)運(yùn)行本系統(tǒng)時(shí),可選擇圖像和視頻兩種方式進(jìn)行檢測(cè)。視頻檢測(cè)模塊中若沒(méi)有上傳視頻則可以打開(kāi)攝像頭,對(duì)攝像頭捕獲的數(shù)據(jù)進(jìn)行檢測(cè)。在圖片檢測(cè)模塊中有GPU和CPU切換的功能,上傳視頻檢測(cè)和打開(kāi)攝像頭實(shí)時(shí)檢測(cè)默認(rèn)使用GPU進(jìn)行檢測(cè)。檢測(cè)完成后的結(jié)果將顯示在屏幕中并進(jìn)行語(yǔ)音播報(bào)。圖10(a)中通行人員佩戴口罩,標(biāo)注為Mask,置信度為0.85,圖10(b)中通行人員未佩戴口罩,標(biāo)注為No_Mask,置信度為0.84。
4? 結(jié)? 論
針對(duì)疫情防控的實(shí)際需求,通過(guò)數(shù)據(jù)集獲取、數(shù)據(jù)集標(biāo)注、模型選擇與訓(xùn)練、模型評(píng)估和系統(tǒng)搭建等一系列工作,設(shè)計(jì)并實(shí)現(xiàn)了基于YOLOv5的疫情防控口罩佩戴檢測(cè)系統(tǒng)。該系統(tǒng)能有效快捷檢測(cè)是否佩戴口罩,較好地滿足了實(shí)際的應(yīng)用需求。
參考文獻(xiàn):
[1] 何進(jìn)椅,陳雋,張孝莉,等.預(yù)防新型冠狀病毒肺炎的醫(yī)用防護(hù)口罩選擇及佩戴建議 [J].中華災(zāi)害救援醫(yī)學(xué),2021,9(2):825-828.
[2] 丁培,阿里甫·庫(kù)爾班,耿麗婷,等.自然環(huán)境下實(shí)時(shí)人臉口罩檢測(cè)與規(guī)范佩戴識(shí)別 [J].計(jì)算機(jī)工程與應(yīng)用,2021,57(24):268-275.
[3] 陳科圻,朱志亮,鄧小明,等.多尺度目標(biāo)檢測(cè)的深度學(xué)習(xí)研究綜述 [J].軟件學(xué)報(bào),2021,32(4):1201-1227.
[4] 肖博健,萬(wàn)爛軍,陳俊權(quán).采用YOLOv5模型的口罩佩戴識(shí)別研究 [J].福建電腦,2021,37(3):35-37.
[5] 夷德.基于YOLO的目標(biāo)檢測(cè)優(yōu)化算法研究 [D].南京:南京郵電大學(xué),2021.
[6] 宋威,謝豆,石景文,等.一種口罩佩戴和體溫檢測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) [J].物聯(lián)網(wǎng)技術(shù),2022,12(5):30-33.
[7] 孫永豪.基于改進(jìn)YOLOx的口罩佩戴檢測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) [D].合肥:安徽建筑大學(xué),2022.
[8] 陳云.深度學(xué)習(xí)框架PyTorch入門(mén)與實(shí)踐 [M].北京:電子工業(yè)出版社,2018.
作者簡(jiǎn)介:苑穎(1979—),女,漢族,山西大同人,副教授,碩士研究生,研究方向:數(shù)據(jù)分析與挖掘、軟件工程。