陳旭君,王承祥,陳民慧,廖 娟,紀(jì)娟娟,朱德泉*
(1.安徽農(nóng)業(yè)大學(xué)工學(xué)院,安徽 合肥 230036;2.安慶師范大學(xué)電子工程與智能制造學(xué)院,安徽 安慶 246133)
新冠疫情爆發(fā)以來,佩戴口罩成為人們出行的“標(biāo)配”[1]。佩戴口罩能減少空氣中的飛沫、細(xì)菌等顆粒物的吸入量,有效降低感染病毒的概率[2]。為提升佩戴口罩的執(zhí)行率,需要對(duì)公共場合行人是否佩戴口罩進(jìn)行檢測,但人工監(jiān)測方法耗時(shí),效率低,且工作人員長時(shí)間與行人頻繁接觸也有感染風(fēng)險(xiǎn)。因此,研究自動(dòng)檢測行人是否佩戴口罩的方法非常必要。隨著公共場所監(jiān)控?cái)z像頭的普及,研究人員開展了智能視頻監(jiān)控研究,采用計(jì)算機(jī)視覺技術(shù),自動(dòng)分析實(shí)時(shí)圖像,檢測監(jiān)控場景目標(biāo),并進(jìn)行目標(biāo)分析。覃劍[3]使用高斯模型擬合行人尺寸分布,提出了一種基于在線高斯模型的行人目標(biāo)框的快速生成法,減少了運(yùn)算復(fù)雜度,但使用場景有限,對(duì)動(dòng)態(tài)行人的檢測效果較差。陳麗楓[4]將HOG與Adaboost-BP模型相結(jié)合,利用邊緣檢測技術(shù)對(duì)行人目標(biāo)進(jìn)行檢測,該方法在單人或者人流量較小的情況下效果較好,但不適合在人流量大的公共場合應(yīng)用。上述方法通常是由人工選取如顏色、紋理等淺層特征,在復(fù)雜多變的環(huán)境下沒有足夠的魯棒性,檢測場景單一,且時(shí)間復(fù)雜度高[5-6],檢測速度也難以滿足實(shí)際需求。
深度卷積網(wǎng)絡(luò)具有自學(xué)習(xí)能力、泛化能力強(qiáng)等特點(diǎn),數(shù)據(jù)集越豐富,算法對(duì)多變環(huán)境的魯棒性越好,被廣泛應(yīng)用于目標(biāo)檢測和分類中。牛作東[7]在RetinaFace的基礎(chǔ)上,改進(jìn)網(wǎng)絡(luò)分類損失函數(shù),增加注意力機(jī)制,實(shí)現(xiàn)了對(duì)行人口罩佩戴狀態(tài)的檢測,其平均精度為87.7%。UCloud團(tuán)隊(duì)[8]采用深度學(xué)習(xí)技術(shù),將人臉檢測、人臉關(guān)鍵點(diǎn)檢測、口罩實(shí)例分割算法相結(jié)合,其檢測是否佩戴口罩的精度為99%,是否正確佩戴口罩的精度為95.1%。這些深度卷積網(wǎng)絡(luò)算法實(shí)現(xiàn)了對(duì)人臉口罩目標(biāo)的高精度檢測,但通常是加深網(wǎng)絡(luò)以提高目標(biāo)檢測精度,增加了算法復(fù)雜度,對(duì)網(wǎng)絡(luò)模型所占用的存儲(chǔ)空間以及設(shè)備計(jì)算性能需求均不斷提高,不利于在移動(dòng)端開發(fā)應(yīng)用。
針對(duì)網(wǎng)絡(luò)參數(shù)量過大、不適合應(yīng)用于常規(guī)移動(dòng)設(shè)備、應(yīng)用成本高等問題,本文提出一種改進(jìn)的YOLOv2口罩佩戴檢測方法,以輕量級(jí)網(wǎng)絡(luò)ShuffleNet為主干網(wǎng)絡(luò),與YOLOv2進(jìn)行重構(gòu)組合,充分利用兩個(gè)網(wǎng)絡(luò)的優(yōu)點(diǎn),解決深度網(wǎng)絡(luò)占用存儲(chǔ)空間大、對(duì)設(shè)備計(jì)算性能要求高的問題,并且保證檢測精度和速度。該方法可部署于常規(guī)計(jì)算性能的移動(dòng)設(shè)備,實(shí)時(shí)檢測行人是否佩戴口罩。
目前,公共場所監(jiān)控所用的相機(jī)多為網(wǎng)絡(luò)攝像頭,且無線網(wǎng)絡(luò)攝像頭具有安裝簡便、信號(hào)傳輸距離遠(yuǎn)、易操作等特點(diǎn)。因此,本文采用無線網(wǎng)絡(luò)攝像頭采集監(jiān)控場景圖像,基于局域網(wǎng)信息傳輸和深度卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行檢測,整體框架主要包括圖像采集、口罩佩戴檢測和異常報(bào)警,如圖1所示。圖像采集相機(jī)分辨率為2 304×1 296的TP-LINK無線網(wǎng)絡(luò)攝像頭,水平視角360°,垂直視角163°。根據(jù)攝像頭的IP地址,在GUI界面中配置計(jì)算機(jī)的局域網(wǎng)通信信息,計(jì)算機(jī)讀取網(wǎng)絡(luò)攝像頭視頻圖像,然后使用Shuffle-YOLOv2網(wǎng)絡(luò)對(duì)圖像中行人佩戴口罩情況進(jìn)行檢測。若出現(xiàn)行人未佩戴口罩的情況,則計(jì)算機(jī)發(fā)出信號(hào),通過局域網(wǎng)傳輸信號(hào)觸發(fā)揚(yáng)聲器報(bào)警,提醒行人或者工作人員。
圖1 整體結(jié)構(gòu)
YOLOv2是一種端到端的卷積神經(jīng)網(wǎng)絡(luò)模型[9],該模型將目標(biāo)檢測視為求解回歸問題[10],在網(wǎng)絡(luò)訓(xùn)練中省去提取候選區(qū)域步驟,并引入BN(Batch Normalization)、K-Means聚類評(píng)估錨框、新的主干網(wǎng)絡(luò)、高分辨率分類器等[11],極大地提高了卷積神經(jīng)網(wǎng)絡(luò)的運(yùn)行速度。YOLOv2將Conv2D、BN和Leaky ReLU組成如圖2所示的DBL單元[12],但基于卷積和下采樣的特征提取方式會(huì)增加網(wǎng)絡(luò)深度,網(wǎng)絡(luò)特征信息在逐層傳遞時(shí)丟失[13],造成檢測精度下降。
圖2 DBL單元
ShuffleNet是針對(duì)計(jì)算性能有限的移動(dòng)設(shè)備而設(shè)計(jì)的輕量級(jí)網(wǎng)絡(luò)[14],采用逐點(diǎn)分組卷積方式對(duì)輸入的特征向量進(jìn)行組別劃分,并使用通道重排操作增強(qiáng)不同組別特征向量之間的信息交換,提高特征提取效率。Shuffle通道如圖3所示,Shuffle通道中特征向量重排如圖4所示。逐點(diǎn)分組卷積使網(wǎng)絡(luò)輕量化,但ShuffleNet在分類過程中采用全連接層拉平3維特征向量,并將其映射到標(biāo)記空間,破壞了網(wǎng)絡(luò)空間結(jié)構(gòu),且從全局特征中提取目標(biāo)信息的方法限制了特征圖的大小,造成網(wǎng)絡(luò)空間冗余,增加了網(wǎng)絡(luò)過擬合的風(fēng)險(xiǎn)。
圖3 Shuffle通道
圖4 特征向量重排
綜合ShuffleNet和YOLOv2的優(yōu)點(diǎn),將ShuffleNet作為YOLOv2的主干網(wǎng)絡(luò),構(gòu)建如圖5所示的Shuffle-YOLOv2。輸入分辨率為416×416的圖像,初步卷積下采樣和池化下采樣后由Shuffle單元提取特征信息,經(jīng)28通道的1×1卷積核做分類卷積處理,由錨框預(yù)測目標(biāo)框和置信度分?jǐn)?shù)。采用多個(gè)Shuffle_a單元組合成1個(gè)Shuffle_b單元的下采樣以增加網(wǎng)絡(luò)深度,提取更多圖像特征信息。輸入Shuffle單元的特征圖大小為104×104,經(jīng)過Shuffle單元處理后其大小為13×13。整個(gè)Shuffle單元共使用了3個(gè)Shuffle_b單元和13個(gè)Shuffle_a單元。Shuffle單元帶有殘差結(jié)構(gòu),網(wǎng)絡(luò)前向傳播時(shí)可保持特征信息的完整性。
圖5 Shuffle_YOLOv2結(jié)構(gòu)圖
兩種帶有殘差結(jié)構(gòu)的Shuffle單元如圖6所示,GConv中的28個(gè)1×1卷積核對(duì)特征圖進(jìn)行逐點(diǎn)分組卷積處理,Channel Shuffle對(duì)不同組別的特征向量進(jìn)行通道重排,深度卷積使用1個(gè)卷積核對(duì)1個(gè)通道進(jìn)行卷積,使其在卷積過程中不會(huì)創(chuàng)建新的輸出特性[15],前后兩次GConv操作確保其輸入通道與輸出通道相匹配。經(jīng)過Channel Shuffle處理輸出的特征圖與前層的特征圖進(jìn)行通道級(jí)聯(lián),既可降低計(jì)算復(fù)雜度,又可增加通道維度。Shuffle_a單元中深度卷積的stride為1,其輸出的特征圖大小不變,而Shuffle_b單元中stride為2,特征圖經(jīng)過卷積下采樣和池化下采樣后進(jìn)行通道級(jí)聯(lián),其寬高縮小為原來的一半。
圖6 兩種不同的Shuffle單元
Shuffle-YOLOv2通過逐點(diǎn)分組卷積有效減少了網(wǎng)絡(luò)參數(shù),且Shuffle單元的殘差結(jié)構(gòu)通過恒等映射,將前后層特征信息進(jìn)行通道級(jí)聯(lián),確保有足夠的特征信息傳遞給下一層神經(jīng)元,在加深網(wǎng)絡(luò)層數(shù)的同時(shí)可防止網(wǎng)絡(luò)退化。Shuffle-YOLOv2分類層中使用1×1小卷積核對(duì)特征圖進(jìn)行局部特征提取,網(wǎng)絡(luò)空間結(jié)構(gòu)不變,避免網(wǎng)絡(luò)參數(shù)增多和破壞網(wǎng)絡(luò)空間結(jié)構(gòu),且使用K-Means聚類從訓(xùn)練集中自動(dòng)評(píng)估錨框,在目標(biāo)預(yù)測過程中減少了人為主觀因素的影響,網(wǎng)絡(luò)模型更容易自主學(xué)習(xí),泛化性增強(qiáng)。
Shuffle-YOLOv2的訓(xùn)練流程如下。
(1)圖像歸一化。將輸入圖像歸一化為416×416像素。
(2)錨框提取。計(jì)算聚類錨框與真實(shí)目標(biāo)框的交并比,采用K-Means聚類算法自動(dòng)提取訓(xùn)練集圖像中錨框,計(jì)算公式為
其中,P(b,c)表示真實(shí)目標(biāo)框與聚類錨框的交并比,b表示真實(shí)目標(biāo)框,c表示K-Means聚類算法提取出的中心框。d(b,c)越小,說明聚類錨框和真實(shí)目標(biāo)框的寬與高更接近[16],聚類評(píng)估效果越好。實(shí)驗(yàn)設(shè)置4個(gè)聚類錨框,經(jīng)K-Means評(píng)估的錨框大小分別為303×230、51×31、208×122、117×71。
(3)預(yù)測目標(biāo)框與置信度得分。Shuffle-YOLOv2將特征圖分成13×13個(gè)網(wǎng)格單元,輸出13×13×4個(gè)錨框,每個(gè)網(wǎng)格單元預(yù)測的目標(biāo)框輸出5個(gè)參數(shù),分別為tx、ty、tw、th和置信度得分C。計(jì)算預(yù)測目標(biāo)框的位置bx、by、bw、bh的公式為
其中,cx、cy表示預(yù)測目標(biāo)中心所在網(wǎng)格單元相對(duì)于圖像左上角的距離,σ(tx)和σ(ty)表示預(yù)測目標(biāo)中心與所在單元格左上角的距離,pw、ph表示聚類錨框的寬度與高度。
預(yù)測目標(biāo)的置信度分?jǐn)?shù)C,即預(yù)測目標(biāo)框和真實(shí)目標(biāo)框的交并比P與目標(biāo)預(yù)測概率Pr的乘積[17],其計(jì)算公式為
若該網(wǎng)格單元里含有目標(biāo),則Pr為1,否則為0。
實(shí)驗(yàn)采用10 000張圖像作為數(shù)據(jù)集,為了增強(qiáng)網(wǎng)絡(luò)模型的泛化能力,使用添加噪聲、垂直鏡像、調(diào)節(jié)亮度和飽和度共4種方式對(duì)數(shù)據(jù)集進(jìn)行擴(kuò)增處理,將數(shù)據(jù)集擴(kuò)充為50 000張。
實(shí)驗(yàn)硬件設(shè)備為Intel core i5-8300H CPU@2.3GHz,Nvidia GTX1050Ti GPU 4GB,運(yùn)行內(nèi)存16 G,存儲(chǔ)為固態(tài)硬盤500 G,操作系統(tǒng)為Windows10,代碼運(yùn)行環(huán)境為Matlab2020a。訓(xùn)練參數(shù)設(shè)置:學(xué)習(xí)回合為30次,最小訓(xùn)練批次為10,初始學(xué)習(xí)率為0.001。訓(xùn)練過程采用SGDM算法對(duì)網(wǎng)絡(luò)模型進(jìn)行優(yōu)化,為保證訓(xùn)練出來的網(wǎng)絡(luò)檢測性能穩(wěn)定,在每回合訓(xùn)練前對(duì)訓(xùn)練數(shù)據(jù)進(jìn)行隨機(jī)重新排列。訓(xùn)練集和測試集的比例為8:2。
為了驗(yàn)證Shuffle-YOLOv2的口罩佩戴檢測效果,根據(jù)實(shí)際監(jiān)控場景,將圖像中口罩佩戴情況分為3類:佩戴口罩、未佩戴口罩、佩戴口罩和未佩戴口罩。Shuffle-YOLOv2的檢測效果如圖7所示可以看出,Shuffle-YOLOv2能夠準(zhǔn)確識(shí)別出口罩佩戴的3類情況,識(shí)別效果良好。
圖7 基于Shuffle-YOLOv2的實(shí)際檢測效果。(a)佩戴口罩;(b)未佩戴口罩;(c)佩戴口罩和未佩戴口罩
為了量化分析Shuffle-YOLOv2的口罩佩戴檢測準(zhǔn)確性,采用平均精度作為檢測性能優(yōu)劣的衡量指標(biāo)。圖8為Shuffle-YOLOv2平均精度統(tǒng)計(jì)圖,橫坐標(biāo)為召回率,縱坐標(biāo)為精確率,平均精度為帶三角的藍(lán)色曲線與橫縱坐標(biāo)包圍的面積在整個(gè)統(tǒng)計(jì)圖中的占比,3類情況的檢測精度分別為0.98、0.94和0.93,模型的檢測精度較高。
圖8 Shuffle-YOLOv2的平均精度曲線
為了進(jìn)一步驗(yàn)證Shuffle-YOLOv2的性能,將DarkNet19、輕量級(jí)網(wǎng)絡(luò)SqueezeNet、輕量級(jí)網(wǎng)絡(luò)MobileNetv2作為YOLOv2的主干網(wǎng)絡(luò)(分別稱為DarkNet19-YOLOv2、Sequeeze-YOLOv2、Mobile-YOLOv2)與Shuffle-YOLOv2進(jìn)行對(duì)比。4個(gè)網(wǎng)絡(luò)模型的平均精度、檢測速度、Matlab2020a環(huán)境下占用存儲(chǔ)空間和訓(xùn)練損失對(duì)比如表1所示。Dark-Net19-YOLOv2模型雖具有較高的檢測精度和較好的訓(xùn)練收斂效果,但該模型參數(shù)量大,占用存儲(chǔ)空間已超100 MB,加上后期環(huán)境配置等會(huì)導(dǎo)致占用存儲(chǔ)空間過大,不適合應(yīng)用于常規(guī)移動(dòng)設(shè)備,而3個(gè)輕量級(jí)YOLOv2模型占用存儲(chǔ)空間都比較小,適合在移動(dòng)設(shè)備端進(jìn)一步開發(fā)。在訓(xùn)練損失和檢測速度對(duì)比上,Shuffle-YOLOv2收斂程度優(yōu)于Squeeze-YOLOv2和Mobile-YOLOv2。在檢測精 度上,Squeeze-YOLOv2在3種情況下的平均精度都低于Shuffle-YOLOv2,Mobile-YOLOv2僅在未佩戴口罩情況下與Shuffle-YOLOv2持平。由此可見,Shuffle-YOLOv2模型檢測性能較優(yōu),更適合在移動(dòng)設(shè)備上進(jìn)一步開發(fā)部署。
表1 不同網(wǎng)絡(luò)模型的性能參數(shù)對(duì)比
綜上所述,本文提出了一種集圖像采集、口罩佩戴檢測、異常報(bào)警于一體的輕量化口罩佩戴檢測方法,計(jì)算機(jī)通過局域網(wǎng)讀取網(wǎng)絡(luò)攝像頭的圖像信息,使用Shuffle-YOLOv2網(wǎng)絡(luò)檢測行人口罩佩戴情況,出現(xiàn)行人未佩戴口罩情況時(shí)會(huì)觸發(fā)報(bào)警器報(bào)警。Shuffle-YOLOv2網(wǎng)絡(luò)使用ShuffleNet作為主干網(wǎng)絡(luò),實(shí)現(xiàn)網(wǎng)絡(luò)的輕量化,減少了網(wǎng)絡(luò)參數(shù),提高了模型的檢測速度。在同等實(shí)驗(yàn)條件下,Shuffle-YOLOv2大小僅有22.2 MB,檢測速度為0.029 fps,占用存儲(chǔ)空間小,且檢測精度、檢測速度也符合要求。實(shí)驗(yàn)通過進(jìn)一步優(yōu)化網(wǎng)絡(luò)模型,減少網(wǎng)絡(luò)訓(xùn)練參數(shù),降低網(wǎng)絡(luò)模型對(duì)設(shè)備計(jì)算性能的需求,使其可在普通辦公電腦或者手機(jī)上使用。相較于目前所公開的一些深度網(wǎng)絡(luò)模型以及一些成本高昂的檢測設(shè)備,本研究有望降低人工智能產(chǎn)品的使用成本,提高產(chǎn)品的實(shí)用性。