唐心雨,陳霜霜*,路 鵬,王永林,蔡長安,秦 雄
(1.江蘇省心理與認(rèn)知科學(xué)大數(shù)據(jù)重點(diǎn)建設(shè)實(shí)驗(yàn)室,江蘇 鹽城 224002;2.鹽城師范學(xué)院 信息工程學(xué)院,江蘇 鹽城 224002)
自新冠肺炎疫情暴發(fā)以來,新冠病毒在人群中迅速傳播,給社會(huì)上的各行各業(yè)造成了極大的風(fēng)險(xiǎn)隱患,因此,佩戴口罩成為了人們?nèi)粘I畹闹匾胧?。為確保在人流密集區(qū)域等特殊場景下每個(gè)人都佩戴口罩,本研究基于PaddleHub[1]設(shè)計(jì)了人臉口罩識(shí)別系統(tǒng),該系統(tǒng)同時(shí)具有視頻監(jiān)控識(shí)別、嵌入式測溫的功能。同時(shí),本系統(tǒng)增加了分類人數(shù)統(tǒng)計(jì)、實(shí)時(shí)語音報(bào)警及截圖的特色功能,助力疫情防控工作。
本系統(tǒng)分為核心功能模塊、特色功能模塊和未來工作模塊三大部分。其中,核心模塊包括人臉口罩識(shí)別、視頻監(jiān)控識(shí)別和人體測溫三個(gè)組成部分;特色功能模塊分為分類人數(shù)統(tǒng)計(jì)、實(shí)時(shí)語音報(bào)警及截圖;未來工作是對該系統(tǒng)的一個(gè)發(fā)展規(guī)劃和一些計(jì)劃實(shí)現(xiàn)的方案。整體架構(gòu)圖如圖1所示:
圖1 系統(tǒng)整體架構(gòu)Figure 1 Overall system architecture
本系統(tǒng)基于百度開源的PaddleHub作為模型管理和遷移學(xué)習(xí)工具。PaddleHub采用了飛槳領(lǐng)先的核心框架,精選效果優(yōu)秀的算法快速地實(shí)現(xiàn)模型的預(yù)測、升級(jí)等功能。到目前為止,PaddleHub的預(yù)訓(xùn)練模型覆蓋了用于圖像分類、圖像生成、關(guān)鍵點(diǎn)檢測等主流模型。此外,PaddleHub 還提供了Fine-tune API[2],可以完成深度學(xué)習(xí)模型在自然語言處理和計(jì)算機(jī)視覺場景下的快速遷移學(xué)習(xí),在更短的時(shí)間內(nèi)完成模型的訓(xùn)練。
PaddleHub支持飛槳Master模式,該模式可以運(yùn)用于多種場景。Master模式包含算力與數(shù)據(jù)結(jié)合、知識(shí)與算法結(jié)合的預(yù)訓(xùn)練模型。其中,預(yù)訓(xùn)練模型與遷移學(xué)習(xí)工具構(gòu)成Master模式的核心。PaddleHub作為模型管理和遷移學(xué)習(xí)工具,它的框架由開發(fā)、訓(xùn)練和端到端的部署三個(gè)部分組成,如圖2所示。
圖2 PaddleHub的框架Figure 2 The framework of PaddleHub
其中,“開發(fā)”用于提高框架的易用性,“訓(xùn)練”用于提高模型的預(yù)算速度,而“端到端的部署”用于模型適配網(wǎng)頁端或者移動(dòng)端的部署?;谌叩慕Y(jié)合,PaddleHub不僅能夠在線提供負(fù)載均衡能力,而且可以快速實(shí)現(xiàn)端到端一鍵部署。
本系統(tǒng)包括人臉檢測和口罩識(shí)別兩個(gè)核心算法模塊,其中,人臉檢測模塊基于PaddleHub的PyramidBox模型來訓(xùn)練[3],口罩識(shí)別模塊利用FaceBoxes的主干網(wǎng)絡(luò)來判斷人臉是否佩戴口罩[4],這兩個(gè)核心算法模塊組合成一個(gè)有機(jī)整體。
1.2.1 人臉檢測
人臉檢測使用環(huán)境輔助的單階段人臉檢測器PyramidBox 實(shí)現(xiàn)。PyramidBox 作為一種高效的人臉檢測器,可以設(shè)計(jì)出新的檢測環(huán)境-anchor來監(jiān)督高層級(jí)的環(huán)境特征,同時(shí)預(yù)測所有尺度的臉部以及困難人臉的檢測。
PyramidBox 的網(wǎng)絡(luò)結(jié)構(gòu)使用了與S3FD相同的層次結(jié)構(gòu)[5],該結(jié)構(gòu)包含了VGG16 的擴(kuò)展主干結(jié)構(gòu)和an?chor尺度設(shè)計(jì)[6],可以生成不同層級(jí)的特征圖和等比例間距的anchor。PyramidBox的網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 pyramidbox的網(wǎng)絡(luò)結(jié)構(gòu)[3]Figure 3 Pyramidbox network structure[3]
在圖3的網(wǎng)絡(luò)結(jié)構(gòu)中,尺度合理的主干網(wǎng)絡(luò)層使用了S3FD 中的基礎(chǔ)層和額外卷積層作為主干卷積層,其中基礎(chǔ)卷積層保留了VGG16 中的conv1_1 層到pool5 層,額外卷積層將fc_6 層和fc_7 層轉(zhuǎn)換為conv_fc層,可添加更多的卷積層使其變得更深。
低層級(jí)特征金字塔(Lower Feature Pyramid Network,簡稱LFPN)被添加到主干架構(gòu)網(wǎng)絡(luò)中,并且使用從中間層開始的自上而下的結(jié)構(gòu)來接收較小的、模糊的和被遮擋的人臉,采用這種結(jié)構(gòu)可以解決困難人臉的檢測。
環(huán)境敏感的預(yù)測網(wǎng)絡(luò)層(Prediction Network Layer,簡稱PNL)受Inception-ResNet啟發(fā)設(shè)計(jì)出一個(gè)環(huán)境敏感的預(yù)測模塊(Context-sensitive Predict Module,簡稱CPM)來提高預(yù)測網(wǎng)絡(luò)的表達(dá)能力[7]。CPM使用反卷積DSSD(Deconvolutional Single Shot Detector)的殘差預(yù)測模塊作為卷積層[8]。第l個(gè)CPM 的輸出尺寸是wl×hl×cl,其中wl=hl= 640/22+l是特征的尺寸,cl是通道數(shù)。因此,在保持DSSD模塊方法的所有優(yōu)勢的同時(shí),還可以保留來自SSH上下文模塊的豐富上下文信息。
PyramidBox 損失層有一系列的pyramid anchors(金字塔錨)來監(jiān)督分類和回歸任務(wù),其中分類損失函數(shù)使用softmax函數(shù),回歸使用平滑L1損失函數(shù)。對于一個(gè)原始圖像中在目標(biāo)區(qū)域regiontarget的目標(biāo)人臉,考慮anchori,j,即第i個(gè)特征層的第j個(gè)anchor,步長為si,定義第k個(gè)金字塔錨的公式為
1.2.2 口罩識(shí)別
通過人臉檢測獲得目標(biāo)人臉后,利用FaceBoxes 的主干網(wǎng)絡(luò)判斷人臉是否佩戴口罩。為了進(jìn)一步強(qiáng)化口罩區(qū)域,加入了注意力機(jī)制來進(jìn)行特征學(xué)習(xí),并針對損失函數(shù)進(jìn)行了優(yōu)化。
FaceBoxes的網(wǎng)絡(luò)結(jié)構(gòu)分為快速消融卷積層(Rapidly Digested Convolutional Layers,簡稱RDCL)和多尺度卷積層(Multiple Scale Convolutional Layers,簡稱MSCL)。RDCL 模塊用來加速檢測目標(biāo)信息,MSCL 用來檢測多尺度目標(biāo),兩者的結(jié)合實(shí)現(xiàn)了FaceBoxes的“快”和“準(zhǔn)”。
RDCL 采用合適的卷積和池化尺寸conv1_7×7,conv2_5×5,pool1_3×3,pool2_3×3,結(jié)合較大的步長加速目標(biāo)的降維,同時(shí),利用C.ReLU 激活函數(shù)進(jìn)行C.ReLU(x)=Concat[ReLU(x),ReLU( - x)]的維度加倍運(yùn)算,在保證精準(zhǔn)的前提下,又大大地提高了計(jì)算速度,圖4是C.ReLU的實(shí)現(xiàn)原理圖。
圖4 C.ReLU的實(shí)現(xiàn)原理圖Figure 4 Implementation schematic diagram of C.ReLU
在進(jìn)行一次卷積、標(biāo)準(zhǔn)化批量操作之后,C.ReLU模塊把特征圖像的值取反,然后連接到一起再進(jìn)行Re?LU(修正線性單元函數(shù))操作,這樣就減少了卷積操作,提高了訓(xùn)練與測試的速度。
MSCL遵循兩個(gè)角度:深度和寬度,深度由Inception網(wǎng)絡(luò)和Conv層組成,寬度則使用了Inception網(wǎng)絡(luò)豐富了感受野。Inception網(wǎng)絡(luò)輸出的特征圖尺寸保持不變,但是會(huì)豐富錨框和感受野。Inception豐富的錨框擁有3種尺寸和7個(gè)感受野,如表1所示。
表1 錨的尺寸及感受野Table 1 Dimensions and receptive fields of anchors
Inception網(wǎng)絡(luò)是將某一層特征圖的像素點(diǎn)映射到原圖的區(qū)域大小。Inception網(wǎng)絡(luò)會(huì)根據(jù)不同尺寸的特征圖輸出不同的錨框去處理不同尺度的人臉。高分辨率的特征圖感受野小,適合于檢測小目標(biāo);低分辨率的特征圖感受野大,適合于檢測大目標(biāo)。
普通感受野的計(jì)算:F(i,j- 1)=((F(i,j)- 1))*stride+kernal-size,其中F(i,j)表示第i層對第j層的局部感受野。Inception網(wǎng)絡(luò)是用多個(gè)卷積核卷積同一個(gè)輸入來代替單一層卷積,所以上式中的kernal-size會(huì)有多個(gè)數(shù)值。
通過對感受野的計(jì)算強(qiáng)化了目標(biāo)人臉口罩的識(shí)別,加上Inception網(wǎng)絡(luò)對不同大小目標(biāo)的分類檢測提高了識(shí)別的準(zhǔn)確性,同時(shí)減少了輸出通道數(shù),從而減少了算法的執(zhí)行時(shí)間。
視頻監(jiān)控識(shí)別功能可以實(shí)時(shí)錄制視頻并對視頻中未佩戴口罩的人員進(jìn)行人臉口罩識(shí)別。本模塊包括視頻識(shí)別、語音報(bào)警和實(shí)時(shí)截圖3個(gè)部分,如圖5所示。
圖5 視頻監(jiān)控流程圖Figure 5 Flowchart of video monitoring
視頻監(jiān)控識(shí)別的步驟可總結(jié)為首先通過視頻端或監(jiān)控端將視頻幀輸入至識(shí)別模塊,然后識(shí)別模塊對視頻中的人臉進(jìn)行檢測與口罩識(shí)別,如若檢測到未佩戴口罩的人員立即進(jìn)行語音報(bào)警和截圖,最后對視頻識(shí)別數(shù)據(jù)進(jìn)行存儲(chǔ)。
視頻識(shí)別利用OpenCV技術(shù)實(shí)現(xiàn)動(dòng)態(tài)視頻的監(jiān)控[9]。首先對存在噪聲的視頻進(jìn)行預(yù)處理,然后將處理后的每一幀圖像組合成視頻輸入至識(shí)別模塊,最后得出識(shí)別結(jié)果。語音報(bào)警是本系統(tǒng)的一項(xiàng)特色功能,可以對視頻中未戴口罩的人員進(jìn)行語音報(bào)警,提示工作人員進(jìn)行防控,報(bào)警效果會(huì)持續(xù)到該人員戴上口罩為止,部分源代碼如下所示。
初始化音樂:pygame.mixer.init(frequency=44 100)
載入音樂:pygame.mixer.music.load(file)
播放音樂:pygame.mixer.music.play()
實(shí)時(shí)截圖指的是對視頻的檢測結(jié)果進(jìn)行實(shí)時(shí)截圖并在后臺(tái)保存,通過視頻截圖存儲(chǔ)未戴口罩人員的信息,以便日后疫情防控的排查。
嵌入式人體測溫是基于Arduino[10]設(shè)計(jì)的非接觸式人體測溫技術(shù),采用Arduino Nano作為CPU。Arduino Nano 是一款適用于面包板的ATmega328P產(chǎn)品,提供與UNO 板一樣的外部連接特性,并且具有外部的插腳接口,可以使用Arduino的編程軟件(IDE)來為Arduino Nano編程,也可以進(jìn)行離線編程。
2.2.1 設(shè)備組成
測溫設(shè)備由杜邦線、面包板、Arduino Nano開發(fā)板、OLED屏和MLX90614傳感器模塊5個(gè)部分組成。杜邦線用來連接各個(gè)模塊,面包板用來放置各個(gè)硬件設(shè)備,Arduino Nano開發(fā)板和MLX90614傳感器模塊用于接收數(shù)據(jù),OLED屏用來顯示測溫?cái)?shù)據(jù)。
2.2.2 設(shè)備安裝
離線編輯Arduino Nano 程序需要安裝Arduino Desktop IDE,此外,還需要通過Mini-B USB 電纜來連接Arduino Nano到計(jì)算機(jī),電纜同時(shí)也可以給面包板提供電源,使得Arduino Nano 2.x上的藍(lán)色LED和Arduino Nano 3.0的上部LED發(fā)亮。
display.print(mlx.readAmbientTempC());//顯示環(huán)境溫度
display.print(mlx.readObjectTempC());//顯示目標(biāo)溫度
嵌入式測溫設(shè)備能夠適應(yīng)多場景下的非接觸式人體測溫,用于對體溫異常者進(jìn)行初篩,一旦發(fā)現(xiàn)體溫異常者便會(huì)出現(xiàn)紅色標(biāo)注警告,達(dá)到預(yù)防交叉感染的作用。與一般的測溫設(shè)備相比,該測溫設(shè)備精確度能夠達(dá)到± 0.2,且會(huì)根據(jù)環(huán)境溫度進(jìn)行測溫的自行調(diào)整(調(diào)整范圍±0.2),減少了人工使用測溫槍等測溫設(shè)備的需求,實(shí)現(xiàn)快速篩查。
為展示本系統(tǒng)的整體效果,本系統(tǒng)采用了web網(wǎng)頁形式進(jìn)行展示。
2.3.1 web端交互設(shè)計(jì)
web 端部署方案主要采取HTML/CSS、JavaScript 等技術(shù)進(jìn)行前端界面設(shè)計(jì),利用Django 框架直接調(diào)用PaddleHub識(shí)別模塊[11],從而實(shí)現(xiàn)前后端的交互,該部分設(shè)計(jì)流程如圖6所示。用戶只需上傳待識(shí)別的圖像,系統(tǒng)就可識(shí)別圖像中的人員是否佩戴口罩,并對戴口罩和未戴口罩的人數(shù)進(jìn)行統(tǒng)計(jì)。
圖6 前后端交互流程圖Figure 6 Interaction flowchart of front and rear end
2.3.2 web模塊設(shè)計(jì)
本部分可分為頁面渲染模塊、圖像口罩識(shí)別和分類人數(shù)統(tǒng)計(jì)模塊。
頁面渲染模塊用于渲染html文件,web頁面與用戶的交互界面建立在此模塊基礎(chǔ)。此外,該模塊需要獲取前端表單上傳圖像的數(shù)據(jù)信息并進(jìn)行保存。在web系統(tǒng)的開發(fā)過程中采用了分模塊的開發(fā)方式,主要有渲染模塊、程序處理模塊以及一些靜態(tài)資源。各個(gè)模塊結(jié)構(gòu)如圖7所示:
圖7 模塊結(jié)構(gòu)示意圖Figure 7 Schematic diagram of module structure
每個(gè)模塊可以看成是Django 的一個(gè)應(yīng)用程序,包含了view、model、urls 和template 文件。各個(gè)模塊從開發(fā)和資源文件上劃分是獨(dú)立開來的,但是在應(yīng)用邏輯層是相互關(guān)聯(lián)和依賴的。這種開發(fā)模式可以使開發(fā)人員分工明確,降低溝通成本,系統(tǒng)功能能夠更快地實(shí)現(xiàn),此外,還有利于項(xiàng)目的后期維護(hù)和升級(jí)。
圖像口罩識(shí)別功能模塊是web端識(shí)別程序的核心模塊。本模塊能夠準(zhǔn)確識(shí)別圖像中的人員是否佩戴口罩并返回準(zhǔn)確的統(tǒng)計(jì)結(jié)果。分類人數(shù)統(tǒng)計(jì)模塊能夠?qū)Υ骺谡峙c未戴口罩的人群進(jìn)行有效的分類,即對未佩戴口罩的人員進(jìn)行臉部紅色矩形框標(biāo)注,佩戴口罩的進(jìn)行綠色矩形框標(biāo)注,并且都會(huì)有佩戴口罩正確率的顯示,識(shí)別效果如圖8所示。
圖8 識(shí)別效果圖Figure 8 Identify renderings
在自然環(huán)境下進(jìn)行人臉口罩的檢測會(huì)面臨許多的問題,包括光照強(qiáng)度、拍攝角度、口罩佩戴的方式以及口罩的不同尺度,因此,需要不同類型的數(shù)據(jù)進(jìn)行模型的調(diào)整與優(yōu)化。訓(xùn)練的數(shù)據(jù)來源主要包括:①從網(wǎng)上下載的數(shù)據(jù)集(包括600張戴口罩的人臉和1800 張不戴口罩的人臉),②自己拍攝的圖像,③網(wǎng)上搜集的圖像。為了達(dá)到圖像數(shù)據(jù)的多樣化,做到較高的識(shí)別準(zhǔn)確率和分類能力,訓(xùn)練時(shí)對數(shù)據(jù)集進(jìn)行了數(shù)據(jù)的增強(qiáng)操作,包括隨機(jī)旋轉(zhuǎn)、裁剪和隨即縮放等。同時(shí),根據(jù)圖像邊緣框的檢測率,定義了簡單、中等和困難三個(gè)難度等級(jí)。
由于口罩識(shí)別模型屬于二分類問題,只需判斷出是否佩戴口罩,所以評價(jià)指標(biāo)選擇“混淆矩陣”進(jìn)行評價(jià)?!盎煜仃嚒卑?zhǔn)確率(Precison)、召回率(Recall)和精確率(Accuracy),其中準(zhǔn)確率指所有樣本被正確分類的占比;召回率指戴口罩的樣本中正確分類的占比;精確率指正確分類的樣本中戴口罩的占比。
表2 評價(jià)指標(biāo)Table 2 The evaluation index
具體評估公式如下所示:
為了加快實(shí)驗(yàn)測試速度,本研究使用了win10系統(tǒng)下GTX Tian X型號(hào)的GPU來操作,在PaddleHub平臺(tái)上進(jìn)行測試,實(shí)驗(yàn)結(jié)果如表3所示。
表3列出的三種測試集選取了不同難度的樣例進(jìn)行了實(shí)驗(yàn),其中包括人臉的偏轉(zhuǎn)角度大、模糊圖片、部分遮擋、佩戴口罩不規(guī)范和不同口罩樣式等。測試集①是網(wǎng)上下載的、較為標(biāo)準(zhǔn)的人臉口罩?jǐn)?shù)據(jù),測試集②是自行拍攝的不同光線、遮擋和模糊的人臉口罩?jǐn)?shù)據(jù),測試集③網(wǎng)上搜集的多種角度的人臉口罩圖像。對比三者的實(shí)驗(yàn)結(jié)果,可以看出在明亮場景下,臉部有較少遮擋且人臉偏轉(zhuǎn)角度較小的圖像測出的準(zhǔn)確率相對較高,能夠滿足正常的實(shí)際應(yīng)用需求。
表3 基于PaddleHub的人臉口罩識(shí)別結(jié)果Table 3 The face mask recognition results based on PaddleHub
通過PaddleHub設(shè)計(jì)出的人臉口罩識(shí)別系統(tǒng)包括人臉檢測和口罩識(shí)別兩部分。人臉檢測利用Pyramid?Box實(shí)現(xiàn)目標(biāo)人臉的檢測,口罩識(shí)別利用FaceBoxes 網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行目標(biāo)人臉口罩的識(shí)別。同時(shí),利用物聯(lián)網(wǎng)和人工智能相結(jié)合的理念設(shè)計(jì)了系統(tǒng)功能模塊,該模塊分為視頻監(jiān)控識(shí)別設(shè)計(jì)、嵌入式人體測溫設(shè)計(jì)以及web端的設(shè)計(jì),具有動(dòng)態(tài)視頻識(shí)別、實(shí)時(shí)截圖、語音報(bào)警和非接觸式人體測溫的特色功能。綜上,該系統(tǒng)可以高效地、多場景地識(shí)別圖像和視頻中人臉佩戴口罩的情況,并可以實(shí)現(xiàn)精準(zhǔn)測溫,可部署于多種公共場合,具有廣泛的應(yīng)用場景。