程浩然,王薪陶,李俊燃,郭子怡,劉 維
吉林大學 通信工程學院,長春 130012
在新冠疫情在全世界范圍內(nèi)大肆傳播,嚴重影響人們的生活和工作的當下,疫情防控工作執(zhí)行的有效性和快速性顯得尤為重要。隨著我國新冠疫情防控進入了常態(tài)化階段,部分公民的防護意識有所松懈,出現(xiàn)了在公共場合不規(guī)范佩戴口罩或者不佩戴口罩的問題。如何在公共場合合理管控監(jiān)督公民佩戴口罩,是防止疫情傳播的重要一環(huán)。對于此問題,多數(shù)地區(qū)經(jīng)常采用人工檢測的方式,效率低且覆蓋率低,同時還增加了檢測者與行人的接觸。因此,利用計算機視覺學習設(shè)計人臉口罩規(guī)范佩戴儀器以替代人力檢測具有重要的研究價值。由于在近年來目標人群監(jiān)測技術(shù)領(lǐng)域中大量算法應(yīng)用的頻繁出現(xiàn),人們已經(jīng)能夠?qū)崿F(xiàn)通過算法來搭配電腦顯示器和攝像頭來進行對體溫測量和對口罩的佩戴進行實時、高精度的遠程自動檢測。
如今基于Deep Learning 的目標檢測算法有很多種,其中有以YOLO系列為代表的one-stage目標檢測算法,例如YOLOv3-tiny、YOLOv4 和SSD[1]等等,單階段檢測算法針對圖像中目標的分類和位置信息等直接利用卷積神經(jīng)網(wǎng)絡(luò)進行預測[2],可以快速檢測出結(jié)果,符合測試實時性規(guī)定,但其測試結(jié)果準確度還有待進一步的提升。還有以R-CNN[3]系列為代表的two-stage 目標檢測算法,例如Fast R-CNN[4]、Faster R-CNN[5]算法等,先提取出目標框,再進行分析預測,可以提高檢測精度,但檢測速度相對較慢。YOLO 算法作為第一個單階段算法最早是在2015 年被Redmon 等人首次提到,之后,基于YOLO 算法Redmon 等人同時又首先給出了基于YOLOv2[6]算子,設(shè)計制作出Darknet-19[7]的一種新型的基礎(chǔ)網(wǎng)絡(luò),YOLOv3方式[8]是一種由Redmon等人所共同創(chuàng)建出的最后的一個版本的YOLO方式。由于YOLOv3的信息的高度融合類型使低級信息不能進行很好的使用,在工業(yè)應(yīng)用領(lǐng)域存在限制。于是,YOLOv4算法又被Bochkovskiy 等人[9]提出。后來出現(xiàn)了基于YOLOv4 改進的YOLOv4-tiny算法,屬于輕量級算法,參數(shù)只有原來的十分之一,這使檢測速度大大提升,使用兩個特征層,合并有效特征層時使用特征金字塔結(jié)構(gòu),性能優(yōu)勢顯著。最近幾年,隨著目標檢測的深入應(yīng)用,人們不斷提出了許多新的模塊并逐步加入到Y(jié)OLOv4 及其輕量級算法當中,從而在增加少量成本的基礎(chǔ)上提高目標檢測的精度。如,孔維剛等人[10]將YOLOv4的CSPDarknet53改為MobileNetv3-large 網(wǎng)絡(luò)結(jié)構(gòu),提高了檢測的實時性。王長青等人[11]基于YOLOv4-tiny 提出一種自適應(yīng)非極大抑制的多尺度檢測方法,對遮擋目標的檢測能力有顯著提升。
本文旨在提高公共場所大規(guī)模人群下實時人臉口罩佩戴檢測的實時性與精確性。目前,已有很多學者研究人臉口罩佩戴檢測算法。牛作東等人[12]基于RetinaFace人臉識別算法引入注意力機制,優(yōu)化損失函數(shù),實現(xiàn)人臉口罩佩戴檢測。但是檢測速度仍有所欠缺,很難滿足口罩檢測任務(wù)的實時性。鄧黃瀟等人[13]通過RetinaNet網(wǎng)絡(luò)和遷移學習對佩戴口罩的人臉進行識別判別。王藝皓等人[14]在YOLO 算法中引入改進的空間金字塔池化結(jié)構(gòu)和CIou 損失函數(shù)提升佩戴口罩目標的檢測精度,不過檢測速度依舊不理想且數(shù)據(jù)集背景相對較單一。
以上算法雖然實現(xiàn)了對輕量化算法精度的改進,但對在復雜場景中對流動的人群進行實時口罩佩戴的檢測,仍在檢測速度存在提升的必要。本文針對這個問題,提出基于YOLOv4-tiny 改進的目標檢測算法,主要的改進包括以下三個方面:
(1)以YOLOv4-tiny 模型為基礎(chǔ),將YOLOv4-tiny中的CSP模塊用兩個ResBlock-D[15]來代替,降低了計算復雜度從而進一步提高檢測速度。
(2)在用ResBlock-D改進主干提取網(wǎng)絡(luò)的YOLOv4-tiny 基礎(chǔ)上進行模型優(yōu)化,引入SPP 模塊進行特征層的多尺度池化和融合,增加感受野,提高檢測的精度。
(3)插入新的注意力檢測機制CA[16],更好地進行目標定位來提高檢測精度。
YOLOv4-tiny 算法是在YOLOv4 的基礎(chǔ)上提出的一種輕量化目標檢測模型,檢測速度更快,檢測準確度略有下降,但速度優(yōu)勢明顯,降低了對硬件的要求,可以在一些可移動設(shè)備或者嵌入式系統(tǒng)中使用目標檢測方法,并實現(xiàn)檢測的實時性。
在主干部分,算法使用CSPDarknet53-tiny網(wǎng)絡(luò)代替了原YOLOv4 的CSPDarknet53 網(wǎng)絡(luò)。YOLOv4-tiny 網(wǎng)絡(luò)結(jié)構(gòu)圖如圖1 所示。其中,殘差模塊CSP 由CSPNet構(gòu)成,CBL模塊中還結(jié)合應(yīng)用了卷積處理層Conv、歸一化處理層BN,以及激活函數(shù)層Leaky 和Relu。結(jié)構(gòu)中的主要部分進行了殘差塊的堆積,其他部分跨一大階段層次連接到FPN 結(jié)構(gòu)中后再和主干部分結(jié)合,最后,通過上采樣實現(xiàn)特征融合,將圖像劃分為20×20 和40×40兩種大小的特征圖,實現(xiàn)對不同大小目標的檢測。

圖1 YOLOv4-tiny主干網(wǎng)絡(luò)圖Fig.1 YOLOv4-tiny backbone network diagram
在特征圖融合部分,YOLOv4-tiny算法還采用了特征金字塔網(wǎng)絡(luò)FPN(即YOLOv4-tiny_Neck)算法來分別獲得了20×20和40×40兩個尺度上的目標特征圖,大大地提高了目標的檢測融合速度;在激活函數(shù)的選擇問題上,為了能提高檢測的速度,把YOLOv 四網(wǎng)絡(luò)中的Mish激活函數(shù)換作Leaky Relu函數(shù),如公式(1)所示:
其中,t代表神經(jīng)元輸入,f(t)代表神經(jīng)元輸出,α是非零函數(shù)參數(shù)。當t是負值時,LeakyRelu 會有一個輕微的傾斜,以防止函數(shù)進入負半?yún)^(qū)時神經(jīng)元失活,避免了稀疏問題的產(chǎn)生[17]。
最后YOLOv4會輸出3個YOLO Head,而YOLOV4-tiny會輸出2個YOLO Head(圖1)。
1.2.1 特征輸出
在本實驗中,輸入圖像的大小為(640,640),通道數(shù)為3,則兩個特征層的大小分別為(640/16,640/16)、(640/32,640/32),輸出的通道數(shù)不變。
1.2.2 損失計算-GIOU函數(shù)
在輸出端,利用廣義交并比(generalized intersection over union,GIoU)作為損失函數(shù),其示意圖如圖2所示。

圖2 廣義交并比定義圖Fig.2 Generalized intersection and union ratio definition diagram
GIoU和損失函數(shù)GIoU_Loss[18]定義如公式(2)、(3)所示:
其中,b與bgt分別表示預測框與真實框的中心點,v代表衡量兩框尺度大小比例一致性的參數(shù),γ是用來平衡比例的權(quán)重系數(shù),不參與梯度計算。如公式(4)、(5)所示:
可見,計算GIoU_Loss的方法其實就是計算GIoU,只不過最終結(jié)果返回1-GIoU。這是因為1-GIoU 的取值范圍在[0,2],且有一定的“距離”性質(zhì),即A、B兩框重疊區(qū)域越大,損失越小,反之越大。GIoU_Loss 綜合考慮了真實框與預測框之間的重疊率、長寬比例、中心點的距離,使得目標在回歸過程中更加穩(wěn)定,收斂精度更高。
2.1.1 Resblock-D模塊
Resblock-D模塊構(gòu)成如圖3所示。

圖3 Resblock-D模塊結(jié)構(gòu)圖Fig.3 Resblock-D module structure diagram
ResBlock-D是由兩條路徑連接而成,一條路徑分別經(jīng)過三個1×1、3×3、1×1的卷積層,另一條路徑經(jīng)過平均池化后再經(jīng)過1×1的卷積層,最后將兩條路徑的結(jié)果拼接即可得到ResBlock-D模塊的輸出。相比于改進前的結(jié)構(gòu)而言,刪減了各個卷積層后的激活函數(shù),簡化了模型的結(jié)構(gòu)。
假設(shè)輸入尺寸為100×100的圖像,通道數(shù)為64。通過計算FLOPs的值比較ResBlock-D模塊和CSP模塊的性能。如公式(6)所示:
其中,D為所有卷積層之和,為第l個卷積層的輸出特征的映射大小,為核大小的個數(shù),Cl-1和Cl分別為輸入和輸出通道的個數(shù)。
CSPBlock的FLOPs為:
通過對比二者的計算復雜度可以發(fā)現(xiàn),改進后的ResBlock-D 模塊相比于傳統(tǒng)CSP 模塊的計算復雜度減少了10倍左右,可以得到CSPBlock和ResBlock-D的計算復雜度比率約為10∶1,有著比CSP更快的檢測速度。同時,通過對比CSPBlock 和ResBlock-D 的模塊結(jié)構(gòu)可知,ResBlock-D的模塊結(jié)構(gòu)中對各個卷積層的維度進行了一定程度的縮減,減少了CSPBlock 中逐層經(jīng)過激活函數(shù)的運算,簡化了模塊的結(jié)構(gòu),而且ResBlock-D中加入了CSPBlock 中所沒有的平均池化層,能夠減小因為鄰域大小受限而造成的估計值方差增大,更多地保留圖像的背景信息。經(jīng)過上述分析可知,引入ResBlock-D可有效地提高檢測速度,且一定程度上保留圖像信息。
2.1.2 輔助殘差網(wǎng)絡(luò)模塊
ResBlock-D模塊雖然提升了檢測速度,但不利于檢測精度。基于此,輔助殘差網(wǎng)絡(luò)模塊(Auxiliary Network Block)能夠很好地改善精度問題。模塊利用3×3 的卷積網(wǎng)絡(luò)獲得5×5 的感受野,從而提取全局特征,引用通道注意力(Channel Attention)和空間注意力(Spatial Attention)[19],來提取更多的物體特征信息,能夠更精確地識別檢測對象。其結(jié)構(gòu)如圖4所示。

圖4 Auxiliary Network Block結(jié)構(gòu)圖Fig.4 Auxiliary Network Block structure diagram
由圖可以發(fā)現(xiàn),Auxiliary Network Block的輸出特征是第一個卷積網(wǎng)絡(luò)和空間注意力機制的輸出特征的一個組合。
最后將Auxiliary Network Block的輸出與Backbone網(wǎng)絡(luò)輸出合并,從而在保證精度的前提下提高了目標檢測速度,優(yōu)化了系統(tǒng)性能。
研究表明,通道注意力對于提升模型識別精度起著重要的作用。本實驗的Auxiliary Network Block 模塊中也引入了通道注意力和空間注意力機制。但是通道注意力的使用通常會導致算法忽略對于生成Attention Maps的很重要的位置信息。于是引入一種能將位置信息嵌入通道注意力的移動網(wǎng)絡(luò)注意力機制CA(coordinate attention block)。
CA模塊的作用在于增強特征在移動網(wǎng)絡(luò)中的表達能力,它將網(wǎng)絡(luò)中任意特征張量X=[x1,x2,…,xc]∈RH×W×C進行轉(zhuǎn)化,輸出與X相同尺寸的特征增強的張量Y,即:Y=[y1,y2,…,yc]∈RH×W×C。
CA包括Coordinate信息嵌入和Coordinate Attention生成兩部分,其模型框圖如圖5所示。

圖5 CA模塊結(jié)構(gòu)圖Fig.5 CA Structure diagram
CA將輸入特征圖分為高度和寬度兩個方向進行全局平均池化,高度為h的第c通道輸出和寬度為w的第c通道輸出分別表示為公式(7)、(8):
這會使CA捕捉到沿著一個空間方向的長期依賴關(guān)系,并保存著沿著另一空間方向的精確位置信息,從而使目標的定位更加精確。
接著將獲得的寬度和高度兩個方向的特征圖拼接在一起后送入共享的1×1卷積模塊,降低維度到之前的C/r,把進行了批量歸一化編碼處理后得到的中間特征圖F中,輸入Sigmoid激活函數(shù)即可獲得在垂直方向上和水平方向上的空間信息,可以進行編碼處理的一個在中間的特征圖映射,如公式(9)所示:
將f按照原來的高度和寬度進行1×1 卷積將其變換為具有相同通道數(shù)的張量輸入到X,得到特征圖在高度和寬度上的注意力權(quán)重gh和在寬度方向的注意力權(quán)重gw,如公式(10)、公式(11)所示:
最后通過加權(quán)計算得到CA模塊的輸出,如公式(12)所示:
將本文引入的CA 注意力機制與典型注意力機制(以CBAM[20]為例)進行比較。CBAM 對通道注意力機制和空間注意力機制進行了相應(yīng)結(jié)合。對于特征層輸入,分別進行通道機制處理和空間機制處理,獲得相應(yīng)的通道權(quán)值和空間特征點權(quán)值,分別乘入上元輸入特征層中。而CA注意力機制把更多關(guān)注重心放在了通道注意力位置信息的嵌入上。利用精確的空間位置信號來對通道關(guān)系和長期依賴性特征實現(xiàn)編碼,通過將二維全池局操作分解為兩個一維編碼過程,增強了關(guān)注對象的表示。相比于CBAM,注意機制CA具有更好的全局感受野,目標定位能力和遷移能力。是一種捕獲位置信息和通道關(guān)系都更有實際效果的方法,能夠增強移動網(wǎng)絡(luò)中的特征,從而提高識別的精度。
為了避免在卷積層后使用扭曲或剪裁等方法來滿足分類器層(即全連接層)的固定輸入尺寸從而導致算法丟失掉重要信息。在卷積層和全連接層之間引入SPP模塊,可通過把局部特性層映射至多個不同的維度空間,從而通過對所有它們進行池化和融合,來獲得一個固定長度的輸出[21],提高了局部特性層對目標信息的表達能力,提高了人臉識別精度。
如圖6所示,首先將輸入特征層進行多層卷積核處理,處理后進入SPP結(jié)構(gòu),使用三個尺度分別為3×3、7×7、11×11 的池化層結(jié)構(gòu)進行Maxpool 處理,通過對尺度的調(diào)整可以產(chǎn)生任意尺寸的輸出,使用靈活。然后把最開始的輸入和經(jīng)過Maxpool 數(shù)據(jù)處理后獲得的產(chǎn)出在通道層次上加以堆疊,然后再經(jīng)過下一次的三層卷積處理,輸出結(jié)果。SPP 模塊明顯地增加了對網(wǎng)絡(luò)的感受野,使網(wǎng)絡(luò)可以滿足作為一個任意尺寸的影像的輸入,并可以形成一個指定的尺寸影像的輸出,對物體的扭曲也具有了較好程度的魯棒性,更全面有效地提取到了網(wǎng)絡(luò)特征層的信息,學習了多尺度目標的特征。

圖6 改進后的YOLOv4-tiny-ResBlockD-SPP-2CA算法網(wǎng)絡(luò)圖Fig.6 Improved YOLOv4-tiny-ResBlockD-SPP-2CA algorithm network diagram
本文在原始YOLOv4-tiny的基礎(chǔ)上,將CSP模塊改進為Resblock-D模塊并加入輔助殘差網(wǎng)絡(luò)模塊,通過縮短計算復雜度、擴大感受野,使算法在確保檢測準確度高的前提下又加快了檢測的速度,優(yōu)化提高了整個系統(tǒng)性能;引入能將位置信息嵌入通道注意力的移動網(wǎng)絡(luò)注意力機制CA,以便于更高效準確地快速捕獲位置信息及其通道信息之間存在的關(guān)聯(lián)、增強在移動通信網(wǎng)絡(luò)環(huán)境中的識別特征,提升到了人臉的識別的精度;添加空間金字塔池化的SPP模塊,完成了局部人臉特征圖與全局人臉特征圖的完美融合,從而進一步完善了深層特征圖中的表達能力與空間信息,在提高人臉目標的檢測識別精度方面提升很大。
此外,可以在空間金字塔池化模塊SPP之后加入兩個1×1的卷積模塊,從而進一步減少了參數(shù)量以及計算量,縮短了算法運行時間。如圖6所示為改進YOLOv4-tiny算法的口罩佩戴識別網(wǎng)絡(luò)結(jié)構(gòu)。
為訓練和評估所提出的改進的YOLOv4-tiny模型,本實驗訓練使用Linux系統(tǒng),采用深度學習框架Pytorch,訓練環(huán)境為E52680 v32080Ti,測試環(huán)境為NVIDIA GeForce GTX 16504G GPU。
為了驗證模型在速度上的提升和精度上的準確性,本實驗采取了YOLOv4、YOLOv4-tiny 以及改進型YOLOv4-tiny的對比分析。為了實驗的公平性,本次實驗使用的口罩佩戴人群圖片均為公開的開源口罩識別數(shù)據(jù)集,對骨干網(wǎng)絡(luò)的參數(shù)進行初始化,獲得更好的模型初始性能。設(shè)置訓練300個Epoch,共計22×300次迭代;batch_size 大小為64。初始學習率為0.001,學習率調(diào)整策略為余弦衰退策略,權(quán)重衰減為0.000 5;輸入圖像尺寸均歸一化為640×640,均不采取預訓練模型。
3.2.1 概述
本實驗使用的口罩佩戴人群圖片均為公開的開源口罩識別數(shù)據(jù)集,本數(shù)據(jù)集共包含1 940張圖片,且已通過Labelimg 工具對圖片進行標注,共包含兩類目標:佩戴口罩(people_mask)和未佩戴口罩(people),圖片覆蓋不同職業(yè)人員、環(huán)境和尺度的情況,較貼近地擬合實際日常生活中不同場所的人群場景。在實驗中,數(shù)據(jù)集按照7∶3的比例劃分為訓練集和驗證集,其中訓練集圖片1 358張,驗證集圖片582張;同時,分別新增測試集500張圖片和300 張圖片,該數(shù)據(jù)集均為公開的開源數(shù)據(jù)集,且與訓練集不屬于同一數(shù)據(jù)集。
3.2.2 Mosaic數(shù)據(jù)增強
除使用了傳統(tǒng)方法的圖像進行隨機的剪接、翻轉(zhuǎn)、壓縮、色域的轉(zhuǎn)換、加入隨機的噪聲處理之外,本文中還應(yīng)用到了馬賽克數(shù)據(jù)的增強方法。對已準備處理好的數(shù)據(jù)集進行Mosaic增強數(shù)據(jù)預處理。Mosaic圖像增強技術(shù)是指把四張圖像分別進行了隨機形式的剪輯,拼接后增加進數(shù)據(jù)集中,由此就完成了圖像融合。其最大優(yōu)點之一是豐富了照片中的背景,擴大了數(shù)據(jù)集,且將四張照片拼接在一起也從另一個角度上增加了batch_size,進而提高了訓練性能。在處理過程中。每次對四張圖片進行旋轉(zhuǎn)、放縮以及顏色等方面的調(diào)整,并且按照四個方向位置進行圖片和框的組合。處理后結(jié)果如圖7所示。

圖7 對部分樣本進行Mosaic數(shù)據(jù)增強Fig.7 Mosaic data augmentation for some samples
本實驗訓練網(wǎng)絡(luò)采用的性能評價指標主要為mAP(mean average precision)、準確率(Precision,P)和召回率(Recall,R)[22],其計算公式如公式(13)~(15):
其中,將被正確識別的正類目標個數(shù)采用TP來表示,被正確識別的負類個數(shù)采用TN表示,被錯誤識別的負類目標個數(shù)采用FP表示,AP是目標測量精度的加權(quán)平均精度。本文主要采用IOU 閾值為0.5 時的mAP 值來進行評估,即mAP@0.5。運算的速率方面采用了每秒的傳輸幀節(jié)數(shù)(frame per second,F(xiàn)PS)作為衡量指標。
3.4.1 算法改進的實驗過程
采用輕量化網(wǎng)絡(luò)以及對其進行進一步改進是提高單目標檢測算法YOLOv4 性能的常用方法。為了完成對比實驗,本文首先以YOLOv4、YOLOv4-tiny 對目標進行識別檢測。后為進一步提高檢測速度,實驗以YOLOv4-tiny模型為基礎(chǔ),對模型主干提取網(wǎng)絡(luò)進行改進,將YOLOv4-tiny中的CSP模塊用兩個ResBlock-D來代替,降低主干特征提取網(wǎng)絡(luò)復雜度,減少運行時間。通過對比改進前后的特征提取網(wǎng)絡(luò)的結(jié)構(gòu)參數(shù)和即可知,替換后的模型的FLOP 相比于改進前大幅下降,且改進后的特征提取網(wǎng)絡(luò)結(jié)構(gòu)存在一定程度的刪減,其參數(shù)量與改進前相比也是降低了一個數(shù)量級,這意味著ResBlock-D的計算復雜度遠小于CSPBlock。但基于ResBlockD 的YOLOv4-tiny 模型的檢測精度卻有所下降。為了進一步改進模型性能,減少降低計算復雜度對檢測精度帶來的影響,提高檢測精度,對算法做出以下兩點改進:(1)加入空間金字塔池化(SPP)。加入SPP是因為小物體在神經(jīng)網(wǎng)絡(luò)深處,即深層特征圖上的信息很少,且由于深層特征圖的分辨率很小,所以小物體的信息容易丟失。通過引入SPP結(jié)構(gòu),利用不同感受野的池化層,獲取物體不同范圍的局部特征信息,最后通過金字塔池化將多個局部特征信息融合后,可以豐富物體的空間信息。(2)引入新的注意力機制。為更好地選擇適合該算法模型的注意力機制,實驗引入了CBAM機制、一層CA 機制和兩層CA 機制的改進模型對比實驗。CA機制是一種全新的注意力機制,加入CA機制是為了提高算法的資源利用率,為不同的特征像素增加坐標權(quán)重,而權(quán)重即代表特征像素為目標物體的可能性,權(quán)值越大,即代表特征像素為目標物體的可能性也就越大,一定程度上降低了背景像素的干擾。且CA機制位置信息權(quán)值嵌入編碼的過程本身不發(fā)生重疊,可重復進行引入。總體而言,為實現(xiàn)進一步提高檢測速度的同時保證檢測精度,本實驗的基本思路為基于YOLOv4-tiny 模型,首先為了提高檢測速度而引入主干網(wǎng)絡(luò)更為簡潔的ResBlockD結(jié)構(gòu),接著為了增加深層特征圖上小目標的信息引入SPP模塊,最后引入CA機制以提高算法利用率。
對改進過程中不同階段模型統(tǒng)一初始化開始訓練,隨著epoch不斷增加,Loss損失值在不斷降低,訓練進行到160輪后,Loss值趨于穩(wěn)定。未出現(xiàn)明顯過擬合、欠擬合的現(xiàn)象,參數(shù)設(shè)置合理。改變初始參數(shù)設(shè)置(batchsize等)重復訓練,結(jié)果會發(fā)生波動但總體趨勢未發(fā)生變化,可進行同向比較,說明實驗對初始值的依賴性不高,改進算法具備合理性。實驗最終確定基于ResBlock-D、SPP 和兩個CA 機制的YOLOv4-tiny 為最終的改進模型。對改進后的算法進行性能分析。
3.4.2 改進算法的檢測精度的分析
對改進過程中不同階段算法的檢測精度指標進行分析,在實驗選取的開源口罩識別數(shù)據(jù)集上對比結(jié)果如表1所示。

表1 不同階段算法的檢測精度對比Table 1 Comparison of detection accuracy of algorithms in different stages
由表1 可以看出,YOLOv4-tiny 的召回率為93.6%,預測率為86.08%,mAP 值為93.5%,相比于YOLOv4,YOLOv4-tiny在召回率和精準率上均有一定程度下降,mAP值下降了1.9個百分點。檢測精度下降的重要原因是YOLOv4-tiny的CSPDarknet-tiny結(jié)構(gòu)與CSPDarknet53相比刪減了一定的網(wǎng)絡(luò)結(jié)構(gòu),YOLOv4-tiny由于結(jié)構(gòu)上的簡化,在檢測精度上會有一定程度的減小。YOLOv4-tiny-ResBlockD是以YOLOv4-tiny模型為基礎(chǔ)的改進模型。其在模型主干提取網(wǎng)絡(luò)部分進行改進,使用ResNet-D網(wǎng)絡(luò)中的兩個ResBlock-D模塊代替CSPBlock模塊,減少了網(wǎng)絡(luò)計算的復雜性,并且還設(shè)計出了另外二個相同的Residual Network Blocks 來作為輔助殘差塊,并將其添加到ResBlock-D 模塊中以保證精度。優(yōu)化結(jié)果顯示,相比于YOLOv4-tiny,基于ResBlock-D的YOLOv4-tiny 改進算法仍在識別精度上出現(xiàn)了一定程度下降,mAP下降了0.8個百分點。實驗結(jié)果表明,YOLOv4-tiny模型、基于ResBlock-D的YOLOv4-tiny改進模型是以降低檢測精度為代價來換取更快的檢測速度。
在增加空間金字塔池化(SPP)的過程中。實驗數(shù)據(jù)顯示,引入SPP對提高檢測精度有正影響,引SPP后,新改進模型的預測率(82.77%)和mAP 值(92.9%)有了少量提升。這是由于空間金字塔池化(SPP)解決了輸入的圖片大小不同造成的缺陷,同時由于從多方面進行特征提取,豐富了物體的空間信息,在一定程度上增加了目標檢測的精度。對于新引入的注意力機制,為了更好地比較并選擇適合該算法模型的注意力機制,進行了注意力機制對比實驗,結(jié)果如表2 所示。數(shù)據(jù)顯示,相比于典型的CBAM 和引入一層CA,引入兩層CA 注意力機制的改進型輕量級算法其檢測精度都更高,召回率達到了93.92%,預測率達到了88.28%,mAP 達到了94.0%。這是由于典型的CBAM 混合注意力機制重點在于通道注意力機制和空間注意力機制的結(jié)合,而“Coordinate Attention”(CA)是一個比較新穎獨特的移動網(wǎng)絡(luò)注意力機制,它把更多關(guān)注重心放在了通道注意力位置信息的嵌入上。利用精確的空間位置信號來對通道關(guān)系和長期依賴性特征實現(xiàn)編碼,把通道注意力劃分成二條一維特征編碼進程并依次地沿著這兩個特定空間方向進行聚合特征,以增強關(guān)注對象的表示,提高算法的資源利用率,從而達到提高目標檢測精度的目的,引入兩層CA機制進一步提高了精度性能。

表2 注意力機制對比實驗Table 2 Attention mechanism comparison experiment
實驗結(jié)果所示,最終確定的基于ResBlock-D、SPP和兩個CA 機制的YOLOv4-tiny 改進算法,檢測精度較YOLOv4-tiny 及其他改進算法相比還要略微提高,其mAP 值可達到94.0%,相比于YOLOv4-tiny,mAP 值提高了0.5個百分點。改進算法的網(wǎng)絡(luò)參數(shù)規(guī)模為596.82萬,較YOLOv4-tiny 增加了9.18 萬,有少量增長。可認為,經(jīng)過改進后的模型在復雜度上相比于YOLOv4-tiny不存在較大的增幅,同時又一定程度上提高了檢測精度。而參數(shù)量相比于傳統(tǒng)YOLOv4 而言又有較大幅度的減小,極大程度地降低了模型的復雜度,提升了算法的檢測速度。從網(wǎng)絡(luò)整體參數(shù)規(guī)模上看,通過比較改進后的模型、YOLOv4 以及YOLOv4-tiny 可發(fā)現(xiàn),改進后的模型在檢測精度上相比于YOLOv4-tiny 有進一步提升且參數(shù)量僅存在微小的增加,而改進后的模型復雜度相比于YOLOv4卻有大幅的下降,故其在綜合檢測性能中更具優(yōu)勢。
將不同算法下的mAP值隨著算法迭代次數(shù)的逐漸增長進行可視化處理后得到如圖8所示。

圖8 不同算法的mAP變化曲線Fig.8 mAP curve of different algorithms
通過變化曲線可觀察得到,隨著迭代次數(shù)的增加YOLOv4 的mAP 在不同迭代中都較另外兩種算法更高,而改進型的YOLOv4介于YOLOv4和YOLOv4-tiny之間,與實驗預期的精度提升相符,同時也更加直觀地說明了改進型YOLOv4-tiny 相比YOLOv4-tiny 在精度上的提升。
如圖9 所示,P-R 曲線下的面積即為平均精確度(mAP),通過分析三種算法的P-R 曲線可以看出,YOLOv4的P-R曲線所包圍的面積最大,其mAP值更高,精度更高,與實際檢測結(jié)果相和理論相符。YOLOv4-tiny-ResBlockD-SPP-2CA 的P-R 曲線包圍的面積較YOLOv4-tiny 更大,但相比YOLOv4 而言略有減小,其mAP值介于二者之間,從該角度也可看出:本實驗改進后的YOLOv4-tiny-ResBlockD-SPP-2CA 的平均精確度比YOLOv4-tiny的要高,達到實驗中所要求的提高檢測精度的預期要求。

圖9 不同算法的P-R曲線對比Fig.9 Comparison of P-R curves of different algorithms
3.4.3 改進算法的檢測速度的分析
對不同算法的檢測速度進行對比分析,如表3所示。

表3 不同階段算法的檢測時間對比Table 3 Comparison of detection time of algorithms in different stages
由表可知,YOLOv4-tiny 的FPS 為17.586 5 幀/s,相比于YOLOv4提升了5.01倍,檢測速度較YOLOv4有了顯著提升,主要原因就是,YOLOv4-tiny 通過特征金字塔網(wǎng)絡(luò)收集了不同維度的目標變量,而不是采用傳統(tǒng)YOLOv 四方法中所使用的路徑聚合方式,從而增加了目標的效率且YOLOv4-tiny 的目標參量僅達到了587.64 萬,遠小于YOLOv4 的6 394.3 萬的參數(shù)量,結(jié)構(gòu)大幅簡化。可以看出,YOLOv4-tiny模型有更迅速的檢測速度,模型可以在以小幅減小精度的代價下,較為理想地提高檢測效率,在大量人群口罩佩戴環(huán)境下更為適合實時性檢測。
但在更大規(guī)模人群環(huán)境下,YOLOv4-tiny表現(xiàn)出的延遲性使得尋求在保持或者提高檢測精度的前提下,進一步提升檢測速度。
通過對比上述改進型的YOLOv4-tiny模型可知,加入ResBlockD 結(jié)構(gòu)的YOLOv4-tiny 模型的FPS 可達到21.345 1 幀/s,較YOLOv4-tiny相比提升了21.37%,檢測速度得到進一步改善。這是由于代替CSPBlock模塊的ResBlockD模塊具有更為簡化的結(jié)構(gòu),通過殘差結(jié)構(gòu)的“跳躍鏈接技巧”,利用卷積核的升維和降維操作,實現(xiàn)降低參數(shù)量目的,從而加快模型的訓練和檢測速度。
可以看出,嵌入ResBlock-D 后的改進算法,在檢測速度有了進一步的提升同時,參數(shù)量也大大減少,這有利于部署在CPU、GPU等資源有限的硬件設(shè)備上。
同時,本實驗中也對引入空間金字塔池化(SPP)和CA 注意力機制的改進型YOLOv4-tiny 進行了速度檢測,通過表3 可發(fā)現(xiàn),引入SPP 和兩個CA 機制的改進型YOLOv4-tiny 模型的速度比只使用ResBlockD 的YOLOv-tiny模型還要略微提高,達到21.550 3 幀/s。這是因為CA 機制先后進行了Coordinate 信息嵌入和Coordinate Attention生成兩個步驟,在很好地獲得全局感受野并編碼準確的坐標信息的同時,更有利于目標的尋找,一定程度上促進了檢測速度的提升。
實驗中,對引入CBAM 機制、一層CA 機制和兩層CA 機制的改進模型進行對比,結(jié)果如表2 所示。實驗結(jié)果表明,相比于引入CBAM 機制和一層CA 機制,引入兩個CA注意力機制的改進型輕量級算法其檢測精度和檢測速度都更高。
分別對300 張和500 張的數(shù)據(jù)集進行檢測,如圖10所示。

圖10 不同算法的圖像檢測時間對比Fig.10 Comparison of image detection time of different algorithms
可以看出,針對300張和500張數(shù)據(jù)集的檢測,改進型YOLOv4-tiny 模型的檢測時間分別能達到22.86 s 和14.132 s,而傳統(tǒng)YOLOv4對300張和500張數(shù)據(jù)集的檢測時間則高達135.299 s和90.241 s,改進型YOLOv4-tiny模型在面對大量數(shù)據(jù)處理的情形時能夠迅速作出反應(yīng)并有效識別。本文提出的模型確實能夠有效地對圖像中所包含不同人的口罩佩戴進行檢測。相比于原算法而言,檢測結(jié)果精度有一定提升,且實時性更佳。
3.4.4 Loss值分析
對不同算法的Loss值進行分析,如圖11所示。

圖11 不同算法的GIoU-Loss對比Fig.11 GIoU-Loss comparison of different algorithms
選取GIoU作為損失函數(shù),從圖中分析比較可知,在迭代次數(shù)較少時,YOLOv4所能降低的損失函數(shù)在三種算法中是最低的,由于此時并沒達到過擬合,故最終所能達到的識別精度在三種算法中也最高。改進型YOLOv4-tiny 算法相較于YOLOv4-tiny 而言,損失函數(shù)的降低上有所改善,其精度也相比于傳統(tǒng)的YOLOv4-tiny有一定幅度的提升。
在迭代次數(shù)超過200 后,YOLOv4-tiny 的損失函數(shù)相比于改進型YOLOv4-tiny和YOLOv4都要低,原因是此時YOLOv4-tiny出現(xiàn)稍微過擬合的現(xiàn)象,在訓練集上的誤差較小,但對測試集上的誤差較大,泛化能力較弱,故其在測試集上的精度相比于改進型YOLOv4-tiny 和YOLOv4都要更低一些。
3.4.5 主流目標檢測算法性能對比
實驗通過與主流檢測算法在相同數(shù)據(jù)集上的訓練結(jié)果進行對比,進一步驗證本文所提算法的綜合性能。實驗采取的評價指標包括參數(shù)量、mAP和檢測速度,結(jié)果如表4所示。結(jié)果顯示,本文提出的改進算法參數(shù)量為596.82萬,較YOLOv4-tiny網(wǎng)絡(luò)參數(shù)規(guī)模接近。mAP為94.0%,F(xiàn)PS達到了21.550 3 幀/s,相比于YOLOv4-tiny模型mAP 值提高了0.5 個百分點,F(xiàn)PS 提高了3.96 幀/s。這是因為本文算法策略引入了SPP 模塊并且使用了兩個CA通道注意力機制,增加了網(wǎng)絡(luò)的參數(shù)量,提高了檢測精度。而嵌入ResBlock-D 模塊替代CSPBlock 的操作,因為ResBlock-D架構(gòu)復雜度僅為CSPBlock的1/10,提高了檢測速度。綜合搭配后,網(wǎng)絡(luò)參數(shù)規(guī)模與原模型接近,且綜合性性能明顯更優(yōu)。相比于其他非輕量單階段目標檢測算法,例如YOLOv4、SSD和RetinaNet,三種算法參數(shù)規(guī)模均遠大于本文算法,YOLOv4的檢測精度相比本文算法有所提升,RetinaNet 算法(93.9%)和SSD算法(93.6%)檢測精度略低于本文算法,但是三者網(wǎng)絡(luò)參數(shù)規(guī)模均遠大于本文算法,且檢測速度均低于4幀/s,不到本文算法的20%,難以滿足口罩檢測實時性要求。相比于雙階段的目標檢測算法,以Faster R-CNN為例,其mAP達到94.4%,但網(wǎng)絡(luò)參數(shù)量達到了4 178.3萬,檢測速度僅為2.134 9 幀/s,檢測速度更低。綜合比較。本文算法的綜合性能優(yōu)于SSD、Faster R-CNN等其他主流算法,可以很好地滿足口罩檢測任務(wù)精度與實時性的要求,更適合應(yīng)用于真實的攝像頭檢測中。

表4 主流目標檢測算法性能比較Table 4 Performance comparison of mainstream target detection algorithms
3.4.6 消融實驗
為了驗證實驗中所提出改進算法的充分性以及各個改進策略對模型帶來的影響,進行了消融實驗[24-25]。實驗設(shè)置及結(jié)果如表5 所示。實驗以YOLOv4-tiny 模型為基礎(chǔ),表中的“√”代表使用該改進策略,“×”代表未使用該策略。可以看出,第1 組為YOLOv4-tiny 基礎(chǔ)模型;第2組實驗在第1組實驗的基礎(chǔ)上引入了ResBlockD模塊,用兩個ResBlock-D替代原本的CSP模塊,mAP值降低了0.8 個百分點,F(xiàn)PS 提高了3.76 幀/s,可以看出引入ResBlockD 模塊的改進策略在犧牲少量精度的條件下,對提高檢測速度有重要作用;第3組實驗和第4組實驗在第1 組實驗的基礎(chǔ)上分別引入了空間金字塔池化(SPP)和兩層CA注意力機制,可以看出,mAP值均有較大幅度提升,但檢測速度均有一定程度降低;第5 組實驗在第1 組實驗的基礎(chǔ)上同時引入了空間金字塔池化(SPP)和兩層CA 注意力機制,mAP 值達到了最高的94.3%,檢測速度下降了4.34 幀/s,最為明顯。結(jié)果表明,空間金字塔池化(SPP)和兩層CA 注意力機制在檢測速度有所下降的條件下,對提高檢測速度均有正面影響,且互相無干擾因素。第6 組實驗在第2 組實驗的基礎(chǔ)上引入空間金字塔池化(SPP),mAP 值提高了0.2 個百分點,F(xiàn)PS為20.984 幀/s。第7組實驗在第6組實驗的基礎(chǔ)上同時引入了空間金字塔池化(SPP)和兩層CA注意力機制,mAP值提高了1.1個百分點,F(xiàn)PS為21.550 3 幀/s,變化較低。表明同時引入空間金字塔池化(SPP)和兩層CA 注意力機制可有效彌補ResBlock-D 替代策略造成的精度損失。相比于第一組實驗mAP 值提高了0.5個百分點,且FPS 提高了3.96 幀/s,效果最佳。綜上所述,本文算法對YOLOv4-tiny 的改進具備合理性,在口罩佩戴檢測中提高了實時檢測性能。

表5 消融實驗Table 5 Ablation experiment
3.4.7 可視化分析
為了更直觀地體現(xiàn)改進的目標檢測算法的性能,如圖12 所示,列舉出了本文使用的輕量級YOLOv4 模型在口罩識別中的運行成果,從左往右依次是:YOLOv4、YOLOv4-tiny、YOLOv4-tiny-ResBlockD-SPP-2CA。

圖12 不同模型實時可視化目標識別Fig.12 Real-time visualization of target recognition with different models
由可視化數(shù)據(jù)圖可以看出,對不同環(huán)境下的口罩檢測,YOLOv4、YOLOv4-tiny 以及YOLOv4-tiny-ResBlockDSPP-2CA 的檢測精度表現(xiàn)不同。YOLOv4 檢測精度總體更高,而YOLOv4-tiny 與YOLOv4-tiny-ResBlockDSPP-2CA 在不同的環(huán)境下檢測精度方面相差較小,但YOLOv-tiny 在某些環(huán)境下,對同一目標的檢測精度比YOLOv4-tiny-ResBlockD-SPP-2CA 更低。出現(xiàn)這種現(xiàn)象的原因也正說明了YOLOv4 由于結(jié)構(gòu)更為復雜而表現(xiàn)出較高的檢測精度,而改進型的YOLOv4 與傳統(tǒng)的YOLOv4-tiny相比,分別引入SPP和CA機制,因這兩種結(jié)構(gòu)在精度上的改進,彌補引入ResBlockD模塊所引起的精度下降的不足,故最終模型YOLOv4-tiny-ResBlockDSPP-2CA 的檢測精度與YOLOv-tiny 相比較為接近,并且從總體而言YOLOv4-tiny-ResBlockD-SPP-2CA 精度更高,達到改進算法的效果,即實現(xiàn)改進后的算法的速度更快于YOLOv4-tiny且精度較YOLOv4-tiny更高。
3.4.8 基于攝像頭的目標檢測效果
上述中目標檢測的圖像都是直接輸入的某一特定場合下的靜態(tài)圖片,故本實驗中增加了引入攝像頭進行拍攝的對比實驗,從而更為真實地模擬了非特定場合下對不同人群的動態(tài)口罩檢測捕捉。攝像頭采用Chicony USB2.0 camera 型號,原攝像頭像素分辨率為1 920×1 080,輸入的是統(tǒng)一后的分辨率即480×640,其檢測效果如表6所示。

表6 不同模型的檢測效果Table 6 Detection effect of different models
由表中數(shù)據(jù)分析可知,基于兩個CA機制、Resblock-D和SPP的YOLOv4-tiny模型在攝像頭的運用中,檢測時間更短,減少了延遲,目標檢測的效果更為優(yōu)秀,該算法更適合于具體運用在真實攝像頭檢測中。
本文在廣域測溫口罩識別的疫情具體應(yīng)用下,給出了一個基于ResBlock-D、SPP和2CA的YOLOv4-tiny改進算法。首先采用了在ResNet-D 網(wǎng)絡(luò)中的其他2 個ResBlock-D模塊,來代替在YOLOv4-tiny網(wǎng)絡(luò)中所使用的其他兩個CSPBlock 模塊,同時還專門設(shè)計出了與其他兩個模塊相同功能的Residual Network Blocks 模塊來專門用作輔助殘差塊。在此基礎(chǔ)之上加入空間金字塔池化(SPP)和兩層“Coordinate Attention”(CA)注意力機制。在口罩佩戴人群數(shù)據(jù)集上進行了相同的訓練和測試,結(jié)果表明,相比于最原始的YOLOv4-tiny算法,經(jīng)改進后的YOLOv4-tiny-ResBlockD-SPP-2CA 模型的mAP提高了0.5個百分點,檢測速度(FPS)提升了3.96 幀/s,綜合性能得到提升。這樣的改進,在保證檢測結(jié)果精度有少量提升的基礎(chǔ)上,降低了計算復雜度,有效提高了檢測速度。有利于將算法部署到計算能力和內(nèi)存等資源有限的嵌入式平臺上,在醫(yī)院、學校、商場等人流量較大的口罩佩戴環(huán)境下,更具實時性,更適合應(yīng)用于真實的攝像頭檢測中。但是,在快速移動人群的檢測中,由于位置目標不確定,目標難以捕捉完全,在實際應(yīng)用中會出現(xiàn)一定誤差。在保證網(wǎng)絡(luò)的綜合識別精度的基礎(chǔ)上,進一步降低模型復雜度,提高檢測速度,提高對移動人群識別檢測的能力,使其更好地應(yīng)用在廣域測溫識別疫情協(xié)同設(shè)備上是未來的重點研究內(nèi)容。