程廷豪,崔宇超,吳新淼
(四川大學電子信息學院,成都 610065)
隨著新冠疫情的爆發,健康問題引起人們的注意,防疫工作的順利進行顯得尤其重要。在人流量密集的公共場所極易出現病毒的傳播感染,預防病毒傳播的有效途徑就是佩戴口罩。目前防疫工作主要是通過人工的方式進行,由工作人員檢測體溫并督促行人佩戴口罩,這在很大程度上造成了資源的浪費。應用快速發展的計算機視覺技術可以達到無接觸自動化檢測的目的,能在很大程度上取得更高效精準的防疫效果。
對于行人是否佩戴口罩的檢測,歸根結底來說是目標檢測所研究的問題。近年來,神經網絡算法得到廣泛應用,有關目標檢測的算法與成果層出不窮:傳統的目標檢測算法通過滑動窗口對圖像遍歷,設置不同尺度的窗口得到候選區域,再對候選區域提取SIFT[1]、HOG[2]等特征,最后使用訓練的分類器進行目標分類。2014年,Ross B. Girshick等人[3]使用region proposal[4]+CNN[5]編寫了R-CNN框架。然而,即使是后來出現的Faster R-CNN算法,也依然達不到實時檢測的標準。與此同時,YOLO[6]系列的目標檢測方法出現。
YOLO算法最早由Joseph Redmon等人于2015年提出,該算法基于DarkNet網絡框架。研究者們在YOLOv1的基礎上,將該算法開發了YOLOv2[7]和YOLOv3[8]版本。2020年,Alexey Bochkovskiy提出YOLOv4[9]版本的算法。
現有的目標檢測算法應用于人臉口罩佩戴檢測中,可能出現因口罩的顏色及形狀各異、佩戴者膚色差別以及室外自然環境影響而導致檢測成功率低,識別魯棒性差。本文基于YOLOv4算法,提出一種優化的口罩佩戴檢測模型。在YOLOv4算法的基礎上,修改原始網絡相關參數,增加卷積層以提高網絡對目標特征的提取能力。實驗結果表明,基于YOLOv4的優化模型在實際應用中有理想的效果。
YOLOv4算法與YOLO系列算法類似:先將輸入圖像劃分成S×S的網格,每個網格都預測固定數量的邊框,然后根據閾值去除可能性較低的目標窗口,最后通過NMS[10]方法去除冗余窗口。在此基礎上,YOLOv4算法提出了一種高效強大的目標檢測模型。首先,YOLOv4在輸入端采用了包括Mosaic數據增強[11]、cmBN、SAT自對抗訓練的技術[12]。其次,主干網絡加入了CSPNet(Center and Scale Prediction Net)[13],組成新的CSPDarkNet53結構。YOLOv4的SPP模塊改進了最大池化方式并加入了FPN+PAN[14]的結構,實現了從不同的主干層對不同的檢測層進行特征聚合。最后在預測部分,使用了CIOU_Loss[15]損失函數,使得預測框回歸的速度和精度都更高一些。
YOLOv4的網絡結構如圖1所示。可見該網絡主要由主干特征提取網絡CSPDarkNet53,空間金字塔池化結構SPP以及路徑聚合網絡PANet三部分組成。每個CSP模塊前面的卷積核的大小都是3×3,步長為2,因此下采樣5次后得到的特征圖大小為19×19[16]。激活函數方面,YOLOv4也只在Backbone中采用了Mish[17]激活函數,網絡后面仍然采用Leaky_relu激活函數。這樣的結構,減少了計算量,提高了網絡模型的推理速度和準確性。

圖1 YOLOv4網絡結構
對于輸入端,YOLOv4采用了Mosaic數據增強技術。該技術來自2019年底提出的CutMix[18]數據增強方式,如此豐富了檢測數據集,特別是隨機縮放增加了很多小目標,讓網絡的識別性能有所提升。
YOLOv4的特征金字塔部分采用了SPP和PANet的結構。L5網絡層的輸出經過了三次卷積再輸入到SPP進行1×1、5×5、9×9、13×13的最大池化,再經過三次卷積最后輸入到PANet結構。原本PANet網絡的PAN結構[19]中,兩個特征圖結合是采用shortcut操作,而YOLOv4中則采用concat操作,特征圖融合后的尺寸發生了變化。
損失函數的設計會影響檢測模型的性能。最初,IOU_Loss就是反映預測框與目標框的交并比,但存在問題。當預測框與目標框不相交,或者預測框與目標框之間的IOU大小相等而具有不同的重疊方式,IOU_Loss便會失效。
后來的研究者提出了GIOU_Loss[20],然而,當預測框全部位于真實框內,此時GIOU_Loss也出現IOU_Loss相似的問題。如圖2所示。

圖2 GIOU的不足
此后,研究者提出了DIOU_Loss,具體表達式由公式1定義:
(1)
公式(1)中,IOU指預測框與目標框之間的交并比,Distance_2是指預測框和目標框的中心點之間的歐式距離,C指包含預測框和目標框的最小矩形,Distance_C指該最小矩形的對角線距離。
在YOLOv4中,進一步采用了CIOU_Loss的損失函數,在公式(1)基礎上引入了一個box長寬比的懲罰項。具體表達式由公式(2)定義:
(2)
其中,v是衡量長寬比一致性的參數,定義為:
(3)
可見,該損失函數增加了影響因子,會更加傾向于往重疊區域增多的方向優化,尤其是在IOU為零的時候。
YOLOv4在COCO數據集上采用K-means[21]聚類出9個錨框用來邏輯回歸邊界框,這也意味著一旦設置好了錨框的大小,當檢測目標發生改變時,目標檢測器的性能就會受到影響。為了減小錨框對檢測的影響,我們采用矩形框的平均交并比(Avg IOU)這個指標,對訓練集的所有目標使用K-means聚類方法,重新獲得適合訓練集的錨框大小。聚類的平均交并比目標函數p可由公式(4)定義:
(4)
(5)
公式4中,b表示樣本,c表示通過K-means算法聚類的簇中心,m表示樣本總個數,k表示聚類中心個數,i和j分別表示樣本序號和聚類中的樣本序號,mk表示在第k個聚類中的樣本個數。公式5中,IIou表示真實框和預測框交集面積和并集面積的比值。
d(box,cen)=1-IIOU(box,cen)
(6)
公式(6)為利用K-means聚類算法的距離度量,box表示矩形框大小,cen表示一個簇中心矩形框大小?;诳谡峙宕鳈z測數據集特點及實際檢測需求,運用K-means聚類算法,重新設計的錨框大小為(11 19,27 44,55 68,62 125,112 106,107 207,181 190,210 307,322,381)。與原算法相比,檢測精度得到提升。
YOLOv4的輸入經過CSPDarkNet53后輸出三個不同大小的特征層。特征層L3和L4分別經過一次卷積再輸入PANet進行特征融合,卷積核大小均為1×1。特征層L5的輸出經過三次卷積再輸入到SPP結構進行最大池化,卷積核大小為1×1,3×3,1×1。這樣的設計雖然在一定程度上提高了網絡對目標的識別能力,但出于行人佩戴口罩這種特征區分度不明顯且檢測效果易受到佩戴者膚色以及自然環境條件影響的考慮,若直接使用YOLOv4原始網絡結構,檢測效果不能達到最優。
因此,可以通過增加卷積網絡層,以實現更深層次特征的提取。受到YOLOv4原始網絡結構的啟發,使L3和L4的輸出經過卷積核大小分別為1×1、3×3、1×1的三次卷積再輸入PANet。同時,將SPP結構的上下三個卷積層增加至5個卷積層,卷積核大小分別為1×1、3×3、1×1、3×3、1×1。這樣的結構,不僅加深了網絡的容量和深度,而且能獲得更大的感受野以及語義層次更高的特征信息。改進的YOLOv4網絡結構如圖3所示。

圖3 改進的YOLOv4網絡結構
NMS(Non Maximum Suppression)是在目標檢測最后階段抑制非極大值元素,搜索局部的極大值并保留其對應的矩形框,最終去掉冗余的檢測框,保留最好的一個。
在傳統NMS中,IOU指標常用于抑制冗余檢測框,對于目標有遮擋的情況經常產生錯誤抑制。在訓練的過程中,YOLOv4配置文件的NMS類型依然是傳統類型的NMS(greedy-NMS[22])方法,我們可修改配置文件信息,使得訓練過程中NMS使用DIOU-NMS[23]方法。經過實驗驗證,相比YOLOv4原算法,檢測模型的召回率也會有小幅的提升。
本文研究的是口罩佩戴場景下的目標檢測問題,目前有關口罩佩戴檢測的公開數據集并不多。實驗中采用的數據主要通過爬蟲技術從網絡爬取了一部分符合要求的圖片,同時結合AIZOO數據集和RMFD數據集開放下載的部分圖片,以及通過網絡和視頻幀抽取的圖片。為了獲取更加豐富的訓練圖片,又在室內和室外拍攝了小部分圖片。最終構成本實驗的口罩佩戴檢測數據集。
本文實驗使用的操作系統為Ubuntu 16.04,處理器型號為Intel Core i5-9600KF,顯卡型號為NVIDIA GTX 1080 Ti,采用NVIDIA CUDA10.2加速工具箱。
對優化的YOLOv4算法開始訓練時,訓練階段的學習率設置為0.001,batchsize設置為16,輸入圖像的尺寸設置為608×608,decay設置為0.0005,momentum設置為0.949。當訓練迭代次數達到8000次和9000次時,衰減學習率會使損失函數進一步收斂,設置衰減率為0.1。
為了評價網絡的性能和說明口罩佩戴檢測網絡的有效性,選取下列評價指標:
(1)查準率(Precision,P)和召回率(Recall,R)[24]:查準率是針對預測結果而言的,它表示預測為正的樣本中有多少是真的正樣本。預測為正有兩種可能,一種就是把正類預測為正類(TP),另一種就是把負類預測為正類(FP)[25],也就是公式(7):
(7)
召回率是針對原有的樣本而言的,它表示的是樣本中的正例有多少被預測正確了。由公式(8)給出:
(8)
(2)平均準確率(Average Precision,AP)和平均準確率均值(mean Average Precision,mAP):通常情況下用查準率-召回率(Precision-Recall,P-R)曲線來顯示目標檢測器在準確率和召回率之間的平衡。對于每一個類別的平均準確率定義為該類別P-R曲線下方的面積。公式(9)和公式(10)分別定義了AP和mAP的計算公式。

(9)
(10)
公式(10)中,N表示所有目標類別的數量。
三種優化方法對網絡模型的影響效果如表1所示。用“√”表示使用了相應的方法。

表1 不同優化方法對算法性能的提升
在原算法的基礎上,重新設計錨框并改進網絡結構,網絡mAP性能提升了1.86個百分點,平均交并比提高2.39個百分點,說明優化的網絡結構確實能提高網絡對目標特征的提取能力。在此基礎上再改變NMS方法,也會使YOLOv4算法的檢測精度有0.2個百分點的提升,這證明了改進NMS方法能減小YOLOv4算法的定位誤差,可以小幅提高算法的性能。從表2可以看出,使用DIOU-NMS方法去訓練網絡,可以提高算法的召回率。

表2 不同NMS方法對算法召回率的影響
此外,在測試集中使用優化的YOLOv4算法,將假正樣本數量降低了18.16%,使真正樣本的數量提升了1.52%。

表3 FP和TP數值評價
最后,實驗結果顯示優化的YOLOv4算法具有更強的檢測性能。究其原因,其實是每一項優化的方法都是結合YOLOv4算法在實際檢測過程中可能存在的改進點進行設計的,而使用組合的優化方法可以很好地解決YOLOv4在口罩佩戴檢測中存在的瑕疵。訓練過程及結果如圖4所示。
可以看出,用原始的YOLOv4模型在數據集上迭代10000次,最終的mAP是90.2%,而使用優化后的YOLOv4模型再在同樣的數據集上迭代10000次,最終的mAP是92.3%,在準確度上有了提升。
如圖5所示,對于佩戴口罩的檢測,對比P-R圖,可見優化后的算法其P-R圖與坐標軸圍成的面積更大,說明優化后的算法性能更好。

圖5 P-R圖對比
本文運用YOLOv4算法與優化的YOLOv4算法對現實生活的不同場景進行口罩佩戴檢測,良好環境下同一場景的檢測效果如圖6所示,可見YOLOv4原算法在檢測該場景時,出現了少數錯檢和漏檢的情況,而優化的YOLOv4算法則能較好地避免這些問題。

圖6 良好環境下檢測效果圖對比
檢測也存在環境條件較差,如陰雨天的情況,如圖7所示。對此,優化的YOLOv4算法表現出了較好的性能,能正確檢測出更多目標。

圖7 陰雨天檢測效果圖對比
對比YOLOv4原算法與優化的YOLOv4算法在不同環境同一場景的檢測效果,可以直觀地反映出經過優化后算法的優勢。這也從實際應用的角度證明了優化后的模型確實具有更好的性能。
本文基于YOLOv4模型,通過對算法優化后再訓練,最終得到的模型在人臉口罩佩戴檢測中的準確率和召回率分別達到了92.30%和88.20%,并且在較為復雜的公共場景下也能有不錯的檢測效果。但當待測人員面部光線發生變化時,該檢測模型也會存在錯檢、漏檢等問題。所以在下一步的研究工作中,將嘗試對輸入圖像進行預處理,進一步改進網絡性能,提升檢測精度。