摘? 要: 2020年初,新冠病毒席卷全球,為防止其傳播,在很多公共場合要求佩戴口罩。利用計算機視覺檢測人臉是否佩戴口罩以及識別是否佩戴規(guī)范,可以避免檢測人員與他人接觸感染的風(fēng)險且更加高效。針對人臉口罩檢測問題,提出了基于YOLOv3的目標檢測算法,實現(xiàn)對佩戴口罩的人臉和未佩戴口罩的人臉的檢測。針對口罩規(guī)范佩戴識別問題,則基于前者檢測結(jié)果,提取佩戴口罩的人臉區(qū)域,利用YCrCb的橢圓膚色模型對該區(qū)域進行膚色檢測,依據(jù)人臉中鼻和嘴周圍區(qū)域的皮膚暴露狀況來判斷口罩是否佩戴規(guī)范。實驗結(jié)果表明,人臉口罩檢測的mAP達到89.04%,口罩規(guī)范佩戴的識別率達到82.48%,滿足實際應(yīng)用的需求。
關(guān)鍵詞: 人臉口罩檢測;口罩規(guī)范佩戴識別;YOLOv3算法;YCrCb橢圓膚色模型
中圖分類號: TP391.4 ???文獻標識碼: A??? DOI:10.3969/j.issn.1003-6970.2020.07.033
本文著錄格式:肖俊杰. 基于YOLOv3和YCrCb的人臉口罩檢測與規(guī)范佩戴識別[J]. 軟件,2020,41(07):164-169
Masked Face Detection and Standard Wearing Mask RecognitionBased on YOLOv3 and YCrCb
XIAO Jun-jie
(College of Computer Science and Technology, Wuhan University of Technology, Wuhan 430070, China)
【Abstract】: In early 2020, 2019-nCoV swept the world, and masks were required to wear in many public places to prevent its spread. Using computer vision to detect whether a face wears a mask and recognize whether the mask is properly worn will avoid the risk of contact with others and be more efficient. To solve the masked face detection, a algorithm based on YOLOv3 is proposed to detect faces both with masks and without masks. For the problem of standard wearing mask recognition, masked face area is extracted from the former result and the skin of this part could be detected by YCrCb ellipse skin model, and whether the mask is properly worn is judged according to the skin exposure around nose and mouth in the face. The experimental results indicate that the mAP of masked face detection reaches 89.04%, and the recognition rate of standard wearing mask achieves 82.48%, which can meet the requirements of practical application.
【Key words】: Masked face detected; Standard wearing mask recognition; YOLOv3 algorithm; YCrCb ellipse skin model
0? 引言
新型冠狀病毒在全球范圍內(nèi)蔓延,人們的健康受到嚴重威脅。為了防止病毒在人群中的肆意傳播,社會要求人們出行、工作時務(wù)必佩戴好口罩。因此,在疫情時期檢測是否佩戴口罩,以及口罩是否正確佩戴成為了剛性需求。本文提出利用計算機視覺來進行口罩佩戴和佩戴規(guī)范性檢測,不僅能避免檢測人員和他人接觸感染的風(fēng)險,也能提高檢測效率。它可用于機場車站、街道、公園等人員流動較密集場所的監(jiān)控系統(tǒng),檢測人們佩戴口罩的情況,也可用于小區(qū)人臉門禁、企業(yè)人臉打卡這類系統(tǒng),識別人們是否規(guī)范佩戴了口罩。此外在日常時期,這些技術(shù)仍有用武之地,比如可以檢測佩戴口罩的可疑人員、識別醫(yī)護人員在工作時是否規(guī)范佩戴了口罩等。
人臉口罩檢測技術(shù)可利用深度學(xué)習(xí)的方法實現(xiàn)?;谏疃葘W(xué)習(xí)的目標檢測算法十分豐富,有YOLO[1-3]、SSD[4]等one-stage系列算法,也有Fast R-CNN[5]、Faster R-CNN[6]等two-stage系列算法。one-stage具有出色的檢測速度,卻存在較低檢測精度的問題。相反,two-stage具有優(yōu)良的檢測精度,但是由于其復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu),在檢測速度方面卻遜色于one-stage。然而,one-stage中的YOLO算法經(jīng)歷了幾代的更迭改進之后,逐漸彌補了自身的眾多不足之處。從YOLOv1[1]、YOLOv2[2]到Y(jié)OLOv3[3],在保持速度優(yōu)勢的前提下,不僅在檢測精度方面?? 有了明顯的提高,而且對小目標的檢測性能有大幅提升。兼顧檢測的實時性和準確性兩方面,本文?? 選擇了效果優(yōu)良的YOLOv3算法來實現(xiàn)人臉口罩? 檢測。
另一方面,關(guān)于口罩規(guī)范佩戴識別的研究近年來還很少,但受到文獻[7]中利用皮膚來檢測人臉口罩的啟發(fā),聯(lián)想到可以通過檢測人臉中鼻和嘴周圍皮膚的暴露狀況來判斷口罩是否佩戴規(guī)范。皮膚檢測主要有基于RGB、基于HSV和基于YCrCb的檢測算法[8,9]。前人實驗研究發(fā)現(xiàn)單純基于RGB或HSV顏色空間來判斷皮膚的方法容易受到亮度的影響,魯棒性較低,而在YCrCb顏色空間中膚色像素具有一定聚類性,分布相對集中,不易受到亮度的干擾,更適合應(yīng)用于皮膚檢測。因此,本文提出利用基于YCrCb顏色空間的橢圓膚色模型[10,11]來解決口罩規(guī)范佩戴識別問題。
綜上,針對人臉口罩檢測和規(guī)范佩戴識別問題,本文方法的優(yōu)勢和創(chuàng)新在于:YOLOv3算法檢測速度快且精度較高;創(chuàng)新性地利用皮膚檢測來判斷佩戴口罩的規(guī)范性;YCrCb橢圓膚色模型減輕了光線亮度對皮膚檢測的干擾,增強了魯棒性。
1 ?人臉口罩檢測模型
本文采用基于YOLO3算法進行人臉口罩檢測。首先可以通過攝像頭獲取初始圖像,在檢測時,直接將圖片輸入事先用特定訓(xùn)練集訓(xùn)練好的YOLOv3模型,快速檢測出圖像中的佩戴口罩和未佩戴口? 罩的人臉。在輸出的圖像中用不同顏色的檢測框框選出對應(yīng)目標,并標注對應(yīng)的類別。該部分模型基本框架如圖1所示。本節(jié)具體從YOLOv3的網(wǎng)絡(luò)結(jié)構(gòu)以及先驗框的尺寸設(shè)置來展開介紹YOLOv3算法。
1.1 ?YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)
YOLOv3算法和前面兩代相比,做出了些許的改變,在保持速度優(yōu)勢的前提下也提升了檢測的精度和檢測小目標的性能。YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示,主要由兩大部分構(gòu)成:DarkNet53網(wǎng)絡(luò)和多尺度預(yù)測。DarkNet53的作用是對圖像進行特征提取,輸入該網(wǎng)絡(luò)的圖片大小為416×416。它主要由一系列的1×1和3×3的卷積層構(gòu)成,一共53個(不包括殘差塊中的卷積層)。其中每個卷積層后都會跟有一個BN層和一個LeakyReLU層。此外,它借用殘差網(wǎng)絡(luò)的做法,在一些層使用了殘差塊。每個殘差塊包含有2個卷積層,所作的工作是先進行一次1×1的卷積,在此基礎(chǔ)上,再進行一次3×3的卷積,并將此結(jié)果加上原來殘差塊的輸入作為最終結(jié)果輸入到下一階段。經(jīng)過DarkNet53的特征提取后,則是利用多尺度特征圖進行對象預(yù)測。在該部分,YOLOv3提取了3個不同尺度的特征圖,分別位于中間層、中下層、底層。其中,底層進行一系列卷積后,一部分會再經(jīng)過后續(xù)處理作為結(jié)果輸出,另一部分再做卷積和上采樣操作并與中下層的特征圖融合,得到中下層粒度較細的特征圖。然后將該特征圖經(jīng)過同樣的處理,輸出對應(yīng)結(jié)果同時再進行卷積、上采樣和中間層特征圖融合。在中間層只需將融合的圖進行卷積操作后輸出結(jié)果即可。最終,一共會得到3個對應(yīng)不同尺度的預(yù)測結(jié)果,每個結(jié)果中包含3個先驗框的預(yù)測信息,每個先驗框的預(yù)測信息對應(yīng)7維,分別是坐標值(4)、置信度(1)、種類(2)。關(guān)于種類,針對人臉口罩檢測種類只有戴口罩和未戴口罩2種。
1.2 ?先驗框尺寸設(shè)置
由于人臉口罩檢測的環(huán)境比較復(fù)雜多樣,圖像中的人臉大小有大有小,使得精準預(yù)測物體位置的難度變大。然而YOLOv3算法的anchor機制能夠很好解決該問題。在YOLOv3算法中,每個特征圖都被劃分成多個單元,每個單元會預(yù)測多個邊框。通過設(shè)置先驗框的尺寸,會改變這些單元預(yù)測框的大小。總共可設(shè)置9種尺度的先驗框,在13×13,26×26,
52×52的特征圖中,分別設(shè)置3種先驗框,對應(yīng)地分別適合檢測較大的對象,中等大小對象,較小對象。關(guān)于這9種先驗框尺寸的具體設(shè)置,YOLOv3提出的方案是利用K-means聚類算法針對特定的訓(xùn)練集中目標物體大小來確定。在人臉口罩的訓(xùn)練集上,聚類得出的先驗框尺寸如表1所示。這樣的設(shè)置可以檢測到絕大多數(shù)尺寸的人臉,滿足人臉口罩檢測各種應(yīng)用場景的基本需求。
2 ?口罩規(guī)范佩戴識別模型
口罩規(guī)范佩戴識別是基于人臉口罩檢測結(jié)果進行的,該部分的輸入是人臉口罩檢測的輸出且是有佩戴口罩的人臉。首先,將人臉部分的圖像提取出來;然后映射到Y(jié)CrCb顏色空間并進行非線性變換,經(jīng)過橢圓膚色模型檢測后輸出一張灰度圖,其中皮膚部分像素點為255(白色),非皮膚部分像素點為0(黑色);最后再通過遍歷人臉中鼻和嘴周圍的像素點,得到皮膚暴露狀況,從而判斷是否規(guī)范佩戴口罩了。識別模型結(jié)構(gòu)如圖3所示。本節(jié)具體介紹了YCrCb橢圓膚色模型、人臉中鼻和嘴部分的劃分、以及通過膚色狀況判斷是否規(guī)范佩戴口罩的邏輯關(guān)系。
2.1 ?YCrCb橢圓膚色模型
YCrCb橢圓膚色模型[11]是Hsu等人所提出的,它能夠很好地利用皮膚在YCrCb顏色空間聚類的特點進行皮膚檢測,并且降低光線亮度對檢測的影響。構(gòu)建該模型,首先需要將膚色檢測的圖片從RGB顏色空間轉(zhuǎn)換到Y(jié)CrCb顏色空間,具體轉(zhuǎn)換公式如下:
得到了原始圖片在YCrCb顏色空間的映射之后,還需要對其中Cr和Cb色度進行一系列非線性變換,得到Cr′和Cb′,即得到新的YCr′Cb′顏色空間。與此同時,還要去掉高光陰影部分,采用四個邊界限制膚色聚類區(qū)域,以此適應(yīng)原始圖片中亮度過明或過暗的區(qū)域。皮膚信息在YCr′Cb′顏色空間中會產(chǎn)生聚類現(xiàn)象,其分布近似為一個橢圓形狀,如圖4所示。
該橢圓區(qū)域即為橢圓膚色模型,其計算公式如公式(2)所示,x、y的取值如公式(3)所示。
對于皮膚的檢測,只需要求出原始圖片中某個像素點在YCr′Cb′顏色空間中的映射Cr′和Cb′,然后根據(jù)公式(3)求出對應(yīng)坐標,再依據(jù)公式(2)判斷該點是否落在該橢圓區(qū)域內(nèi)即可。如果是,則該像素點判斷為皮膚,否則判斷為非皮膚。
2.2 ?人臉區(qū)域劃分及識別判斷
一般來說,人們佩戴口罩不規(guī)范的情況可能是將鼻子露出,或是嘴巴露出,或是鼻子嘴巴都露出。所以,識別一張佩戴有口罩的人臉是否將口罩佩戴規(guī)范了,可以通過檢測其鼻子周圍和嘴巴周圍的皮膚情況,來判斷這些部位是否暴露在外面。要完成該過程,就涉及到鼻子和嘴巴部分的區(qū)域劃分。經(jīng)過大量觀察并測量人臉口罩檢測結(jié)果的檢測框發(fā)現(xiàn),人臉中,鼻子周圍部分所在位置大約在47%~ 67%的高度,嘴巴周圍部分所在位置大約在67%~ 95%的高度。這兩部分的寬度與檢測框的寬度相同。如圖5(a)所示。
nose_ymin、nose_ymax分別表示Nose part框的最小縱坐標和最大縱坐標。mouse_ymin、mouse_ ymax分別表示Mouse part框的最小縱坐標和最大縱坐標。width、height分別表示整個人臉圖像的寬度和高度。
將人臉口罩檢測框部分的圖片經(jīng)過YCrCb橢圓膚色模型處理后,得到一張對應(yīng)的灰度圖,如圖5(b)所示。檢測為皮膚的像素點設(shè)為255(白色),檢測為非皮膚的像素點設(shè)為0(黑色)。在該灰度圖上,遍歷鼻和嘴周圍部分的所有像素點,得出在對應(yīng)部分范圍里皮膚所占的面積百分比。經(jīng)過反復(fù)的實驗測試發(fā)現(xiàn)鼻子部分閾值設(shè)置為30%,嘴巴部分閾值設(shè)置為25%時合理性最高。在進行口罩佩戴規(guī)范情況識別時,如果鼻子和嘴巴部分皮膚所占百分比超過對應(yīng)的閾值,就說明該部分暴露在外面,再基于下面的命題邏輯表達式進行整體判定。
其中,表示佩戴口罩,表示鼻子暴露在外面,表示嘴巴暴露在外面。由于該識別是在已佩戴口罩人臉的基礎(chǔ)上,所以一直為true。當表達式(7)真值為true時,識別結(jié)果為口罩未規(guī)范佩戴;真值為false時,識別結(jié)果為口罩已規(guī)范佩戴。
3 ?實驗
3.1 ?數(shù)據(jù)集
實驗采用了WIDER FACE數(shù)據(jù)集[12]和MAFA數(shù)據(jù)集[13]進行訓(xùn)練,驗證和測試。WIDER FACE是一個比較成熟的開源人臉檢測數(shù)據(jù)集,包含3萬多張圖片,近40萬個人臉,其中,佩戴口罩的人臉不多,但是可以采集到大量沒有遮擋的人臉。而相反,MAFA是一個人臉遮擋的數(shù)據(jù)集,其中大部分的遮擋物為口罩,因此可以從中選取出許多佩戴口罩的人臉。
針對本次的實驗,在WIDER FACE數(shù)據(jù)集中選取了3292張沒有佩戴口罩的人臉圖片,在MAFA數(shù)據(jù)集中,選取了3741張包含有戴口罩的人臉圖片,一共7033張。對應(yīng)地,數(shù)據(jù)集圖片里的標簽也有2類:have_mask和no_mask。其中,4676張圖片用于訓(xùn)練。520張圖片用于驗證。1837張圖片用于測試。
3.2 ?人臉口罩檢測實驗結(jié)果
將訓(xùn)練后YOLOv3網(wǎng)絡(luò)模型,在測試集上進行人臉口罩檢測的測試,對測試結(jié)果從多個方面來進行評價。其中,正確檢測表示檢測結(jié)果和測試樣本的類別一致,誤檢表示將其他物體檢測為該類別,漏檢表示將該類別的測試樣本檢測為其他類別或未檢測出類別,AP表示該類別的檢測準確率均值,mAP表示所有類別檢測準確率均值的平均值,即have_mask和no_mask兩個類別的平均準確率均值。具體結(jié)果如表2所示。
由表2的結(jié)果可以看出,在該測試集上have_ mask和no_mask兩個類別的準確率均值分別為92.67%和85.41%,它們的平均準確率均值為89.04%,在準確度方面達到了優(yōu)良的水平。由此可以說明YOLOv3算法檢測人臉口罩的準確性有一定的保障。此外,關(guān)于檢測的速度,可以達到35FPS左右,滿足實時性檢測的需求。具體檢測效果樣例如6圖所示。紅色框為佩戴口罩人臉,青色框為未佩戴口罩人臉,檢測框上的數(shù)字為置信度。
3.3 ?口罩規(guī)范佩戴識別實驗結(jié)果
口罩規(guī)范佩戴識別是在人臉口罩檢測基礎(chǔ)上進行的,其測試集從人臉口罩檢測的測試集中進一步篩選。篩選的標準是檢測結(jié)果為有佩戴口罩,人臉正對且傾斜幅度不大。一共選取了451張圖片,其中規(guī)范佩戴的圖片有251張,未規(guī)范佩戴的圖片有200張。對應(yīng)識別類別也有兩類:masked_well和masked_wrong。測試結(jié)果用混淆矩陣表示,如圖7所示。
由混淆矩陣可知,規(guī)范佩戴口罩類別的識別率可達87%,未規(guī)范佩戴口罩類別的識別率略低,只有76%。整體的識別率為82.48%。由此可看出,雖然未規(guī)范佩戴口罩的識別率不高,但整體的識別率還是比較理想的,識別效果達到了一定水平。具體識別效果樣例如圖8所示。綠色框表示識別結(jié)果為規(guī)范佩戴口罩,紅色框表示識別結(jié)果為未規(guī)范佩戴口罩。
4 ?結(jié)束語
為了解決疫情時期在要求佩戴口罩的場合檢測人們是否佩戴了口罩以及識別是否規(guī)范佩戴的問題,本文提出了基于YOLOv3的深度學(xué)習(xí)算法用于人臉口罩的檢測,并且可以在該檢測結(jié)果的基礎(chǔ)上,將佩戴有口罩的人臉框部分映射到Y(jié)CrCb顏色空間并進行非線性變換,通過橢圓膚色模型來檢測該人臉框中鼻和嘴部分的皮膚暴露的狀況,進而識別出是否規(guī)范佩戴了口罩。利用公開數(shù)據(jù)集對模型進行訓(xùn)練和測試,實驗結(jié)果顯示,人臉口罩檢測和佩戴規(guī)范識別都具有較高的精度,具有較高應(yīng)用價值。
但本文的方法仍存在不足之處,當人臉區(qū)域比較小時,仍存在漏檢的情況。此外,口罩規(guī)范佩戴識別對于異常角度和傾斜的人臉錯誤率較高。因此,提高對人臉區(qū)域較小的口罩檢測的性能,以及加強口罩規(guī)范佩戴識別的魯棒性,是未來進一步研究的方向。
參考文獻
Redmon J, Divvala S, Girshick R, et al. You Only Look Once: Unified, Real-Time Object Detection[C]//2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). IEEE, 2016.
Redmon J, Farhadi A. YOLO9000: Better, Faster, Stronger [C]//2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). IEEE, 2016.
Redmon J, Farhadi A. YOLOv3: An Incremental Improvement[C]//2018 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). IEEE, 2018.
Liu W, Anguelov D, Erhan D, et al. SSD: single shot multibox detector [C]//Proc of European Conference on Computer Vision. Springer, 2016: 21-37.
Girshick R. Fast R-CNN[C]// 2015 IEEE International Conference on Computer Vision (ICCV). IEEE, 2016.
Ren S, He K, Girshick R, et al. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2017, 39(6): 1137-1149.
Nieto-Rodríguez, Mucientes M, Brea V M. System for Medical Mask Detection in the Operating Room Through Facial Attributes[C]//Iberian Conference on Pattern Recognition and Image Analysis. 2015.
劉萌. 基于膚色HSV彩色模型下的人臉檢測[J]. 商洛學(xué)院學(xué)報, 2012, 26(02): 46-50.
邱迪. 基于HSV與YCrCb顏色空間進行膚色檢測的研究[J]. 電腦編程技巧與維護, 2012(10): 76-77.
趙杰, 桑慶兵, 劉毅錕. 基于分裂式K均值聚類的膚色檢測方法[J]. 計算機工程與應(yīng)用, 2014, 50(1): 134-138.
Hsu R L, Abdel-Mottaleb M, Jain A K. Face Detection in Color Images[J]. Journal of Chengdu Textile College, 2002, 24(5): 696-706.
Yang S, Luo P, et al. WIDER FACE: A Face Detection Benchmark[C]//IEEE Conference on Computer Vision and Pattern Recognition, IEEE, 2016.
Ge S, Li J, Ye Q, et al. Detecting Masked Faces in the Wild with LLE-CNNs[C]//IEEE Conference on Computer Vision & Pattern Recognition. IEEE, 2017.