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