林思海



關鍵詞:口罩檢測;SSD;SeNet;ResNet;特征融合;數據增強
新型冠狀病毒是人類面臨的第三次冠狀病毒大流行。2020年1月30日WHO宣布新冠肺炎疫情構成國際關注的突發公共衛生事件。2020年3月13日,WHO評估認為新冠肺炎可被定為大流行病[1]。
新冠疫情期間,佩戴口罩成為出入公共場合的行為規范。在機場、地鐵站、醫院等公共服務和重點機構場所規定需要佩戴口罩,口罩佩戴檢查已成為疫情防控的必備操作[2]。本文提出一種基于深度學習的復雜場景下口罩佩戴實時檢測算法。與人工現場監督相比,基于深度學習的監督系統不需要管理人員實時監控和與人流密切接觸。同時少量的管理人員即可在管理中心通過多塊監視器管理大片區域,不僅提高了效率,還減少了管理人員與人流的長時間接觸。
目前,主流的目標檢測算法分為兩階段(twostage)方法如R-CNN[3]算法及其變體與一階段(onestage)方法如SSD[4]和YOLO[5]。目前已有許多優秀的研究基于上述算法框架進行改進。張潔等基于Faster R-CNN框架,通過結合k-means++算法對標注人頭檢測框進行聚類[6],并優化原模型非極大值抑制(non-maximum suppression)[7]算法懲罰函數剔除無效人頭預測框,改善行人之間由于遮擋導致的召回率低的問題。董艷花等人基于ResNet[8]殘差結構加深網絡的思想在SSD 網絡的定位分類前添加殘差結構,將特征提取網絡和分類定位層進行分離,進而使得進入分類定位層的卷積特征更加抽象,有效解決SSD網絡同時學習局部信息和高層信息雙重任務的問題,維護特征提取網絡的穩定性[9]。曾成等對YOLOv3框架的特征金字塔框架進行重構。通過增大尺寸和增加先驗框數量[10],降低神經網絡感受野,以此增強網絡對小目標的敏感度。
1 改進SSD 算法
1.1 ResNet-B SSD 算法網絡整體結構
本文提出的基于SSD改進的口罩佩戴檢測算法(ResNet50-Bidirectional Attention Feature Fusion SSD) 的網絡整體結構如圖1所示:
首先,使用ResNet50替換原有的VGG-16特征提取網絡,并將Conv4_x中Block1的第一個卷積核與捷徑分支上的卷積核的步長由原先的2調整為1;其次,為了豐富中低層特征圖的語義信息,針對中間三層特征圖提出BAFF(Bidirectional Attention Feature Fu?sion) ,將臨近的低層特征信息跨層與臨近高層抽象語義信息相融合,然后,與本層特征相融合后經過SeNet[11]進行預測;最后,第一層與最后兩層直接通過非極大值抑制(Non-Maximum Suppression) 進行預測,總共生成6個有效特征圖進行目標檢測。
1.2 ResNet50 SSD 特征提取網絡
本文選取ResNet50作為骨干網絡,相比原先的VGG-16特征提取網絡,ResNet50由于其使用跨層連接的思想,使得網絡層數更深的同時不容易發生梯度爆炸與梯度消失,能夠更好地提取圖像信息。
首先,將輸入尺寸為300X300 的RGB 對訓練圖像,經過前三個模塊后得到38X38的特征圖Conv3_x。然后,通過SeNet對預測特征層的通道進行權重分配,得到第一個預測特征層Con4_x,同時將Bolck1中步距全部修改為1。對于額外添加層,其由卷積、批量歸一化、Relu激活函數、卷積、批量歸一化、Relu激活函數構成。最后,將Conv4_x和5個額外添加層作為6個預測特征層,通過非極大值抑制算法(Non-MaximumSuppression) 對結果進行預測。
1.3 BAFF 特征融合機制
本文提出一種將注意力機制與特征融合相結合的特征強化模塊BAFF(Bidirectional Attention Feature Fu?sion)。對于預測特征層的中間三層使用BAFF模塊強化輸出特征圖的表征能力。首先,將上一層與下一層的特征圖經過1X1的卷積操作,將通道數調整到與本層通道數一致。然后,對上層特征圖進行尺寸為3×3,步距為2,padding為1的卷積操作;對下層特征圖進行尺寸為3×3步距為2的轉置卷積操作。將高層與低層的特征圖調整到本層的尺度后,通過簡單的注意力機制分別為其添加權重,以此來調整上下一層對本層特征圖的調優結果。最后,將上下兩層相加后與本層特征圖進行融合,輸入SENet網絡后得到新的預測特征圖。
2 實驗結果與分析
2.1 實驗環境與評價指標
本實驗在Windows10操作系統上運行,內存容量32G,處理器為AMD Ryzen 7 5800X3D,GPU顯卡型號為3090ti,顯存容量為24G,使用CUDA11.3以及Cudnn 驅動加速計算機的運行,在Pytorch深度學習框架上完成模型的搭建、訓練以及測試。
實驗采用COCO評價指標。首先單獨計算0.5到0.95每間隔0.5依次計算每個IoU(交并比)對應各個類別的平均精度值(Average Precision,AP) 后,對10個IOU值對應的平均精度取平均值,這是評估檢測效果的重要指標。最后取各個類別AP的平均值,得到平均精度均值(mean Average Precision,mAP) 用于評估目標檢測模型的精度,避免某些類別極端化而弱化了其他類別的性能,計算公式如下所示:
2.2 數據集
本文選用百度飛槳上的口罩佩戴數據集及自行采集標注的數據,總計2707張圖像。本文采用8:2的比例劃分訓練集和測試集,其中訓練集包含2166張圖片,測試集包含541張圖片。
2.3 實驗結果與分析
訓練過程中采用訓練集中的20%作為驗證集,優化器為Adam,初始學習率與權重衰減系數為0.0005。每15 訓練輪次更新一次權重,更新系數gamma 為0.55,總計訓練200輪。訓練批量大小為16。選用骨干網絡為VGG16的SSD、Faster R-CNN算法與本文算法進行比較,結果如表1所示。
由表1可知,本文算法優于上述兩種一階段與二階段的經典算法。特別是在IOU為0.75與0.50:0.95 下提升明顯。主要的原因有兩點:首先采用了網絡層次更深、特征提取能力更強的RestNet50 骨干網絡。使得網絡對輸入圖像提取的圖形與語義信息更加豐富。其次本文算法結合注意力機制與特征融合,對中間三層結合上下層進行特征融合,在特征融合時進行權重分配,提高預測效果好的特征層的權重,降低預測效果差的特征層的權重,以此達到彌補低層預測特征層語義信息不足和高層分辨率低對細節感知能力較差的缺點。對于上述兩點原因,本文進行了消融實驗證明兩者對網絡性能的影響。實驗結果如表2所示:
SSD算法與本文改進算法檢測效果對比圖如圖3 所示。由效果圖可知針對遠處以及較小人臉,本文算法相比原始算法具有更高的檢測精度和更低的漏檢率。
3 結束語
本文提出了一種基于SSD改進的口罩佩戴檢測算法。首先使用網絡層次更深、特征提取能力更強的ResNet50替換原有算法的VGG16作為骨干網絡。同時針對原始SSD算法多個預測特征層信息交互能力較弱的問題,提出BAFF特征融合機制。實驗證明,本文提出的算法在百度飛槳上的行人口罩佩戴數據集上有良好的表現能力。改進后的算法在訓練數據集上較原有算法的評價精度在IOU 為0.5、0.75、0.50:0.95下分別提升4.1%、9.9%、5.3%。