劉紫馨
(中國傳媒大學信息與通信工程學院,北京 100024)
2020年初,“新冠”疫情爆發(fā),為有效阻止疫情的傳播與蔓延,國家衛(wèi)生健康委規(guī)定大家日常出行均須佩戴口罩。疫情初期,市民自覺佩戴口罩的意識較弱,曾多次出現(xiàn)人員聚集性感染現(xiàn)象。隨著秋冬季節(jié)的來臨,以及防止境外病例輸入帶來的影響,在人流密度較大的公共場所,均應設有工作人員對行人進行體溫檢測以及口罩佩戴的監(jiān)督提醒工作。由于人工檢測存在人力資源浪費、效率低下等問題,可以使用口罩佩戴識別技術,自動識別行人的口罩佩戴情況,實現(xiàn)高效無接觸式檢測。
口罩佩戴識別技術是由基于特征融合和分割監(jiān)督的目標檢測以及口罩屬性類別識別兩大模塊組成的。目標檢測是神經(jīng)網(wǎng)絡中較為重要的一門領域,卷積網(wǎng)絡本身具有的權值共享的特點可以降低時間復雜度,提高識別速度。
現(xiàn)階段深度學習的主要實現(xiàn)方式是在 GPU平臺上完成,由于 GPU具有高帶寬以及高效率的浮點運算單元等特點,通常被用于進行卷積神經(jīng)網(wǎng)絡的分類和訓練。但在實際應用中,仍然面臨著高端 GPU價格昂貴、體積巨大、位置固定且僅能在服務器上安裝等問題,極大地限制了算法的應用場景;而嵌入式平臺體積較小,可拓展性強,部署方便,可接入平臺多,具有良好的硬件適應性,方便移植,可以針對特定應用靈活設計。
本文設計的口罩佩戴檢測儀可以實現(xiàn)對行人是否佩戴口罩的實時檢測,具有實時性、便攜性、可拓展性強、識別準確度高等特點。系統(tǒng)前端采用深度相機進行視頻流的采集,同時選擇嵌入式設備作為硬件平臺,并在此基礎上搭載卷積神經(jīng)網(wǎng)絡作為基礎核心算法,是基于深度學習對圖像圖形的處理方式和方法。
本系統(tǒng)的工作流程為:由前端攝像頭采集目標對象視頻流,接著由 Open CV算法對視頻流進行處理,并將處理后的圖片幀輸入到網(wǎng)絡中進行識 別,當返回的識別結果顯示有人未佩戴口罩時,系統(tǒng)將作出警報、禁止通行等反應。
在研究過程中對目標對象的檢測和定位的相關技術進行分析,合理選擇適合于口罩佩戴識別系統(tǒng)的算法框架。針對現(xiàn)有開源數(shù)據(jù)集存在的問題進行修正補充,創(chuàng)建新的數(shù)據(jù)集,對數(shù)據(jù)集進行訓練,并對訓練所得模型進行相關的性能評估。考慮到GPU體積巨大、位置固定、不易移動等問題,選擇適宜的嵌入式平臺對算法進行移植。
本文將研究并實現(xiàn)基于嵌入式系統(tǒng)的口罩佩戴識別系統(tǒng),選擇卷積神經(jīng)網(wǎng)絡作為核心理論算法。對算法的基本原理進行分析,構建口罩佩戴檢測數(shù)據(jù)集,在初始算法的基礎上進行修改優(yōu)化,并將算法移植于嵌入式系統(tǒng)中來解決應用場景受限等問題。
現(xiàn)階段深度學習的主要實現(xiàn)方式以 GPU為主,口罩佩戴識別系統(tǒng)往往應用于人流量密度較大的公共場所,而傳統(tǒng)主機由于存在體積大、移動不方便等缺點,極大地限制了算法的應用場景。而嵌入式平臺體積小、擴展性強、便于部署,可以實現(xiàn)并行計算的需要,更加滿足對系統(tǒng)的整體要求。
在本次研究中嵌入式平臺的作用是完成處理視覺系統(tǒng)采集到的圖片,并輸出檢測結果的任務,其中嵌入式平臺的 CPU和GPU性能將極大地決定主機的圖像處理性能??紤]到口罩佩戴識別系統(tǒng)需要對輸入的圖片或視頻進行實時的檢測和反饋,所以選擇在 NVDIA Jetson TX2平臺上實現(xiàn)。
NVDIA Jetson TX2是一臺基于 NVIDIA Pascal架構嵌入式設備,模型外形小巧,節(jié)能高效,長寬87 mm×50 mm,其功耗也僅約為 7.5 W,在大多數(shù)場合下都可以實現(xiàn)超長的待機,適用于對帶寬和延遲要求高的應用的實時處理過程。 Jetson TX2平臺在此基礎上具有強大的計算能力,在處理 720 p彩色圖像時的每秒幀數(shù)可達 30幀以上。
由于口罩佩戴識別系統(tǒng)主要應用于視頻目標檢測,TX2額外提供的高級高清視頻編碼器和 1.4 Gpix/s的高級圖像信號處理器,可以通過硬件加速靜止圖像和視頻捕獲路徑,更有利于對動態(tài)目標的檢測。
由于口罩佩戴識別系統(tǒng)對檢測的實時性要求較高,因此處理速度快,計算精度準是在選擇合理的算法框架時主要的評價指標。現(xiàn)階段基于深度學習技術的目標檢測算法分為兩類:一類是雙階段目標檢測算法,另一類是單階段目標檢測算法。其中,雙階段目標檢測算法在對特征進行提取的基礎上,需要有額外的網(wǎng)絡產(chǎn)生候選區(qū)域來確定目標所在的具體位置,處理時間較長,不滿足對實時性檢測的要求,而單階段目標檢測算法則可以在產(chǎn)生候選區(qū)域的同時進行分類和回歸。所以在本次研究中選用單階段目標檢測算法。
本系統(tǒng)采用的 YOLOv3是一種以 Darknet-53結構為基礎的網(wǎng)絡,通過 FPN(Feature Pyramid Network)進行多尺度特征融合的端到端目標檢測方法。其中,Darknet-53結構是用來對輸入圖像進行特征提取的,Darknet網(wǎng)絡由 C語言實現(xiàn),沒有依賴項,容易安裝,便于移植,十分適合在嵌入式系統(tǒng)中使用。
目標檢測需要完成目標識別和目標定位兩個任務,為了評價預測的準確程度,YOLOv3的損失函數(shù)包括置信度損失函數(shù),中心坐標損失函數(shù),寬高大小損失函數(shù)和類別損失函數(shù)。
初始的口罩佩戴識別數(shù)據(jù)集來自于網(wǎng)絡爬蟲,共6,120張圖片。通過對人臉口罩佩戴照片的觀察發(fā)現(xiàn),圍巾、頭紗、手等對于面部的遮擋情況和口罩類似,圖片所處環(huán)境的光照和明暗變化都容易對預測結果產(chǎn)生相應的干擾,所以額外添加 1,000張圖片針對遮擋和光照情況對現(xiàn)有的開源數(shù)據(jù)集進行相應的補充,累計共 7,120張圖片。利用圖片標注工具對圖片進行標注,利用矩形框將人臉標出,并標注類別:wear(佩戴口罩)、 unwear(未佩戴口罩)。將數(shù)據(jù)集圖片拷貝到 JPEG Images目錄下,將標注好的數(shù)據(jù)集拷貝到 Annotations目錄下。
圖1 標注圖片
在數(shù)據(jù)集中隨機選取 90%(6,408張)的圖片作為訓練集,10%(712張)的圖片作為測試集,生成 train.txt,val.txt,est.txt,trainval.txt共4個文件。訓練時安裝并編譯 darknet源碼,并加入已創(chuàng)建好的數(shù)據(jù)集進行訓練。訓練設置如下:學習率設置為 0.001,動因子設置為 0.9,重衰減正則系數(shù)設置為0.0005。
在19,000次迭代后,損失值基本保持穩(wěn)定。使用20,000次迭代后的權重文件在測試集上進行測試。使用 TP表示正確檢測到是否佩戴口罩的人數(shù),F(xiàn)P表示錯誤檢測是否佩戴口罩的人數(shù),F(xiàn)N表示漏檢測行人的人數(shù)。引入準確率和召回率來對檢測結果進行評價,其中準確率用于評估預測的準確程度,召回率用于評估預測的全面程度。
圖2 識別結果
對于準確率 Precision與召回值 Recall的定義如下所示:
最終可以得出檢測準確率為 96.4%,召回率為95.8%,識別準確度較高,基本滿足對口罩佩戴的識別要求。
在對原始數(shù)據(jù)集進行相應的處理和補充后,通過與初始數(shù)據(jù)集的測試結果進行比對,有面部遮擋的易混淆圖片的檢測準確率有了明顯提高,對于照明環(huán)境較差,面部光線較暗的圖片在召回率上也有了明顯改善。
在TX2平臺上進行訓練,檢測精度與在傳統(tǒng)主機上的結果近似,能夠滿足在不損失精度的基礎上實現(xiàn)便攜式口罩佩戴識別系統(tǒng)的要求。同時實驗結果證明,在TX2平臺上的運行效率高于在傳統(tǒng)主機上的運行效率,能夠實現(xiàn)高效率高精度的佩戴檢測結果。而對于視頻內(nèi)容的識別,也能夠更好地進行動態(tài)捕捉,適用于在人流量密度較大的公共場所進行快速準確的人臉口罩佩戴識別。
本文通過設計一款針對口罩進行檢測的系統(tǒng),前期在對現(xiàn)有數(shù)據(jù)集的處理和補充后,改善了系統(tǒng)對于面部遮擋以及光線變化下的口罩佩戴識別的檢測效果。在算法上對 YOLOv3卷積神經(jīng)網(wǎng)絡進行改進,在 TX2平臺上對修改后的數(shù)據(jù)集進行訓練,最終在檢測任務上取得了較為理想的檢測效果,說明此方法具有一定的實用價值。但是同時發(fā)現(xiàn)當處于復雜場景下,若同時出現(xiàn)多個目標且目標面積較小時,檢測的效果較差。未來將針對該場景進行下一步的改進,提升檢測精度。