曹 琦,武友新
(南昌大學(xué) 數(shù)學(xué)與計(jì)算機(jī)學(xué)院,江西 南昌 330036)
為減少口罩佩戴人工檢測(cè)造成的勞力成本,使用目標(biāo)檢測(cè)技術(shù)[1]可以自動(dòng)高效識(shí)別監(jiān)控區(qū)域中的口罩佩戴情況,YOLO(you only look once)[2,3]作為一階段目標(biāo)檢測(cè)算法的主流框架,近兩年在口罩檢測(cè)任務(wù)中被廣泛改進(jìn)應(yīng)用。文獻(xiàn)[4]在SSD算法上引入注意力機(jī)制,改進(jìn)損失函數(shù),對(duì)圖片中的口罩進(jìn)行檢測(cè),平均精度達(dá)到了96.28%,但檢測(cè)精度較原始算法提高不多,檢測(cè)速度僅達(dá)29 FPS,較原算法略微下降,且不適合小型受限制的場(chǎng)所布置使用。文獻(xiàn)[5] 對(duì)YOLO算法特征提取進(jìn)行特征增強(qiáng),精度達(dá)到90.1%,但模型未考慮不規(guī)范佩戴分類,且模型檢測(cè)速度與大小仍有很大優(yōu)化空間。文獻(xiàn)[6]通過分析一階段檢測(cè)算法過程中卷積分類和回歸框預(yù)測(cè)存在最優(yōu)化不一致的問題,提出一種從特征對(duì)齊方向進(jìn)行改進(jìn)的新思路。針對(duì)當(dāng)前口罩檢測(cè)算法缺少對(duì)特征融合的改進(jìn),本文在多尺度特征上進(jìn)行尺度特征對(duì)齊、選擇和增強(qiáng),通過解耦結(jié)構(gòu)提高檢測(cè)精度和速度。實(shí)驗(yàn)結(jié)果表明,改進(jìn)特征融合算法在識(shí)別速度遠(yuǎn)高于實(shí)時(shí)標(biāo)準(zhǔn)的同時(shí),可以保持較高的口罩規(guī)范佩戴識(shí)別精度,在人臉規(guī)范佩戴口罩檢測(cè)任務(wù)下具有良好性能表現(xiàn)。
YOLOv3特征提取網(wǎng)絡(luò)采用DarkNet,頸部網(wǎng)絡(luò)采用特征金字塔網(wǎng)絡(luò)(FPN)[7]進(jìn)行深層向低層的單向特征融合,在檢測(cè)通道采用全卷積神經(jīng)網(wǎng)絡(luò)對(duì)生成的錨框進(jìn)行位置信息回歸、類別概率預(yù)測(cè)。改進(jìn)算法設(shè)計(jì)輕型特征提取網(wǎng)絡(luò)DM-CSP提高模型檢測(cè)速度,加入自設(shè)計(jì)多尺度注意力提高特征提取能力,對(duì)不同深度的提取網(wǎng)絡(luò)輸出的三層特征進(jìn)行對(duì)齊、選擇及增強(qiáng)后傳入新型解耦頭結(jié)構(gòu),算法結(jié)構(gòu)如圖1所示。
圖1 改進(jìn)算法網(wǎng)絡(luò)結(jié)構(gòu)
考慮到本文檢測(cè)任務(wù)類別只有3類,且檢測(cè)圖片中主體主要是人臉與口罩,要求模型穩(wěn)定、快速收斂,而DarkNet網(wǎng)絡(luò)參數(shù)較多、計(jì)算量較大,容易導(dǎo)致模型訓(xùn)練時(shí)間和推理時(shí)間增加,因此本文算法骨干網(wǎng)絡(luò)選用YOLOv4中的CSPDarkNet為基礎(chǔ)架構(gòu)進(jìn)行特征提取,有效地增強(qiáng)特征圖譜的提取能力,大幅度減少模型的計(jì)算量。
本文算法骨干網(wǎng)絡(luò)DM-CSP設(shè)計(jì)改進(jìn)CSP結(jié)構(gòu)作為提取網(wǎng)絡(luò)的組成模塊,網(wǎng)絡(luò)由3個(gè)不同深度的映射結(jié)構(gòu)(CSPNet)組成,其中Resunit采用了深度可分離卷積層(depthwise separable convolution,DSC)[8,9]組成,采用殘差連接結(jié)構(gòu),CSPN由卷積層、多個(gè)ResUnit和多尺度注意力(multiscale coordinate attention,MCA)組成,殘差端和融合輸出端增加3×3的普通卷積,最后使用MCA加強(qiáng)提取位置和通道信息,可以在減少參數(shù)量同時(shí)增強(qiáng)特征提取能力。DM-CSP在進(jìn)入每一個(gè)CSP結(jié)構(gòu)前采用DSC中的深度卷積和點(diǎn)卷積來改變尺度大小與通道數(shù),改進(jìn)CSPNet結(jié)構(gòu)如圖2所示,其中CBS與DBS激活層均采用Silu函數(shù),利于模型快速收斂。
圖2 算法CSP結(jié)構(gòu)
由于本文算法骨干網(wǎng)絡(luò)DM-CSP采用了DSC替代普通卷積,在提高訓(xùn)練速度的同時(shí),網(wǎng)絡(luò)的精度會(huì)相對(duì)下降,因此增加MCA模塊增強(qiáng)特征提取能力。當(dāng)前大多數(shù)檢測(cè)模型采用的注意力機(jī)制如SE注意力[10](squeeze-and-excitation module)都是僅融合不同卷積層的通道信息或者位置信息,而CA[11]注意力(coordinate attention)是一種新提出的空間注意力機(jī)制,它有效地在不同位置間進(jìn)行通道融合。與一般注意力全局池化不同,CA在橫寬方向和縱高位置上對(duì)不同通道進(jìn)行池化、卷積和激活,有助于精確捕捉同紋理方向的語義信息,最后對(duì)兩個(gè)方向的融合通道進(jìn)行權(quán)重再分配,有助于提取網(wǎng)絡(luò)對(duì)感興趣檢測(cè)信息如口罩、人臉進(jìn)行篩選。
考慮到CA注意力在池化時(shí)將輸入圖片壓縮會(huì)降低分辨率,導(dǎo)致一些特征細(xì)節(jié)丟失,在提取網(wǎng)絡(luò)深度增加時(shí),深層的小特征如口罩等的分辨率可能會(huì)被壓縮到很小導(dǎo)致丟失語義信息,因此需要豐富模型的感受尺度信息,避免深層特征的小目標(biāo)檢測(cè)丟失。本文設(shè)計(jì)一種如圖3所示的MCA網(wǎng)絡(luò),將CA注意力與空洞卷積構(gòu)成的多尺度空間金字塔進(jìn)行組合,利用空洞卷積改變輸入空間信息,使模型充分利用多個(gè)尺度信息,減少注意力對(duì)關(guān)鍵信息的提取丟失,提高特征提取效率。其中普通卷積使用1×1的卷積核,空洞卷積使用3個(gè)因子分別為1、3、5的大小為3×3的卷積核,卷積通道數(shù)都取輸入的1/4,各卷積輸出經(jīng)填充融合后作為CA注意力的輸入。
圖3 MCA網(wǎng)絡(luò)
YOLO算法在提取特征后對(duì)3層不同大小的特征尺度進(jìn)行融合,但傳統(tǒng)FPN在上采樣時(shí)首先將深層特征進(jìn)行1×1卷積的降維操作,這會(huì)導(dǎo)致深層特征的語義信息丟失,上采樣后特征容易出現(xiàn)特征區(qū)域與網(wǎng)格預(yù)測(cè)區(qū)域不對(duì)齊問題,隨后直接與淺層通道進(jìn)行融合會(huì)產(chǎn)生大量的噪聲影響性能。特征對(duì)齊及選擇模塊(feature alignment and selection,F(xiàn)AS)取消上采樣前對(duì)深層特征的降維卷積,首先通過自編碼器AED[12]將深層特征f2在上采樣后進(jìn)行解碼得到對(duì)齊特征f′2, 其中自編碼器AED編碼、解碼器均由3層卷積層組成,大小分別為7×7、3×3、1×1;然后對(duì)融合特征進(jìn)行特征篩選,選擇模塊S首先將融合特征沿寬、高方向進(jìn)行平均池化,得到兩組1×1×C大小的特征通道,隨后依次經(jīng)過1×1卷積層、Relu激活層、相加操作,生成通道數(shù)不變的一組向量,F(xiàn)AS選用這組權(quán)重向量作為選擇因子,利用選擇因子與融合特征進(jìn)行點(diǎn)乘操作,得到新的具有空間特征的選擇信息,再與經(jīng)過3×3卷積的另一通道進(jìn)行相加操作,最后通過1×1卷積進(jìn)行通道降維,選擇模塊S在訓(xùn)練中通過不斷優(yōu)化選擇因子對(duì)感興趣的特征進(jìn)行選擇,從而增加對(duì)口罩、人臉的特征信息關(guān)注,篩選掉不重要通道進(jìn)入檢測(cè)通道,F(xiàn)AS網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
圖4 FAS結(jié)構(gòu)
相較其它算法僅對(duì)圖片口罩存在的是否進(jìn)行檢測(cè),本文算法重視對(duì)圖中口罩是否規(guī)范佩戴的檢測(cè),因此特征圖中口罩和人臉的特征排列相對(duì)位置尤為重要,設(shè)計(jì)模塊CTM來進(jìn)行特征上下文信息增強(qiáng)。CTM結(jié)構(gòu)如圖5所示,共有三層通道操作:第一層設(shè)置空洞卷積擴(kuò)大上下文尺度信息范圍,在保留原始信息特征分布的同時(shí)提取小范圍特征上下文信息,特征空洞因子設(shè)置為1,卷積大小為3×3;第二層將輸入特征進(jìn)行3×3的最大值池化,獲取局部關(guān)鍵上下文信息,隨后通過擴(kuò)展操作利用1×1卷積增加通道數(shù);第三層利用全局平均池化,可得到整張?zhí)卣鲌D譜的上下文信息分布情況,卷積操作與第二層相同;輸入特征經(jīng)過3層處理后融合,可使本層特征在進(jìn)入檢測(cè)通道前盡可能豐富上下文信息,通過上下文信息增強(qiáng)可以增加口罩與人臉特征的關(guān)聯(lián)性,進(jìn)一步提高口罩規(guī)范佩戴檢測(cè)的置信度。
圖5 CTM網(wǎng)絡(luò)
YOLO系列輕量級(jí)算法通常會(huì)在原有算法基礎(chǔ)上去掉最大的尺度,只保留兩個(gè)下采樣特征,用精度損失換來了速度快和設(shè)備性能要求低的優(yōu)點(diǎn)。針對(duì)本數(shù)據(jù)集密集人群中人臉、口罩檢測(cè)目標(biāo)像素占比較小,雙通道檢測(cè)頭可能會(huì)存在小目標(biāo)漏檢情況,因此本算法仍保留一層8倍下采樣特征層,組成3層不同大小的特征尺度經(jīng)過處理形成本算法的檢測(cè)頭部。
YOLO系列算法檢測(cè)頭均采用單通道同時(shí)處理對(duì)目標(biāo)分類、位置回歸的卷積預(yù)測(cè),但部分網(wǎng)格對(duì)口罩及人臉的分類正確率與回歸框預(yù)測(cè)正確率不匹配,因此采用解耦設(shè)計(jì)是對(duì)目標(biāo)分類、位置回歸分別進(jìn)行卷積計(jì)算,有效避免分類與位置回歸預(yù)測(cè)任務(wù)的沖突,從而提高了預(yù)測(cè)準(zhǔn)確率。受文獻(xiàn)[13]啟發(fā),本算法使用圖6中的解耦結(jié)構(gòu),首先將3層特征分別經(jīng)過1個(gè)1×1深度可分離卷積進(jìn)行降維,隨后分成兩個(gè)平行分支,分支內(nèi)都包括兩個(gè)3×3大小的卷積核,一平行分支負(fù)責(zé)類別分類,另一分支負(fù)責(zé)置信度回歸和預(yù)測(cè)框位置回歸,消融實(shí)驗(yàn)驗(yàn)證此解耦設(shè)計(jì)有效改進(jìn)了模型的檢測(cè)速度和精度性能。
圖6 Decouple head結(jié)構(gòu)
本文算法主要面向公共場(chǎng)所密集人群場(chǎng)景,算法所用數(shù)據(jù)集首先在遮擋人臉檢測(cè)數(shù)據(jù)集MAFA[14]、開源數(shù)據(jù)集AIZOO上抽取部分圖片,然后通過相機(jī)拍攝和網(wǎng)絡(luò)采集擴(kuò)充口罩圖片,共計(jì)5000張圖片。使用標(biāo)注工具對(duì)每張圖片中人臉口罩部分打上標(biāo)簽,保存為XML文件。數(shù)據(jù)集部分原始圖片樣本如圖7所示。
圖7 數(shù)據(jù)集圖片樣本
數(shù)據(jù)集圖片類別分為正確佩戴(c-mask)、錯(cuò)誤佩戴(i-mask)和未佩戴口罩(n-mask)這3類,實(shí)驗(yàn)中將佩戴口罩露出口、鼻或下巴視為錯(cuò)誤佩戴口罩情形,數(shù)據(jù)集中樣本目標(biāo)分布情況見表1。
表1 數(shù)據(jù)集中樣本分布情況
本文算法在Windows操作系統(tǒng)進(jìn)行模型訓(xùn)練與測(cè)試,使用PyTorch 框架,CPU為AMD Ryzen 5 4600H,GPU為NVIDIA GeForce GTX 1660Ti(6 GB),軟件環(huán)境為CUDA 10.2、CuDNN 7.6、Python 3.8。實(shí)驗(yàn)環(huán)境配置參數(shù)見表2。
表2 實(shí)驗(yàn)環(huán)境配置參數(shù)
目標(biāo)檢測(cè)領(lǐng)域中一般使用準(zhǔn)確率(A)、精確率(P)、召回率(R)、平均精確度(AP)和每秒幀率(FPS)等評(píng)價(jià)指標(biāo)。本文重點(diǎn)使用AP50(交并比取0.5時(shí)的AP)和FPS作為算法評(píng)價(jià)指標(biāo)。平均精確率均值(mAP)可通過計(jì)算各類的AP50平均值得到,各類AP計(jì)算公式如下
(1)
式中:r為數(shù)據(jù)集不同類別樣本的召回率;P(r)為召回率為r時(shí)的精確率。
AP一般通過計(jì)算精度召回曲線(PR曲線)下面積得到,統(tǒng)計(jì)數(shù)據(jù)集中每張圖片中這一類別的TP、FP、FN數(shù)目,從而得到該類別P和R指標(biāo)。本文mAP通過計(jì)算正確佩戴口罩、未佩戴口罩、錯(cuò)誤佩戴口罩3類AP50平均值得到,計(jì)算公式如下
(2)
算法主要針對(duì)提高模型檢測(cè)mAP和FPS進(jìn)行改進(jìn),其它評(píng)價(jià)指標(biāo)如模型參數(shù)量、計(jì)算量(GFLOPs)、模型大小(Size)也可作為算法性能比較指標(biāo),其中FPS即模型推理速度也從一定方面代表了模型參數(shù)量和計(jì)算量的大小。
表3 算法測(cè)試結(jié)果
改進(jìn)算法實(shí)驗(yàn)結(jié)果對(duì)比YOLOv3,3類mAP提升2.5%,但不規(guī)范佩戴口罩類別mAP提升8.4%,一方面是因?yàn)閅OLOv3算法檢測(cè)COCO數(shù)據(jù)集含有80類別,因此在特定規(guī)范佩戴口罩檢測(cè)任務(wù)上表現(xiàn)不佳,另一方面也印證了改進(jìn)算法的特征對(duì)齊及增強(qiáng)設(shè)計(jì)的有效性。改進(jìn)算法FPS較YOLOv3提升近5倍,由18 FPS提升至107 FPS,模型較YOLOv3計(jì)算量也降低了95%,模型大小僅為7.8 MB,實(shí)驗(yàn)測(cè)試結(jié)果部分樣本如圖8所示,圖左側(cè)改進(jìn)算法正確佩戴口罩、未規(guī)范佩戴口罩、未佩戴口罩分別用對(duì)應(yīng)檢測(cè)框(c-mask、i-mask、n-mask)標(biāo)出,與圖8右側(cè)原始YOLOv3算法測(cè)試結(jié)果對(duì)比可以看出,本文改進(jìn)算法對(duì)3類口罩檢測(cè)的置信度更高,對(duì)不規(guī)范佩戴口罩和不佩戴口罩檢測(cè)的區(qū)分度更好。此外與其它輕量級(jí)算法YOLOv3-Tiny、YOLOv4-Tiny和YOLOX-Tiny相比,mAP分別提高了5.6%、4.8%和2.7%,F(xiàn)PS也相應(yīng)提高了19%、13%和9%,計(jì)算量降低了63%、78%和28%,模型大小降低了77%、65%和80%。文獻(xiàn)[5]中的改進(jìn)YOLOv3算法只檢測(cè)輸入圖片中口罩的存在,未對(duì)人臉規(guī)范佩戴進(jìn)行檢測(cè),由于本文數(shù)據(jù)集來源與該算法相似,因此由算法測(cè)試結(jié)果對(duì)比,可以看出本文算法在精度和速度上都具有很大提升。實(shí)驗(yàn)結(jié)果表明,本文提出的公共場(chǎng)所密集人群場(chǎng)景下口罩規(guī)范佩戴檢測(cè)算法相較于其它算法,對(duì)于錯(cuò)誤佩戴類別檢測(cè)精度更高,在場(chǎng)景復(fù)雜、設(shè)備算力、空間資源受限且實(shí)時(shí)性要求高的公共場(chǎng)所檢測(cè)任務(wù)中,性能優(yōu)于其它流行檢測(cè)算法,更適用于公共場(chǎng)所口罩規(guī)范性佩戴檢測(cè)任務(wù)。
圖8 測(cè)試結(jié)果圖片樣本
2.4.1 DM-CSP消融實(shí)驗(yàn)
首先將YOLOv3算法的特征提取模塊DarkNet替換為改進(jìn)算法中使用的普通卷積CSPNet結(jié)構(gòu),隨后將網(wǎng)絡(luò)中卷積改為深度可分離卷積,最后添加注意力MCA形成本文改進(jìn)算法中使用的DM-CSP特征提取模塊。對(duì)YOLOv3算法結(jié)構(gòu)分別使用上述3種特征提取模塊,在本實(shí)驗(yàn)數(shù)據(jù)集上使用416 px×416 px大小的圖片進(jìn)行訓(xùn)練并測(cè)試,進(jìn)行對(duì)比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果見表4。
表4 DM-CSP模塊消融結(jié)果
2.4.2 特征融合實(shí)驗(yàn)
對(duì)特征融合模塊進(jìn)行消融實(shí)驗(yàn)分析,實(shí)驗(yàn)1使用DM-CSP特征提取模塊替換原始YOLOv3算法使用的DarkNet,融合階段僅將FPN上采樣與融合操作替換為FAS模塊完成;實(shí)驗(yàn)2使用DM-CSP替換DarkNet,然后在FPN輸出端后增加特征增強(qiáng)模塊CTM,對(duì)FPN融合到的特征進(jìn)一步增強(qiáng)上下文信息;實(shí)驗(yàn)3將實(shí)驗(yàn)1、2進(jìn)行整合,在實(shí)驗(yàn)1的基礎(chǔ)上使用CTM模塊;實(shí)驗(yàn)4在實(shí)驗(yàn)3的基礎(chǔ)上采用通道解耦替換原始檢測(cè)頭通道,對(duì)CTM增強(qiáng)的特征分別進(jìn)行位置回歸和類別分類卷積運(yùn)算,實(shí)驗(yàn)結(jié)果見表5。
表5 融合模塊消融結(jié)果
表5可以看出,實(shí)驗(yàn)1結(jié)果中mAP在DM-CSP提取特征基礎(chǔ)上增加了2.1%,驗(yàn)證了增加FAS機(jī)制能夠緩解特征丟失及上采樣融合造成的不對(duì)齊問題,改善了算法的特征篩選功能,驗(yàn)證了FAS設(shè)計(jì)的有效性,但FPS也減少了7,推測(cè)為深層通道在篩選模塊前而不是上采樣階段進(jìn)行降維操作,導(dǎo)致自編碼器中的卷積操作增大了模型計(jì)算量,從而減緩?fù)评硭俣龋粚?shí)驗(yàn)2結(jié)果中mAP在DM-CSP基礎(chǔ)上增加了1.4%,驗(yàn)證了在特征融合階段對(duì)上下文信息進(jìn)行增強(qiáng)是很有必要的,這會(huì)大幅提高特征間的關(guān)聯(lián)性,擴(kuò)大了模型的感受信息,提高特征的一致性,結(jié)果中FPS略微下降,主要是因?yàn)榇四K較多采用1×1的卷積操作,計(jì)算量增加不多;實(shí)驗(yàn)3結(jié)果印證了FAS模塊和CTM模塊可以有效地結(jié)合使用,表明經(jīng)過特征對(duì)齊、篩選后特征更適合進(jìn)行上下文信息的捕捉;實(shí)驗(yàn)4結(jié)果中驗(yàn)證了解耦設(shè)計(jì)較原始檢測(cè)頭的合并卷積結(jié)構(gòu)能夠提高準(zhǔn)確率,并且加快模型推理速度,驗(yàn)證了檢測(cè)頭解耦設(shè)計(jì)對(duì)YOLO結(jié)構(gòu)改善的有效性,最終改進(jìn)算法在DM-CSP骨干網(wǎng)絡(luò)上,結(jié)合FAS、CTM特征融合模塊,采用解耦通道進(jìn)行實(shí)驗(yàn),提高了3.9%的檢測(cè)精度,推理速度變?yōu)?07 FPS。
2.4.3 注意力對(duì)比實(shí)驗(yàn)
為了驗(yàn)證注意力MCA的有效性,將MCA添加在多個(gè)主流通用模型的特征融合模塊中,在本文使用的口罩?jǐn)?shù)據(jù)集上進(jìn)行訓(xùn)練、測(cè)試,隨后將MCA替換為通用注意力SE、CA模塊進(jìn)行對(duì)比實(shí)驗(yàn),對(duì)比結(jié)果見表6。YOLOv3由于骨干提取網(wǎng)絡(luò)參數(shù)太多,因此可以看出在融合網(wǎng)絡(luò)FPN添加各注意力模塊精度提升效果不顯著。對(duì)于YOLOv3-Tiny、YOLOv4-Tiny和YOLOX-Tiny算法,在融合網(wǎng)絡(luò)PaNet和骨干提取網(wǎng)絡(luò)之中添加各注意力模塊,精度都取得了不錯(cuò)的提升效果,MCA對(duì)比其它注意力模塊提升效果更好,分別取得了1.6%、1.2%、0.7的精度提升,驗(yàn)證了通過膨脹卷積加大輸入感受野可以更好加強(qiáng)注意力效果。
表6 添加注意力效果對(duì)比
2.4.4 公開數(shù)據(jù)集實(shí)驗(yàn)
將公開數(shù)據(jù)集PASCAL VOC2007和VOC2012合并進(jìn)行訓(xùn)練,在VOC2007數(shù)據(jù)集進(jìn)行測(cè)試,實(shí)驗(yàn)結(jié)果如圖9所示。本文算法在VOC數(shù)據(jù)集中取得了AP50為75.4%的精度結(jié)果,相比YOLOv3和YOLOv4的輕量級(jí)算法,提升了4.2%和2.1%,充分驗(yàn)證了本文改進(jìn)算法的通用性。
圖9 VOC數(shù)據(jù)集測(cè)試結(jié)果
本文從改進(jìn)特征融合角度出發(fā),提出一種口罩規(guī)范佩戴檢測(cè)的單階段算法。對(duì)網(wǎng)絡(luò)進(jìn)行骨干提取輕量化時(shí),擴(kuò)大注意力感受野可以進(jìn)一步提高性能。針對(duì)特征不對(duì)齊和上下文信息關(guān)聯(lián)性低進(jìn)行改進(jìn),是提升檢測(cè)精度的一個(gè)可行方向。改進(jìn)特征融合算法性能優(yōu)于其它輕量級(jí)檢測(cè)算法,利于口罩檢測(cè)場(chǎng)景的部署和應(yīng)用。針對(duì)FAS影響推理速度進(jìn)行改進(jìn),是我們重點(diǎn)推進(jìn)的后續(xù)工作,同時(shí)考慮到數(shù)據(jù)采集、標(biāo)注繁瑣,結(jié)合半監(jiān)督學(xué)習(xí)進(jìn)行數(shù)據(jù)增強(qiáng)也是我們推進(jìn)的后續(xù)工作。