?

基于多層注意力機制的口罩佩戴檢測算法改進?

2024-01-29 02:23陳冠宇鐘海蓮
電子器件 2023年6期
關鍵詞:口罩注意力卷積

周 蕾,陳冠宇,鐘海蓮

(1.淮陰工學院計算機與軟件工程學院,江蘇 淮安 223003;2.淮陰工學院化學工程學院,江蘇 淮安 223003)

當今全球傳染病流行趨勢上升,人們佩戴口罩已經成為一種常見的行為,人們自覺佩戴好口罩可以有效保護自身健康安全,減少被病毒感染機會。目前,用于口罩自動檢測的方法主要是淺層學習算法(如支持向量機和淺層神經網絡)和深度學習算法,淺層學習算法特征提取能力有限,對小目標檢測精度低[1]?;谏疃葘W習的目標檢測方法是當前研究的主流方法,主要分為一階段(one-stage)算法和兩階段(twostage)算法[2]。兩階段算法典型代表有R-CNN、Fast R-CNN、Faster R-CNN,具有準確率高,檢測時間長的特點;一階段算法的典型代表有YOLO 系列和SSD 算法,相比兩階段算法,雖然精度會受一點影響,但運行速度快,可以滿足實際應用需求。

目前口罩佩戴檢測算法在公共衛生、安全、出行等方面應用廣泛,且取得了較好的檢測效果。比如在公共場所、交通樞紐等人員聚集的地方,通過口罩檢測算法檢測出未佩戴口罩的人員,有助于加強疫情防控;在企事業單位、學校等場所,通過口罩檢測算法檢測出未佩戴口罩的人員,有助于管理人員進出;在公共交通工具上,通過口罩檢測算法檢測出未佩戴口罩的乘客,有助于加強交通出行的安全保障。

1 相關工作

卷積神經網絡(Convolutional Neural Network,CNN)是一種深度學習模型,它利用卷積運算對輸入數據進行過濾,可以提取與識別視覺特征,常用于計算機視覺和自然語言處理等領域。目標檢測是計算機視覺的一個重要任務,代表算法有:①R-CNN(Region-based Convolutional Neural Networks)系列算法[3],通過先提取候選區域,然后對每個候選區域進行分類和回歸來檢測圖像中的目標;②SSD(Single Shot MultiBox Detector)算法[4],使用一個單獨的深度神經網絡模型來直接預測目標的類別和位置,通過多層特征融合來檢測不同大小的目標;③RetinaNet:通過引入Focal Loss 和ResNet 等技術,解決了在大規模目標檢測任務中正負樣本不平衡的問題,提高了檢測性能;④YOLO(You Only Look Once)系列算法[5],使用一個單獨的深度神經網絡模型來直接預測目標的類別和位置。

目前有很多學者對口罩識別目標檢測算法開展了相關研究工作。Singh 等[6]使用了兩種不同的網絡,即YOLOv3 和Faster R-CNN,進行人臉口罩佩戴檢測,該模型使用計算機視覺技術實現自動化檢測,無需人工干預,但對于不同的場景和光照條件,模型的魯棒性有待進一步提高;Nagrath 等[7]提出了一種名為SSDMNV2 的模型用來實現人臉口罩佩戴檢測,該模型實驗了不同卷積神經網絡作為主干網絡的SSD 模型的性能,同時用輕量級網絡MobileNetV2進行分類預測,使得模型具有較小的體積和內存占用,適合移動設備上的實時應用,可以在保持高準確率的情況下具有較快的檢測速度,但是在一些復雜場景下可能會存在漏檢和誤檢的情況,需要進行進一步優化和改進;Jiang 等[8]提出了SE-YOLOv3 人臉口罩佩戴檢測器,通過在DarkNet53 中引入SE 模塊整合通道之間的關系,使網絡關注更重要的特征,同時采用更能描述預測框與真實框差異的GIOU 損失,以提高邊框回歸的穩定性。相對于一些輕量級算法,SE-YOLOv3 的計算量和參數量較大,需要更高的計算資源和更大的存儲空間;Yu 等[9]提出了一種基于改進YOLOv4 的人臉口罩佩戴檢測算法,該算法使用改進的CSPDarkNet53 網絡來降低網絡計算成本,提高網絡學習能力,使用自適應圖片縮放算法減少計算量,引入改進的PANet 結構使網絡獲得更多的語義特征信息;Wu 等[10]提出了一種新的口罩檢測框架FMD-YOLO,采用Im-ResNet-101 網絡作為主干特征提取網絡,該網絡包含了層次卷積結構,變形卷積和非局部機制,能夠最大化地提取特征,使用增強的路徑聚合網絡En-PAN 使高層語義信息和低層細節信息充分融合,提高網絡的魯棒性,同時在推理階段采用Matric NMS 方法提高了檢測效率和準確性。

以上研究者提出的算法在一般場景下已經有了較好的檢測效果,但對于小目標檢測場景下的精度還有待提高。針對上述問題,本文提出了一種改進YOLOX 的口罩佩戴檢測方法,該方法通過在算法中添加多層注意力機制,采用DIoU(Distance-IoU)損失函數和DW 卷積使模型達到更好的效果。

2 YOLOX 目標檢測算法

YOLOX 是一個基于YOLOv3 改進的目標檢測算法,由Megvii AI 團隊于2021 年提出。YOLOX 通過改進網絡結構、損失函數和數據增強等方面來提升檢測精度和速度,并實現了高效的多尺度特征融合,從而適用于多種復雜場景下的目標檢測任務。

YOLOX 使用的主干特征提取網絡為CSPDarknet[11]。CSPDarkNet 網絡在YOLOV4 中首先提出,整個網絡由殘差卷積構成,通過增加深度,使用跳躍連接,來提高準確率,緩解深度增加帶來的梯度消失問題。

CSPDarkNet 使用CSPNet 網絡結構將原來的殘差塊(如圖1(a)所示)拆分成兩部分,一部分繼續進行原來殘差塊的堆疊,另一部分則像一個殘差邊一樣,經過少量處理直接連接到最后,如圖1(b)所示。

圖1 CSPnet 網絡結構

CSPNet 網絡結構的引入可以在減少模型計算量和提高運行速度的同時,不降低模型的精度。

CSPDarkNet 使用Focus 結構對檢測圖片進行切片操作來減少參數,提高速度。具體操作為:在一張圖片中每隔一個像素取一個值,從而獲得了四個獨立的特征層,然后進行拼接,這樣通道數就擴充為原來的四倍,原圖片從原來的RGB 三通道數變為十二通道數,然后將新圖片用于接下來的卷積操作,具體結構如圖2 所示。

圖2 Focus 網絡結構

為了提高網絡的感受野,在主干網絡中還用到了SPP 模塊,主要通過不同大小的卷積核進行最大池化操作。另外,該網絡的激活函數選取了SiLU 激活函數,該激活函數具有平滑和非單調的特點,具體公式為:

YOLOX 的主干網絡結構如圖3 所示,可以看出,網絡從CSPDarkNet 的中間層、中下層、底層的各個位置提取到了三個有效特征層作為構建特征加強網絡FPN 的輸入。在FPN 部分,為了進一步加強提取有效特征,YOLOX 算法從結合不同尺度的特征層入手,通過使用PANet 結構,將前面獲得的有效特征層通過上采樣和下采樣來實現特征融合,最終得到特征加強網絡輸出的三個有效特征層。

圖3 YOLOX 網絡結構圖

YOLOX 在速度和精度上都表現優異,在實際應用中得到了廣泛的應用。在COCO 數據集上,其mAP 在YOLOv5 的基礎上提升了3 個點以上,同時運行速度也比較快,可以達到實時檢測的要求。

3 多層注意力機制

Swin Transformer[12]是一種基于注意力機制的神經網絡模型,它在計算機視覺任務中取得了很好的性能表現,特別是在圖像分類、目標檢測和語義分割等方面。Swin Transformer 中的注意力機制與傳統的注意力機制有些不同,但是仍然屬于注意力機制的范疇。

3.1 傳統注意力機制

傳統的注意力機制通過將輸入的Query、Key、Value 向量分別進行矩陣乘法,并使用softmax 函數將乘積矩陣進行歸一化,得到每個Query 向量對所有Key 向量的加權和作為輸出,本質是通過計算一個關注度得分,來決定每個位置對于整體的重要性。

傳統注意力機制可以實現對輸入序列的全局建模,但計算復雜度較高,每個Query 向量需要計算與所有Key 向量的相似度,并根據相似度權重對Value向量進行加權匯聚。這種方法的計算復雜度為O(N2),其中N為輸入向量的長度。當輸入向量很長時,計算復雜度將非常高,導致模型運算速度緩慢。

3.2 Swin Transformer 中的注意力機制

Swin Transformer 中同時使用了窗口多頭注意力模塊(Windows Multi-head Self-Attention,W-MSA)和移動窗口多頭力模塊(Shift Windows Multi-head Self-Attention,SW-MSA),圖4 為兩個連續的Swin Transformer 模塊結構。

圖4 兩個連續的Swin Transformer 模塊結構

由圖4 可知,Swin Transformer 模塊由正則化層、多頭自注意力、前饋網絡層和殘差連接組成。其中左邊使用的是W-MSA,右邊使用SW-MSA。模塊首先將輸入的圖片進行Layer Normalization(LN)正則化,主要作用是進行批量正則化處理,對輸入數據進行歸一化處理,從而保證輸入層數據分布的規則性,隨后進入W-MSA 模塊,將輸入圖片拆分成多個窗口,在每個窗口內進行注意力計算,最后將不同窗口的注意力矩陣拼接在一起,形成最終的注意力矩陣;接下來再經過LN 正則化之后進入SW-MSA 模塊,采用移動窗口的方式進行注意力計算。

W-MSA 模塊和SW-MSA 模塊對于注意力計算的方式比較如圖5 所示。

圖5 W-MSA 和SW-MSA 計算注意力方式對比

圖5 左邊為W-MSA 模塊,該模塊相較于傳統MSA 而言,是將所有的像素劃分為多個窗口,然后在窗口內部計算每個像素與其他像素的相關性,每個窗口內的特征僅能與該窗口內的其他特征進行相似度計算并進行加權,這種方法的優點是可以顯著降低計算量,但缺點也很明顯,缺少窗口間的信息交互,使得僅使用窗口自注意力層來構建網絡時,特征提取能力較差,導致最終的特征提取效果下降。為了克服這一限制,Swin Transformer 提出了SW-MSA。圖5 右側圖片是左圖向右向下移動兩個單位后的結果,這時窗口之間具有重疊部分,基于移動后的窗口可以重新計算注意力,使相鄰特征可以計算相似度并完成信息關聯,從而實現了窗口與窗口之間的交互[13]。SW-MSA 的窗口移動機制能夠幫助網絡更好地捕捉局部信息和全局信息的關聯性,從而提高特征的表達能力。

4 口罩佩戴檢測改進算法YOLO-l-sd

YOLOX 算法目前有多個版本,它們的區別主要在于模型大小和檢測精度之間的權衡。本文在YOLOX-l 算法上進行改進,相較其他版本,YOLOX-l的參數量多,因此精度也更高。具體改進包括:①在CSPDarkNet 主干網絡中加入Swin Transformer 網絡結構,利用注意力機制優化網絡結構,提高特征提取效果。②將BN(Batch Normal)修改為LN(Layer Normal),優化計算量,提升了數據處理效果。③替換普通卷積為DW 卷積,DW 卷積所使用的參數量相對較少,可以有效提升網絡的計算速度。

改進后的網絡圖如圖6 所示。

圖6 特征網絡改進

4.1 骨干網絡修改

YOLOX 所使用的主干特征提取網絡為CSPDarkNet53,通過在骨干網絡多個stage 中使用殘差連接以及通道分割來提高網絡的效率和準確性。CSPDarkNet53 的骨干網絡包含5 個stage,每個stage 包含若干個CSPBlock。每個CSPBlock 又包含基礎卷積層、空間金字塔池化(Spatial Pyramid Pooling,SPP)層以及殘差連接。SPP 層可以在不增加計算量的情況下提取多尺度的特征,可以從不同尺度的特征圖中提取特征,通過不同池化核大小的最大池化進行特征提取,來提高網絡的感受野。由于檢測任務需要利用多尺度信息,因此對SPP 結構進行了保留。

本文使用Swin Transformer 的有效特征層對YOLOX 的主干網絡進行修改,將YOLOX 中的CSPBlock 替換為Swin Transformer Block,進一步提升網絡的提取效果。Swin Transformer Block 利用自注意力機制在特征之間進行關聯和交互,能夠更好地捕捉特征之間的關系,進而提高特征表達能力,從而提高檢測的準確性。此外,還在SPP 之后加入SW-MSA注意力機制來提升特征的表達能力和區分度。具體改進如圖7 所示。

圖7 對骨干網絡的主要改進圖

①圖7(a)是CSPLayer 結構,其將輸入的特征圖分為兩個分支,左邊的分支經過LN 正則化進行標準化處理,再通過SW-MSA 注意力機制更好地提取特征,最后將兩個分支合并輸出到下一分支網絡。②圖7(b)為SPP 模塊,用來增加網絡的感受野,結構中同樣增加了SW-MSA 注意力模塊。首先將輸入的特征層進行基礎卷積,然后分別通過5×5,9×9,13×13 全局平均池化三個分支和一個不變分支,再將四個分支的結果相加后進行卷積,在SPP 與特征融合最后結果的特征層后面加上SW-MSA 注意力機制,提高特征提取效果,減少計算量。

4.2 修改正則化方法

BN 是一種在深度學習中常用的技術,主要用于神經網絡的訓練,可以將輸入數據的分布進行歸一化,從而加速訓練過程并提高模型的泛化能力。BN 是對神經網絡的每一層輸入數據分布的均值和方差進行歸一化處理。具體來說,對于一個輸入數據,先計算該batch 的均值和方差,再用這些統計值對數據進行歸一化。這樣可以使數據分布更加平均,從而提高訓練速度和模型的穩定性,避免梯度爆炸和梯度消失的問題。但BN 存在一些缺點,例如對小批量數據的效果不好,因為小批量數據的均值和方差統計可能會出現偏差。此外,BN 會增加計算量,特別是在大型神經網絡中,計算代價可能會很高。

LN 是一種用于深度學習中的正則化方法,它類似于BN,但不是在小批量上進行歸一化,而是對每個樣本單獨進行歸一化。在LN 中,假設一個張量x∈Rm×n,包括m個樣本,每個樣本n個特征,對于每個樣本xi,LN 將它的所有特征維度按照均值和方差進行歸一化,公式如下:

式中:μi和σi分別表示樣本xi在所有特征維度上的均值和方差,ε是一個很小的常數,用于避免分母為0。

由于BN 的一個缺點是需要較大的batch size才能合理預估訓練數據的均值和方差,本文選用參數量較大的YOLOX-l 模型,采用BN 可能會導致內存不足,而LN 不依賴于batch 的大小和輸入sequence 的深度,更為適合該模型。

4.3 采用DW 卷積

DW 卷積(Depthwise Convolution)是一種深度可分離卷積的變種卷積操作,通常用于深度學習模型的輕量化或加速,在減少模型參數和計算量的同時,提高模型的感受野和學習能力。DW 卷積的計算過程可以分為深度卷積和逐點卷積兩個部分。在深度卷積中,DW 卷積首先對輸入數據的每個通道分別進行卷積,即針對每個通道都使用一個卷積核進行卷積操作。因此,如果輸入數據共有C個通道,那么深度卷積部分會使用C個卷積核進行卷積。這個過程可以看做是對每個通道進行一維卷積操作。在逐點卷積中,DW 卷積使用一個1×1 的卷積核對每個通道的結果進行融合,即將所有通道的結果按元素相加并得到一個新的輸出結果。這個過程可以看做是對每個通道進行一維逐點卷積操作。

與普通卷積相比,DW 卷積的卷積核只在每個輸入通道上進行卷積操作,因此參數數量遠遠少于普通卷積;DW 卷積具有更少的卷積核數量和更小的卷積核大小,因此需要更少的計算量。將普通卷積替換為DW 卷積,可以在保持參數和計算量較少的情況下,達到與普通卷積相似或更好的準確率。

4.4 損失函數的選擇

損失函數主要用于度量預測框與真實框之間的差異,以此優化模型的參數。選擇不同的損失函數會影響網絡模型預測框的精度,以下介紹兩種改良的損失函數。

①完全交并比(Complete Intersection Over Union,CIOU)

CIOU 是一種改進的IOU。IOU 用于計算預測框和真實框的交疊率,即它們的交集和并集的比值,最理想情況是完全重疊,這時比值為1。IOU 的計算公式為:

式中:A表示預測框,B表示真實框,A∩B表示A和B的交集,A∪B表示A和B的并集。

CIOU 還考慮了目標框的長寬比例和中心點之間的距離,在某些情況下比IOU 更加準確。CIOU的計算公式為:

式中:IOU 表示兩個邊界框的交并比,ρ是一個懲罰項,用于懲罰邊界框中心點之間的距離,C1和C2分別表示兩個邊界框的對角線長度,ˉC表示這兩個對角線長度的平均值。

②距離交并比(Distance Intersection Over Union,DIOU)

DIOU 也是一種改進的IOU 方法,它在CIOU 的基礎上增加了重疊部分的面積懲罰項,以進一步提高預測框與真實框之間重疊度的準確性。DIOU 的計算公式為:

式中:d代表預測框和真實框兩個中心點距離的平方,c代表兩個框的最小外接矩形對角線長度。如果兩個框完美重疊,d=0,IOU =1,DIOU =1-0 =1。如果兩個框相距很遠,趨近于1,IOU =0,DIOU =0-1 =-1。

5 實驗與結論

5.1 實驗環境

本文所述實驗均在Windows10 操作系統下進行。環境配置為python3.6.13,torch1.2.0,torchvision0.4.0,硬件環境為RTX 2080 Ti(11GB)×1,4 vCPU Intel(R)Xeon(R)Silver 4110 CPU@2.10GHz,16GB 內存。

5.2 數據集

數據集的質量是保證深度學習模型訓練結果的重要因素。本文數據集為自制數據集,通過網絡爬蟲等方法收集網絡公開的圖片,一共收集了4 050張圖片,數據集按照8 ∶1 ∶1 的比例分為訓練集、測試集和驗證集。數據集包含了多個場景下佩戴口罩的人臉圖片,數據集中人臉分辨率最大為1 536×1 876,最小為20×40,涵蓋了人臉出現在攝像頭拍攝圖像中的大多數可能尺寸,保證了網絡對小尺度人臉的識別需求。

5.3 評價指標

目標檢測的評價指標主要包括精度(Precision),召回率(Recall),平均精度(AP),平均精度均值(mAP)。

①精度

精度是指檢測結果中正確檢測的目標框數量與所有檢測到的目標框數量的比例。即,算法檢測出來的所有目標框中,正確框的數量占總檢測框數量的比例。精度計算公式為:

式中:TP 為被模型預測為正類的正樣本;TN 為被模型預測為負類的負樣本;FP 為被模型預測為正類的負樣本;FN 為被模型預測為負類的正樣本。精度越高,表示算法檢測出的目標框中正確率越高,具有更好的檢測準確性。

②召回率

召回率是指在所有真實目標框中,被算法正確檢測出的目標框的比例。在目標檢測任務中,召回率衡量的是算法對于真實目標框的檢測能力,即算法能夠檢測到多少真實目標框。召回率計算公式為:

式中:TP 為被模型預測為正類的正樣本;FN 為被模型預測為負類的正樣本。召回率越高,表示算法能夠檢測到更多的真實目標框,具有更好的檢測能力。

③平均精度AP

平均精度是評價模型檢測能力的主要指標之一。AP 是通過計算不同召回率下的精度值,再將這些精度值在召回率的范圍內進行平均得到的一個指標。一般來說,平均精度越高,表示模型的檢測效果越好。

平均精度均值是不同類別的平均精度的平均值。對于一個具有n個類別的目標檢測模型,其mAP 可以表示為所有類別AP 的平均值:

式中:N表示所有類別數量。

④F1

F1 是精確率和召回率的調和平均值,計算公式如下:

式中:FN 表示預測錯誤的樣本數量;TP 為被模型預測為正類的正樣本;FN 為被模型預測為負類的正樣本;FP 為被模型預測為正類的負樣本。

5.4 損失函數對比分析

CIOU 是一種改進的IOU 損失函數,它通過綜合考慮預測框和真實框的中心點、寬度、高度和長寬比等因素來計算損失;DIOU 也是一種改進的IOU損失函數,它通過綜合考慮預測框和真實框之間的距離、中心點、寬度、高度和長寬比等因素來計算損失。

為比較使用不同損失函數的模型效果,實驗對CIOU 和DIOU 進行了實驗,最終的Loss 曲線如圖8所示。

圖8 不同損失函數Loss 曲線圖

圖8 中,(a)為CIOU 損失函數圖像,(b)為DIOU損失函數圖像。由圖可知,兩種損失函數數值下降速度相仿,(b)圖的訓練損失與驗證損失曲線相比(a)圖更加貼合,曲線更加平滑,收斂效果更好,因此選取DIOU 作為本文提出的YOLO-l-sd 模型的損失函數。

5.5 消融實現結果分析

為了驗證各個注意力模塊對YOLOX-l 檢測效果的影響,在數據集上進行消融實驗。在損失函數都采用DIOU 的基礎上,模型加入SW-MSA 注意力和DW 卷積模塊的消融實驗,結果如表1 所示。

表1 消融實驗結果

對比發現,經過加入DW 卷積后,AP 降低了0.68%,但召回率提升了0.99%,精度提升了1.05%。而加入SW-MSA 注意力機制以后算法相較于原本的算法,AP 提升了0.36%,召回率提升了5.24%,精度提升了0.93%;在SW-MSA 基礎上加入DW 卷積后,AP 提高了0.32%,召回率提高了0.22%,精度提升了1.52%。經過綜合對比,相較于原始的YOLOX-l,YOLO-l-sd 的AP 提升了0.68%,召回率提升了5.46%,精度提升了2.45%。

①遮擋目標檢測效果對比

圖9(a)為YOLOX-l 的檢測結果,圖9(b)為YOLOX-l-sd 的檢測結果,可以看出,在遮擋目標檢測中,YOLOX-l 出現了漏檢,而YOLOX-l-sd 可以正常檢出。

圖9 遮擋目標檢測結果對比

②小目標檢測效果對比

圖10(a)為YOLOX-l 的檢測結果,圖10(b)為YOLOX-l-sd 的檢測結果,YOLOX-l-sd 算法的檢測精度要比原始算法平均提高了3%左右。

圖10 小目標檢測結果對比

通過對比實驗可以看出,文章提出的YOLOX-lsd 算法在召回率、精確率、F1 和mAP 等指標上相比原始算法均有不同程度的提高,對小目標與遮擋目標的檢測效果也有了明顯的提升。

6 結論

為了提高小目標和遮擋目標場景下口罩佩戴目標檢測的效果,文章對YOLOX 算法進行了改進,替換普通卷積為DW 卷積,在CSPDarkNet 主干網絡中引入 Swin Transformer 多 層注意力機制,在CSPLayer、SPP 模塊中添加SW-MSA 注意力模塊,將SPP 模塊BN 正則化方法修改為LN,同時采用DIOU 損失函數來提高網絡精確度。實驗結果表明,文章提出的YOLOX-l-sd 算法有效提升了佩戴口罩目標檢測算法的性能,與原始算法相比,模型的檢測精度提高了2.45%。在未來的工作中,將繼續優化模型,研究佩戴口罩的人臉分類網絡,進一步研究密集人群中佩戴口罩人臉識別問題。

猜你喜歡
口罩注意力卷積
讓注意力“飛”回來
基于3D-Winograd的快速卷積算法設計及FPGA實現
戴口罩的苦與樂
因為一個口罩,我決定離婚了
從濾波器理解卷積
霧霾口罩
基于傅里葉域卷積表示的目標跟蹤算法
“揚眼”APP:讓注意力“變現”
A Beautiful Way Of Looking At Things
一種基于卷積神經網絡的性別識別方法
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合