張路遙,韓 華
(上海工程技術大學 電子電氣工程學院, 上海 201620)
截止2020年12月,全球累計確診新冠肺炎病例已經超過8 000萬例,累計死亡病例已經超過180萬,病例每天以更快的速度上漲[1]。受疫情的影響,絕大多數主要經濟體受到了影響,為了抵制病毒的傳播,同時加快復產復工的速度,國家制定了相關的政策,要求人們在公共場所必須佩戴口罩,這一措施有效的降低了病毒的傳播概率,成為一個切實可行的舉措[2]。然而在公共場所中,會遇到有些人有可能忘記佩戴口罩的問題,在這種情況下一般是由安檢人員進行提醒,這不僅增加了人力成本,也增加了人與人之間傳播的概率。
在高鐵、地鐵等一般都會配備有人臉檢測識別裝置,這些裝置具有很高的人臉檢測識別率,然而其僅限于人臉的檢測識別,無法檢測人臉是否佩戴口罩,無法滿足當前疫情下的現實需求。
在這種背景下,為了能實時精確檢測人臉是否佩戴口罩,本文選擇目前比較流行的YOLOv5s目標檢測算法作為本文的基礎算法。本文從面部遮擋數據集MAFA(A Dataset of MAsked FAces)和人臉檢測數據集WIDER FACE中隨機抽取了9 800張人臉數據,并使用LabelImg重新進行了標注和校對。訓練出的模型不僅具有更高的精確度和召回率,而且可以較為容易地部署到移動端設備中。
近年來,計算機視覺在目標檢測方面取得了很大的進展。其中,YOLO系列算法作為目標檢測領域的一個經典算法,其思想是將檢測任務轉換成一個回歸的問題,利用整張圖作為算法的輸入,直接在圖像的多個位置上回歸這個位置的目標框及目標的類別。憑借著出色的檢測精度和速度,YOLO系列算法在包括行人檢測、缺陷檢測、醫學圖像檢測等多個領域得到了廣泛的應用。
YOLO系列目標檢測算法是一個不斷迭代的算法。隨著技術的發展,YOLO已經發展到了YOLOv5。其中,比較出名的為YOLOv3,YOLOv5。就大體的結構而言,YOLO系列算法的網絡結構都是由輸入端、Backbone、Neck和Prediction 4個部分組成。YOLOv5的網絡結構如圖1所示。

圖1 YOLOv5網絡結構圖
相比較于YOLOv3,YOLOv5在網絡結構的4個部分進行了創新:
(1)輸入端部分:使用Mosaic數據增強的方式,使用自適應錨框,自適應的圖片縮放;
(2)Backbone部分:使用Focus結構和CSP結構;
(3)Neck部分:使用FPN+PAN結構;
(4)Prediction部分:采用GIOU_Loss。
YOLOv5系列一共可以分為YOLOv5s、YOLOv5m、YOLOv5l和YOLOv5x共4種網絡。其中,YOLOv5s的網絡最小,精度相比較其它3個略差,但是其檢測速度最高。其它3種網絡是在YOLOv5s的基礎上,不斷的加深和加寬網絡結構,精度依次上升,但檢測速度略慢。由于本文要求的基礎算法要有較高的檢測速度,且有部署到移動或者嵌入式端的需求,故選用YOLOv5s目標檢測模型。
本文利用安裝在檢測設備上的攝像頭采集的視頻圖像作為輸入,并將其輸入到本文訓練好的YOLOv5s算法中進行人臉是否佩戴的檢測。算法會在采集的視頻圖像上繪制出人臉或人臉口罩的邊界框,并在邊界框的上方輸出是否佩戴口罩的檢測結果。當顯示佩戴口罩時會啟動裝置發出通過的命令,反之則發出不能通過的命令。以裝有人臉佩戴檢測算法的閘機為例,當YOLOv5s人臉口罩檢測算法在鏡頭前檢測出佩戴有口罩的行人后,會打開閘機使行人通過。當在鏡頭前檢測出行人沒有佩戴口罩后,不會打開閘機,重新進行檢測直至該行人帶好口罩為止。人臉佩戴口罩檢測算法的閘機檢測流程圖如圖2所示。

圖2 閘機檢測流程圖
本文從面部遮擋數據集MAFA和人臉檢測數據集WIDER Face中抽取了9 800張圖像作為模型的數據集。由于圖片缺少適合YOLO算法的標注文件,故本文使用LabelImg軟件重新進行了標注,90%的圖片用于模型訓練,剩下10%用于模型測試。使用LabelImg軟件進行臉部標注示例如圖3所示。

圖3 數據集標注示例圖片
考慮算法需要比較快的檢測速度,本文選用YOLOv5系列中的YOLOv5s作為人臉佩戴口罩檢測的基礎算法。另外,在訓練階段,對模型進行適當的微調來加快訓練及收斂速度。
本文的算法實驗平臺可分為硬件和軟件兩個部分。具體的硬件和軟件配置見表1。

表1 硬件及軟件配置
訓練階段參數設置:
本算法使用9 800張圖片中的90%作為訓練集,采用數據并行的方式進行訓練,設置世代(epoch)數為300,優化方法為隨機梯度下降法(SGD),batch的大小為36,圖片的大小為1 024。
測試階段參數設置:
本算法使用9 800張圖片中的10%作為測試集。在測試階段,加載訓練好的權重文件,設置圖片的大小為1 024。
為了驗證訓練出的YOLOv5s模型對人臉是否佩戴口罩檢測的性能,本文在測試集上進行了總體的評估。
依照目標檢測領域常用的評價指標,使用精確率(P),召回率(R)和平均精度均值(mAP)作為人臉是否佩戴口罩檢測任務的評價指標。
精確率又被稱為查準率,表示分類器分為正樣本的樣本中實際為正樣本的比例,即分對樣本的概率。精確率的計算公式(1)如下:
(1)
其中,tp表示實際為正樣本,且被分類器劃分為正樣本的數量,fp表示實際為負樣本,但被分類器劃分為負樣本的數量。
召回率又被稱為查全率,表示分類器分為正樣本中實際為正樣本的數量占全樣本中正樣本的比例。召回率的計算公式(2)如下:
(2)
其中:fn表示實際為正樣本,但被分類器分為負樣本的數量。
平均精度均值是將每個類別的平均精度(AP)做算術平均值。該指標是對要檢測目標的一個綜合度量,常見的mAP有mAP@.5和mAP@.5:.95,表示當閾值設為0.5和0.5~0.95時的平均精度均值。mAP的計算公式(3)如下:
(3)
其中:N為類別數,AveP(i)為第i類的平均精確率。
為了量化本文使用的YOLOv5算法的性能表現,本文將YOLOv5、YOLOv3和YOLOv4檢測算法在人臉是否佩戴口罩檢測任務上的性能進行比較。3個算法在同一個數據集中的檢測性能比較結果見表2。

表2 3個算法在數據集上的測試結果
由表2可以看出,在同一個數據集進行訓練和測試,本文使用的YOLOv5sprecision為78.1%,recall為87%,mAP@.5為53.5%,3個指標均高于YOLOv3和YOLOv4檢測算法。
本文針對人臉是否佩戴口罩檢測任務訓練的YOLOv5s模型的推理結果如圖4所示。在單人佩戴口罩、單人未佩戴口罩、多人佩戴口罩、多人未佩戴口罩這幾種情況下都具有良好的檢測效果。

圖4 多情況下口罩佩戴檢測效果圖
本文使用YOLOv5s檢測算法作為人臉口罩佩戴檢測的基礎算法來完成檢測人臉是否佩戴口罩的任務,應用在閘機設備上。當YOLOv5s檢測出佩戴有口罩的人臉,則允許通行。反之則不允許通行直至帶好口罩為止。使用YOLOv5s訓練好的模型的precision為78.1%,receall為87%,mAP為53.5%,均超過YOLOv3和YOLOv4目標檢測算法,達到了任務的目標。