牛嘉興,高利鵬,張 露,謝心怡
(西北工業(yè)大學(xué)軟件學(xué)院,陜西 西安 710000)
人臉識(shí)別技術(shù)是通過對(duì)輸入的視頻流或數(shù)字圖像中是否存在人臉信息做出判斷,并且進(jìn)一步跟蹤數(shù)字圖像或者是視頻每一幀中人臉的位置、大小繼而實(shí)現(xiàn)身份的識(shí)別[1]。最早的人臉識(shí)別相關(guān)的研究應(yīng)用于心理學(xué)領(lǐng)域,用來(lái)從知覺和心理學(xué)的角度研究人臉判斷人的性格特征和面部表征而產(chǎn)生的心理和情感的差異識(shí)別的原理外,還有一些科學(xué)家從生物視覺的方向進(jìn)行探索。而在神經(jīng)網(wǎng)絡(luò)之前的早期的人臉識(shí)別,研究者可以使用算法來(lái)完成
對(duì)人臉的高級(jí)表示,或者可以以一些簡(jiǎn)單的表示方法來(lái)代表人臉圖片的高級(jí)特征。但是,這部分人臉識(shí)別方法仍然需要研究人員的高度參與,例如在人臉識(shí)別過程中需要引入操作人員的理論常識(shí),在識(shí)別過程中也并沒有實(shí)現(xiàn)完全的機(jī)器識(shí)別。而關(guān)于深度學(xué)習(xí)的一些人臉檢測(cè)算法,則大多基于對(duì)深度學(xué)習(xí)目標(biāo)檢測(cè)算法進(jìn)行改進(jìn),或者說是把通用的目標(biāo)檢測(cè)模型,為適應(yīng)人臉檢測(cè)任務(wù)而進(jìn)行的特定配置[2,3]。本模型輸入大小為260x260,主干網(wǎng)絡(luò)只有8個(gè)卷積層,加上定位和分類層,一共只有24層,模型相對(duì)較小,只有111.5萬(wàn)參數(shù)。所以可以有較小的延遲運(yùn)行在實(shí)時(shí)攝像頭上。
在當(dāng)前市面上應(yīng)用較多的檢測(cè)系統(tǒng)模型(Faster RCNN、SSD、YOLO v3,v4,v5)中,針對(duì)人臉進(jìn)行識(shí)別和檢測(cè)的分析算法中最常用的是SSD(Single Shot MultiBox Detector)算法,比如在開發(fā)者中應(yīng)用廣泛且被熟知的SSH模型、S3FD模型、RetinaFace算法都是受到了SSD算法邏輯的啟示,或者在SSD算法的基礎(chǔ)上進(jìn)行了改良,比如將位置層提升到更高的位置、調(diào)整錨點(diǎn)大小、調(diào)整錨點(diǎn)標(biāo)簽分配規(guī)則、在SSD的基礎(chǔ)上增加FPN等等。本篇論文主要實(shí)現(xiàn)的是針對(duì)當(dāng)前疫情情況下的人群是否佩戴口罩的檢測(cè)系統(tǒng),該檢測(cè)系統(tǒng)同樣是采用了最常用的SSD模型的基本思想。檢測(cè)系統(tǒng)的模型在基礎(chǔ)網(wǎng)絡(luò)部分采用了VGG16卷積結(jié)構(gòu),特點(diǎn)是卷積直接作用于特征圖,以此來(lái)預(yù)測(cè)目標(biāo)類別和對(duì)外圍框[4-6]進(jìn)行分類并預(yù)測(cè)。網(wǎng)絡(luò)主體提取特征,在每個(gè)卷積層進(jìn)行卷積和下采樣。由于目標(biāo)網(wǎng)絡(luò)在訓(xùn)練中會(huì)產(chǎn)生損失量(Loss),因此需要定義損失函數(shù)在訓(xùn)練中評(píng)估和測(cè)試網(wǎng)絡(luò)結(jié)構(gòu)優(yōu)劣和網(wǎng)絡(luò)性能優(yōu)劣。所對(duì)應(yīng)的損失函數(shù)主要包括一個(gè)位置損失函數(shù)Lloc和分類損失函數(shù)Lconf,損失函數(shù)如式(1)所示[7]
(1)
SSD算法采用多尺度特征圖。分別用于檢測(cè)一個(gè)相對(duì)來(lái)講大一點(diǎn)的的特征圖和一個(gè)相對(duì)較小的圖,如圖二所示。進(jìn)行檢測(cè)時(shí),比較大的圖作用是檢測(cè)相對(duì)較小的目標(biāo),而比較小的特征圖則是用來(lái)檢測(cè)比較大的目標(biāo),如圖1。
圖1 8*8特征圖和4*4特征圖
對(duì)于具有一定大小的特征圖,只需要采用 4×4×n 這樣比較小的卷積核就可以得到檢測(cè)值。以經(jīng)典的貓狗識(shí)別為例,圖三所示,SSD的每個(gè)單元對(duì)不同長(zhǎng)寬比或不同尺度的先驗(yàn)框進(jìn)行設(shè)置,預(yù)測(cè)的邊界框(Bounding Boxes)以它們?yōu)榛鶞?zhǔn),一定程度上降低了訓(xùn)練難度。一般情況下,每一個(gè)單元都會(huì)設(shè)置多個(gè)尺度不同的先驗(yàn)框,如圖2。
圖2 貓狗識(shí)別中設(shè)置先驗(yàn)框
本文中,使用了SSD架構(gòu)的人臉檢測(cè)算法,相比于普通的人臉檢測(cè)模型只有人臉一個(gè)類別,而人臉口罩檢測(cè),則是增加了一個(gè)類別,變成戴口罩人臉和不戴口罩的人臉兩個(gè)類別。在本文所提及的人臉口罩識(shí)別算法中訓(xùn)練目標(biāo)檢測(cè)模型,最重要的是合理的設(shè)置anchor的大小和寬高比,一般會(huì)統(tǒng)計(jì)數(shù)據(jù)集的目標(biāo)物體的寬高比和大小來(lái)設(shè)置anchor的大小和寬高比。例如,在標(biāo)注的口罩人臉數(shù)據(jù)集上,讀取了所有人臉的標(biāo)注信息,并計(jì)算每個(gè)人臉高度與寬度的比值,統(tǒng)計(jì)得到高度與寬度比的分布直方圖,如圖3。因?yàn)槿四樀囊话闶情L(zhǎng)方形的,而很多圖片是比較寬的,例如16:9的圖片,人臉的寬度和高度歸一化后,有很多圖片的高度是寬度的2倍甚至更大。從上圖也可以看出,歸一化后的人臉高寬比集中在1~2.5之間。所以,根據(jù)數(shù)據(jù)的分布,將五個(gè)定位層的anchor的寬高比統(tǒng)一設(shè)置為1,0.62,0.42。(轉(zhuǎn)換為高寬比,也就是約1,1.6:1,2.4:1)
圖3 人臉高寬比直方圖
為了能讓模型在嵌入式系統(tǒng)上使用,所以神經(jīng)網(wǎng)絡(luò)的小型化至關(guān)重要,當(dāng)前主流的分類網(wǎng)絡(luò)模型過大,不適合口罩識(shí)別系統(tǒng)。還有一種并行發(fā)展的前饋神經(jīng)網(wǎng)絡(luò)—卷積神經(jīng)網(wǎng)絡(luò) (Convolutional Neural Networks,CNN)[8-10],它的主要特點(diǎn)是池化,多網(wǎng)絡(luò)層,局部連接和權(quán)值共享。卷積神經(jīng)網(wǎng)絡(luò)與全連接神經(jīng)網(wǎng)絡(luò)相比,CNN的泛化性能更強(qiáng),識(shí)別率也更高。因此,CNN模型已成功應(yīng)用于物體檢測(cè)、圖像分割、目標(biāo)識(shí)別和圖像識(shí)別等領(lǐng)域[11,12]。本模型即是采用卷積神經(jīng)網(wǎng)絡(luò)對(duì)輸入進(jìn)行迭代輸出,其主要特點(diǎn)是不需要專門設(shè)計(jì)針對(duì)不同類型人臉圖像穩(wěn)健的特定特征,而是可以通過訓(xùn)練學(xué)習(xí)得到。這種訓(xùn)練學(xué)習(xí)方法的主要缺陷是需要使用規(guī)模很大的數(shù)據(jù)集對(duì)模型進(jìn)行特征訓(xùn)練,并且要求數(shù)據(jù)集中包含足夠多的類型變化,因而可以泛化到訓(xùn)練集未使用過的樣本上[13]。目前一些包含自然人臉圖像的大規(guī)模數(shù)據(jù)集已經(jīng)被公開,可以很方便地用來(lái)訓(xùn)練CNN模型。在模型訓(xùn)練的時(shí)期,訓(xùn)練集中的每個(gè)主體都對(duì)應(yīng)一個(gè)固定的類別。在每一個(gè)4×4的卷積層可以產(chǎn)生一系列固定大小的錨框。需要預(yù)測(cè)得到的錨框與目標(biāo)物體之間的位置偏移,以及每一個(gè)錨框中物體屬于某類的概率。為了在檢測(cè)中包含更多的高層次上下文信息,將預(yù)測(cè)模塊轉(zhuǎn)移SSD下游的一系列卷積層(deconvolution)中[14-16]。在模型訓(xùn)練好之后,就可以去除分類層將之前的層學(xué)習(xí)到的特征作為人臉表征,這樣就可以用該模型去識(shí)別訓(xùn)練集中不存在的主體。
本模型輸入大小為260x260,主干網(wǎng)絡(luò)只有8個(gè)卷積層,加上定位和分類層,一共只有24層(每層的通道數(shù)目基本都是3264128),所以模型相對(duì)較小,只有101.5萬(wàn)參數(shù)。模型對(duì)于普通人臉基本可以檢測(cè)出來(lái),較小的人臉則精確度略低。但可以有較小的延遲運(yùn)行在實(shí)時(shí)攝像頭上。模型在五個(gè)卷積層上另接出來(lái)了定位分類層,其大小和寬高比設(shè)置信息如表1。
表1 卷積層設(shè)置
本文中提及的視頻檢測(cè)則是針對(duì)視頻中每一幀的畫面投入模型中進(jìn)行人臉口罩檢測(cè),可以顯示出視頻中的人數(shù)以及是否佩戴口罩,并將人臉框出來(lái)。為了起到提示作用,對(duì)未佩戴口罩的人員進(jìn)行語(yǔ)音提示。在實(shí)驗(yàn)中由于語(yǔ)音提示在該幀占用時(shí)間過長(zhǎng),而將語(yǔ)音提示由另一個(gè)線程進(jìn)行播報(bào),以降低視頻的延遲。還在訓(xùn)練的過程中,將訓(xùn)練集的圖片數(shù)據(jù)進(jìn)行處理,隨機(jī)的往嘴巴部分粘貼一些其它物體的圖片,另外為了避免使用手擋住嘴巴就會(huì)欺騙部分口罩檢測(cè)系統(tǒng)的情況,因此在數(shù)據(jù)集中也加入了部分嘴巴被手捂住的數(shù)據(jù)。從而避免模型認(rèn)為只要露出嘴巴的就是沒戴口罩,沒露出嘴巴的就是帶口罩這個(gè)問題,如圖六所示,模型可以正確識(shí)別圖6(a),(b)中用手捂住臉和手機(jī)擋住臉均為未佩戴口罩,減少產(chǎn)生誤判的概率。
圖4 向圖片嘴部添加遮擋物的檢測(cè)效果
后處理部分主要就是NMS(Non-Maximum Suppression),使用了單類的NMS,也就是戴口罩人臉和不戴口罩人臉兩個(gè)類別一起做NMS,從而提高速度。同時(shí)在該項(xiàng)目中加入了統(tǒng)計(jì)攝像頭中出現(xiàn)人數(shù)的函數(shù)并在視頻左上角顯示,當(dāng)超過一定人數(shù)(3人)時(shí)判斷存在人群聚集風(fēng)險(xiǎn),提示顏色由綠色變?yōu)榧t色并進(jìn)行提示。以此來(lái)預(yù)防因人群聚集導(dǎo)致疫情擴(kuò)散的風(fēng)險(xiǎn)。圖7,圖8展示了攝像頭中人臉佩戴口罩和未佩戴口罩的效果,同時(shí)在左上角顯示攝像頭中出現(xiàn)的人數(shù)。
圖5 攝像頭中未佩戴口罩口罩檢測(cè)效果
圖6 攝像頭佩戴口罩口罩檢測(cè)效果。
人臉檢測(cè)數(shù)據(jù)集非常多,其中最常用的莫過于WIDER Face數(shù)據(jù)集,從中選擇了3894張圖片,并進(jìn)行了校驗(yàn),主要是將部分戴口罩的人臉標(biāo)注為戴口罩。對(duì)于戴口罩的人臉,使用了中科院信工所葛仕明老師開源的MAFA數(shù)據(jù)集,該數(shù)據(jù)集本是一個(gè)遮擋人臉的數(shù)據(jù)集,其中有各種被遮擋的人臉圖片,大多數(shù)都是被口罩遮擋的人臉圖片,從中選擇了4064張人臉戴口罩的圖片。MAFA數(shù)據(jù)集的人臉位置定義與WIDER Face有較大區(qū)別,MAFA的人臉框在靠近眉毛上方,是正方形的,而且標(biāo)注框不嚴(yán)格(框離臉部邊緣有縫隙),而WIDER Face的人臉框在額頭上方,如果不進(jìn)行修改,會(huì)導(dǎo)致模型對(duì)于不戴口罩的人臉,檢測(cè)框是到額頭上方,而戴口罩的人臉,檢測(cè)框只到眉毛上方。因此,重新標(biāo)注了這部分MAFA數(shù)據(jù)。最終對(duì)數(shù)據(jù)進(jìn)行了隨機(jī)劃分為訓(xùn)練集和驗(yàn)證集,如表2所示。
表2 數(shù)據(jù)集選取
盡管人臉口罩識(shí)別在公開數(shù)據(jù)集上取得了良好的效果(系統(tǒng)對(duì)人臉的識(shí)別率達(dá)到89.6%,對(duì)人臉是否佩戴口罩的準(zhǔn)確率達(dá)到91.9%),PR測(cè)試曲線如圖7,但是應(yīng)該考慮與更多場(chǎng)景的實(shí)際情況相結(jié)合,盡量提高方法的泛化能力,以應(yīng)對(duì)各種復(fù)雜的場(chǎng)景。基于SSD的人臉口罩識(shí)別在單個(gè)特定數(shù)據(jù)集上通常能得到較好的結(jié)果,但其性能會(huì)隨著不同數(shù)據(jù)集的遷移逐漸衰減。
圖7 測(cè)試集PR((Precision-Recall))曲線
因此,對(duì)模型做出進(jìn)一步的增強(qiáng)也是很有必要的,使之學(xué)習(xí)到更抽象的語(yǔ)義特征,例如長(zhǎng)短期記憶網(wǎng)絡(luò)[17]和傅里葉卷積神經(jīng)網(wǎng)絡(luò)[18]。同時(shí),可以探索其它學(xué)習(xí)框架以提供不同關(guān)于如何解決這個(gè)問題的觀點(diǎn)。
另外,由于本系統(tǒng)模型參數(shù)量小,可靠性高,將本系統(tǒng)嵌入式移植到帶攝像頭的嵌入式開發(fā)設(shè)備(如樹莓派,jetson nano)并配置紅外傳感器,使之具有測(cè)溫功能,可以迅速實(shí)現(xiàn)軟件系統(tǒng)的實(shí)施落地,在工作生活中更加便利。
本文回顧了人臉識(shí)別的發(fā)展歷程及應(yīng)用成就,詳細(xì)闡述了基于SSD模型對(duì)人臉進(jìn)行口罩識(shí)別的方法,介紹了CNN模型的適用范圍及其特點(diǎn)。并推薦使用以上模型進(jìn)行人臉識(shí)別的口罩預(yù)測(cè)。同時(shí)本文增加了數(shù)據(jù)集來(lái)源和獲取的內(nèi)容,講解了如何選取數(shù)據(jù)集和預(yù)測(cè)模型中容易存在的一些缺陷。詳細(xì)介紹了本文中使用的分類模型以及各層卷積層的配置。
最后希望能夠在疫情席卷的當(dāng)下作為科研工作者可以貢獻(xiàn)自己的一份綿薄之力。