何 義,李捍東
(貴州大學(xué)電氣工程學(xué)院,貴陽(yáng) 550025)
新冠肺炎病毒讓我們的生活處于混亂之中,它可以通過(guò)唾液、飛沫傳播,而且感染力極強(qiáng)。佩戴口罩是我們能夠有效防止病毒傳播和擴(kuò)散最有效的策略。盡管目前我國(guó)疫情控制情況較好,科學(xué)家也給出了明確的提示:病毒短期不會(huì)消失。今后一段時(shí)間的生活中,口罩都將是我們每日的必備品,而公共場(chǎng)所目前對(duì)檢查口罩是否佩戴采用的依然是人工管理。除疫情外,在工業(yè)制造和生產(chǎn)過(guò)程中,對(duì)于不可避免產(chǎn)生的揚(yáng)塵、沙土,佩戴具有顆粒物防護(hù)功能的口罩也一項(xiàng)極關(guān)鍵的保護(hù)措施。
目前基于深度神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測(cè)算法有RCNN、SSD以及YOLO系列等[1],這些模型都可以通過(guò)學(xué)習(xí)完成目標(biāo)檢測(cè)。在檢測(cè)效果上,YOLO的速度要優(yōu)于其他算法,這是由于YOLO模型在結(jié)構(gòu)有其獨(dú)特的優(yōu)勢(shì)。隨著深度學(xué)習(xí)在科研界蓬勃發(fā)展,它也漸漸得到了工業(yè)界的青睞,但仍需要解決實(shí)時(shí)性難點(diǎn)問(wèn)題。若目標(biāo)檢測(cè)達(dá)不到實(shí)時(shí)性的檢測(cè)速度,在工業(yè)中就很難得到大范圍的應(yīng)用。因此輕量化的深度神經(jīng)網(wǎng)絡(luò)新技術(shù)不斷出現(xiàn)。Redomon在2016年初首次提出了YOLO模型,將YOLO算法運(yùn)用到目標(biāo)物體的識(shí)別和檢測(cè)上,在對(duì)圖像的特征提取中實(shí)現(xiàn)了較高的準(zhǔn)確率[2]。至今YOLO算法一直還在發(fā)展中,目前最新為第5版。與R-CNN相比較,采用這種模型實(shí)現(xiàn)了端到端的檢測(cè),在速率和準(zhǔn)確率方面都有所改善。
本設(shè)計(jì)實(shí)現(xiàn)的口罩檢測(cè)與識(shí)別系統(tǒng),主要是通過(guò)對(duì)攝像頭捕獲的視頻流進(jìn)行處理,對(duì)捕獲到的每一幀圖像檢測(cè)人臉區(qū)域后進(jìn)行口罩檢測(cè)和人臉識(shí)別操作,口罩檢測(cè)部分主要檢測(cè)對(duì)象佩戴口罩的狀況。主要步驟包括:數(shù)據(jù)預(yù)處理、數(shù)據(jù)集構(gòu)建、模型構(gòu)建、訓(xùn)練模型、數(shù)據(jù)識(shí)別。
在數(shù)據(jù)預(yù)處理階段,對(duì)于攝像頭采集到的數(shù)據(jù),做進(jìn)一步的預(yù)處理,主要包括二值化、圖片背景降噪、歸一化、銳化等等。在此主要采用開源OpenCV庫(kù)的接口函數(shù)對(duì)圖片進(jìn)行預(yù)處理[3]。
對(duì)于訓(xùn)練模型,需要輸入一定數(shù)量的圖片,包括戴口罩和不戴口罩的,讓機(jī)器能夠?qū)W習(xí),因此需要構(gòu)建數(shù)據(jù)集。對(duì)在網(wǎng)上爬取的數(shù)據(jù)集還需要做進(jìn)一步的處理,包括數(shù)據(jù)標(biāo)注和數(shù)據(jù)增強(qiáng)等,最后得到可訓(xùn)練處較為準(zhǔn)確的模型。
研究采用YOLOv5分類檢測(cè)模型,根據(jù)數(shù)據(jù)集對(duì)原始YOLOv5模型中的anchor參數(shù)等進(jìn)行相應(yīng)的調(diào)整,讓訓(xùn)練出的結(jié)果準(zhǔn)確性和速率更高。
為實(shí)現(xiàn)數(shù)據(jù)識(shí)別,設(shè)計(jì)采用Qt封裝一些列接口,制作出操作方便的UI界面,可以實(shí)時(shí)獲取攝像頭的人臉數(shù)據(jù)以及圖片數(shù)據(jù)。按上述思路得到主要操作流程圖如圖1所示。
圖1 整體架構(gòu)流程圖
所謂數(shù)據(jù)增強(qiáng)技術(shù)就是擴(kuò)大該實(shí)驗(yàn)的數(shù)據(jù)集合。對(duì)于原始的數(shù)據(jù)集,不可能將對(duì)于目標(biāo)場(chǎng)景中所有的圖片采集完全,所以需要對(duì)原始的數(shù)據(jù)集進(jìn)行擴(kuò)充,讓訓(xùn)練的模型可以適應(yīng)各種復(fù)雜環(huán)境的圖像。在YOLOv4中就采用了數(shù)據(jù)增強(qiáng)的方法。
本設(shè)計(jì)將數(shù)據(jù)增強(qiáng)的方法大體分為兩類:一類是針對(duì)一張圖片的處理方法,主要包括圖像遮擋的方法;另外一類是對(duì)于多個(gè)圖片的組合的方法,其主要包括cutmix和MOsaci[4]等。各方法具體實(shí)現(xiàn)的操作實(shí)質(zhì)如表1概述。
表1 各圖像增強(qiáng)方法技術(shù)實(shí)質(zhì)
YOLOv5繼承了v4的數(shù)據(jù)增強(qiáng)方法,并通過(guò)引入數(shù)據(jù)加載器,增強(qiáng)訓(xùn)練數(shù)據(jù)。數(shù)據(jù)加載器主要包含三種數(shù)據(jù)增強(qiáng)方法:圖片比例縮放、色彩空間調(diào)整和馬賽克增強(qiáng)。
YOLOv5采用自適應(yīng)錨定框,由于數(shù)據(jù)集中的圖片大小尺寸不一,對(duì)于目標(biāo)檢測(cè)算法的模型大部分都需要手動(dòng)調(diào)整輸入圖片的目標(biāo)框大小。在訓(xùn)練模型中使用的數(shù)據(jù)集目標(biāo)框的大小可能也會(huì)與實(shí)驗(yàn)實(shí)際測(cè)試輸入的目標(biāo)框大小存在較大差異。因此,YOLOv5會(huì)對(duì)錨定框的尺寸自動(dòng)學(xué)習(xí)[5]。
YOLOv5和v4對(duì)于v3的Darknet53進(jìn)行了改進(jìn),將骨干網(wǎng)絡(luò)改為CSPDarknet[6]。在傳統(tǒng)的目標(biāo)檢測(cè)網(wǎng)絡(luò)框架中卷積神經(jīng)網(wǎng)絡(luò)都存在梯度信息多余重復(fù)的問(wèn)題,而CSP結(jié)構(gòu)從一開始到結(jié)束都將梯度信息結(jié)合到特征圖中,不但能夠提取大量的圖像特征,而且大大減少了網(wǎng)絡(luò)模型中需要引入的參數(shù)數(shù)量,將網(wǎng)絡(luò)結(jié)構(gòu)的復(fù)雜度控制到最低,對(duì)于模型訓(xùn)練的準(zhǔn)確度和訓(xùn)練速度都有相應(yīng)的提升[7]。
此部分主要用于生成金字塔結(jié)構(gòu)。對(duì)于不同比例不同尺寸的同一個(gè)圖片輸入,使用特征金字塔結(jié)構(gòu)會(huì)增加識(shí)別的準(zhǔn)確率。FPN在特征聚合領(lǐng)域被廣泛使用,但路徑聚合網(wǎng)絡(luò)出現(xiàn)之后,改變了以往的局面,YOLOv5和v4都使用PANET來(lái)聚合圖像特征。PANET是在原始的FPN框架上改進(jìn)而來(lái),網(wǎng)絡(luò)的特征提取器采用了新的結(jié)構(gòu),該結(jié)構(gòu)增強(qiáng)了自下而上的路徑,加強(qiáng)了網(wǎng)絡(luò)特征融合的能力,改善了微小特征提取的能力。
在YOLOv5模型中,有兩種激活函數(shù)的使用,隱含層在批量歸一化處理后加入了Leaky ReLU激活函數(shù),并在檢測(cè)階段使用了Sigmoid式的激活函數(shù)。
對(duì)于優(yōu)化函數(shù),在YOLOv4僅僅使用了SGD函數(shù),而YOLOv5則在YOLOv4基礎(chǔ)上增加了一種函數(shù)對(duì)模型優(yōu)化,即Adam,它提前預(yù)設(shè)了模型訓(xùn)練所需要的超參數(shù)。當(dāng)需要訓(xùn)練的模型的數(shù)據(jù)集較小時(shí),選擇Adam會(huì)更優(yōu),但若要訓(xùn)練大型數(shù)據(jù)集,SGD學(xué)習(xí)效果會(huì)比Adam合適。
早期的YOLO模型的損失度是通過(guò)客觀評(píng)分、類別概率評(píng)分和邊界框回歸評(píng)分來(lái)評(píng)價(jià)的[8],使用GIOU指標(biāo)作為邊界框的損失。YOLOv5整體網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)圖
配置好實(shí)驗(yàn)環(huán)境之后,需要制作合適的數(shù)據(jù)集。在本次實(shí)驗(yàn)中,從網(wǎng)絡(luò)上收集1600張口罩佩戴相關(guān)的圖片,使用其制作訓(xùn)練所需要的數(shù)據(jù)集,數(shù)據(jù)集主要?jiǎng)澐譃閮深悾簃ask和nomask,分別表示已經(jīng)佩戴口罩和沒(méi)有佩戴口罩。實(shí)驗(yàn)步驟如下:
1)制作圖像的.xml文件。使用LabelImg軟件對(duì)圖片進(jìn)行手動(dòng)標(biāo)注,使用矩形框?qū)δ繕?biāo)區(qū)域標(biāo)注lable,各圖片和生成的xml文件是一一對(duì)應(yīng)的。
2)將.xml文件轉(zhuǎn)換成.txt文件。經(jīng)過(guò)圖片標(biāo)注后,還需要進(jìn)一步對(duì)所有圖片進(jìn)行分類。先將所有的圖片數(shù)據(jù)集分為驗(yàn)證集、測(cè)試集和訓(xùn)練集。實(shí)驗(yàn)中總共使用1600張圖片,其中訓(xùn)練集包含1200張,測(cè)試集包含400張。運(yùn)行g(shù)en_mask_nomask后生成TXT文件。
3)保存訓(xùn)練,驗(yàn)證測(cè)試集TXT文件。經(jīng)過(guò)上一步操作,完成了訓(xùn)練集的劃分,三個(gè)數(shù)據(jù)集的TXT文件中每一行都保存著對(duì)應(yīng)的圖片的信息,第一列為0或者1,其中0代表沒(méi)有戴口罩,而1代表已經(jīng)佩戴口罩,其后的參數(shù)還包括代表目標(biāo)框中心點(diǎn)的坐標(biāo)以及圖片的坐標(biāo)。
在網(wǎng)絡(luò)模型訓(xùn)練階段,迭代批量設(shè)置大小為16;衰減系數(shù)為0.0005;總迭代次數(shù)為50次;初始學(xué)習(xí)率設(shè)置為0.01;當(dāng)?shù)螖?shù)分別達(dá)到40次和45次時(shí),將學(xué)習(xí)率分別降低至0.0001和0.00001。大約在45次迭代后,模型收斂。平均精度均值(mAP)、召回率(recall)、損失函數(shù)(giou_loss)和查準(zhǔn)率(precision)各參數(shù)的實(shí)驗(yàn)情況如圖3所示。從圖中各自曲線可以看出,平均精度均值(即所有類別的平均精度總和與數(shù)據(jù)集中所有類的平均精度的平均值的比值)在模型迭代到35次時(shí),將接近于0.9。
圖3 各參數(shù)實(shí)驗(yàn)曲線圖
召回率是樣本中的正確類別被預(yù)測(cè)正確的概率,如下式:
其中TP表示將正確類預(yù)測(cè)為正的類別數(shù);FN表示將正確類別預(yù)測(cè)為負(fù)的類別數(shù)。在模型迭代到35次時(shí),數(shù)值接近于0.9。
采用giou_loss作為損失函數(shù),如下式所示:
AC表示預(yù)測(cè)框最小區(qū)域面積,U表示真實(shí)框面積。在模型迭代到50次時(shí),損失函數(shù)保持穩(wěn)定,數(shù)值在0.01左右。
查準(zhǔn)率,即預(yù)測(cè)數(shù)據(jù)集中預(yù)測(cè)正確正樣本總數(shù)與實(shí)際正樣本總數(shù)之比,式為:
FP表示將負(fù)類別預(yù)測(cè)為正確類別數(shù)。在模型迭代到30次時(shí),數(shù)值大約為0.9。
經(jīng)過(guò)上述模型的訓(xùn)練,將待檢測(cè)數(shù)據(jù)集中的圖片輸入到模型中。通過(guò)在PyCharm編譯環(huán)境下配置PyQt,利用Qt制作設(shè)計(jì)所需要的UI圖像界面。對(duì)于圖片檢測(cè)和視頻檢測(cè),以及攝像頭實(shí)時(shí)人臉口罩佩戴檢測(cè)都能夠較好的完成。在輸出的結(jié)果中以mask字樣標(biāo)識(shí)出佩戴口罩,nomask表示未佩戴口罩。簡(jiǎn)單場(chǎng)景的單人物口罩佩戴檢測(cè)效果如圖4所示。
圖4 單人物口罩佩戴檢測(cè)效果
佩戴口罩是指從鼻子到嘴巴下面的范圍,包括鼻子。數(shù)據(jù)集采用的是完整的佩戴口罩的情況,只有完整的佩戴識(shí)別后才被判斷為已佩戴。
對(duì)于背景中含有多個(gè)人物的情況,同樣也能夠很好完成檢測(cè),即在多目標(biāo)檢測(cè)中沒(méi)有出現(xiàn)漏檢的情況。多人物口罩佩戴檢測(cè)效果如圖5所示。
圖5 多人物口罩佩戴檢測(cè)效果
在測(cè)試環(huán)境中采用準(zhǔn)確率Accuracy來(lái)判斷模型的優(yōu)劣,它等于正確檢測(cè)樣本的數(shù)目與總測(cè)試樣本的數(shù)目之比,式為:
NT表示準(zhǔn)確率等于正確檢測(cè)樣本的數(shù)目,F(xiàn)N表示準(zhǔn)確率不等于正確檢測(cè)樣本的數(shù)目。
設(shè)計(jì)出的YOLOv5算法實(shí)時(shí)檢測(cè)方法,在實(shí)驗(yàn)用中速度達(dá)到130 f/s,準(zhǔn)確率90%左右,相比于參考文獻(xiàn)中的其他算法的實(shí)現(xiàn),在召回率和檢測(cè)速度以及檢測(cè)精度上,都能獲得較好的檢測(cè)結(jié)果,同時(shí)對(duì)于機(jī)器的性能要求較低,計(jì)算量較小,能夠滿足實(shí)時(shí)檢測(cè)的需求。實(shí)時(shí)檢測(cè)效果如圖6所示。多人場(chǎng)景中口罩識(shí)別系統(tǒng)最多可以識(shí)別20個(gè)人的佩戴情況,這能表明YOLOv5算法在口罩佩戴檢測(cè)方面的優(yōu)越性。
圖6 實(shí)時(shí)檢測(cè)效果
為進(jìn)一步證明這一優(yōu)越性,總結(jié)其他常見目標(biāo)檢測(cè)算法與本改進(jìn)算法進(jìn)行相關(guān)比較。采用控制變量方法,僅僅使用不同的算法來(lái)驗(yàn)證本算法的科學(xué)性和有效性,比較結(jié)果如表2所示。
表2 各算法對(duì)比
實(shí)驗(yàn)結(jié)果證明,所提出的復(fù)雜環(huán)境下的實(shí)時(shí)口罩佩戴檢測(cè)算法在準(zhǔn)確率和幀速方面都明顯優(yōu)于其他幾種常見算法,進(jìn)一步驗(yàn)證了本方法的優(yōu)越性。
本口罩佩戴檢測(cè)與識(shí)別系統(tǒng)能夠滿足離線脫機(jī)狀況下的日常工作。現(xiàn)實(shí)環(huán)境復(fù)雜多變,依舊存在一部分問(wèn)題有待解決,比如復(fù)雜背景下由于障礙物的影響,會(huì)對(duì)人臉檢測(cè)識(shí)別不太理想,諸如此類。同時(shí),本系統(tǒng)最初設(shè)想中還包括額外配備語(yǔ)音插件及外設(shè)實(shí)現(xiàn)語(yǔ)音報(bào)警的功能,以及實(shí)現(xiàn)基于熱成像的非接觸體溫測(cè)量方式,由于條件所限暫時(shí)未實(shí)現(xiàn),留待后續(xù)研究在多種場(chǎng)景下的不斷實(shí)踐來(lái)加以改進(jìn)。