程廷豪,崔宇超,吳新淼
(四川大學(xué)電子信息學(xué)院,成都 610065)
隨著新冠疫情的爆發(fā),健康問題引起人們的注意,防疫工作的順利進行顯得尤其重要。在人流量密集的公共場所極易出現(xiàn)病毒的傳播感染,預(yù)防病毒傳播的有效途徑就是佩戴口罩。目前防疫工作主要是通過人工的方式進行,由工作人員檢測體溫并督促行人佩戴口罩,這在很大程度上造成了資源的浪費。應(yīng)用快速發(fā)展的計算機視覺技術(shù)可以達到無接觸自動化檢測的目的,能在很大程度上取得更高效精準的防疫效果。
對于行人是否佩戴口罩的檢測,歸根結(jié)底來說是目標檢測所研究的問題。近年來,神經(jīng)網(wǎng)絡(luò)算法得到廣泛應(yīng)用,有關(guān)目標檢測的算法與成果層出不窮:傳統(tǒng)的目標檢測算法通過滑動窗口對圖像遍歷,設(shè)置不同尺度的窗口得到候選區(qū)域,再對候選區(qū)域提取SIFT[1]、HOG[2]等特征,最后使用訓(xùn)練的分類器進行目標分類。2014年,Ross B. Girshick等人[3]使用region proposal[4]+CNN[5]編寫了R-CNN框架。然而,即使是后來出現(xiàn)的Faster R-CNN算法,也依然達不到實時檢測的標準。與此同時,YOLO[6]系列的目標檢測方法出現(xiàn)。
YOLO算法最早由Joseph Redmon等人于2015年提出,該算法基于DarkNet網(wǎng)絡(luò)框架。研究者們在YOLOv1的基礎(chǔ)上,將該算法開發(fā)了YOLOv2[7]和YOLOv3[8]版本。2020年,Alexey Bochkovskiy提出YOLOv4[9]版本的算法。
現(xiàn)有的目標檢測算法應(yīng)用于人臉口罩佩戴檢測中,可能出現(xiàn)因口罩的顏色及形狀各異、佩戴者膚色差別以及室外自然環(huán)境影響而導(dǎo)致檢測成功率低,識別魯棒性差。本文基于YOLOv4算法,提出一種優(yōu)化的口罩佩戴檢測模型。在YOLOv4算法的基礎(chǔ)上,修改原始網(wǎng)絡(luò)相關(guān)參數(shù),增加卷積層以提高網(wǎng)絡(luò)對目標特征的提取能力。實驗結(jié)果表明,基于YOLOv4的優(yōu)化模型在實際應(yīng)用中有理想的效果。
YOLOv4算法與YOLO系列算法類似:先將輸入圖像劃分成S×S的網(wǎng)格,每個網(wǎng)格都預(yù)測固定數(shù)量的邊框,然后根據(jù)閾值去除可能性較低的目標窗口,最后通過NMS[10]方法去除冗余窗口。在此基礎(chǔ)上,YOLOv4算法提出了一種高效強大的目標檢測模型。首先,YOLOv4在輸入端采用了包括Mosaic數(shù)據(jù)增強[11]、cmBN、SAT自對抗訓(xùn)練的技術(shù)[12]。其次,主干網(wǎng)絡(luò)加入了CSPNet(Center and Scale Prediction Net)[13],組成新的CSPDarkNet53結(jié)構(gòu)。YOLOv4的SPP模塊改進了最大池化方式并加入了FPN+PAN[14]的結(jié)構(gòu),實現(xiàn)了從不同的主干層對不同的檢測層進行特征聚合。最后在預(yù)測部分,使用了CIOU_Loss[15]損失函數(shù),使得預(yù)測框回歸的速度和精度都更高一些。
YOLOv4的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。可見該網(wǎng)絡(luò)主要由主干特征提取網(wǎng)絡(luò)CSPDarkNet53,空間金字塔池化結(jié)構(gòu)SPP以及路徑聚合網(wǎng)絡(luò)PANet三部分組成。每個CSP模塊前面的卷積核的大小都是3×3,步長為2,因此下采樣5次后得到的特征圖大小為19×19[16]。激活函數(shù)方面,YOLOv4也只在Backbone中采用了Mish[17]激活函數(shù),網(wǎng)絡(luò)后面仍然采用Leaky_relu激活函數(shù)。這樣的結(jié)構(gòu),減少了計算量,提高了網(wǎng)絡(luò)模型的推理速度和準確性。
圖1 YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)
對于輸入端,YOLOv4采用了Mosaic數(shù)據(jù)增強技術(shù)。該技術(shù)來自2019年底提出的CutMix[18]數(shù)據(jù)增強方式,如此豐富了檢測數(shù)據(jù)集,特別是隨機縮放增加了很多小目標,讓網(wǎng)絡(luò)的識別性能有所提升。
YOLOv4的特征金字塔部分采用了SPP和PANet的結(jié)構(gòu)。L5網(wǎng)絡(luò)層的輸出經(jīng)過了三次卷積再輸入到SPP進行1×1、5×5、9×9、13×13的最大池化,再經(jīng)過三次卷積最后輸入到PANet結(jié)構(gòu)。原本PANet網(wǎng)絡(luò)的PAN結(jié)構(gòu)[19]中,兩個特征圖結(jié)合是采用shortcut操作,而YOLOv4中則采用concat操作,特征圖融合后的尺寸發(fā)生了變化。
損失函數(shù)的設(shè)計會影響檢測模型的性能。最初,IOU_Loss就是反映預(yù)測框與目標框的交并比,但存在問題。當預(yù)測框與目標框不相交,或者預(yù)測框與目標框之間的IOU大小相等而具有不同的重疊方式,IOU_Loss便會失效。
后來的研究者提出了GIOU_Loss[20],然而,當預(yù)測框全部位于真實框內(nèi),此時GIOU_Loss也出現(xiàn)IOU_Loss相似的問題。如圖2所示。
圖2 GIOU的不足
此后,研究者提出了DIOU_Loss,具體表達式由公式1定義:
(1)
公式(1)中,IOU指預(yù)測框與目標框之間的交并比,Distance_2是指預(yù)測框和目標框的中心點之間的歐式距離,C指包含預(yù)測框和目標框的最小矩形,Distance_C指該最小矩形的對角線距離。
在YOLOv4中,進一步采用了CIOU_Loss的損失函數(shù),在公式(1)基礎(chǔ)上引入了一個box長寬比的懲罰項。具體表達式由公式(2)定義:
(2)
其中,v是衡量長寬比一致性的參數(shù),定義為:
(3)
可見,該損失函數(shù)增加了影響因子,會更加傾向于往重疊區(qū)域增多的方向優(yōu)化,尤其是在IOU為零的時候。
YOLOv4在COCO數(shù)據(jù)集上采用K-means[21]聚類出9個錨框用來邏輯回歸邊界框,這也意味著一旦設(shè)置好了錨框的大小,當檢測目標發(fā)生改變時,目標檢測器的性能就會受到影響。為了減小錨框?qū)z測的影響,我們采用矩形框的平均交并比(Avg IOU)這個指標,對訓(xùn)練集的所有目標使用K-means聚類方法,重新獲得適合訓(xùn)練集的錨框大小。聚類的平均交并比目標函數(shù)p可由公式(4)定義:
(4)
(5)
公式4中,b表示樣本,c表示通過K-means算法聚類的簇中心,m表示樣本總個數(shù),k表示聚類中心個數(shù),i和j分別表示樣本序號和聚類中的樣本序號,mk表示在第k個聚類中的樣本個數(shù)。公式5中,IIou表示真實框和預(yù)測框交集面積和并集面積的比值。
d(box,cen)=1-IIOU(box,cen)
(6)
公式(6)為利用K-means聚類算法的距離度量,box表示矩形框大小,cen表示一個簇中心矩形框大小?;诳谡峙宕鳈z測數(shù)據(jù)集特點及實際檢測需求,運用K-means聚類算法,重新設(shè)計的錨框大小為(11 19,27 44,55 68,62 125,112 106,107 207,181 190,210 307,322,381)。與原算法相比,檢測精度得到提升。
YOLOv4的輸入經(jīng)過CSPDarkNet53后輸出三個不同大小的特征層。特征層L3和L4分別經(jīng)過一次卷積再輸入PANet進行特征融合,卷積核大小均為1×1。特征層L5的輸出經(jīng)過三次卷積再輸入到SPP結(jié)構(gòu)進行最大池化,卷積核大小為1×1,3×3,1×1。這樣的設(shè)計雖然在一定程度上提高了網(wǎng)絡(luò)對目標的識別能力,但出于行人佩戴口罩這種特征區(qū)分度不明顯且檢測效果易受到佩戴者膚色以及自然環(huán)境條件影響的考慮,若直接使用YOLOv4原始網(wǎng)絡(luò)結(jié)構(gòu),檢測效果不能達到最優(yōu)。
因此,可以通過增加卷積網(wǎng)絡(luò)層,以實現(xiàn)更深層次特征的提取。受到Y(jié)OLOv4原始網(wǎng)絡(luò)結(jié)構(gòu)的啟發(fā),使L3和L4的輸出經(jīng)過卷積核大小分別為1×1、3×3、1×1的三次卷積再輸入PANet。同時,將SPP結(jié)構(gòu)的上下三個卷積層增加至5個卷積層,卷積核大小分別為1×1、3×3、1×1、3×3、1×1。這樣的結(jié)構(gòu),不僅加深了網(wǎng)絡(luò)的容量和深度,而且能獲得更大的感受野以及語義層次更高的特征信息。改進的YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 改進的YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)
NMS(Non Maximum Suppression)是在目標檢測最后階段抑制非極大值元素,搜索局部的極大值并保留其對應(yīng)的矩形框,最終去掉冗余的檢測框,保留最好的一個。
在傳統(tǒng)NMS中,IOU指標常用于抑制冗余檢測框,對于目標有遮擋的情況經(jīng)常產(chǎn)生錯誤抑制。在訓(xùn)練的過程中,YOLOv4配置文件的NMS類型依然是傳統(tǒng)類型的NMS(greedy-NMS[22])方法,我們可修改配置文件信息,使得訓(xùn)練過程中NMS使用DIOU-NMS[23]方法。經(jīng)過實驗驗證,相比YOLOv4原算法,檢測模型的召回率也會有小幅的提升。
本文研究的是口罩佩戴場景下的目標檢測問題,目前有關(guān)口罩佩戴檢測的公開數(shù)據(jù)集并不多。實驗中采用的數(shù)據(jù)主要通過爬蟲技術(shù)從網(wǎng)絡(luò)爬取了一部分符合要求的圖片,同時結(jié)合AIZOO數(shù)據(jù)集和RMFD數(shù)據(jù)集開放下載的部分圖片,以及通過網(wǎng)絡(luò)和視頻幀抽取的圖片。為了獲取更加豐富的訓(xùn)練圖片,又在室內(nèi)和室外拍攝了小部分圖片。最終構(gòu)成本實驗的口罩佩戴檢測數(shù)據(jù)集。
本文實驗使用的操作系統(tǒng)為Ubuntu 16.04,處理器型號為Intel Core i5-9600KF,顯卡型號為NVIDIA GTX 1080 Ti,采用NVIDIA CUDA10.2加速工具箱。
對優(yōu)化的YOLOv4算法開始訓(xùn)練時,訓(xùn)練階段的學(xué)習(xí)率設(shè)置為0.001,batchsize設(shè)置為16,輸入圖像的尺寸設(shè)置為608×608,decay設(shè)置為0.0005,momentum設(shè)置為0.949。當訓(xùn)練迭代次數(shù)達到8000次和9000次時,衰減學(xué)習(xí)率會使損失函數(shù)進一步收斂,設(shè)置衰減率為0.1。
為了評價網(wǎng)絡(luò)的性能和說明口罩佩戴檢測網(wǎng)絡(luò)的有效性,選取下列評價指標:
(1)查準率(Precision,P)和召回率(Recall,R)[24]:查準率是針對預(yù)測結(jié)果而言的,它表示預(yù)測為正的樣本中有多少是真的正樣本。預(yù)測為正有兩種可能,一種就是把正類預(yù)測為正類(TP),另一種就是把負類預(yù)測為正類(FP)[25],也就是公式(7):
(7)
召回率是針對原有的樣本而言的,它表示的是樣本中的正例有多少被預(yù)測正確了。由公式(8)給出:
(8)
(2)平均準確率(Average Precision,AP)和平均準確率均值(mean Average Precision,mAP):通常情況下用查準率-召回率(Precision-Recall,P-R)曲線來顯示目標檢測器在準確率和召回率之間的平衡。對于每一個類別的平均準確率定義為該類別P-R曲線下方的面積。公式(9)和公式(10)分別定義了AP和mAP的計算公式。
(9)
(10)
公式(10)中,N表示所有目標類別的數(shù)量。
三種優(yōu)化方法對網(wǎng)絡(luò)模型的影響效果如表1所示。用“√”表示使用了相應(yīng)的方法。
表1 不同優(yōu)化方法對算法性能的提升
在原算法的基礎(chǔ)上,重新設(shè)計錨框并改進網(wǎng)絡(luò)結(jié)構(gòu),網(wǎng)絡(luò)mAP性能提升了1.86個百分點,平均交并比提高2.39個百分點,說明優(yōu)化的網(wǎng)絡(luò)結(jié)構(gòu)確實能提高網(wǎng)絡(luò)對目標特征的提取能力。在此基礎(chǔ)上再改變NMS方法,也會使YOLOv4算法的檢測精度有0.2個百分點的提升,這證明了改進NMS方法能減小YOLOv4算法的定位誤差,可以小幅提高算法的性能。從表2可以看出,使用DIOU-NMS方法去訓(xùn)練網(wǎng)絡(luò),可以提高算法的召回率。
表2 不同NMS方法對算法召回率的影響
此外,在測試集中使用優(yōu)化的YOLOv4算法,將假正樣本數(shù)量降低了18.16%,使真正樣本的數(shù)量提升了1.52%。
表3 FP和TP數(shù)值評價
最后,實驗結(jié)果顯示優(yōu)化的YOLOv4算法具有更強的檢測性能。究其原因,其實是每一項優(yōu)化的方法都是結(jié)合YOLOv4算法在實際檢測過程中可能存在的改進點進行設(shè)計的,而使用組合的優(yōu)化方法可以很好地解決YOLOv4在口罩佩戴檢測中存在的瑕疵。訓(xùn)練過程及結(jié)果如圖4所示。
可以看出,用原始的YOLOv4模型在數(shù)據(jù)集上迭代10000次,最終的mAP是90.2%,而使用優(yōu)化后的YOLOv4模型再在同樣的數(shù)據(jù)集上迭代10000次,最終的mAP是92.3%,在準確度上有了提升。
如圖5所示,對于佩戴口罩的檢測,對比P-R圖,可見優(yōu)化后的算法其P-R圖與坐標軸圍成的面積更大,說明優(yōu)化后的算法性能更好。
圖5 P-R圖對比
本文運用YOLOv4算法與優(yōu)化的YOLOv4算法對現(xiàn)實生活的不同場景進行口罩佩戴檢測,良好環(huán)境下同一場景的檢測效果如圖6所示,可見YOLOv4原算法在檢測該場景時,出現(xiàn)了少數(shù)錯檢和漏檢的情況,而優(yōu)化的YOLOv4算法則能較好地避免這些問題。
圖6 良好環(huán)境下檢測效果圖對比
檢測也存在環(huán)境條件較差,如陰雨天的情況,如圖7所示。對此,優(yōu)化的YOLOv4算法表現(xiàn)出了較好的性能,能正確檢測出更多目標。
圖7 陰雨天檢測效果圖對比
對比YOLOv4原算法與優(yōu)化的YOLOv4算法在不同環(huán)境同一場景的檢測效果,可以直觀地反映出經(jīng)過優(yōu)化后算法的優(yōu)勢。這也從實際應(yīng)用的角度證明了優(yōu)化后的模型確實具有更好的性能。
本文基于YOLOv4模型,通過對算法優(yōu)化后再訓(xùn)練,最終得到的模型在人臉口罩佩戴檢測中的準確率和召回率分別達到了92.30%和88.20%,并且在較為復(fù)雜的公共場景下也能有不錯的檢測效果。但當待測人員面部光線發(fā)生變化時,該檢測模型也會存在錯檢、漏檢等問題。所以在下一步的研究工作中,將嘗試對輸入圖像進行預(yù)處理,進一步改進網(wǎng)絡(luò)性能,提升檢測精度。