李永玲 秦 勇 曹志威 謝征宇 吳志宇,3
(1.北京交通大學軌道交通控制與安全國家重點實驗室,100044,北京;2.北京交通大學交通運輸學院,100044,北京;3.北京交通大學軟件學院,100044,北京∥第一作者, 碩士研究生)
新冠病毒(COVID-19)的爆發給社會經濟帶來了巨大的影響。軌道交通作為復工復產的主要交通工具,其空間密閉、人員密集且流動性廣的特點有利于病毒的傳播。為了降低人們在公共場所感染新冠肺炎的概率,我國疾病控制和預防中心要求乘客乘坐軌道交通(地鐵、火車)時須佩戴口罩[1]。但是軌道交通防疫人員有限,因此需要口罩智能識別算法來檢測安檢口、閘機口及大廳等場所的乘客是否佩戴口罩,并設置自動語音提醒。這可以提高進站速度,減輕軌道交通防疫人員的工作壓力[2-3]。
佩戴口罩檢測研究屬于人臉檢測的范疇。基于深度學習的人臉檢測算法表現較好[4]。文獻[5]提出了一種單步多尺度目標檢測器(Single Shot MultiBox Detector,簡為SSD)[6]的口罩檢測模型,其通過K-Means聚類的方法確定標注數據集中人臉框的長寬比分布,修改SSD算法的錨框(anchor)比例。該檢測算法符合實時性要求,但是沒有針對軌道交通場景做適配。文獻[7]在RetinaNet模型的基礎上提出了口罩檢測模型,以ResNet為特征提取骨干網絡,增加了卷積塊注意力機制(Convolutional Block Attention Module,簡為CBAM)來調整感受野的大小使其關注感興趣的檢測區域。由于深度學習算法的訓練需要大量的數據集,文獻[8]提出了口罩遮擋人臉檢測數據集,包括模擬口罩人臉數據集和真實口罩人臉數據集。在數據集中,人臉目標較大,且不包含復雜的現實背景場景。本文提出了一種針對軌道交通場景的輕量化口罩檢測算法。該算法可以部署在不具有圖形處理器(Graphics Processing Unit,簡為GPU)的設備上,實時檢測乘客是否佩戴口罩。
為滿足在軌道交通場景現有的中央處理器(Central Processing Unit,簡為CPU)部署的要求,本文提出了一種輕量化口罩檢測Mask-Det算法。圖1為其網絡結構圖。該算法主要包括輕量化特征提取網絡EfficientNet-B3、輕量化特征融合模塊及損失函數模塊。為了提高該算法在軌道交通場景的檢測效果,本文收集整理了軌道交通口罩檢測數據集,并使用遷移學習的方法提高該算法對軌道交通場景乘客是否佩戴口罩的適配性。

注:圖中數值運算表示特定分辨率及通道數的特征圖;例如,38×38×48 表示 38 像素×38 像素,且通道數為 48 層的特征圖;MBconv 為深度可分離卷積的倒置線性瓶頸層;con1×1表示卷積核為 1×1 的卷積操作。
本文使用EfficientNet模型[9]作為特征提取網絡模型。卷積神經網絡通常采用擴展模型的深度、通道數或圖像輸入分辨率的方法來提高準確率。EfficientNet模型提出了一個復合的網絡縮放方法,在節省計算資源的同時可獲得更高的準確率。即:
(1)
式中:
d——網絡深度;
w——通道數;
r——輸入圖像的分辨率;
α——分配給網絡深度的計算資源參數,α≥1;
β——分配給網絡通道數的計算資源參數,β≥1;
γ——分配給圖像分辨率的計算資源參數,γ≥1;
φ——復合縮放系數,φ=1,2,…,7。
其中:α,β和γ是通過網格搜索(Grid Search)方法獲得的常量;φ的值越大,需要的計算資源越多。每秒運算的浮點數(FLOPS)為卷積神經網絡的卷積運算量,由于卷積運算在神經網絡中占主導地位,故使用式(1)縮放卷積神經網絡使FLOPS總量增加約(αβ2γ2)φ倍。而EfficientNet模型約束αβ2γ2≈2,因此,對于任意的縮放系數φ,運算量為原來的2φ倍。EfficientNet模型采用MnasNet結構[10]進行多目標神經網絡結構搜索,構建了FLOPS為400 M的EfficientNet-B0骨干神經網絡,其網絡結構如表1所示。

表1 EfficientNet-B0骨干神經網絡
EfficientNet-B3網絡能較好地實現檢測速度和準確率的平衡,因此本文選用EfficientNet-B3網絡作為輕量化的特征提取網絡模型[11]。從Efficient-Net-B0網絡得到EfficientNet-B3網絡需要經過兩個步驟:第一步,設φ=1,通過網格搜索得到α=1.2,β=1,γ=1.15;第二步,令式(1)中φ=3,縮放EfficientNet-B0網絡的深度、通道數和所輸入圖片的分辨率,即得到EfficientNet-B3網絡,其結構見圖2。

圖2 輕量化特征提取網絡EfficientNet-B3
本文將輸入的圖像調整為300像素×300像素,從EfficientNet-B3中提取第7、17、25層特征圖,并在第25層特征圖的基礎上新增三層特征圖。圖1所示上述6層特征圖的大小依次為38像素×38像素、19像素×19像素、10像素×10像素、5像素×5像素、3像素×3像素和1像素×1像素。為了與最終添加特征融合的Mask-Det網絡對比,稱該網絡為Efficient-Mask網絡。
淺層特征圖包含更多的位置、細節信息,適用于檢測小目標;但由于經過的卷積運算次數少,用于識別的語義信息不夠豐富[12]。本文提出一種輕量化的特征融合方法,為淺層特征圖融合高層特征圖的語義信息,從而在沒有降低算法實時性的同時,提高算法對于小人臉的檢測準確率。
對38×38、19×19、10×10的3層特征圖的信息進行融合。如圖1所示,首先,采用1×1的卷積將上述3層特征圖的通道數變為128;然后,對19×19、10×10的2張特征圖做雙線性差值上采樣,得到3張相同維度的特征圖;接著,對這3張特征圖采用concatenate級聯;最后,引入 L2Norm算法[6]歸一化將級聯后的特征圖中每個位置的特征范數縮放到5。最終可得融合了高層語義信息和低層局部信息的38×38特征圖,提高了算法對小目標人臉的檢測效果。
Mask-Det口罩檢測算法的損失函數是分類損失Lconf和定位損失Lloc的加權,其中,Lconf是多個類別分類置信度c上的softmax損失[6],Lloc為預測值l和真實值g之間的Smooth L1損失。即:
θLloc(x,l,g))[6]
(2)
式中:
N——匹配的默認框數量,如果N=0,則L(x,c,l,g)=0;
x——指示參數;x=1表示t與g匹配,x=0表示t與g不匹配;
θ——定位損失Lloc的權重。
基于深度學習的人臉檢測算法需要大量的數據樣本來進行訓練。考慮到軌道交通運營的特殊性,難以獲取大量的訓練圖像,故本文分別創建了公共場景和軌道交通場景的口罩檢測數據集。2個數據集的示例圖如表2所示。

表2 公開場景和軌道交通場景的口罩檢測數據集示例圖
公共場景的口罩檢測數據集由WIDER Face[13]數據集、MAFA[14]遮擋人臉數據集及公共場景佩戴口罩人臉數據集組成,其中訓練集包含22 631張圖像,測試集包含3 000張圖像。軌道交通場景的口罩檢測數據集包含2 500張圖像,其中訓練集和測試集的圖像數分別為2 200張與300張。
本文試驗采用了深度學習框架Pytorch[15],Ubuntu16.04系統,訓練所用GPU(圖形處理器)型號為NVIDIA P100。測試所用設備為Jeson Nano嵌入式設備、Intel Core i5-6300HQ CPU筆記本、Intel Core i7-8700K CPU臺式機。
訓練過程中使用的超參數為:批處理大小(batch size)為16,動量為0.9,初始化學習率為0.001;經過42輪(epoch)和52輪公共場景數據集訓練,學習率分別下降為0.000 1、0.000 01。整個訓練過程包含64輪(大約16萬次迭代)。Mask-Det算法在軌道交通數據集上遷移學習4萬次迭代,學習率為0.000 01。
為了驗證模型的有效性,本文提出的Mask-Det算法將同Faster R-CNN[16]、YOLOv3[17]、SSD[6]等算法進行比較。首先,在公共場景的口罩檢測數據集上進行各算法的訓練;然后,采用遷移學習的方法,在軌道交通場景的數據集上繼續訓練Mask-Det算法,增加網絡對軌道交通場景的適配性。
本文采用目標檢測算法常用評價指標,即平均準確率RAP、類別平均準確率RmAP、刷新幀率RFPS及模型大小(單位Mbit)。
p=t/(t+f)
(3)
re=t/(t+n)
(4)

(5)
(6)
式中:
t——真正例,即正確檢測到的目標;
f——假正例,即誤報的目標;
n——假負例,即未檢測到目標;
p——查準率;
re——查全率;
C——目標檢測的類別數;
RAP——平均準確率;
RmAP——類別平均準確率。
RFPS越大代表算法的實時性越高。模型越小代表算法越輕量化,越容易部署到現有的CPU設備上。
在實際應用中,準確率的定義為正確檢測到的目標占測試集中所有真實值的比例。式(8)計算的準確率r準確率值與式(5)計算的召回率值相等。
r準確率=t/g
(7)
軌道交通場景的測試集包含300張圖像,共計1 027個佩戴口罩的人臉目標和327個未戴口罩的人臉目標,涵蓋了進站口、安檢口、大廳、電梯、站臺、車廂等各場景的乘客。表3對比了本文提出的Efficient-Mask、Mask-Det算法與Faster R-CNN[16]、YOLOv3[18]、SSD[6]等主流目標檢測算法在軌道交通數據集上的表現。測試設備均為Intel Corei5-6300HQ CPU筆記本。
由表3可看出:輸入圖像的分辨率越高、骨干網絡模型越大,則檢測的精度越高,但計算速度越慢;Faster R-CNN、YOLOv3及SSD等算法的輸入圖像分辨率分別為600像素×1 000像素、416像素×416像素、300像素×300像素,均大于等于Mask-Det算法的分辨率輸入;但是Mask-Det的類別平均準確率為72.77%,明顯高于Faster R-CNN和SSD算法。

表3 不同算法在軌道交通測試集上的結果對比
骨干網絡用來提取輸入圖像的特征。表3中只有EfficientNet-B3是輕量化的骨干網絡,所以采用該骨干網絡的Mask-Det和Efficient-Mask模型較小、檢測速度較快。Mask-Det的模型大小約為Faster R-CNN、YOLOv3、SSD算法模型的0.80倍、0.38倍、0.50倍;每秒處理的幀數是上述三種算法的210倍、7倍、2.1倍。Mask-Det算法在普通CPU上每秒處理21幀圖像,滿足乘客佩戴口罩檢測的實時性要求。
表4為Mask-Det算法在軌道交通數據集、不同CPU設備上準確率和速度的測試結果。Mask-Det的檢測準確率可以達到96.68%,即在300張軌道交通測試圖像(包含1 354個目標(all ground truths))中,能正確識別到1 309個目標。Mask-Det算法在嵌入式設備Jeson Nano、Intel Corei5-6300HQ CPU及Intel Core i7-8700K CPU上的處理速度分別為7幀/s、21幀/s、61幀/s。需要強調的是,由于采用相同的訓練權重,算法的準確率和運行設備無關,所以準確率相同,速度不同。用戶可以按照進站口、安檢口及電梯等位置的客流大小及乘客通行時間的長短來選擇不同的設備,以檢測乘客是否佩戴口罩。

表4 Mask-Det算法在不同CPU設備上的測試結果
各算法的檢測結果對比如表5所示。FasterR-CNN算法是典型的分類和檢測分開的二階段算法。因此,與其它一階段算法相比,Faster R-CNN算法的檢測速度最慢,無法在普通的CPU設備上實現實時檢測。此外,Faster R-CNN算法誤報率高,可能誤將耳朵或手識別為人臉,導致其平均類別準確率值較低。雖然YOLOv3算法對人臉檢測的類別準確率只略低于Mask-Det算法,但該算法需先將輸入圖像的分辨率調整為416像素×416像素,再送入DarkNet-53特征提取網絡,而其模型的參數量為240.1 Mbit,且檢測速度僅為3幀/s,故該算法即使部署到軌道交通場景的現有設備上也無法滿足實時檢測的要求。

表5 不同算法的檢測對比圖
目前,許多研究通過單獨增加卷積神經網絡的d、w及r來優化算法。EfficientNet建立了3個維度之間的縮放關系,較好地達到了準確率和檢測速度的平衡。本文提出的Efficient-Mask算法采用EfficientNet輕量化骨干網絡及300像素×300像素的網絡圖像輸入分辨率,在減少參數量的同時使速度也最快。卷積神經網絡因其淺層特征圖包含更多的空間細節特征,故常用于檢測小目標,但其經過的卷積運算次數少、語義信息少,導致小目標人臉的檢測準確率較低。為了解決該問題,本文提出Mask-Det算法,在Efficient-Mask算法的基礎上增加了特征融合模塊,將深層特征圖的語義信息融合到用于檢測小目標的淺層特征圖上。特征融合模塊增加了計算量,所以與Efficient-Mask算法相比,Mask-Det算法的模型參數量有少量增加,算法速度有所降低,但是類別平均準確率顯著提高,滿足部署到現場的輕量化和實時性、高準確率的要求。
由表5可見:Mask-Det算法的人臉識別框最全,說明其對小目標人臉的漏檢率低,檢測效果優于其他算法。此外,表5中每張人臉的識別框內均有相應算法對檢測到目標的置信度數字評分,其中Mask-Det算法的評分最高。
最后,通過測試Mask-Det算法在3種不同設備上的速度和準確率,確定Mask-Det算法能滿足軌道交通輔助不同場景工作人員檢測的要求,可部署性強。
本文提出了一種基于軌道交通監控視頻的輕量化乘客佩戴口罩檢測算法。首先,采用輕量化骨干網絡EfficientNet提取特征圖;然后,將深層特征圖的語義信息融合到用于檢測小目標的淺層特征圖上,提高了該算法對小目標人臉的檢測效果;最后,將該算法先后在整理的公共場景和軌道交通場景的數據集訓練,提高了對軌道交通場景的適配性。
相比其他主流算法,本文提出的Mask-Det算法檢測準確率高(類別平均準確率為72.77%、準確率達96.68%)、模型參數小(僅為90.8 Mbit)、檢測速度快(61幀/s),能實時檢測軌道交通安檢口、閘機口、大廳等場所監控視頻中的乘客是否佩戴口罩,有利于減少人員工作量、實現安防監控智能化,從而提高進站速度。