張文鎧,劉佳
(北京信息科技大學(xué) 自動(dòng)化學(xué)院,北京 100192)
許多病毒和細(xì)菌可通過(guò)空氣中的飛沫和氣溶膠進(jìn)行傳播,佩戴口罩是防止呼吸道傳染病傳播最有效的手段之一[1]。在特殊時(shí)期,公共場(chǎng)所一般都會(huì)有工作人員提醒大家佩戴口罩,但在人流量較大的情況下,很容易出現(xiàn)漏檢的現(xiàn)象,這會(huì)增加呼吸道傳染病傳播的風(fēng)險(xiǎn)。如果增加檢查的工作人員,則會(huì)耗費(fèi)大量人力。因此,研發(fā)出一種口罩佩戴檢測(cè)算法具有極為重要的現(xiàn)實(shí)意義。
自從2012年Hinton教授團(tuán)隊(duì)[2]利用卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)研發(fā)出AlexNet之后,目標(biāo)檢測(cè)算法開始快速發(fā)展,逐漸從傳統(tǒng)的目標(biāo)檢測(cè)轉(zhuǎn)向?yàn)榛谏疃葘W(xué)習(xí)的目標(biāo)檢測(cè)。目標(biāo)檢測(cè)算法大體可以分為2大類別:兩階段檢測(cè)和一階段檢測(cè)。兩階段檢測(cè)算法的代表主要是基于區(qū)域的卷積神經(jīng)網(wǎng)絡(luò)(region based CNN,R-CNN)[3]系列算法,比如Fast R-CNN[4]和Faster R-CNN[5]。一階段檢測(cè)算法的代表主要是單步多框檢測(cè)器(single shot multibox detector,SSD)[6]和YOLO(you only look once)[7]系列算法。兩階段檢測(cè)算法檢測(cè)精度高,但檢測(cè)的速度較慢。而一階段檢測(cè)算法正好與之相反,檢測(cè)速度快,但精度相對(duì)略低。對(duì)于口罩佩戴檢測(cè)這種實(shí)時(shí)性要求較高的任務(wù)來(lái)說(shuō),應(yīng)用一階段檢測(cè)算法更為合適。目前已經(jīng)有許多研究將目標(biāo)檢測(cè)算法應(yīng)用在口罩檢測(cè)領(lǐng)域,如薄景文等[8]基于YOLOv3的輕量化口罩佩戴檢測(cè)算法,金鑫等[9]基于改進(jìn)YOLOv4的口罩佩戴檢測(cè)算法,李小波等[10]融合注意力機(jī)制的YOLOv5口罩檢測(cè)算法。上述方法雖然在一定程度上提高了算法的性能,但在精度上還是存在不足。2022年7月,YOLOv4團(tuán)隊(duì)正式發(fā)布YOLOv7,它采用了擴(kuò)展高效層聚合網(wǎng)絡(luò)、復(fù)合模型縮放、計(jì)劃的重參數(shù)化卷積以及更有效的標(biāo)簽匹配策略,在速度和準(zhǔn)確度方面都超過(guò)了所有已知的目標(biāo)檢測(cè)器[11]。為進(jìn)一步提升口罩佩戴檢測(cè)算法的精度,本文在YOLOv7算法的基礎(chǔ)上做了相關(guān)的改進(jìn)。首先,在YOLOv7模型的主干網(wǎng)絡(luò)引入感受野模塊,增大模型的感受野,提高算法的檢測(cè)精度。其次,在頭部網(wǎng)絡(luò)引入基于卷積塊的注意力機(jī)制,使得特征圖上的特征信息更容易被突顯出來(lái)。
YOLOv7網(wǎng)絡(luò)模型結(jié)構(gòu)主要分為輸入層、主干網(wǎng)絡(luò)、頭部網(wǎng)絡(luò) 3個(gè)部分。
YOLOv7的輸入層主要是對(duì)輸入的圖片進(jìn)行預(yù)處理,主要包括 Mosaic數(shù)據(jù)增強(qiáng)、自適應(yīng)錨框計(jì)算、自適應(yīng)圖片縮放等操作。YOLOv7的主干網(wǎng)絡(luò)主要功能是特征提取,主要包括CBS模塊、ELAN模塊和MP模塊。CBS模塊是由1個(gè)卷積層、1個(gè)批歸一化層和1個(gè)Silu激活函數(shù)層構(gòu)成。ELAN模塊由多個(gè)CBS模塊構(gòu)成,它通過(guò)控制最短和最長(zhǎng)的梯度路徑,使一個(gè)更深的網(wǎng)絡(luò)同樣可以有效地進(jìn)行學(xué)習(xí)和收斂。MP模塊的主要作用是進(jìn)行下采樣。YOLOv7的頭部網(wǎng)絡(luò)主要包括SPPCSPC模塊、UP模塊、ELAN-H模塊和REP模塊。SPP模塊的作用是通過(guò)最大池化來(lái)增大感受野,提升模型精度。CSP模塊的主要作用是減小計(jì)算量。它將特征分為兩部分,其中一部分進(jìn)行常規(guī)處理,另一部分進(jìn)行SPP結(jié)構(gòu)處理,最后再將兩部分合并在一起。這樣做可以減少計(jì)算量,而且還可以提升模型的精度。UP模塊的主要作用是通過(guò)最近鄰插值的方式進(jìn)行上采樣。ELAN-H模塊與ELAN模塊非常相似,不同的是ELAN-H模塊選取的輸出數(shù)量比ELAN模塊多。REP模塊在訓(xùn)練時(shí)將1個(gè)用于特征提取的3×3卷積、1個(gè)用于平滑特征的1×1卷積和1個(gè)無(wú)卷積操作融合在1個(gè)卷積層中,在推理時(shí)則重參數(shù)化1個(gè)3×3的卷積。
為進(jìn)一步提升口罩佩戴檢測(cè)算法的精度,本文在YOLOv7算法的基礎(chǔ)上做了相關(guān)的改進(jìn)。首先,為了增大模型的感受野,提高算法的檢測(cè)精度,在主干網(wǎng)絡(luò)第24層引入RFB模塊;其次,為了使得特征圖上的特征信息更容易被突顯出來(lái),在模型的頭部網(wǎng)絡(luò)第63層引入卷積塊注意力模塊(convolutional block attention module,CBAM),改進(jìn)后的算法模型結(jié)構(gòu)如圖1所示。圖1中的cat表示拼接操作。
圖1 改進(jìn)的YOLOv7模型結(jié)構(gòu)Fig.1 Model structure of improved YOLOv7
檢測(cè)精度與模型的特征提取能力緊密相關(guān),原YOLOv7算法在特征提取能力上還有一定進(jìn)步的空間。本文為進(jìn)一步增強(qiáng)模型的特征提取能力,在原YOLOv7算法的基礎(chǔ)上引入了CBAM,使模型更加關(guān)注重要信息,進(jìn)一步提升精度。
CBAM是由通道注意力機(jī)制(channel attention module,CAM)和空間注意力機(jī)制(spatial attention module,SAM)串行連接組成,在輸入特征F的基礎(chǔ)上依次融合了通道和空間兩種維度上的注意力權(quán)重[12],最終與輸入特征不斷相乘輸出一個(gè)新的特征FZ。這樣不僅節(jié)約了計(jì)算力,而且與單一使用通道和空間注意力機(jī)制相比,特征圖上的特征信息更容易被突顯出來(lái),從而提高模型的準(zhǔn)確率[13]。CBAM基本結(jié)構(gòu)如圖2所示。
圖2 CBAM基本結(jié)構(gòu)Fig.2 Basic structure of CBAM
通道注意力機(jī)制處理過(guò)程如圖3所示。輸入特征F分別經(jīng)過(guò)全局最大池化和全局平均池化,然后送入共享多層感知機(jī)[14],將得到的特征進(jìn)行對(duì)位相乘并進(jìn)行加和操作,最終經(jīng)過(guò)Sigmoid激活函數(shù)得到通道注意力特征FC。
圖3 通道注意力機(jī)制處理過(guò)程Fig.3 Processing process of channel attention mechanism
空間注意力機(jī)制處理過(guò)程如圖4所示。輸入特征F1是原始輸入特征F與通道注意力機(jī)制生成的通道注意力特征FC進(jìn)行乘法操作所得到的,輸入特征F1經(jīng)過(guò)基于通道的全局最大池化和全局平均池化,得到2個(gè)特征圖并將其進(jìn)行通道拼接和非線性運(yùn)算,再經(jīng)過(guò)一層卷積進(jìn)行降維之后得到空間注意力特征FS。最后,再將輸入特征F1與空間注意力特征FS進(jìn)行乘法操作得到最終的輸出特征FZ。
圖4 空間注意力機(jī)制處理過(guò)程Fig.4 Processing process of spatial attention mechanism
YOLOv7主干網(wǎng)絡(luò)的主要作用是對(duì)輸入圖像進(jìn)行特征提取,但原YOLOv7主干網(wǎng)絡(luò)感受野相對(duì)較小,導(dǎo)致獲得的局部信息過(guò)多,全局信息過(guò)少,進(jìn)而影響檢測(cè)的準(zhǔn)確率。所以為進(jìn)一步增大模型的感受野,提高算法的準(zhǔn)確率,在原YOLOv7的主干網(wǎng)絡(luò)引入RFB模塊。
RFB模塊模仿了人類視覺的特點(diǎn),將感受野和偏心率聯(lián)系在一起,其結(jié)構(gòu)與Inception結(jié)構(gòu)相似,主要由不同尺度的常規(guī)卷積組成的多分支卷積層和不同尺度的空洞卷積層組成。多分支卷積層主要用來(lái)模擬群體感受野中不同的感受野,空洞卷積層主要用來(lái)模擬群體感受野尺度與偏心率之間的關(guān)聯(lián)度[15]。這種結(jié)構(gòu)不僅不會(huì)增加參數(shù)量,而且還擴(kuò)大了感受野,提高了算法的檢測(cè)精度。
圖5為RFB網(wǎng)絡(luò)結(jié)構(gòu),輸入特征圖首先通過(guò)3個(gè)分支來(lái)完成特征融合,3個(gè)分支分別通過(guò)1×1卷積(Conv)降低特征圖的通道數(shù),然后其中2個(gè)分支分別通過(guò)3×3和5×5的卷積核構(gòu)成多分支結(jié)構(gòu)來(lái)獲取多尺度特征,并在對(duì)應(yīng)的每個(gè)分支上分別引入擴(kuò)張率(rate)為1、3、5的3×3空洞卷積來(lái)增大網(wǎng)絡(luò)的感受野[16]。當(dāng)擴(kuò)張率為1時(shí),空洞卷積就是常規(guī)的卷積??斩绰什煌瑫r(shí),獲得感受野的大小也不同。RFB模塊將擴(kuò)張率設(shè)置為1、3、5這種組合,使得采樣點(diǎn)交錯(cuò),盡可能多的學(xué)習(xí)局部信息,減少了網(wǎng)格效應(yīng)帶來(lái)的信息丟失。最后將3個(gè)分支的輸出通過(guò)1×1卷積和拼接操作(Concatenation)連接在一起完成特征融合。將特征融合后的特征圖與輸入特征圖通過(guò)捷徑連接(Shortcut)層進(jìn)行張量相加,并通過(guò)Relu激活函數(shù)完成最后的輸出。
圖5 RFB網(wǎng)絡(luò)結(jié)構(gòu)Fig.5 RFB network structure
本文實(shí)驗(yàn)所用的口罩?jǐn)?shù)據(jù)集主要來(lái)自于MAFA數(shù)據(jù)集中的部分圖片、網(wǎng)絡(luò)上收集的圖片和生活中收集的圖片。數(shù)據(jù)集總共有5 000張,劃分為訓(xùn)練集3 000張,測(cè)試集1 000張,驗(yàn)證集1 000張,圖6為部分?jǐn)?shù)據(jù)集示例。圖6(a)為單人臉數(shù)據(jù)集示例,其中包含單人正面未遮擋佩戴口罩情況、單人正面遮擋未佩戴口罩情況、單人正面未遮擋未佩戴口罩情況、單人側(cè)面未遮擋佩戴口罩情況等。圖6(b)為多人臉數(shù)據(jù)集示例,其中包含多人側(cè)面佩戴口罩以及未佩戴口罩混合情況、多人正面佩戴口罩以及未佩戴口罩混合情況、多人正面佩戴口罩情況、多人側(cè)面佩戴口罩情況等。
圖6 部分?jǐn)?shù)據(jù)集示例Fig.6 Partial dataset example
在建立數(shù)據(jù)集的時(shí)候通過(guò)LabelImg軟件對(duì)圖片進(jìn)行標(biāo)記,佩戴口罩的標(biāo)記為mask,未佩戴口罩的標(biāo)記為face。
為確保改進(jìn)算法的準(zhǔn)確性和有效性,本文所有實(shí)驗(yàn)統(tǒng)一在表1實(shí)驗(yàn)環(huán)境及配置下進(jìn)行。
表1 實(shí)驗(yàn)環(huán)境配置Table 1 Experimental environment configuration
實(shí)驗(yàn)的具體參數(shù)如表2所示。為確保改進(jìn)算法的準(zhǔn)確性和有效性,本文所有實(shí)驗(yàn)均在同一參數(shù)下進(jìn)行。
表2 實(shí)驗(yàn)的參數(shù)設(shè)置Table 2 Parameter settings for the experiment
實(shí)驗(yàn)主要的評(píng)價(jià)指標(biāo)有:精確率(precision)、平均精度均值(mean average precision,mAP)和召回率(recall)。
為驗(yàn)證本文所提方法的有效性,在原始YOLOv7算法的基礎(chǔ)上依次加入RFB模塊、CBAM注意力機(jī)制、RFB模塊和CBAM注意力機(jī)制,同時(shí)與目前幾種主流的目標(biāo)檢測(cè)算法進(jìn)行對(duì)比,消融實(shí)驗(yàn)的結(jié)果如表3所示。
表3 消融實(shí)驗(yàn)結(jié)果Table 3 Results of ablation experiment
從表3可以看出,在原YOLOv7算法的基礎(chǔ)上引入RFB模塊后,精確率提高2.6百分點(diǎn),平均精度均值提高1.4百分點(diǎn);在原YOLOv7算法的基礎(chǔ)上引入CBAM注意力機(jī)制后,精確率提高3.3百分點(diǎn),平均精度均值提高1.6百分點(diǎn);在原YOLOv7算法的基礎(chǔ)上同時(shí)引入RFB模塊和CBAM注意力機(jī)制后,精確率提高5.6百分點(diǎn),平均精度均值提高2.6百分點(diǎn)。在原YOLOv7算法的基礎(chǔ)上同時(shí)引入RFB模塊和CBAM注意力機(jī)制的精確率和平均精度均高于在原YOLOv7算法的基礎(chǔ)上單獨(dú)引入RFB模塊和CBAM注意力機(jī)制,進(jìn)而驗(yàn)證了本文所提改進(jìn)算法的有效性。同時(shí),本文提出的改進(jìn)YOLOv7算法與YOLOv5s算法相比,精確率提高9.6百分點(diǎn),平均精度均值提高2.9百分點(diǎn);與最新提出的YOLOv8s算法相比,精確率提高12.0百分點(diǎn),平均精度均值提高12.6百分點(diǎn),召回率提高5.0百分點(diǎn)。本文提出的改進(jìn)YOLOv7算法在滿足實(shí)時(shí)檢測(cè)的基礎(chǔ)上,檢測(cè)精確率及平均精度均值均大幅優(yōu)于其他算法。
圖7所示為算法改進(jìn)前后的精確率-召回率曲線對(duì)比。精確率-召回率曲線與坐標(biāo)軸圍成的面積即為該類別的平均精度值,圍成的面積越大表示平均精度值越高。平均精度均值是指交并比閾值為0.5時(shí)所有類別的平均精度均值。
圖7 YOLOv7算法改進(jìn)前后精確率-召回率曲線對(duì)比Fig.7 Comparison of precision-recall curve before and after improvement of YOLOv7 algorithm
由圖7可知,改進(jìn)后的YOLOv7算法平均精度均值由94.0%提升至96.6%,提高2.6百分點(diǎn)。其中佩戴口罩類平均精度由95.3%提升至98.6%,提高3.3百分點(diǎn);未佩戴口罩類平均精度由92.6%提升至94.6%,提高2.0百分點(diǎn)。綜上所述,本文改進(jìn)的YOLOv7算法平均精度和平均精度均值均優(yōu)于原YOLOv7算法。
圖8為算法改進(jìn)前后的檢測(cè)效果對(duì)比,其中圖8(a)為輸入圖片,圖8(b)為原YOLOv7算法的檢測(cè)效果,圖8(c)為本文改進(jìn)YOLOv7算法的檢測(cè)效果,其中檢測(cè)框上方標(biāo)示著檢測(cè)類別以及該類別的置信度。
圖8 算法改進(jìn)前后檢測(cè)效果對(duì)比Fig.8 Comparison of algorithm detection effects before and after improvement
由圖8可知,原YOLOv7算法和本文改進(jìn)的YOLOv7算法都可以準(zhǔn)確地檢測(cè)出口罩佩戴情況,但本文改進(jìn)的YOLOv7算法檢測(cè)效果置信度高于原YOLOv7算法,可以證明本文改進(jìn)的YOLOv7算法檢測(cè)效果優(yōu)于原YOLOv7算法。
為提升口罩佩戴檢測(cè)算法的精度,本文提出了基于改進(jìn)YOLOv7的口罩佩戴檢測(cè)算法。在YOLOv7的基礎(chǔ)上,在頭部網(wǎng)絡(luò)引入CBAM注意力機(jī)制,在主干網(wǎng)絡(luò)引入RFB模塊。實(shí)驗(yàn)結(jié)果表明,改進(jìn)后的YOLOv7口罩佩戴檢測(cè)算法精確率達(dá)到95.7%,較原網(wǎng)絡(luò)提高5.6百分點(diǎn),平均精度均值達(dá)到96.6%,提高了2.6百分點(diǎn),模型精度在原有的基礎(chǔ)上得到大幅提升。但在引入注意力機(jī)制和各種模塊之后,會(huì)增加原有模型的參數(shù)量,所以后續(xù)的工作將著重于模型輕量化的研究。
北京信息科技大學(xué)學(xué)報(bào)(自然科學(xué)版)2024年1期