莫偉龍,劉佳男,王迪,尹偉石
(長春理工大學 數(shù)學與統(tǒng)計學院,長春 130022)
2020年突如其來的肺炎疫情波及全世界,世界衛(wèi)生組織在Situation report-220中提出截至到2020年9月10日,全世界已經有超過3 060萬COVID-19病例和95萬死亡病例。為有效控制疫情蔓延,各地政府要求群眾外出必須佩戴口罩,但是不少行人存在僥幸心理,不佩戴或者錯誤佩戴口罩。為了改善這種情況,有必要對外出群眾的口罩佩戴情況進行檢測,降低因不佩戴或者錯誤佩戴口罩而造成的病毒傳染風險。
目前對于公眾場所人群口罩佩戴情況的檢測主要依靠于人工排查,但該方法勞動量大、排查效率低、傳染風險高,并且不能長期有效地提高人群佩戴口罩的自覺意識,因此如何智能高效地解決口罩的檢測問題成為了提高公共衛(wèi)生安全的關鍵。近年來,隨著深度學習的不斷發(fā)展與完善,很多企業(yè)及研究人員提出了一系列基于深度學習對口罩佩戴問題的目標檢測算法。百度首先開源了PyramidBox算法[1],這是一種上下文輔助的單步檢測算法,該算法原本用于人臉檢測,但在口罩佩戴問題上也取得了良好的檢測效果。滴滴出行科技有限公司提出了一種基于DFS的口罩佩戴檢測算法[2],該算法先使用DFS定位人臉,再通過Attention機制關注口罩區(qū)域,對該區(qū)域進行檢測進而判斷是否佩戴口罩。AIZOO提出一種基于SSD的輕量級口罩佩戴檢測算法[3],并對網絡結構進行優(yōu)化。UAI團隊[4]結合人臉檢測、關鍵點定位和口罩實例分割算法實現(xiàn)對口罩佩戴問題的智能識別檢測。上述算法雖然均能夠實現(xiàn)對口罩佩戴問題的檢測識別,但無法檢測口罩佩戴是否正確。
目前基于深度學習的目標檢測算法主要分兩類,一類是雙步目標檢測算法,例如:Fast-RCNN[5];另一類是單步目標檢測算法,例如:AFE-SSD[6]、YOLO[7]等,其中 YOLO v3 是一種優(yōu)秀的單步目標檢測算法。該算法能夠滿足實際生活中的實時檢測需求,與此同時,YOLO v3又融合了先驗框、特征融合金字塔等策略,極大程度上提高了檢測準確率。官網數(shù)據(jù)表明在COCO檢測集上,相較于RetinaNet-101在198 ms內mAP達到57.5%的檢測效果,YOLO v3僅用了51 ms,性能相當,速度卻快了3.7倍。YOLO v3以其檢測性能的優(yōu)越性,受到了諸多研究者的青睞。陳詠秋等人[8]提出基于YOLO v3算法的輸電線路鳥類檢測模型,該方法有效地解決了傳統(tǒng)驅鳥器啟停策略的弊端。郭進祥等人[9]將YOLO v3算法應用于機場場面飛機檢測領域,并將特征提取網絡中的卷積層改為空洞卷積,進而有效地提高了檢測準確率。施輝等人[10]提出一種基于改進YOLO v3算法的安全帽佩戴檢測方法,并結合特征融合金字塔、多尺度訓練等策略實現(xiàn)了安全帽佩戴檢測問題的實時性和準確性。張浩等人[11]引用Inception網絡思想,通過改進YOLO v3將其運用于目標識別與抓取。雖然YOLO v3被廣泛地應用于實際生活中,但目前還沒有學者將其運用于檢測人臉是否正確佩戴口罩這一場景下。
本文以YOLO v3算法為主體,將其運用于面部口罩佩戴情況的檢測,并針對口罩佩戴問題中出現(xiàn)的難以檢測的細節(jié)問題進行以下改進:(1)為了提高網絡對細節(jié)目標語義信息的提取能力,對YOLO v3檢測網絡最終輸出的8倍降采樣特征圖再進行2倍上采樣,并與特征提取網絡的第二個殘差塊中輸出的4倍降采樣特征圖進行連接;(2)為了提高網絡對細節(jié)目標位置信息的提取能力,在Darknet-53網絡的第二個殘差塊中增加至4個殘差單元;(3)為增強網絡梯度,取消原YOLO v3檢測網絡輸出層前的卷積操作,將其改為2個卷積和2個殘差單元的組合;(4)為增強網絡召回率,將YOLO v3檢測網絡的輸出層合并為一個最終檢測輸出;(5)本文使用多尺度訓練的策略以提高網絡對輸出圖片尺寸的穩(wěn)健性。
本文從Github及各大開源數(shù)據(jù)集上搜索、下載佩戴口罩人物圖片,并結合學校附近實拍圖片對圖片集進行篩選、歸類,制作成口罩圖片檢測數(shù)據(jù)集,最后通過實驗,對面部口罩佩戴問題進行檢測,觀察改進后YOLO v3的檢測性能。
相比于YOLO v2使用Darknet-19網絡對輸入圖片進行特征提取,YOLO v3采用新的特征提取網絡DarkNet-53。具體網絡結構如圖1所示。

圖1 Darknet-53網絡結構
由圖1知,Darknet-53中添加了5個殘差塊,每個殘差塊分別有 1、2、8、8、4個殘差單元,在每個殘差單元中,通過輸入與兩個conv單元進行殘差操作,如圖2(a)所示。與此同時每個conv單元又包含了卷積、歸一化處理、LeakyReLU激活函數(shù),如圖2(b)所示,因此在增大網絡深度的同時又有效地避免了梯度消失。

圖2 Darknet-53中單元結構
特征提取網絡Darknet-53最終將輸出三種不同尺度大小的特征圖,并將其輸入至YOLO v3的檢測網絡中。由于低層特征具有豐富的細節(jié)和定位信息,高層特征具有豐富的語義特征,因此YOLO v3檢測網絡通過上采樣將低層特征與高層特征進行融合,得到不同尺度的特征圖來對目標的位置和類別進行預測。具體結構如圖3所示。

圖3 YOLO v3檢測網絡
由于YOLO v3模型在COCO數(shù)據(jù)集上預測得到的9個先驗框位置大小能適用于本文的檢測目標,因此本文沿用了原網絡定義的先驗框大小,以下介紹具體的YOLO v3檢測算法。
該算法將YOLO v3檢測網絡輸出的特征圖片劃分成N×N個網格。如果當某個網格中存在檢測目標的中心,那么這個網格將負責預測該目標,如圖4所示。

圖4 圖像劃分示意圖
在檢測的過程中,每個網格都會產生3個先驗框,每個先驗框都會預測邊界框位置信息(x,y,w,h)和置信度C,其中置信度計算公式如下:

其中,P(obj)為邊界框所含目標的可能性,若網格中存在某個檢測目標,P(obj)=1,否則P(obj)=0;IOU為預測邊界框與真實標注框的交并比。
本文共引入沒有佩戴口罩、正確佩戴口罩和錯誤佩戴口罩三種目標類別。因此當引入類別屬性后,可用P(classi|obj)表示包含目標的每個網格中各個類別屬性的概率大小,同時為了得到每個邊界框的分類信息,將邊界框所屬網格的類別概率與邊界框的置信度相乘得到置信度評分,計算公式如下:

置信度評分代表了邊界框中目標屬于某個類的概率。
最后,先將邊界框的各個類別的置信度評分按高到低排序,將得分小于閾值的置為0,再用非極大值抑制算法(NMS)去掉重復率較大的邊界框,最后每一個邊界框只保留置信度評分大于0且最高的類,從而檢測出各類目標。
本文主要研究對面部口罩佩戴問題的檢測,但考慮到原始的YOLO v3網絡只能實現(xiàn)對口罩是否佩戴問題的檢測,而不能檢測出是否正確佩戴,因此需要改進原始的YOLO v3網絡,使改進后的YOLO v3網絡能夠滿足對是否正確佩戴口罩問題的檢測。
口罩佩戴問題中很多細節(jié)錯誤屢見不鮮,例如:鼻夾條按壓不到位、漏出口鼻等,相對于一般較大的目標識別,這些細節(jié)本身像素點少、特征不夠明顯,再考慮隨著網絡層數(shù)不斷增加,過多的降采樣使得目標分辨率不斷下降,語義特征嚴重丟失,原始的YOLO v3網絡對這些細節(jié)問題的檢測存在明顯的困難,因此為了使網絡獲取口罩佩戴時更多細節(jié)的特征信息,提高對細節(jié)目標的檢測準確率,需要改變原有的輸出方式,因此本文建立如下的特征融合目標檢測層:
(1)為提高網絡對細節(jié)目標語義信息的提取能力,對YOLO v3檢測網絡輸出的8倍降采樣特征圖再進行2倍上采樣,并與特征提取網絡的第二個殘差塊中輸出的4倍降采樣特征圖進行連接。
(2)為了提高網絡對細節(jié)目標位置信息的提取能力,在Darknet-53網絡的第二個殘差塊中增加至4個殘差單元。
(3)為增強網絡梯度,取消原YOLO v3檢測網絡輸出層前的卷積操作,將其改為2個卷積(conv unit)和2個殘差單元(ResNet unit)的組合。
通過上述方法,可建立輸出為4倍降采樣的特征融合目標檢測層,它提高了對微小錯誤的信息提取能力。除此之外,為增強網絡召回率,將YOLO v3檢測網絡的輸出層合并為一個最終檢測輸出。改進后的網絡結構如圖5所示。

圖5 改進后的YOLO v3網絡
YOLO v3算法采用卷積神經網絡來提取特征,最后通過全連接層來對目標類別進行預測。由于全連接層的存在,網絡對輸入圖片的尺寸不具備穩(wěn)健性。為增強網絡對輸入圖片尺寸的穩(wěn)健性,本文采取多尺度訓練的策略,然而多尺度訓練僅對全卷積網絡有效,因此本文將全連接層改為全卷積操作。
例如,當輸入圖片尺寸為512×512×3時,經過Darknet-53網絡后,輸出特征圖大小為16×16×1 024。圖6(a)通過一個包含4 096個神經元的全連接層后,得到了一組4 096×1的特征圖;圖6(b)使用一組 16×16×4 096的卷積核,最終得到1×1×4 096的特征圖。然而當輸入特征圖尺寸大小發(fā)生改變時,圖6(a)中的全連接層需要相應修改參數(shù)個數(shù)才能使網絡繼續(xù)正常運行下去,而圖6(b)改為全卷積操作后網絡能夠正常運行。除此之外,網絡在進行前向傳播運算時,對于 圖 6(a)共需要計算16×16×1 024×4 096+1=1 073 741 825個參數(shù),而對于圖6(b)則只需要計算(16×16+1)×4 096=1 052 672個參數(shù)。由此可見,將全連接層改為全卷積操作后,能夠有效減少參數(shù)個數(shù),提高網絡運算效率。

圖6 全連接層轉化為全卷積層
實驗訓練集是網絡訓練中必不可少的條件,而對于口罩佩戴檢測任務一直沒有開源的訓練集可供直接使用,因此,本文自制了一套口罩佩戴訓練集,具體包含以下四方面:數(shù)據(jù)的拍攝與收集、數(shù)據(jù)的預處理、數(shù)據(jù)的篩選和數(shù)據(jù)的標記。
(1)數(shù)據(jù)的拍攝與收集
口罩佩戴訓練集的數(shù)據(jù)主要來源于兩部分:網絡搜集和行人隨機抓拍。網絡搜集為主要數(shù)據(jù)來源,行人隨機抓拍為次要數(shù)據(jù)來源。
本文從Github及各大開源數(shù)據(jù)集上搜索、下載佩戴口罩人物圖片。同時,為保證訓練集的豐富性,本文通過架設照相機,在長春理工大學及其附近主要街道對行人進行隨機抓拍,獲取不同時間段、不同地點的照片數(shù)據(jù),并進行保存。
(2)數(shù)據(jù)的預處理
由于YOLO v3采用DarkNet-53網絡對圖片進行特征提取,DarkNet-53網絡中下采樣倍率為32,所以需要對圖片集進行預處理,將口罩佩戴圖片集中,圖片分辨率大小分為一系列32倍數(shù)的值。
(3)數(shù)據(jù)的篩選
從相機抓拍得到的圖片數(shù)據(jù),有一部分圖片沒有出現(xiàn)行人以及口罩等主體,這部分圖片對本文研究沒有實際意義,所以將該部分圖片進行刪除,本文只使用有行人的圖片作為訓練集。為體現(xiàn)改進后的網絡能檢測出口罩佩戴中微小錯誤的優(yōu)勢,本文主要保留目標較小的佩戴口罩的行人照片。
最終共篩選出8 000張圖片作為訓練集樣本,其中是否佩戴口罩圖片各3 000張、是否正確佩戴口罩圖片各1 000張;同時,按照訓練集:測試集=9∶1的比例選取相應數(shù)量圖片作為測試集。
(4)數(shù)據(jù)的標記
本文采用labelImg工具對圖片進行標記,利用該標記工具,在人工操作過程中只需要在圖片中標記出自定義的各種目標,該工具將會自動生成相對應的xml文件可供網絡讀入。其中l(wèi)abelImg操作界面如圖7所示。

圖7 labelImg操作界面
針對佩戴口罩、未佩戴口罩、正確佩戴口罩及錯誤佩戴口罩,本文有以下規(guī)定:
(1)佩戴口罩:若人臉部分出現(xiàn)口罩即認為佩戴口罩,如圖8(a)所示。
(2)未佩戴口罩:若人臉部分沒有出現(xiàn)口罩即認為未佩戴口罩,如圖8(b)所示。
(3)正確佩戴口罩:若人臉部分的口、鼻完全被口罩遮擋住即認為正確佩戴口罩,如圖8(c)所示。
(4)錯誤佩戴口罩:在佩戴口罩的前提下若人臉部分的口或鼻裸露即認為錯誤佩戴口罩,如圖8(d)所示。

圖8 口罩佩戴情況
3.3.1 實驗平臺
由于本文所使用的神經網絡層數(shù)較多,參數(shù)訓練較復雜,對硬件環(huán)境要求較高,需要使用GPU進行運算,表1為本實驗硬件配置情況。同時,在計算機上搭建了用于本實驗的環(huán)境,包括Linux、CUDA、python、OpenCV、anaconda等。

表1 實驗硬件配置情況
3.3.2 網絡訓練
本文使用YOLO v3官網上提供的部分參數(shù)對網絡進行初始化,并隨機使用訓練集中圖片讓網絡進行參數(shù)學習,經過不斷地迭代更新,最終網絡檢測效果達到最優(yōu),部分實驗參數(shù)如表2所示。

表2 網絡參數(shù)表
本文是在原始YOLO v3算法的基礎上對其網絡結構進行修改,得到改進型YOLO v3算法。該網絡不僅能識別人臉是否佩戴口罩,還能夠檢測口罩是否佩戴正確。為了體現(xiàn)改進型YOLO v3的優(yōu)越性,本文將原始YOLO v3和改進型YOLO v3進行比較,即分別使用原始YOLO v3和改進型YOLO v3對是否佩戴口罩和是否正確佩戴口罩兩種情況進行檢測識別,通過對比最終的實驗結果,分析YOLO v3改進前后性能情況。
3.4.1 Loss函數(shù)曲線
在訓練過程中,通過繪制損失(Loss)函數(shù)曲線能夠直觀地觀察到預測值與真實值的偏差程度。本文使用二元交叉熵損失函數(shù),圖9為對應的Loss函數(shù)曲線,其中橫坐標表示訓練迭代次數(shù),縱坐標表示訓練過程中的Loss值。

圖9 Loss函數(shù)曲線
由圖9可觀察到,在訓練一開始Loss值下降較為迅速,當?shù)柧?0次后,Loss值下降較為緩慢,隨后在0.033附近上下浮動,且隨著迭代次數(shù)的增加,浮動范圍越來越小,因此可近似認為:當?shù)?00次時,Loss值收斂至0.033,結束訓練,所以本文選取迭代100次為最優(yōu)迭代次數(shù)。
3.4.2 網絡改進前后檢測性能對比
本文將檢測任務分為兩類,一類為檢測是否佩戴口罩,記為Y/N,另一類為檢測是否正確佩戴口罩,記為R/W。圖10為兩類檢測任務的結果對比,從圖中可清楚直觀地看出網絡改進前后檢測性能優(yōu)劣。

圖10 網絡改進前后檢測性能對比
由圖10可知,對于檢測是否佩戴口罩,YO?LO v3改進前后均有良好的檢測效果,但改進型YOLO v3更勝一籌;而對于檢測是否正確佩戴口罩,原始YOLO v3存在明顯的檢測困難,但改進型YOLO v3有更優(yōu)的檢測性能。因此,改進型YOLO v3網絡除了能檢測出是否佩戴口罩,還能夠檢測是否正確佩戴口罩。
為了更加具體清晰地突出改進型YOLO v3的優(yōu)越性,本文從召回率R(Recall)、精確率P(Precision)、平均精確率(mAP)和Loss值四個方面,針對上述兩種不同的檢測任務,對原始YO?LO v3和改進型YOLO v3進行對比。實驗結果如表3、表4所示。

表3 是否佩戴口罩結果對比表

表4 是否正確佩戴口罩結果對比表
3.4.3 結果分析
從實驗結果可以看出,對于是否佩戴口罩的識別問題,改進型YOLO v3的召回率(Recall)、平均精確率(mAP)明顯優(yōu)于原始YOLO v3,雖然精確率(Precision)不及原始YOLO v3,但是兩者相差無幾,除此之外,改進型YOLO v3的損失函數(shù)值比原始YOLO v3更低,因此對于是否佩戴口罩的識別問題,改進型YOLO v3明顯優(yōu)于原始YOLO v3。對于是否正確佩戴口罩的識別問題,改進型YOLO v3在召回率(Recall)、精確率(Precision)、平均精確率(mAP)和Loss值上均優(yōu)于原始YOLO v3。并且就召回率(Recall)和平均精確率(mAP)兩方面,改進型YOLO v3的結果較原始YOLO v3有較大的提升。
3.4.4 網絡改進前后實驗效果對比
為了更加直觀地感受網絡修改前后的區(qū)別,本文尋找了一些距離相對較遠的小目標進行測試,并對檢測圖像進行對比分析,具體檢測效果如圖11所示,其中左側圖片為原始YOLO v3檢測效果,右側圖片為改進型YOLO v3檢測效果。


圖11 檢測效果對比圖
對于圖11中(a),原始YOLO v3識別不出而改進型YOLO v3能正確識別;對于圖11(b),原始YOLO v3僅僅識別出是否佩戴口罩,而沒有檢測出是否正確佩戴口罩,但是改進型YOLO v3能正確識別口罩佩戴情況;對于圖11(c),原始YOLO v3存在明顯的錯誤識別,而改進型YOLO v3均能正確識別。上述例子可以說明改進型YOLO v3能夠對距離相對較遠的微小目標實現(xiàn)正確的分類識別,而原始YOLO v3網絡卻存在明顯的檢測困難。
根據(jù)上述實驗結果可以看到,對于口罩佩戴情況的檢測任務而言,改進型YOLO v3有著更優(yōu)的網絡性能,因此可以使用改進型YOLO v3先檢測面部是否佩戴口罩,再在佩戴口罩的基礎上檢測是否正確佩戴口罩,檢測效果如圖12所示。

圖12 改進型YOLO v3檢測效果圖
通過圖12可以看出,改進型YOLO v3能夠完成口罩佩戴情況的檢測任務。
為進一步研究干擾改進型YOLO v3網絡檢測結果的潛在因素,本文又選取檢測中常見的干擾因素,例如檢測視覺、光照強度和人臉膚色進行實驗說明,實驗結果如圖13所示。

圖13 不同干擾因素檢測效果圖
如圖13(a)所示,即使人臉在檢測時存在傾斜角度,改進型YOLO v3網絡依然能檢測出人臉錯誤佩戴口罩;由圖13(b)又可以知道,在夜間或者光線微弱的情況下,網絡依然有出色的檢測結果;最后,對于圖13(c),當面部膚色較黑且佩戴淺色口罩近距離檢測時,改進型YOLO v3網絡能正確識別,而對于面部膚色較黑又佩戴深色口罩遠距離檢測時,盡管網絡提高了對細節(jié)目標語義信息的提取能力,也無法正確檢測。
本文提出了一種基于改進YOLO v3算法的面部口罩佩戴檢測算法,針對口罩佩戴問題中常見的細節(jié)錯誤,原始YOLO v3網絡難以檢測,本文通過改變YOLO v3網絡結構,建立輸出為4倍降采樣的特征融合目標檢測層,提高網絡對口罩佩戴問題中微小錯誤的召回率和檢測的準確率;除此之外,采用多尺度訓練策略,提高網絡對輸入圖片尺寸的穩(wěn)健性。實驗結果表明,改進后的YOLO v3算法無論在檢測是否佩戴口罩還是在檢測是否正確佩戴口罩的檢測任務上均有較高檢測準確率。最后,本文又對檢測中可能出現(xiàn)的干擾因素進行研究,發(fā)現(xiàn)對于不同檢測角度、微弱光線強度下,改進型YOLO v3均能正確檢測,而對于面部較黑的檢測者,只有當其佩戴淺色口罩近距離檢測時才能被檢測出。綜上所述,改進型YOLO v3網絡能夠滿足口罩佩戴問題的檢測需求。