蔡雨晨,馬雨生,凌晨,劉巧紅
(上海健康醫(yī)學(xué)院 醫(yī)療器械學(xué)院,上海 201318)
2019 年末,新型冠狀病毒[1]首次爆發(fā)。研究表明,新冠病毒具有極強(qiáng)的傳染性以及較長(zhǎng)的潛伏期[2],其傳播途徑主要通過(guò)飛沫傳播、接觸傳播、血液體液、糞口傳播的方式[3]。現(xiàn)如今,多個(gè)國(guó)家發(fā)現(xiàn)了新冠肺炎變異病株,并且已有確診病歷,新型冠狀病毒的防疫越發(fā)嚴(yán)峻。
當(dāng)前,國(guó)內(nèi)采取了強(qiáng)有力的防控措施,有效控制了疫情的發(fā)展,抗擊新冠已取得巨大成功[4]。隨著國(guó)內(nèi)疫情防控形勢(shì)的好轉(zhuǎn),疫情防控工作開(kāi)始常態(tài)化,人們也開(kāi)始外出、復(fù)工復(fù)學(xué)。此時(shí),疫情防控再一次面臨考驗(yàn),佩戴口罩是有效抑制疫情反彈的重要措施之一。隨著人工智能技術(shù)的快速發(fā)展,通過(guò)智能化的方式實(shí)現(xiàn)人臉是否佩戴口罩的檢測(cè)和預(yù)警顯得尤為重要。尤其是在如地鐵、公交、高鐵、學(xué)校、醫(yī)院等人流密集的進(jìn)入場(chǎng)所,增加智能化的口罩識(shí)別系統(tǒng)能大大提供檢測(cè)效率,減少人工檢測(cè)帶來(lái)的漏查錯(cuò)查等現(xiàn)象。因此,本文針對(duì)疫情防控的需要,利用深度學(xué)習(xí)技術(shù)設(shè)計(jì)與開(kāi)發(fā)了一個(gè)人臉口罩佩戴識(shí)別系統(tǒng)。
近年來(lái),學(xué)者們針對(duì)口罩識(shí)別也開(kāi)展了一些研究。萬(wàn)子倫等人[5]提出了一種基于改進(jìn)Faster RCNN 的口罩佩戴檢測(cè)算法,將傳統(tǒng)的單一RPN 網(wǎng)絡(luò)模型改進(jìn)使用多任務(wù)增強(qiáng)RPN 模型以提高檢測(cè)識(shí)別精度,其最終平均識(shí)別精準(zhǔn)率可達(dá)90.18%。但在目標(biāo)過(guò)多的情況下會(huì)出現(xiàn)卡幀現(xiàn)象。劉國(guó)明等人[6]利用ResNet-34 深度神經(jīng)網(wǎng)絡(luò),經(jīng)適當(dāng)預(yù)處理,調(diào)整學(xué)習(xí)率大小和批數(shù)據(jù)量大小,網(wǎng)絡(luò)在驗(yàn)證集上準(zhǔn)確率為98.41%,在測(cè)試集上準(zhǔn)確率為97.25%。李國(guó)進(jìn)等人[7]提出了一種基于DCN -SERes -YOLOv3 的人臉佩戴口罩檢測(cè)算法,算法的平均精度值高達(dá)95.36%,比傳統(tǒng)的YOLOv3 算法提高了約4.1個(gè)百分點(diǎn),且檢測(cè)速度提高了11.7 fps。Cao 等人[8]基于YOLOv4 系列,使用一種改進(jìn)的Mosaic 數(shù)據(jù)增強(qiáng)的方法,增強(qiáng)在夜間對(duì)于人臉口罩檢測(cè)的辨別能力。Sen 等人[9]提出一種使用PyTorch 框架的深度學(xué)習(xí)算法,從視頻流中檢測(cè)出任意類(lèi)型的口罩和不同形狀的口罩。
總體來(lái)說(shuō),目前直接應(yīng)用于人臉口罩佩戴的算法較少,且存在識(shí)別精準(zhǔn)度有待提高、識(shí)別速度有待提升等問(wèn)題。同時(shí)由于真實(shí)環(huán)境下人臉口罩佩戴的復(fù)雜性以及環(huán)境的不可控性,真實(shí)場(chǎng)景下的檢測(cè)難度也大大增加。此外,由于數(shù)據(jù)量有限,現(xiàn)有的口罩?jǐn)?shù)據(jù)集未能覆蓋所有的真實(shí)場(chǎng)景,造成模型擬合不足,帶來(lái)漏檢問(wèn)題。
為了進(jìn)一步提高人臉口罩佩戴的識(shí)別準(zhǔn)確度,應(yīng)用在實(shí)時(shí)的視頻監(jiān)控檢測(cè)中,本文基于卷積神經(jīng)網(wǎng)絡(luò)和遷移學(xué)習(xí)技術(shù)設(shè)計(jì)了一個(gè)人臉口罩自動(dòng)檢測(cè)系統(tǒng),用于自動(dòng)檢測(cè)視頻和圖像中人臉佩戴口罩情況。本文研究的主要?jiǎng)?chuàng)新在于:
(1)以VGG16 網(wǎng)絡(luò)為原型,結(jié)合自定義的全連接網(wǎng)絡(luò),提出了一個(gè)用于口罩檢測(cè)的深度神經(jīng)網(wǎng)絡(luò)模型,命名為MaskNet。
(2)為解決樣本量不足的問(wèn)題,采用了模型遷移學(xué)習(xí)技術(shù)。首先利用ImageNet 對(duì)VGG16 網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練,隨后利用口罩?jǐn)?shù)據(jù)集進(jìn)行模型的參數(shù)微調(diào)優(yōu)化。
(3)為了實(shí)現(xiàn)視頻下的人臉口罩佩戴的實(shí)時(shí)檢測(cè),利用OpenCV 和Dlib 庫(kù)打開(kāi)攝像頭并動(dòng)態(tài)采集人臉,進(jìn)一步捕獲人臉?biāo)趨^(qū)域后送入訓(xùn)練好的MaskNet,實(shí)現(xiàn)口罩檢測(cè)。提出模型的檢測(cè)準(zhǔn)確率可以達(dá)到99.2%,可以應(yīng)用在對(duì)實(shí)時(shí)要求較高的場(chǎng)合。
(4)實(shí)驗(yàn)表明,本文提出的MaskNet,不僅可以檢測(cè)單張圖像或?qū)崟r(shí)視頻中人臉口罩佩戴情況,還可以同時(shí)檢測(cè)多人存在的口罩佩戴情況。
VGG 是牛津大學(xué)的Visual Geometry團(tuán)隊(duì)提出,可以說(shuō)VGG是加深版的AlexNet[10]。其中,VGG16[11]將AlexNet 中的大尺寸卷積核全部更改成小尺寸的3×3 卷積核,利用多個(gè)連續(xù)小卷積核的堆疊增大感受野。VGG 在保證感受野大小不受影響的同時(shí),通過(guò)多個(gè)非線性層[12]可以增加網(wǎng)絡(luò)深度來(lái)保證學(xué)習(xí)更復(fù)雜的模式,并且產(chǎn)生的參數(shù)更少。VGG16 是常被用于遷移學(xué)習(xí)的網(wǎng)絡(luò),由于標(biāo)準(zhǔn)的VGG16 網(wǎng)絡(luò)在整個(gè)ImageNet 上已經(jīng)進(jìn)行了預(yù)訓(xùn)練,因此在完成新任務(wù)的時(shí)候,只需要通過(guò)微調(diào)網(wǎng)絡(luò)就可以應(yīng)用在新任務(wù)上。本文采用了VGG16 網(wǎng)絡(luò)的遷移學(xué)習(xí),達(dá)到快速模型訓(xùn)練和提取特征的目的。VGG16 網(wǎng)絡(luò)模型的結(jié)構(gòu)[11]如圖1 所示。
圖1 VGG16 模型結(jié)構(gòu)示意圖Fig.1 Schematic diagram of VGG16 model structure
遷移學(xué)習(xí)[13]是一種機(jī)器學(xué)習(xí)的方法,即把為任務(wù)A開(kāi)發(fā)的模型作為初始點(diǎn),重新使用在為任務(wù)B開(kāi)發(fā)模型的過(guò)程中。遷移學(xué)習(xí)一詞首次來(lái)源于教育心理學(xué),Pratt 最早在機(jī)器學(xué)習(xí)領(lǐng)域引用遷移,在1993 年研發(fā)了基于可區(qū)分性轉(zhuǎn)移算法。后經(jīng)過(guò)一系列發(fā)展,使得遷移學(xué)習(xí)在深度學(xué)習(xí)中越來(lái)越重要。遷移學(xué)習(xí)[14]是可以利用從其他任務(wù)中獲取的知識(shí)來(lái)幫助進(jìn)行當(dāng)前任務(wù)試驗(yàn)的一系列方法,利用此方法,可以有效解決過(guò)擬合等問(wèn)題,關(guān)鍵點(diǎn)就是找出新問(wèn)題和原問(wèn)題兩者之間有哪些相似性[15]。在小樣本數(shù)據(jù)的條件下,由于數(shù)據(jù)量不足,會(huì)導(dǎo)致訓(xùn)練CNN 模型時(shí)發(fā)生過(guò)擬合,無(wú)法獲得理想識(shí)別結(jié)果。遷移學(xué)習(xí)的應(yīng)用范圍非常廣泛,比如用來(lái)解決標(biāo)注數(shù)據(jù)稀缺問(wèn)題、誤差分享、進(jìn)行機(jī)器人訓(xùn)練等等。目前,作為一個(gè)新興的研究領(lǐng)域,遷移學(xué)習(xí)的研究主要還是集中在算法開(kāi)發(fā)方面,基礎(chǔ)理論研究還并不成熟,因此值得進(jìn)一步的研究。
原始的VGG16 網(wǎng)絡(luò)模型包含了16 個(gè)隱藏層,分別為13 個(gè)卷積層和3 個(gè)全連接層,接著將最后一個(gè)輸出張量輸入到一個(gè)分類(lèi)器網(wǎng)絡(luò)中,由分類(lèi)器處理向量得到分類(lèi)結(jié)果。在處理二分類(lèi)問(wèn)題時(shí),最后一層采用的激活函數(shù)為Softmax。本文提出的MaskNet 模型將利用去除全連接層后的VGG16 網(wǎng)絡(luò)結(jié)構(gòu)完成對(duì)口罩圖像數(shù)據(jù)集的特征提取工作。初始權(quán)重直接采用VGG16 在ImageNet 數(shù)據(jù)集上預(yù)訓(xùn)練好的權(quán)重,預(yù)訓(xùn)練的VGG16 的結(jié)構(gòu)和參數(shù)見(jiàn)表1。
表1 去除全連接層的VGG16 模型結(jié)構(gòu)Tab.1 VGG16 model structure removing full connection layer
本文提出的MaskNet 網(wǎng)絡(luò)以Sequential 順序模型為基礎(chǔ),調(diào)用了去除全連接層的VGG16 網(wǎng)絡(luò)的權(quán)重參數(shù)進(jìn)行遷移學(xué)習(xí),只訓(xùn)練自定義的全連接層。預(yù)訓(xùn)練的VGG16 的輸出經(jīng)過(guò)一個(gè)拉平層后,再通過(guò)2 個(gè)全連接層來(lái)處理后續(xù)的分類(lèi)識(shí)別。MaskNet 的結(jié)構(gòu)和參數(shù)見(jiàn)表2,模型示意圖如圖2 所示。
表2 MaskNet 模型結(jié)構(gòu)Tab.2 MaskNet model structure
圖2 MaskNet 口罩檢測(cè)模型示意圖Fig.2 Schematic diagram of MaskNet mask detection model
本文設(shè)計(jì)和開(kāi)發(fā)的人臉口罩佩戴檢測(cè)系統(tǒng)流程如圖3 所示。首先,將獲得的數(shù)據(jù)集劃分為正負(fù)樣本,通過(guò)本文提出的MaskNet 網(wǎng)絡(luò)進(jìn)行特征提取,訓(xùn)練分類(lèi)器。然后,可以調(diào)用已訓(xùn)練完成的分類(lèi)器對(duì)圖像以及視頻中的人臉口罩佩戴情況進(jìn)行檢測(cè)分類(lèi),最后輸出分類(lèi)結(jié)果。系統(tǒng)經(jīng)過(guò)模型判斷后,給出是否佩戴口罩的結(jié)果,分為2 種情況。如果檢測(cè)出沒(méi)有佩戴口罩的,將會(huì)用紅色的矩形框標(biāo)記人臉區(qū)域并顯示提示字樣;如果是檢測(cè)出佩戴口罩,將會(huì)用綠色的矩形框標(biāo)記人臉區(qū)域并顯示提示字樣。
圖3 系統(tǒng)流程圖Fig.3 Flow chart of the system
3.1.1 數(shù)據(jù)集
數(shù)據(jù)集來(lái)自GitHub 官方網(wǎng)站上的公開(kāi)數(shù)據(jù)集,這是2020 年3 月初武漢大學(xué)發(fā)布的一類(lèi)開(kāi)源的口罩人臉識(shí)別數(shù)據(jù)集。收集到的圖像數(shù)據(jù)總共為2 055張,本次數(shù)據(jù)均采用的是50?50?3 大小的彩色圖片。部分圖像數(shù)據(jù)如圖4 所示。
圖4 部分圖像數(shù)據(jù)Fig.4 Partial images data
3.1.2 數(shù)據(jù)預(yù)處理
將下載的數(shù)據(jù)集劃分為訓(xùn)練集、驗(yàn)證集和測(cè)試集三部分,劃分后會(huì)在目錄中生成train、test、validation 三個(gè)文件夾,同時(shí)這3 個(gè)文件夾下面都會(huì)創(chuàng)建名為have_mask 與no_mask 文件夾。這里的have_mask 與no_mask 作為佩戴口罩和未佩戴口罩的標(biāo)簽。每個(gè)文件夾下包含相應(yīng)佩戴口罩和未佩戴口罩的圖像數(shù)據(jù),相應(yīng)的數(shù)據(jù)量見(jiàn)表3。
表3 數(shù)據(jù)集的劃分Tab.3 Division of data sets
為了獲取更多的訓(xùn)練數(shù)據(jù),本文對(duì)原始數(shù)據(jù)進(jìn)行增強(qiáng)操作,主要利用了 Keras 框架下的ImageDataGenerator 類(lèi)來(lái)實(shí)現(xiàn)數(shù)據(jù)增強(qiáng)的功能。具體過(guò)程分為2 個(gè)部分。首先,是圖片生成器,主要是生成各個(gè)批次的圖片,以供生成器的形式給模型訓(xùn)練;其次,就是要訓(xùn)練每一批次的圖像,并適當(dāng)進(jìn)行數(shù)據(jù)增強(qiáng)。本文主要采用的數(shù)據(jù)增強(qiáng)操作見(jiàn)表4。
表4 數(shù)據(jù)增強(qiáng)方法Tab.4 Data enhancement methods
本系統(tǒng)的開(kāi)發(fā)環(huán)境基于Pycharm 集成平臺(tái),采用了Tensorflow 框架的Keras 模塊來(lái)搭建網(wǎng)絡(luò)結(jié)構(gòu),Python3.6 為開(kāi)發(fā)語(yǔ)言。在進(jìn)行視頻流處理和實(shí)時(shí)人臉區(qū)域標(biāo)記時(shí),采用了計(jì)算機(jī)視覺(jué)庫(kù)、即OpenCV和Dlib 庫(kù)。利用OpenCV 庫(kù)開(kāi)啟攝像頭,并捕捉每一幀實(shí)時(shí)畫(huà)面,再用Dlib 庫(kù)中的正向人臉檢測(cè)器進(jìn)行人臉檢測(cè),提取人臉外部矩形框。接著利用OpencCV 庫(kù)進(jìn)行圖像灰度處理,獲取檢測(cè)到的人臉坐標(biāo),并調(diào)用訓(xùn)練后的MaskNet 網(wǎng)絡(luò)對(duì)人臉口罩的情況進(jìn)行預(yù)測(cè)。
3.3.1 照片中的口罩檢測(cè)
本文提出的MaskNet 可以檢測(cè)單張圖像中的口罩佩戴情況,驗(yàn)證結(jié)果將使用數(shù)值與中文表示,其數(shù)值以0.5 作分界線。如果數(shù)值結(jié)果大于0.5、則為未佩戴口罩,反之?dāng)?shù)值小于0.5、則為戴口罩。圖5 給出了2 張佩戴口罩和未佩戴口罩的圖像的預(yù)測(cè)結(jié)果。
圖5 照片預(yù)測(cè)驗(yàn)證結(jié)果Fig.5 Verification results of photos prediction
3.3.2 視頻實(shí)時(shí)口罩檢測(cè)
本文開(kāi)發(fā)的人臉口罩佩戴檢測(cè)系統(tǒng)主界面如圖6 所示。點(diǎn)擊主界面中的口罩識(shí)別按鈕,進(jìn)入視頻口罩檢測(cè)界面,同時(shí)調(diào)用電腦攝像頭進(jìn)行視頻的實(shí)時(shí)采集。將攝像頭捕捉到的畫(huà)面中的人臉用候選框標(biāo)記出來(lái),并調(diào)用MaskNet 網(wǎng)絡(luò)進(jìn)行口罩檢測(cè)。被檢測(cè)的人臉是否佩戴口罩的結(jié)果將直接呈現(xiàn)在視頻監(jiān)控畫(huà)面中,使用不同顏色的候選框和提示文字來(lái)加以表示。未佩戴口罩將用紅色候選框和NoMask提示,佩戴口罩將用綠色候選框和Mask 提示,并顯示準(zhǔn)確率的數(shù)值。單人檢測(cè)示例如圖7 所示。多人檢測(cè)示例如圖8 所示。
圖6 系統(tǒng)界面Fig.6 System interface
圖7 單人驗(yàn)證結(jié)果Fig.7 Single-person verification results
圖8 多人驗(yàn)證結(jié)果Fig.8 Multi-person verification results
3.3.3 模型精度
圖9 是本文提出模型在訓(xùn)練時(shí)的精確度曲線和損失曲線。由圖9 中曲線的趨勢(shì)可以看出,本文提出的模型總體上精確度呈現(xiàn)上升趨勢(shì),并在約500 次訓(xùn)練后趨近收斂,由此證明本文提出模型的有效性。
圖9 精確度曲線與損失曲線Fig.9 Accuracy curve and loss curve
阻斷新冠疫情主要是阻斷病毒的傳播,而阻斷病毒傳播最有效的方法就是佩戴口罩。因此本文基于遷移學(xué)習(xí)和卷積神經(jīng)網(wǎng)絡(luò),展開(kāi)對(duì)目標(biāo)人臉圖片或視頻口罩佩戴的有效檢測(cè)研究。研究中采用VGG16 模型,利用ImageNet 進(jìn)行預(yù)訓(xùn)練,結(jié)合OpenCV 和Dlib 庫(kù)實(shí)現(xiàn)單個(gè)或多個(gè)人臉口罩佩戴檢測(cè)。相較于其他的模型算法,MaskNet 的準(zhǔn)確率達(dá)到了99.2%,同時(shí)可以檢測(cè)多個(gè)目標(biāo)。在全球預(yù)防新冠疫情的背景下,將其應(yīng)用于公共場(chǎng)所,能準(zhǔn)確做到人臉口罩自動(dòng)檢測(cè)并可及時(shí)發(fā)出預(yù)警提示,對(duì)疫情防控做出積極貢獻(xiàn),具有重大實(shí)用意義。