曹小喜,程凡永,王飛州
(安徽工程大學(xué) 檢測技術(shù)與節(jié)能裝置安徽省重點(diǎn)實(shí)驗(yàn)室,安徽 蕪湖 241000)
疫情形勢依然嚴(yán)峻,由于基因突變產(chǎn)生的新冠病毒的各種變異毒株表現(xiàn)出更強(qiáng)的毒性與傳染性,督促民眾在商場、車站等公共場所佩戴口罩是降低病毒傳染概率的重要舉措。目前在公共場所主要通過人工監(jiān)督的方式對民眾佩戴口罩的情況進(jìn)行檢測,這種方式效率低下。因此,開發(fā)一套能夠?qū)γ癖娍谡峙宕髑闆r進(jìn)行實(shí)時準(zhǔn)確監(jiān)測的口罩佩戴檢測系統(tǒng)具有重要意義[1]。
近年來,隨著深度神經(jīng)網(wǎng)絡(luò)的飛速發(fā)展,一大批優(yōu)秀的目標(biāo)檢測算法紛紛涌現(xiàn),主要包括兩類,一類是以YOLO[2-5]系列和SSD[6]系列為代表的基于回歸的一階段目標(biāo)檢測算法,另一類是以R-CNN[7-9]系列為代表的基于候選區(qū)域的兩階段目標(biāo)檢測算法。兩階段方法首先生成一系列可能包含對象的候選區(qū)域,然后對每個候選區(qū)域進(jìn)行分類,并根據(jù)每個候選區(qū)域的特征進(jìn)行邊界框回歸。一階段方法跳過候選區(qū)域生成步驟,直接利用卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network, CNN)對整幅圖像中所有目標(biāo)的位置和分類進(jìn)行回歸。
衡量目標(biāo)檢測算法性能的主要指標(biāo)是檢測精度和檢測速度,一階段和二階段目標(biāo)檢測算法相比,檢測精度略低,但檢測速度很快,通過輕量化改進(jìn)能夠較容易的在移動設(shè)備上實(shí)現(xiàn)實(shí)時檢測。為了實(shí)現(xiàn)網(wǎng)絡(luò)的輕量化,齊榕等[10]將Tiny-YOLOv3的主干特征提取網(wǎng)絡(luò)替換為MobileNet,減少了模型的參數(shù)量和運(yùn)算量,在測試集上mAP達(dá)到了73.3%;鐘志峰等[11]將YOLOv4的主干特征提取網(wǎng)絡(luò)替換成了Mobilenetv3[12],然后將EfficietDet[13]的加權(quán)雙向特征金字塔Bi-FPN(weighted Bi-directional Feature Pyramid Network)進(jìn)行簡化來替換YOLOv4的特征融合網(wǎng)絡(luò),在VOC(Visual Object Classes)2007數(shù)據(jù)集上 mAP 達(dá)到 80.22%,模型大小為 44.75M,比 YOLOv4 減少了 82%;秦偉偉等[14]將YOLOv3的主干特征提取網(wǎng)絡(luò)替換為MobileNetV2,并融合通道協(xié)同注意力模塊實(shí)現(xiàn)了YOLOv3網(wǎng)絡(luò)的輕量化;朱杰等[15]通過在YOLOv4-tiny的基礎(chǔ)上引入空間金字塔池化和路徑聚合策略,增加了網(wǎng)絡(luò)的感受野,檢測準(zhǔn)確率mAP達(dá)到了90.02%,檢測速度為76.8FPS。以上算法雖然實(shí)現(xiàn)了輕量化,但是檢測精度和檢測速度仍然存在比較大的提升空間,在場景更為復(fù)雜的人流中,比如在車站、商場等人員密集的公共場所進(jìn)行口罩佩戴檢測需要克服小目標(biāo)、遮擋目標(biāo)給目標(biāo)檢測任務(wù)帶來的困難,對算法的準(zhǔn)確度和實(shí)時性有更高的要求。
本文針對上述問題,在YOLOv4-tiny[16]的基礎(chǔ)上進(jìn)行改進(jìn),提出了一種能夠適應(yīng)密集人群環(huán)境下的改進(jìn)型人臉口罩佩戴實(shí)時檢測算法。主要改進(jìn)如下:
(1)針對YOLOv4-tiny主干特征提取網(wǎng)絡(luò)特征提取不充分的問題,引入融合了通道空間雙重注意力機(jī)制的CBAM模塊(Convolutional Block Attention Module, CBAM)[17],提升網(wǎng)絡(luò)對通道及空間特征的表達(dá)能力,擴(kuò)大網(wǎng)絡(luò)對目標(biāo)特征區(qū)域的感知范圍。
(2)為了進(jìn)一步提升模型的特征表達(dá)能力,在主干特征提取網(wǎng)絡(luò)之后引入空間金字塔池化(Spatial Pyramid Pooling, SPP)[18],對輸入特征層進(jìn)行多尺度池化并融合,同時大幅度增強(qiáng)網(wǎng)絡(luò)的感受野。
(3)在數(shù)據(jù)增強(qiáng)方面使用Mosaic數(shù)據(jù)增強(qiáng),豐富訓(xùn)練圖片的背景信息,使得算法能夠適應(yīng)更加復(fù)雜的檢測場景。
YOLOv4-tiny是YOLOv4的輕量化版本,大大減少了參數(shù)量,其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。與YOLOv4相比,YOLOv4- tiny的主干網(wǎng)絡(luò)僅由3個CBL(Conv2D_BN_Leaky-ReLU)和3個CSPBlock組成。卷積單元CBL包含卷積層、批歸一化層和用作激活函數(shù)的Leaky-ReLU。CSPBlock包含四個卷積單元、兩個殘差結(jié)構(gòu)。CSPBlock整合了CSPNet[19]結(jié)構(gòu),通過跨階段的拆分合并策略使梯度路徑的數(shù)量加倍,從而有效地降低了模型的計(jì)算量。YOLOv4-tiny使用特征金字塔(Feature Pyramid Network, PAN)[20]作為特征融合網(wǎng)絡(luò),輸入圖片經(jīng)過主干特征提取網(wǎng)絡(luò)的特征提取,取13×13、26×26兩個尺度的特征圖作為特征金字塔的輸入,經(jīng)過卷積加上采樣處理之后進(jìn)行Concat操作來完成特征融合,然后將輸出特征送入YOLO head 進(jìn)行預(yù)測,預(yù)測結(jié)果包括目標(biāo)的類別、置信度以及預(yù)測框的調(diào)整參數(shù)。最后通過設(shè)置置信度閾值和利用非極大值抑制策略對預(yù)測框進(jìn)行篩選,獲得最終的檢測結(jié)果。
由于YOLOv4-tiny的主干特征提取網(wǎng)絡(luò)比較簡單,特征提取能力有限,其輸出的兩個尺度的有效特征層經(jīng)過特征金字塔進(jìn)行簡單的特征融合就送入YOLO head進(jìn)行預(yù)測,這使得YOLOv4-tiny取得了極高的檢測速度,每秒鐘可以檢測443張圖片(COCO:443FPS on RTX 2080Ti),輕量化的結(jié)構(gòu)為YOLOv4-tiny帶來了優(yōu)秀的實(shí)時檢測性能,同時也使得網(wǎng)絡(luò)整體感受野不強(qiáng),特征提取和特征融合能力偏弱,導(dǎo)致其在復(fù)雜場景下對小目標(biāo)和遮擋目標(biāo)進(jìn)行檢測時表現(xiàn)不佳。
圖1 YOLOv4-tiny網(wǎng)絡(luò)結(jié)構(gòu)
針對YOLOv4-tiny的不足之處,本文對其網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行了一些改進(jìn)和優(yōu)化,改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。從圖2中的(a)部分結(jié)構(gòu)可以發(fā)現(xiàn),在主干特征提取網(wǎng)絡(luò)CSPDarknet53-tiny的基礎(chǔ)結(jié)構(gòu)單元CSPBlock中引入融合有空間通道雙重注意力機(jī)制的CBAM模塊來構(gòu)建本文的CBAM_CSPBlock,本文算法以CBAM_CSPBlock為基礎(chǔ)結(jié)構(gòu)單元構(gòu)建了融合注意力機(jī)制的主干特征提取網(wǎng)絡(luò)CBAM_CSPDarknet53-tiny,提升了模型對關(guān)鍵特征的表達(dá)能力;然后,在主干特征提取網(wǎng)絡(luò)之后引入經(jīng)過優(yōu)化的空間金字塔池化模塊SPP,具體結(jié)構(gòu)如圖2的(b)部分所示,這使得模型能夠在不同大小的感受野上獲取多尺度空間特征并進(jìn)行上下文語義信息的融合以獲得更加豐富的特征表示,進(jìn)一步提升了網(wǎng)絡(luò)的檢測精度。接下來將分別介紹本文所引入的各個改進(jìn)策略的原理及實(shí)現(xiàn)思想。
圖2 改進(jìn)后的YOLOv4-tiny模型
通道注意機(jī)制CAM(Channel Attention Module)主要根據(jù)不同通道與關(guān)鍵信息之間的相關(guān)性建模,對原有特征層進(jìn)行加權(quán),突出具有關(guān)鍵信息的通道,抑制其余通道,主要關(guān)注對最終預(yù)測起決定性作用的通道特征,具體結(jié)構(gòu)如圖3所示。首先,對輸入特征(Input Feature)先在每一個通道的特征圖進(jìn)行全局平均池化(AvgPool)和全局最大池化(MaxPool),得到兩個通道特征;然后,將這兩個通道特征送入一個多層感知機(jī)(MLP)中,這個多層感知機(jī)由兩個共享權(quán)重的全連接層組成,通過這個全連接層得到通道注意力特征(Channel Attention Feature)。
圖3 CAM模塊結(jié)構(gòu)
空間注意模塊SAM(Spatial Attention Module)通過提取空間中每個像素點(diǎn)的關(guān)系和相對位置,形成一個具有像素相關(guān)度的掩模層。通過相關(guān)度計(jì)算像素點(diǎn)的權(quán)重,保留攜帶重要信息的像素點(diǎn),實(shí)現(xiàn)特征選擇和融合的功能,具體結(jié)構(gòu)如圖4所示。首先,對輸入特征進(jìn)行最大池化和平均池化,獲得兩個空間特征;之后將這兩個特征在通道維度拼接,最后再經(jīng)過一個卷積層得到空間注意力特征(Spatial Attention Feature)。
圖4 SAM模塊結(jié)構(gòu)
由于空間注意模塊SAM忽略了通道域中的信息,通道注意模塊CAM則忽略了每個通道上空間信息。而卷積注意力模塊CBAM(Convolutional Block Attention Module)將通道注意模塊和空間注意模塊串聯(lián)起來,構(gòu)建了一個融合通道空間雙重注意力機(jī)制的注意力模型,解決了單一注意力模塊的局限性,具體結(jié)構(gòu)如圖5所示。對輸入特征先后施加CAM和SAM,最后得到同時蘊(yùn)含通道注意力和空間注意力的輸出特征,強(qiáng)化模型對關(guān)鍵特征的表達(dá)能力。
圖5 CBAM模塊結(jié)構(gòu)
通常情況下,為滿足卷積神經(jīng)網(wǎng)絡(luò)分類器的固定尺寸輸入限制,可以對輸入圖片進(jìn)行裁剪、縮放等操作,但這樣做往往會使圖片失真??臻g金字塔池化(Spatial Pyramid Pooling, SPP)可以對任意尺寸或比例的輸入圖像進(jìn)行處理而生成固定尺度的特征表示,對于輸入圖像的大小以及形狀的變化具有很好的魯棒性,其原始結(jié)構(gòu)如圖6(a)所示。
受SPP空間金字塔池化思想的啟發(fā),本文對傳統(tǒng)的SPP模塊進(jìn)行改進(jìn),改進(jìn)后的結(jié)構(gòu)如圖6(b)所示。首先利用三個步長為1,卷積核大小分別為5×5、9×9、13×13的池化層對輸入特征進(jìn)行最大池化處理,得到三個不同尺度的局部特征;然后,將所得多尺度局部特征與輸入的全局特征進(jìn)行堆疊以實(shí)現(xiàn)特征增強(qiáng),獲得更加豐富的特征表示,進(jìn)一步提升網(wǎng)絡(luò)的檢測精度。
(a)原始空間金字塔池化
(b)改進(jìn)后的空間金字塔池化
本文的數(shù)據(jù)集是從開源數(shù)據(jù)集WIDER Face、MAFA(Masked face)、RMFD(Real-Word Masked Face Dataset)和利用網(wǎng)絡(luò)爬蟲從互聯(lián)網(wǎng)下載一些圖片中篩選的佩戴口罩的人臉圖片和未佩戴口罩的人臉圖片,共計(jì)8 700張。然后使用標(biāo)注工具Labelimg將數(shù)據(jù)集中的圖片標(biāo)注成VOC的數(shù)據(jù)格式,其中未佩戴口罩的人臉標(biāo)注為face,佩戴口罩的人臉標(biāo)注為face_mask。
在數(shù)據(jù)準(zhǔn)備階段,從標(biāo)注好的數(shù)據(jù)集中隨機(jī)選取10%的數(shù)據(jù)作為測試集;其余數(shù)據(jù)按照9:1的比例劃分為訓(xùn)練集和測試集。訓(xùn)練過程中運(yùn)用Mosaic數(shù)據(jù)增強(qiáng)策略,如圖7所示,隨機(jī)選取四張圖片進(jìn)行等長寬比縮放拼接后送入網(wǎng)絡(luò)進(jìn)行訓(xùn)練,可以增加訓(xùn)練樣本的多樣性,豐富訓(xùn)練圖片的背景信息,提升模型的魯棒性,增強(qiáng)泛化能力。
圖7 Mosaic數(shù)據(jù)增強(qiáng)
本文采用平均準(zhǔn)確率(Average Precision, AP)和平均準(zhǔn)確率均值(mean Average Precision, mAP)作為算法模型檢測準(zhǔn)確率的評價指標(biāo),使用每秒傳輸幀數(shù)(Frames Per Second, FPS)作為算法模型檢測速度的評價指標(biāo)。
AP和mAP這兩個評價指標(biāo)可以同時評估查準(zhǔn)率(Precision, P)和召回率(Recall, R),計(jì)算公式分別如式(1)、式(2)所示。
(1)
(2)
在本文中要檢測戴口罩的目標(biāo)face_mask, TP(True Positive)就代表口罩佩戴檢測算法將戴口罩的人臉正確識別為face_mask的數(shù)量,F(xiàn)P(False Positive)就代表口罩佩戴檢測算法將未帶口罩的人臉face識別錯誤識別為戴口罩的人臉face_mask的數(shù)量,F(xiàn)N(False Negative)就代表口罩佩戴檢測算法將佩戴口罩的人臉face_mask識別為未帶口罩的人臉face的數(shù)量。以查準(zhǔn)率P為縱坐標(biāo),以召回率R為橫坐標(biāo)繪制一條P-R曲線,則曲線與坐標(biāo)軸所為區(qū)域的面積就是平均準(zhǔn)確率AP,所有類別的平均準(zhǔn)確率相加求和再求平均就是平均準(zhǔn)確率均值mAP,計(jì)算公式如下。
(3)
(4)
本文算法是在Windows 10系統(tǒng)中,使用Python3.6、基于Pytorch1.6深度學(xué)習(xí)框架構(gòu)建,在桌面工作站(Inter?CoreTMi9-7900X CPU @ 3.3GHz,NVIDIA GeForce RTX3090)上進(jìn)行訓(xùn)練,并在個人筆記本電腦(Inter?CoreTMi7-9750H CPU @ 2.6GHz,NVIDIA GeForce RTX2060)上進(jìn)行測試。模型訓(xùn)練時,網(wǎng)絡(luò)輸入尺寸設(shè)為416×416,采用Adam優(yōu)化器,學(xué)習(xí)率為1e-3, Batch Size設(shè)置為32,使用Mosaic數(shù)據(jù)增強(qiáng)技術(shù),學(xué)習(xí)率調(diào)整策略為學(xué)習(xí)率余弦退火衰減,余弦周期為5個epoch,學(xué)習(xí)率最小值設(shè)置為1e-5,總共訓(xùn)練120個epoch。
使用本文算法與YOLOv4-tiny對測試集進(jìn)行檢測,檢測結(jié)果的P-R曲線如圖8所示。檢測結(jié)果示例如圖9所示。
在圖8中召回率Recall為橫坐標(biāo),查準(zhǔn)率Precision為縱坐標(biāo)。檢測結(jié)果的AP值可通過計(jì)算P-R曲線與坐標(biāo)軸所為區(qū)域的面積得到。本文算法檢測人臉目標(biāo)face和佩戴口罩的人臉目標(biāo)face_mask的平均準(zhǔn)確率AP分別為85.28%、96.73%,原YOLOv4-tiny檢測face與face_mask這兩種類別的目標(biāo)所達(dá)到的AP值分別是73.45%和95.03%,相比之下本文算法檢測準(zhǔn)確率更勝一籌。
(a)本文算法檢測face的P-R曲線(b)本文算法檢測face_mask的P-R曲線(c)YOLOv4-tiny檢測face的P-R曲線(d)YOLOv4-tiny檢測face的P-R曲線圖8 本文算法和YOLOv4-tiny算法各類目標(biāo)P-R曲線對比
通過圖9中的檢測結(jié)果圖可以更加直觀的對比算法的性能。圖9中的第一列是兩種算法的第一張檢測圖片結(jié)果圖,圖9(a)中,YOLOv4-tiny漏檢了后面那位穿白襯衫的戴口罩男士,相比之下,圖9(d)中本文算法成功將其正確檢測出來。圖9中的第二列是兩種算法的第二張檢測圖片結(jié)果圖,圖9(b)中,YOLOv4-tiny漏檢了穿藍(lán)色西裝的那位側(cè)臉男士,與之相比,如圖9(e)所示,本文算法成功將其正確檢測出來。第三張測試圖片針對的是密集人流環(huán)境中的口罩佩戴檢測任務(wù),兩中算法的檢測結(jié)果如圖9中第三列所示,在圖9(c)中,YOLOv4-tiny的檢測結(jié)果中存在大量誤檢,比如前排那個手拿白色提包佩戴口罩的女性屬于face_mask類別,卻被錯誤的識別為face類別,而在圖9(f)中,本文算法的檢測結(jié)果均正確,且二者都識別出來的目標(biāo),本文算法也擁有更高的置信度。
(a)YOLOv4-tiny算法1(b)YOLOv4-tiny算法2(c)YOLOv4-tiny算法3(d)本文算法1(e)本文算法2(f)本文算法3圖9 YOLOv4-tiny算法和本文算法的檢測結(jié)果對比
表1中所示為本文算法和YOLOv4-tiny以及其他主流目標(biāo)檢測算法的mAP和FPS指標(biāo)對比情況。對于人臉目標(biāo)和佩戴口罩的人臉目標(biāo),本文算法的AP值分別達(dá)到了85.28%和96.73%,相較于YOLOv4-tiny分別提升了11.83%和1.70%,取得了更高的檢測精度。在檢測速度方面,由于本文算法在主干特征提取網(wǎng)絡(luò)中引入了卷積快注意力機(jī)制CBAM,以及在主干網(wǎng)絡(luò)之后引入了SPP作為加強(qiáng)特征提取網(wǎng)絡(luò),網(wǎng)絡(luò)規(guī)模增大,因此檢測速度略低于YOLOv4-tiny,但是仍然能夠達(dá)到97.75FPS。對于其他非輕量級的目標(biāo)檢測算法,YOLOv4的檢測精度與本文算法相差無幾,SSD的檢測精度低于本文算法,兩者的檢測速度僅在20FPS左右,難以滿足實(shí)時性檢測需求。而Faster R-CNN的檢測速度更低僅為8.53FPS,且檢測精度也比本文算法低2%。本文改進(jìn)的算法檢測性能優(yōu)于其他主流算法。
表1 不同檢測算法性能對比
為了驗(yàn)證分析所提改進(jìn)策略對模型性能提升的具體貢獻(xiàn),設(shè)計(jì)4組消融實(shí)驗(yàn),如表2所示。1號實(shí)驗(yàn)是沒有加入任何改進(jìn)策略的原版YOLOv4-tiny,mAP僅為84.24%;2號實(shí)驗(yàn)在YOLOv4-tiny中加入了CBAM,該模塊融合了通道、空間兩種注意力機(jī)制,能夠大幅提升網(wǎng)絡(luò)對細(xì)節(jié)特征的提取能力,mAP比1號實(shí)驗(yàn)提升了3.29%;3號實(shí)驗(yàn)在1號實(shí)驗(yàn)的基礎(chǔ)上加入了SPP,拓寬了網(wǎng)絡(luò)的感受野,提取并融合多尺度特征,mAP相對于1號實(shí)驗(yàn)提高了2.21%;4號實(shí)驗(yàn)是將CBAM和SPP同時施加到Y(jié)OLOv4-tiny基礎(chǔ)網(wǎng)絡(luò),mAP比1號實(shí)驗(yàn)提高了6.77%。綜上,本文在YOLOv4-tiny基礎(chǔ)上所引進(jìn)的改進(jìn)策略是有效的,算法性能有了明顯改善。
表2 消融實(shí)驗(yàn)結(jié)果對比
本文針對疫情防控形勢下的口罩佩戴檢測任務(wù),提出了一種高精度、高實(shí)時性的輕量級口罩佩戴檢測算法。該算法采用YOLOv4-tiny作為基礎(chǔ)模型,在其骨干網(wǎng)絡(luò)中引入了集成通道、空間雙重注意力機(jī)制的CBAM模塊,并引入SPP模塊結(jié)合Mosaic數(shù)據(jù)增強(qiáng)和學(xué)習(xí)率余弦退火策略對模型進(jìn)行訓(xùn)練。有效提升了算法的檢測性能,mAP達(dá)到了91.10%,相對于原始YOLOv4-tiny提升了6.77%,檢測速度達(dá)到了97.75FPS,能夠在口罩佩戴檢測任務(wù)中實(shí)現(xiàn)高精度實(shí)時檢測。為了能使檢測精度能夠百尺竿頭更進(jìn)一步,接下來準(zhǔn)備研究對損失函數(shù)進(jìn)行改進(jìn)的方法,與此同時將嘗試結(jié)合路徑聚合策略對特征融合網(wǎng)絡(luò)進(jìn)行優(yōu)化升級。