周 蕾,陳冠宇,鐘海蓮
(1.淮陰工學(xué)院計(jì)算機(jī)與軟件工程學(xué)院,江蘇 淮安 223003;2.淮陰工學(xué)院化學(xué)工程學(xué)院,江蘇 淮安 223003)
當(dāng)今全球傳染病流行趨勢(shì)上升,人們佩戴口罩已經(jīng)成為一種常見的行為,人們自覺(jué)佩戴好口罩可以有效保護(hù)自身健康安全,減少被病毒感染機(jī)會(huì)。目前,用于口罩自動(dòng)檢測(cè)的方法主要是淺層學(xué)習(xí)算法(如支持向量機(jī)和淺層神經(jīng)網(wǎng)絡(luò))和深度學(xué)習(xí)算法,淺層學(xué)習(xí)算法特征提取能力有限,對(duì)小目標(biāo)檢測(cè)精度低[1]?;谏疃葘W(xué)習(xí)的目標(biāo)檢測(cè)方法是當(dāng)前研究的主流方法,主要分為一階段(one-stage)算法和兩階段(twostage)算法[2]。兩階段算法典型代表有R-CNN、Fast R-CNN、Faster R-CNN,具有準(zhǔn)確率高,檢測(cè)時(shí)間長(zhǎng)的特點(diǎn);一階段算法的典型代表有YOLO 系列和SSD 算法,相比兩階段算法,雖然精度會(huì)受一點(diǎn)影響,但運(yùn)行速度快,可以滿足實(shí)際應(yīng)用需求。
目前口罩佩戴檢測(cè)算法在公共衛(wèi)生、安全、出行等方面應(yīng)用廣泛,且取得了較好的檢測(cè)效果。比如在公共場(chǎng)所、交通樞紐等人員聚集的地方,通過(guò)口罩檢測(cè)算法檢測(cè)出未佩戴口罩的人員,有助于加強(qiáng)疫情防控;在企事業(yè)單位、學(xué)校等場(chǎng)所,通過(guò)口罩檢測(cè)算法檢測(cè)出未佩戴口罩的人員,有助于管理人員進(jìn)出;在公共交通工具上,通過(guò)口罩檢測(cè)算法檢測(cè)出未佩戴口罩的乘客,有助于加強(qiáng)交通出行的安全保障。
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)是一種深度學(xué)習(xí)模型,它利用卷積運(yùn)算對(duì)輸入數(shù)據(jù)進(jìn)行過(guò)濾,可以提取與識(shí)別視覺(jué)特征,常用于計(jì)算機(jī)視覺(jué)和自然語(yǔ)言處理等領(lǐng)域。目標(biāo)檢測(cè)是計(jì)算機(jī)視覺(jué)的一個(gè)重要任務(wù),代表算法有:①R-CNN(Region-based Convolutional Neural Networks)系列算法[3],通過(guò)先提取候選區(qū)域,然后對(duì)每個(gè)候選區(qū)域進(jìn)行分類和回歸來(lái)檢測(cè)圖像中的目標(biāo);②SSD(Single Shot MultiBox Detector)算法[4],使用一個(gè)單獨(dú)的深度神經(jīng)網(wǎng)絡(luò)模型來(lái)直接預(yù)測(cè)目標(biāo)的類別和位置,通過(guò)多層特征融合來(lái)檢測(cè)不同大小的目標(biāo);③RetinaNet:通過(guò)引入Focal Loss 和ResNet 等技術(shù),解決了在大規(guī)模目標(biāo)檢測(cè)任務(wù)中正負(fù)樣本不平衡的問(wèn)題,提高了檢測(cè)性能;④YOLO(You Only Look Once)系列算法[5],使用一個(gè)單獨(dú)的深度神經(jīng)網(wǎng)絡(luò)模型來(lái)直接預(yù)測(cè)目標(biāo)的類別和位置。
目前有很多學(xué)者對(duì)口罩識(shí)別目標(biāo)檢測(cè)算法開展了相關(guān)研究工作。Singh 等[6]使用了兩種不同的網(wǎng)絡(luò),即YOLOv3 和Faster R-CNN,進(jìn)行人臉口罩佩戴檢測(cè),該模型使用計(jì)算機(jī)視覺(jué)技術(shù)實(shí)現(xiàn)自動(dòng)化檢測(cè),無(wú)需人工干預(yù),但對(duì)于不同的場(chǎng)景和光照條件,模型的魯棒性有待進(jìn)一步提高;Nagrath 等[7]提出了一種名為SSDMNV2 的模型用來(lái)實(shí)現(xiàn)人臉口罩佩戴檢測(cè),該模型實(shí)驗(yàn)了不同卷積神經(jīng)網(wǎng)絡(luò)作為主干網(wǎng)絡(luò)的SSD 模型的性能,同時(shí)用輕量級(jí)網(wǎng)絡(luò)MobileNetV2進(jìn)行分類預(yù)測(cè),使得模型具有較小的體積和內(nèi)存占用,適合移動(dòng)設(shè)備上的實(shí)時(shí)應(yīng)用,可以在保持高準(zhǔn)確率的情況下具有較快的檢測(cè)速度,但是在一些復(fù)雜場(chǎng)景下可能會(huì)存在漏檢和誤檢的情況,需要進(jìn)行進(jìn)一步優(yōu)化和改進(jìn);Jiang 等[8]提出了SE-YOLOv3 人臉口罩佩戴檢測(cè)器,通過(guò)在DarkNet53 中引入SE 模塊整合通道之間的關(guān)系,使網(wǎng)絡(luò)關(guān)注更重要的特征,同時(shí)采用更能描述預(yù)測(cè)框與真實(shí)框差異的GIOU 損失,以提高邊框回歸的穩(wěn)定性。相對(duì)于一些輕量級(jí)算法,SE-YOLOv3 的計(jì)算量和參數(shù)量較大,需要更高的計(jì)算資源和更大的存儲(chǔ)空間;Yu 等[9]提出了一種基于改進(jìn)YOLOv4 的人臉口罩佩戴檢測(cè)算法,該算法使用改進(jìn)的CSPDarkNet53 網(wǎng)絡(luò)來(lái)降低網(wǎng)絡(luò)計(jì)算成本,提高網(wǎng)絡(luò)學(xué)習(xí)能力,使用自適應(yīng)圖片縮放算法減少計(jì)算量,引入改進(jìn)的PANet 結(jié)構(gòu)使網(wǎng)絡(luò)獲得更多的語(yǔ)義特征信息;Wu 等[10]提出了一種新的口罩檢測(cè)框架FMD-YOLO,采用Im-ResNet-101 網(wǎng)絡(luò)作為主干特征提取網(wǎng)絡(luò),該網(wǎng)絡(luò)包含了層次卷積結(jié)構(gòu),變形卷積和非局部機(jī)制,能夠最大化地提取特征,使用增強(qiáng)的路徑聚合網(wǎng)絡(luò)En-PAN 使高層語(yǔ)義信息和低層細(xì)節(jié)信息充分融合,提高網(wǎng)絡(luò)的魯棒性,同時(shí)在推理階段采用Matric NMS 方法提高了檢測(cè)效率和準(zhǔn)確性。
以上研究者提出的算法在一般場(chǎng)景下已經(jīng)有了較好的檢測(cè)效果,但對(duì)于小目標(biāo)檢測(cè)場(chǎng)景下的精度還有待提高。針對(duì)上述問(wèn)題,本文提出了一種改進(jìn)YOLOX 的口罩佩戴檢測(cè)方法,該方法通過(guò)在算法中添加多層注意力機(jī)制,采用DIoU(Distance-IoU)損失函數(shù)和DW 卷積使模型達(dá)到更好的效果。
YOLOX 是一個(gè)基于YOLOv3 改進(jìn)的目標(biāo)檢測(cè)算法,由Megvii AI 團(tuán)隊(duì)于2021 年提出。YOLOX 通過(guò)改進(jìn)網(wǎng)絡(luò)結(jié)構(gòu)、損失函數(shù)和數(shù)據(jù)增強(qiáng)等方面來(lái)提升檢測(cè)精度和速度,并實(shí)現(xiàn)了高效的多尺度特征融合,從而適用于多種復(fù)雜場(chǎng)景下的目標(biāo)檢測(cè)任務(wù)。
YOLOX 使用的主干特征提取網(wǎng)絡(luò)為CSPDarknet[11]。CSPDarkNet 網(wǎng)絡(luò)在YOLOV4 中首先提出,整個(gè)網(wǎng)絡(luò)由殘差卷積構(gòu)成,通過(guò)增加深度,使用跳躍連接,來(lái)提高準(zhǔn)確率,緩解深度增加帶來(lái)的梯度消失問(wèn)題。
CSPDarkNet 使用CSPNet 網(wǎng)絡(luò)結(jié)構(gòu)將原來(lái)的殘差塊(如圖1(a)所示)拆分成兩部分,一部分繼續(xù)進(jìn)行原來(lái)殘差塊的堆疊,另一部分則像一個(gè)殘差邊一樣,經(jīng)過(guò)少量處理直接連接到最后,如圖1(b)所示。
圖1 CSPnet 網(wǎng)絡(luò)結(jié)構(gòu)
CSPNet 網(wǎng)絡(luò)結(jié)構(gòu)的引入可以在減少模型計(jì)算量和提高運(yùn)行速度的同時(shí),不降低模型的精度。
CSPDarkNet 使用Focus 結(jié)構(gòu)對(duì)檢測(cè)圖片進(jìn)行切片操作來(lái)減少參數(shù),提高速度。具體操作為:在一張圖片中每隔一個(gè)像素取一個(gè)值,從而獲得了四個(gè)獨(dú)立的特征層,然后進(jìn)行拼接,這樣通道數(shù)就擴(kuò)充為原來(lái)的四倍,原圖片從原來(lái)的RGB 三通道數(shù)變?yōu)槭ǖ罃?shù),然后將新圖片用于接下來(lái)的卷積操作,具體結(jié)構(gòu)如圖2 所示。
圖2 Focus 網(wǎng)絡(luò)結(jié)構(gòu)
為了提高網(wǎng)絡(luò)的感受野,在主干網(wǎng)絡(luò)中還用到了SPP 模塊,主要通過(guò)不同大小的卷積核進(jìn)行最大池化操作。另外,該網(wǎng)絡(luò)的激活函數(shù)選取了SiLU 激活函數(shù),該激活函數(shù)具有平滑和非單調(diào)的特點(diǎn),具體公式為:
YOLOX 的主干網(wǎng)絡(luò)結(jié)構(gòu)如圖3 所示,可以看出,網(wǎng)絡(luò)從CSPDarkNet 的中間層、中下層、底層的各個(gè)位置提取到了三個(gè)有效特征層作為構(gòu)建特征加強(qiáng)網(wǎng)絡(luò)FPN 的輸入。在FPN 部分,為了進(jìn)一步加強(qiáng)提取有效特征,YOLOX 算法從結(jié)合不同尺度的特征層入手,通過(guò)使用PANet 結(jié)構(gòu),將前面獲得的有效特征層通過(guò)上采樣和下采樣來(lái)實(shí)現(xiàn)特征融合,最終得到特征加強(qiáng)網(wǎng)絡(luò)輸出的三個(gè)有效特征層。
圖3 YOLOX 網(wǎng)絡(luò)結(jié)構(gòu)圖
YOLOX 在速度和精度上都表現(xiàn)優(yōu)異,在實(shí)際應(yīng)用中得到了廣泛的應(yīng)用。在COCO 數(shù)據(jù)集上,其mAP 在YOLOv5 的基礎(chǔ)上提升了3 個(gè)點(diǎn)以上,同時(shí)運(yùn)行速度也比較快,可以達(dá)到實(shí)時(shí)檢測(cè)的要求。
Swin Transformer[12]是一種基于注意力機(jī)制的神經(jīng)網(wǎng)絡(luò)模型,它在計(jì)算機(jī)視覺(jué)任務(wù)中取得了很好的性能表現(xiàn),特別是在圖像分類、目標(biāo)檢測(cè)和語(yǔ)義分割等方面。Swin Transformer 中的注意力機(jī)制與傳統(tǒng)的注意力機(jī)制有些不同,但是仍然屬于注意力機(jī)制的范疇。
傳統(tǒng)的注意力機(jī)制通過(guò)將輸入的Query、Key、Value 向量分別進(jìn)行矩陣乘法,并使用softmax 函數(shù)將乘積矩陣進(jìn)行歸一化,得到每個(gè)Query 向量對(duì)所有Key 向量的加權(quán)和作為輸出,本質(zhì)是通過(guò)計(jì)算一個(gè)關(guān)注度得分,來(lái)決定每個(gè)位置對(duì)于整體的重要性。
傳統(tǒng)注意力機(jī)制可以實(shí)現(xiàn)對(duì)輸入序列的全局建模,但計(jì)算復(fù)雜度較高,每個(gè)Query 向量需要計(jì)算與所有Key 向量的相似度,并根據(jù)相似度權(quán)重對(duì)Value向量進(jìn)行加權(quán)匯聚。這種方法的計(jì)算復(fù)雜度為O(N2),其中N為輸入向量的長(zhǎng)度。當(dāng)輸入向量很長(zhǎng)時(shí),計(jì)算復(fù)雜度將非常高,導(dǎo)致模型運(yùn)算速度緩慢。
Swin Transformer 中同時(shí)使用了窗口多頭注意力模塊(Windows Multi-head Self-Attention,W-MSA)和移動(dòng)窗口多頭力模塊(Shift Windows Multi-head Self-Attention,SW-MSA),圖4 為兩個(gè)連續(xù)的Swin Transformer 模塊結(jié)構(gòu)。
圖4 兩個(gè)連續(xù)的Swin Transformer 模塊結(jié)構(gòu)
由圖4 可知,Swin Transformer 模塊由正則化層、多頭自注意力、前饋網(wǎng)絡(luò)層和殘差連接組成。其中左邊使用的是W-MSA,右邊使用SW-MSA。模塊首先將輸入的圖片進(jìn)行Layer Normalization(LN)正則化,主要作用是進(jìn)行批量正則化處理,對(duì)輸入數(shù)據(jù)進(jìn)行歸一化處理,從而保證輸入層數(shù)據(jù)分布的規(guī)則性,隨后進(jìn)入W-MSA 模塊,將輸入圖片拆分成多個(gè)窗口,在每個(gè)窗口內(nèi)進(jìn)行注意力計(jì)算,最后將不同窗口的注意力矩陣拼接在一起,形成最終的注意力矩陣;接下來(lái)再經(jīng)過(guò)LN 正則化之后進(jìn)入SW-MSA 模塊,采用移動(dòng)窗口的方式進(jìn)行注意力計(jì)算。
W-MSA 模塊和SW-MSA 模塊對(duì)于注意力計(jì)算的方式比較如圖5 所示。
圖5 W-MSA 和SW-MSA 計(jì)算注意力方式對(duì)比
圖5 左邊為W-MSA 模塊,該模塊相較于傳統(tǒng)MSA 而言,是將所有的像素劃分為多個(gè)窗口,然后在窗口內(nèi)部計(jì)算每個(gè)像素與其他像素的相關(guān)性,每個(gè)窗口內(nèi)的特征僅能與該窗口內(nèi)的其他特征進(jìn)行相似度計(jì)算并進(jìn)行加權(quán),這種方法的優(yōu)點(diǎn)是可以顯著降低計(jì)算量,但缺點(diǎn)也很明顯,缺少窗口間的信息交互,使得僅使用窗口自注意力層來(lái)構(gòu)建網(wǎng)絡(luò)時(shí),特征提取能力較差,導(dǎo)致最終的特征提取效果下降。為了克服這一限制,Swin Transformer 提出了SW-MSA。圖5 右側(cè)圖片是左圖向右向下移動(dòng)兩個(gè)單位后的結(jié)果,這時(shí)窗口之間具有重疊部分,基于移動(dòng)后的窗口可以重新計(jì)算注意力,使相鄰特征可以計(jì)算相似度并完成信息關(guān)聯(lián),從而實(shí)現(xiàn)了窗口與窗口之間的交互[13]。SW-MSA 的窗口移動(dòng)機(jī)制能夠幫助網(wǎng)絡(luò)更好地捕捉局部信息和全局信息的關(guān)聯(lián)性,從而提高特征的表達(dá)能力。
YOLOX 算法目前有多個(gè)版本,它們的區(qū)別主要在于模型大小和檢測(cè)精度之間的權(quán)衡。本文在YOLOX-l 算法上進(jìn)行改進(jìn),相較其他版本,YOLOX-l的參數(shù)量多,因此精度也更高。具體改進(jìn)包括:①在CSPDarkNet 主干網(wǎng)絡(luò)中加入Swin Transformer 網(wǎng)絡(luò)結(jié)構(gòu),利用注意力機(jī)制優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu),提高特征提取效果。②將BN(Batch Normal)修改為L(zhǎng)N(Layer Normal),優(yōu)化計(jì)算量,提升了數(shù)據(jù)處理效果。③替換普通卷積為DW 卷積,DW 卷積所使用的參數(shù)量相對(duì)較少,可以有效提升網(wǎng)絡(luò)的計(jì)算速度。
改進(jìn)后的網(wǎng)絡(luò)圖如圖6 所示。
圖6 特征網(wǎng)絡(luò)改進(jìn)
YOLOX 所使用的主干特征提取網(wǎng)絡(luò)為CSPDarkNet53,通過(guò)在骨干網(wǎng)絡(luò)多個(gè)stage 中使用殘差連接以及通道分割來(lái)提高網(wǎng)絡(luò)的效率和準(zhǔn)確性。CSPDarkNet53 的骨干網(wǎng)絡(luò)包含5 個(gè)stage,每個(gè)stage 包含若干個(gè)CSPBlock。每個(gè)CSPBlock 又包含基礎(chǔ)卷積層、空間金字塔池化(Spatial Pyramid Pooling,SPP)層以及殘差連接。SPP 層可以在不增加計(jì)算量的情況下提取多尺度的特征,可以從不同尺度的特征圖中提取特征,通過(guò)不同池化核大小的最大池化進(jìn)行特征提取,來(lái)提高網(wǎng)絡(luò)的感受野。由于檢測(cè)任務(wù)需要利用多尺度信息,因此對(duì)SPP 結(jié)構(gòu)進(jìn)行了保留。
本文使用Swin Transformer 的有效特征層對(duì)YOLOX 的主干網(wǎng)絡(luò)進(jìn)行修改,將YOLOX 中的CSPBlock 替換為Swin Transformer Block,進(jìn)一步提升網(wǎng)絡(luò)的提取效果。Swin Transformer Block 利用自注意力機(jī)制在特征之間進(jìn)行關(guān)聯(lián)和交互,能夠更好地捕捉特征之間的關(guān)系,進(jìn)而提高特征表達(dá)能力,從而提高檢測(cè)的準(zhǔn)確性。此外,還在SPP 之后加入SW-MSA注意力機(jī)制來(lái)提升特征的表達(dá)能力和區(qū)分度。具體改進(jìn)如圖7 所示。
圖7 對(duì)骨干網(wǎng)絡(luò)的主要改進(jìn)圖
①圖7(a)是CSPLayer 結(jié)構(gòu),其將輸入的特征圖分為兩個(gè)分支,左邊的分支經(jīng)過(guò)LN 正則化進(jìn)行標(biāo)準(zhǔn)化處理,再通過(guò)SW-MSA 注意力機(jī)制更好地提取特征,最后將兩個(gè)分支合并輸出到下一分支網(wǎng)絡(luò)。②圖7(b)為SPP 模塊,用來(lái)增加網(wǎng)絡(luò)的感受野,結(jié)構(gòu)中同樣增加了SW-MSA 注意力模塊。首先將輸入的特征層進(jìn)行基礎(chǔ)卷積,然后分別通過(guò)5×5,9×9,13×13 全局平均池化三個(gè)分支和一個(gè)不變分支,再將四個(gè)分支的結(jié)果相加后進(jìn)行卷積,在SPP 與特征融合最后結(jié)果的特征層后面加上SW-MSA 注意力機(jī)制,提高特征提取效果,減少計(jì)算量。
BN 是一種在深度學(xué)習(xí)中常用的技術(shù),主要用于神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,可以將輸入數(shù)據(jù)的分布進(jìn)行歸一化,從而加速訓(xùn)練過(guò)程并提高模型的泛化能力。BN 是對(duì)神經(jīng)網(wǎng)絡(luò)的每一層輸入數(shù)據(jù)分布的均值和方差進(jìn)行歸一化處理。具體來(lái)說(shuō),對(duì)于一個(gè)輸入數(shù)據(jù),先計(jì)算該batch 的均值和方差,再用這些統(tǒng)計(jì)值對(duì)數(shù)據(jù)進(jìn)行歸一化。這樣可以使數(shù)據(jù)分布更加平均,從而提高訓(xùn)練速度和模型的穩(wěn)定性,避免梯度爆炸和梯度消失的問(wèn)題。但BN 存在一些缺點(diǎn),例如對(duì)小批量數(shù)據(jù)的效果不好,因?yàn)樾∨繑?shù)據(jù)的均值和方差統(tǒng)計(jì)可能會(huì)出現(xiàn)偏差。此外,BN 會(huì)增加計(jì)算量,特別是在大型神經(jīng)網(wǎng)絡(luò)中,計(jì)算代價(jià)可能會(huì)很高。
LN 是一種用于深度學(xué)習(xí)中的正則化方法,它類似于BN,但不是在小批量上進(jìn)行歸一化,而是對(duì)每個(gè)樣本單獨(dú)進(jìn)行歸一化。在LN 中,假設(shè)一個(gè)張量x∈Rm×n,包括m個(gè)樣本,每個(gè)樣本n個(gè)特征,對(duì)于每個(gè)樣本xi,LN 將它的所有特征維度按照均值和方差進(jìn)行歸一化,公式如下:
式中:μi和σi分別表示樣本xi在所有特征維度上的均值和方差,ε是一個(gè)很小的常數(shù),用于避免分母為0。
由于BN 的一個(gè)缺點(diǎn)是需要較大的batch size才能合理預(yù)估訓(xùn)練數(shù)據(jù)的均值和方差,本文選用參數(shù)量較大的YOLOX-l 模型,采用BN 可能會(huì)導(dǎo)致內(nèi)存不足,而LN 不依賴于batch 的大小和輸入sequence 的深度,更為適合該模型。
DW 卷積(Depthwise Convolution)是一種深度可分離卷積的變種卷積操作,通常用于深度學(xué)習(xí)模型的輕量化或加速,在減少模型參數(shù)和計(jì)算量的同時(shí),提高模型的感受野和學(xué)習(xí)能力。DW 卷積的計(jì)算過(guò)程可以分為深度卷積和逐點(diǎn)卷積兩個(gè)部分。在深度卷積中,DW 卷積首先對(duì)輸入數(shù)據(jù)的每個(gè)通道分別進(jìn)行卷積,即針對(duì)每個(gè)通道都使用一個(gè)卷積核進(jìn)行卷積操作。因此,如果輸入數(shù)據(jù)共有C個(gè)通道,那么深度卷積部分會(huì)使用C個(gè)卷積核進(jìn)行卷積。這個(gè)過(guò)程可以看做是對(duì)每個(gè)通道進(jìn)行一維卷積操作。在逐點(diǎn)卷積中,DW 卷積使用一個(gè)1×1 的卷積核對(duì)每個(gè)通道的結(jié)果進(jìn)行融合,即將所有通道的結(jié)果按元素相加并得到一個(gè)新的輸出結(jié)果。這個(gè)過(guò)程可以看做是對(duì)每個(gè)通道進(jìn)行一維逐點(diǎn)卷積操作。
與普通卷積相比,DW 卷積的卷積核只在每個(gè)輸入通道上進(jìn)行卷積操作,因此參數(shù)數(shù)量遠(yuǎn)遠(yuǎn)少于普通卷積;DW 卷積具有更少的卷積核數(shù)量和更小的卷積核大小,因此需要更少的計(jì)算量。將普通卷積替換為DW 卷積,可以在保持參數(shù)和計(jì)算量較少的情況下,達(dá)到與普通卷積相似或更好的準(zhǔn)確率。
損失函數(shù)主要用于度量預(yù)測(cè)框與真實(shí)框之間的差異,以此優(yōu)化模型的參數(shù)。選擇不同的損失函數(shù)會(huì)影響網(wǎng)絡(luò)模型預(yù)測(cè)框的精度,以下介紹兩種改良的損失函數(shù)。
①完全交并比(Complete Intersection Over Union,CIOU)
CIOU 是一種改進(jìn)的IOU。IOU 用于計(jì)算預(yù)測(cè)框和真實(shí)框的交疊率,即它們的交集和并集的比值,最理想情況是完全重疊,這時(shí)比值為1。IOU 的計(jì)算公式為:
式中:A表示預(yù)測(cè)框,B表示真實(shí)框,A∩B表示A和B的交集,A∪B表示A和B的并集。
CIOU 還考慮了目標(biāo)框的長(zhǎng)寬比例和中心點(diǎn)之間的距離,在某些情況下比IOU 更加準(zhǔn)確。CIOU的計(jì)算公式為:
式中:IOU 表示兩個(gè)邊界框的交并比,ρ是一個(gè)懲罰項(xiàng),用于懲罰邊界框中心點(diǎn)之間的距離,C1和C2分別表示兩個(gè)邊界框的對(duì)角線長(zhǎng)度,ˉC表示這兩個(gè)對(duì)角線長(zhǎng)度的平均值。
②距離交并比(Distance Intersection Over Union,DIOU)
DIOU 也是一種改進(jìn)的IOU 方法,它在CIOU 的基礎(chǔ)上增加了重疊部分的面積懲罰項(xiàng),以進(jìn)一步提高預(yù)測(cè)框與真實(shí)框之間重疊度的準(zhǔn)確性。DIOU 的計(jì)算公式為:
式中:d代表預(yù)測(cè)框和真實(shí)框兩個(gè)中心點(diǎn)距離的平方,c代表兩個(gè)框的最小外接矩形對(duì)角線長(zhǎng)度。如果兩個(gè)框完美重疊,d=0,IOU =1,DIOU =1-0 =1。如果兩個(gè)框相距很遠(yuǎn),趨近于1,IOU =0,DIOU =0-1 =-1。
本文所述實(shí)驗(yàn)均在Windows10 操作系統(tǒng)下進(jìn)行。環(huán)境配置為python3.6.13,torch1.2.0,torchvision0.4.0,硬件環(huán)境為RTX 2080 Ti(11GB)×1,4 vCPU Intel(R)Xeon(R)Silver 4110 CPU@2.10GHz,16GB 內(nèi)存。
數(shù)據(jù)集的質(zhì)量是保證深度學(xué)習(xí)模型訓(xùn)練結(jié)果的重要因素。本文數(shù)據(jù)集為自制數(shù)據(jù)集,通過(guò)網(wǎng)絡(luò)爬蟲等方法收集網(wǎng)絡(luò)公開的圖片,一共收集了4 050張圖片,數(shù)據(jù)集按照8 ∶1 ∶1 的比例分為訓(xùn)練集、測(cè)試集和驗(yàn)證集。數(shù)據(jù)集包含了多個(gè)場(chǎng)景下佩戴口罩的人臉圖片,數(shù)據(jù)集中人臉?lè)直媛首畲鬄? 536×1 876,最小為20×40,涵蓋了人臉出現(xiàn)在攝像頭拍攝圖像中的大多數(shù)可能尺寸,保證了網(wǎng)絡(luò)對(duì)小尺度人臉的識(shí)別需求。
目標(biāo)檢測(cè)的評(píng)價(jià)指標(biāo)主要包括精度(Precision),召回率(Recall),平均精度(AP),平均精度均值(mAP)。
①精度
精度是指檢測(cè)結(jié)果中正確檢測(cè)的目標(biāo)框數(shù)量與所有檢測(cè)到的目標(biāo)框數(shù)量的比例。即,算法檢測(cè)出來(lái)的所有目標(biāo)框中,正確框的數(shù)量占總檢測(cè)框數(shù)量的比例。精度計(jì)算公式為:
式中:TP 為被模型預(yù)測(cè)為正類的正樣本;TN 為被模型預(yù)測(cè)為負(fù)類的負(fù)樣本;FP 為被模型預(yù)測(cè)為正類的負(fù)樣本;FN 為被模型預(yù)測(cè)為負(fù)類的正樣本。精度越高,表示算法檢測(cè)出的目標(biāo)框中正確率越高,具有更好的檢測(cè)準(zhǔn)確性。
②召回率
召回率是指在所有真實(shí)目標(biāo)框中,被算法正確檢測(cè)出的目標(biāo)框的比例。在目標(biāo)檢測(cè)任務(wù)中,召回率衡量的是算法對(duì)于真實(shí)目標(biāo)框的檢測(cè)能力,即算法能夠檢測(cè)到多少真實(shí)目標(biāo)框。召回率計(jì)算公式為:
式中:TP 為被模型預(yù)測(cè)為正類的正樣本;FN 為被模型預(yù)測(cè)為負(fù)類的正樣本。召回率越高,表示算法能夠檢測(cè)到更多的真實(shí)目標(biāo)框,具有更好的檢測(cè)能力。
③平均精度AP
平均精度是評(píng)價(jià)模型檢測(cè)能力的主要指標(biāo)之一。AP 是通過(guò)計(jì)算不同召回率下的精度值,再將這些精度值在召回率的范圍內(nèi)進(jìn)行平均得到的一個(gè)指標(biāo)。一般來(lái)說(shuō),平均精度越高,表示模型的檢測(cè)效果越好。
平均精度均值是不同類別的平均精度的平均值。對(duì)于一個(gè)具有n個(gè)類別的目標(biāo)檢測(cè)模型,其mAP 可以表示為所有類別AP 的平均值:
式中:N表示所有類別數(shù)量。
④F1
F1 是精確率和召回率的調(diào)和平均值,計(jì)算公式如下:
式中:FN 表示預(yù)測(cè)錯(cuò)誤的樣本數(shù)量;TP 為被模型預(yù)測(cè)為正類的正樣本;FN 為被模型預(yù)測(cè)為負(fù)類的正樣本;FP 為被模型預(yù)測(cè)為正類的負(fù)樣本。
CIOU 是一種改進(jìn)的IOU 損失函數(shù),它通過(guò)綜合考慮預(yù)測(cè)框和真實(shí)框的中心點(diǎn)、寬度、高度和長(zhǎng)寬比等因素來(lái)計(jì)算損失;DIOU 也是一種改進(jìn)的IOU損失函數(shù),它通過(guò)綜合考慮預(yù)測(cè)框和真實(shí)框之間的距離、中心點(diǎn)、寬度、高度和長(zhǎng)寬比等因素來(lái)計(jì)算損失。
為比較使用不同損失函數(shù)的模型效果,實(shí)驗(yàn)對(duì)CIOU 和DIOU 進(jìn)行了實(shí)驗(yàn),最終的Loss 曲線如圖8所示。
圖8 不同損失函數(shù)Loss 曲線圖
圖8 中,(a)為CIOU 損失函數(shù)圖像,(b)為DIOU損失函數(shù)圖像。由圖可知,兩種損失函數(shù)數(shù)值下降速度相仿,(b)圖的訓(xùn)練損失與驗(yàn)證損失曲線相比(a)圖更加貼合,曲線更加平滑,收斂效果更好,因此選取DIOU 作為本文提出的YOLO-l-sd 模型的損失函數(shù)。
為了驗(yàn)證各個(gè)注意力模塊對(duì)YOLOX-l 檢測(cè)效果的影響,在數(shù)據(jù)集上進(jìn)行消融實(shí)驗(yàn)。在損失函數(shù)都采用DIOU 的基礎(chǔ)上,模型加入SW-MSA 注意力和DW 卷積模塊的消融實(shí)驗(yàn),結(jié)果如表1 所示。
表1 消融實(shí)驗(yàn)結(jié)果
對(duì)比發(fā)現(xiàn),經(jīng)過(guò)加入DW 卷積后,AP 降低了0.68%,但召回率提升了0.99%,精度提升了1.05%。而加入SW-MSA 注意力機(jī)制以后算法相較于原本的算法,AP 提升了0.36%,召回率提升了5.24%,精度提升了0.93%;在SW-MSA 基礎(chǔ)上加入DW 卷積后,AP 提高了0.32%,召回率提高了0.22%,精度提升了1.52%。經(jīng)過(guò)綜合對(duì)比,相較于原始的YOLOX-l,YOLO-l-sd 的AP 提升了0.68%,召回率提升了5.46%,精度提升了2.45%。
①遮擋目標(biāo)檢測(cè)效果對(duì)比
圖9(a)為YOLOX-l 的檢測(cè)結(jié)果,圖9(b)為YOLOX-l-sd 的檢測(cè)結(jié)果,可以看出,在遮擋目標(biāo)檢測(cè)中,YOLOX-l 出現(xiàn)了漏檢,而YOLOX-l-sd 可以正常檢出。
圖9 遮擋目標(biāo)檢測(cè)結(jié)果對(duì)比
②小目標(biāo)檢測(cè)效果對(duì)比
圖10(a)為YOLOX-l 的檢測(cè)結(jié)果,圖10(b)為YOLOX-l-sd 的檢測(cè)結(jié)果,YOLOX-l-sd 算法的檢測(cè)精度要比原始算法平均提高了3%左右。
圖10 小目標(biāo)檢測(cè)結(jié)果對(duì)比
通過(guò)對(duì)比實(shí)驗(yàn)可以看出,文章提出的YOLOX-lsd 算法在召回率、精確率、F1 和mAP 等指標(biāo)上相比原始算法均有不同程度的提高,對(duì)小目標(biāo)與遮擋目標(biāo)的檢測(cè)效果也有了明顯的提升。
為了提高小目標(biāo)和遮擋目標(biāo)場(chǎng)景下口罩佩戴目標(biāo)檢測(cè)的效果,文章對(duì)YOLOX 算法進(jìn)行了改進(jìn),替換普通卷積為DW 卷積,在CSPDarkNet 主干網(wǎng)絡(luò)中引入 Swin Transformer 多 層注意力機(jī)制,在CSPLayer、SPP 模塊中添加SW-MSA 注意力模塊,將SPP 模塊BN 正則化方法修改為L(zhǎng)N,同時(shí)采用DIOU 損失函數(shù)來(lái)提高網(wǎng)絡(luò)精確度。實(shí)驗(yàn)結(jié)果表明,文章提出的YOLOX-l-sd 算法有效提升了佩戴口罩目標(biāo)檢測(cè)算法的性能,與原始算法相比,模型的檢測(cè)精度提高了2.45%。在未來(lái)的工作中,將繼續(xù)優(yōu)化模型,研究佩戴口罩的人臉?lè)诸惥W(wǎng)絡(luò),進(jìn)一步研究密集人群中佩戴口罩人臉識(shí)別問(wèn)題。