韓其凱
摘要:在本項(xiàng)目中,我們依托于機(jī)器視覺的相關(guān)技術(shù),采用了當(dāng)下速率和準(zhǔn)確率最先進(jìn)的端到端的目標(biāo)檢測(cè)算法--YOLOv4,來實(shí)現(xiàn)人臉是否口罩佩戴的檢測(cè)識(shí)別。在數(shù)據(jù)集采集方面,我們采用的是WIDER_FACE數(shù)據(jù)集,部分開源數(shù)據(jù)集和大量自采數(shù)據(jù)集,進(jìn)行手工標(biāo)注,訓(xùn)練。經(jīng)過實(shí)際效果檢測(cè),訓(xùn)練出的算法模型的準(zhǔn)確率和召回率均達(dá)到較高水平。在項(xiàng)目部署方面,我們采用了基于瀏覽器-服務(wù)器端和基于客戶端兩方面的部署,服務(wù)器端使用Flask高性能web框架實(shí)現(xiàn)??蛻舳耸褂没趐ython的GUI編程工具PyQt5實(shí)現(xiàn)。瀏覽器端和客戶端相結(jié)合,項(xiàng)目真正落地,具有實(shí)用性。該項(xiàng)目已部署至網(wǎng)站hanqikai.com,進(jìn)行實(shí)際的運(yùn)行測(cè)試,并不斷進(jìn)行維護(hù)。
關(guān)鍵詞:計(jì)算機(jī)視覺 深度學(xué)習(xí) 目標(biāo)檢測(cè) 端到端神經(jīng)網(wǎng)絡(luò)
近年來,隨著人工智能的不斷發(fā)展和機(jī)器學(xué)習(xí),深度學(xué)習(xí)領(lǐng)域的不斷突破,計(jì)算機(jī)視覺技術(shù)日趨成熟。目標(biāo)檢測(cè),語義分割,動(dòng)作視覺,三維重建等技術(shù)迅速發(fā)展起來,并且得到了日益廣泛的應(yīng)用。在抗擊新冠肺炎疫情的時(shí)代背景下,疫情防控進(jìn)入常態(tài)化時(shí)期,我們將深度學(xué)習(xí)和計(jì)算機(jī)視覺技術(shù)應(yīng)用到了現(xiàn)實(shí)場(chǎng)景中,采用機(jī)器視覺中的目標(biāo)檢測(cè)技術(shù),進(jìn)行了口罩佩戴檢測(cè)系統(tǒng)的開發(fā),并將該系統(tǒng)部署到了上位機(jī)上。該系統(tǒng)可以對(duì)人群中的人臉是否佩戴口罩的情況進(jìn)行識(shí)別檢測(cè),從而幫助疫情防控人員進(jìn)行人群口罩佩戴的檢測(cè),有效減少了他們接觸疑似新冠肺炎患者的風(fēng)險(xiǎn),實(shí)現(xiàn)人工智能技術(shù)的落地應(yīng)用,使用人工智能技術(shù)解決了社會(huì)難題。人工智能作為戰(zhàn)“疫”的強(qiáng)有力的工具將服務(wù)于社會(huì)大眾。
1 YOLOv4算法原理及模型構(gòu)建
在目標(biāo)檢測(cè)的算法模型上,我們采用端到端的目標(biāo)檢測(cè)算法—YOLOv4。何為端到端?如何理解端到端?端到端指的是輸入圖像的特征(圖像的特征由原始圖像通過多個(gè)卷積層進(jìn)行維度的變換進(jìn)行特征的提?。?,輸出的是最后分類得到的結(jié)果。通俗地講,該算法是直接將問題當(dāng)作回歸求解問題,具體做法是將輸入圖片劃分為S*S個(gè)網(wǎng)格,每個(gè)網(wǎng)格負(fù)責(zé)檢測(cè)落入其中的物體,如果物體的中心落入該網(wǎng)格,則該網(wǎng)格就負(fù)責(zé)檢測(cè)這些物體,并輸出圖像中物體的類別,置信度,以及物體的位置等信息。因此yolo也被稱為單階段的目標(biāo)檢測(cè)網(wǎng)絡(luò)。對(duì)于二階段的目標(biāo)檢測(cè)網(wǎng)絡(luò)(如RCNN網(wǎng)絡(luò))該網(wǎng)絡(luò)的基本思想是先將圖像進(jìn)行各個(gè)維度的卷積提取圖像的特征,然后進(jìn)行目標(biāo)區(qū)域的搜索,將搜索到的含有物體的框進(jìn)行匯總,再將這些框分別進(jìn)行物體的分類,最后完成對(duì)圖片中物體的檢測(cè)。對(duì)比這兩種目標(biāo)檢測(cè)算法我們可以得知,單階段的目標(biāo)檢測(cè)算法具有較快的檢測(cè)速度,因?yàn)檩斎雸D片經(jīng)過一次檢測(cè)便可以輸出結(jié)果。對(duì)于二階段的網(wǎng)絡(luò)RCNN系列,需要先進(jìn)行目標(biāo)區(qū)域的搜索,再進(jìn)行物體的分類,顯然這樣做比較費(fèi)時(shí),不適合實(shí)時(shí)性的目標(biāo)檢測(cè)工作,但好處是識(shí)別精度高,適用于比較看重識(shí)別效果的場(chǎng)景。
該目標(biāo)檢測(cè)網(wǎng)絡(luò)的結(jié)構(gòu)大體分為主干特征提取和特征處理兩大部分,其中主干特征提取是對(duì)圖像進(jìn)行不同維度的特征提取。YOLOv4由CSPDarknet53作為主干特征提取網(wǎng)絡(luò)Backbone。具體的處理流程是將原始輸入圖片喂入卷積塊,這個(gè)卷積塊包含了卷積、批標(biāo)準(zhǔn)化和Mish激活函數(shù)三種操作,將圖片的通道數(shù)變成32,再將這個(gè)結(jié)果經(jīng)過五個(gè)Resblock_body,抽取圖像中各個(gè)維度的特征,抽取的特征從低維到高緯,構(gòu)成特征金字塔,最后抽取的特征金字塔送入YOLO-Head網(wǎng)絡(luò)進(jìn)行預(yù)測(cè)以及解碼。
在特征金字塔部分,YOLOv4使用了兩種結(jié)構(gòu),分別為SPP結(jié)構(gòu)和PANet結(jié)構(gòu)。其中,SPP的網(wǎng)絡(luò)結(jié)構(gòu)能夠極大地增加感受野,分離出最顯著的上下文特征,PANet結(jié)構(gòu),是一種實(shí)例分割算法,其基本思想是從不同維度的信息中反復(fù)提取圖片中的特征,既包括從高維度到低維度的特征融合,也包括從低維度到高維度的特征融合,即特征的反復(fù)提取,使得提取出的特征既具有大物體部分的特征,也有小物體部分的特征,提取出的特征的內(nèi)容更加豐富。
YOLO Head層利用或得到的特征進(jìn)行預(yù)測(cè),在特征層的利用部分,YOLOv4提取多特征層進(jìn)行目標(biāo)檢測(cè),一共提取三個(gè)特征層,分別位于中間層,中下層,底層,三個(gè)特征層的維度大小分別為(76,76,256)、(38,38,512),(19,19,1024)。輸出層的維度大小分別為(19,19,75),(38,38,75),(76,76,75),最后一個(gè)維度是75的原因是我們是基于voc數(shù)據(jù)集的,它的類為20種,YOLOv4針對(duì)每一個(gè)特征層存在三個(gè)先驗(yàn)框,所以最后維度為3x25。因此我們可以獲得三個(gè)特征層的預(yù)測(cè)結(jié)果。但是這個(gè)預(yù)測(cè)結(jié)果并不對(duì)應(yīng)著嘴中的預(yù)測(cè)框在圖片上的位置,還需要解碼才可以完成。解碼的過程如下:
我們知道特征層的預(yù)測(cè)結(jié)果對(duì)應(yīng)著三個(gè)預(yù)測(cè)框的位置,分別為(N,19,19,3,25),(N,38,38,3,25),(N,76,76,3,25),其中,N代表輸入圖片的數(shù)量,第二,第三維度代表預(yù)測(cè)框的位置,第四維度代表先驗(yàn)框的個(gè)數(shù),最后一個(gè)維度代表x_offset(x的偏移量),y_offset(y的偏移量),h(偏移高度),w(偏移寬度),置信度,分類結(jié)果(20類)。YOLOv4的解碼過程就是將每個(gè)網(wǎng)格點(diǎn)加上對(duì)應(yīng)的x_offset和y_offset,加完之后的結(jié)果就是預(yù)測(cè)框的中心,然后利用先驗(yàn)框和h,w計(jì)算出預(yù)測(cè)框的長(zhǎng)和寬,這樣便可以得到整個(gè)預(yù)測(cè)框的位置了。在計(jì)算損失函數(shù)的時(shí)候,實(shí)際上就是預(yù)測(cè)框和真實(shí)框之間的對(duì)比。將預(yù)測(cè)出的包含物體的框和我們手工標(biāo)注的框進(jìn)行對(duì)比,求出兩種框的偏移量,將偏差算到損失函數(shù)中去,然后經(jīng)過神經(jīng)網(wǎng)絡(luò)的反向傳播不斷減小loss值,最終訓(xùn)練出理想的神經(jīng)網(wǎng)絡(luò)模型,這便是loss函數(shù)的作用。
對(duì)于口罩佩戴系統(tǒng)的檢測(cè),我們采用的數(shù)據(jù)集為WIDER_FACE數(shù)據(jù)集以及大量自己采集的數(shù)據(jù)集,自己采集的數(shù)據(jù)集包括自己拍攝,網(wǎng)絡(luò)爬蟲爬取等方法。總數(shù)據(jù)集一共有1165張圖像,其中戴口罩類514張,沒有戴口罩類651張。戴口罩類的圖像都是通過網(wǎng)絡(luò)爬蟲爬取獲得,沒有戴口罩的圖像是WIDER_FACE數(shù)據(jù)集,VOC2007數(shù)據(jù)集進(jìn)行拼湊而成。對(duì)于數(shù)據(jù)標(biāo)注,我們采用labelme軟件進(jìn)行手工標(biāo)注,共分為兩類,mask類和no_mask類。最后形成四個(gè)文件夾,image_mask文件夾是存儲(chǔ)的人臉戴口罩的圖像,image_nomask文件夾是存儲(chǔ)的人臉沒有戴口罩的圖像,label_mask文件夾是存儲(chǔ)的人臉戴口罩圖像的標(biāo)簽,label_nomask文件夾是存儲(chǔ)的人臉沒有戴口罩圖像的標(biāo)簽。
我們將YOLOv4網(wǎng)絡(luò)加載到開發(fā)環(huán)境Pycharm中,加入訓(xùn)練數(shù)據(jù)及其標(biāo)簽,寫好訓(xùn)練腳本,就可以利用yolov4算法進(jìn)行口罩佩戴模型的訓(xùn)練,經(jīng)過漫長(zhǎng)時(shí)間的訓(xùn)練過程,訓(xùn)練出了我們自己的網(wǎng)絡(luò)模型,接下來使用幾張圖片檢測(cè)訓(xùn)練效果,測(cè)試圖片如圖1所示。測(cè)試結(jié)果如圖2所示。
由此可見,訓(xùn)練出的模型的效果還是非常好的,比較準(zhǔn)確地標(biāo)注出了人群中是否佩戴口罩的情況。
2 項(xiàng)目的兩方面部署
在訓(xùn)練好我們的模型以后,接下來考慮的就是如何將該項(xiàng)目部署落地的問題?;谶@個(gè)問題,我們采取了兩方面的部署措施。第一個(gè)是將該系統(tǒng)通過服務(wù)器和瀏覽器部署到web端,第二個(gè)部署方案是直接部署到本地客戶端。使用服務(wù)端-瀏覽器進(jìn)行訪問時(shí),可以將圖片或者視頻通過前端頁面接口傳輸?shù)椒?wù)器上,利用服務(wù)器的算力進(jìn)行識(shí)別推理,將結(jié)果回顯到頁面中。適用于對(duì)圖片或視頻中的人流進(jìn)行檢測(cè),進(jìn)行口罩佩戴的檢測(cè)。前端頁面效果及其識(shí)別接口請(qǐng)?jiān)L問http://hanqikai.com。
使用本地客戶端時(shí)可以直接調(diào)用攝像頭進(jìn)行檢測(cè)識(shí)別,適用于對(duì)出入口閘機(jī)進(jìn)行檢測(cè),通過捕捉攝像頭的視頻流進(jìn)行檢測(cè)。使用python的圖形界面編程工具PyQt5進(jìn)行技術(shù)實(shí)現(xiàn),提供實(shí)時(shí)識(shí)別檢測(cè)功能,可以調(diào)用本地計(jì)算機(jī)的攝像頭進(jìn)行實(shí)時(shí)監(jiān)測(cè)口罩的佩戴情況,客戶端頁面以及識(shí)別效果如圖3,圖4所示。
3 項(xiàng)目分析
在本項(xiàng)目中,網(wǎng)絡(luò)模型的選擇是最重要的問題,選擇一個(gè)合適的網(wǎng)絡(luò)模型對(duì)于項(xiàng)目的部署和運(yùn)行都起著重要的作用。在本項(xiàng)目中,我們對(duì)比了多種網(wǎng)絡(luò)模型,比如GoogLeNet,F(xiàn)aster-RCNN,YOLOv4等,在充分了解這些目標(biāo)檢測(cè)算法模型的優(yōu)缺點(diǎn)及其應(yīng)用場(chǎng)景后,我們最終選擇YOLOv4目標(biāo)檢測(cè)網(wǎng)絡(luò)作為口罩佩戴識(shí)別檢測(cè)項(xiàng)目的核心檢測(cè)算法。在訓(xùn)練自己的網(wǎng)絡(luò)模型中,數(shù)據(jù)集的采集和處理也是一個(gè)重要的問題。在本項(xiàng)目中,由于手頭沒有數(shù)據(jù)集,因此我門使用了python網(wǎng)絡(luò)爬蟲技術(shù)在網(wǎng)絡(luò)上爬取了大量人臉數(shù)據(jù)集進(jìn)行手工標(biāo)注,結(jié)合部分開源數(shù)據(jù)集,最后拼湊的數(shù)據(jù)集的總數(shù)為1165張圖像,這些數(shù)據(jù)集經(jīng)過訓(xùn)練之后所得出的效果并不好,有很多人臉沒有被檢測(cè)出來,甚至出現(xiàn)錯(cuò)誤檢測(cè)的情況。經(jīng)過和指導(dǎo)老師的交流后,我們采取Mosaic數(shù)據(jù)增強(qiáng)方法。通過這個(gè)方法不僅豐富了數(shù)據(jù)集,而且豐富了檢測(cè)物體的背景,在最后訓(xùn)練出的模型效果中,新模型取得了非常好的效果。
在實(shí)現(xiàn)了口罩識(shí)別檢測(cè)系統(tǒng)之后,我們下一步計(jì)劃將該項(xiàng)目與計(jì)算機(jī)硬件的相關(guān)模塊結(jié)合,實(shí)現(xiàn)根據(jù)是否佩戴口罩進(jìn)行出入口的自動(dòng)控制,戴口罩者通過入口時(shí),閘機(jī)自動(dòng)開放,當(dāng)沒有戴口罩的人通過入口時(shí),閘機(jī)自動(dòng)關(guān)閉,并向防控人員發(fā)出警報(bào)信息。同時(shí)可以結(jié)合數(shù)據(jù)庫系統(tǒng),實(shí)現(xiàn)口罩佩戴的檢測(cè)以及數(shù)據(jù)庫系統(tǒng)的匹配,判斷人流中的某個(gè)個(gè)體是否屬于該小區(qū)人員或?qū)W校學(xué)生。結(jié)合紅外熱像體溫自動(dòng)檢測(cè)系統(tǒng),將通過入口人員進(jìn)行口罩佩戴和體溫監(jiān)測(cè)的同時(shí)檢測(cè)識(shí)別,有效幫助疫情防控人員進(jìn)行全面檢測(cè),全面防控,排查可疑人員,為幫助疫情防控常態(tài)化工作作出更大的貢獻(xiàn)。
參考文獻(xiàn):
[1]周志華.機(jī)器學(xué)習(xí)[M].1版.北京:清華大學(xué)出版社,2016:5-6.
[2](美)Martin T. Hagan.神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)[M].戴葵,譯. 北京:機(jī)械工業(yè)出版社,2002.9:6-12.
[3]李航.統(tǒng)計(jì)學(xué)習(xí)方法[M].1版.北京:清華大學(xué)出版社,2012:6-8.
[4] Alexey Bochkovskiy. YOLOv4: Optimal Speed and Accuracy of Object Detection[J]. CVPR, 2020(1).
[5] Google Inc. Going deeper with convolutions[J]. CVPR, 2014(1).
曲阜師范大學(xué) 山東省 276800