黃家駒,陸江華,張睿哲,王蕤,李嘉樂
(西安培華學院,陜西西安,710125)
自2019 年末開始,新型冠狀病毒肺炎(COVID-19)在全世界全面爆發(fā)并迅速傳播,公共場合佩戴口罩可以有效地減少感染率。因此,為減輕公共場合防疫人員檢查人員是否佩戴口罩的壓力,提高其效率,設(shè)計開發(fā)基于OpenMV 的口罩檢測系統(tǒng)具有非常積極的現(xiàn)實意義。本文以O(shè)penMV 機器視覺和卷積神經(jīng)網(wǎng)絡(luò)的理論為基礎(chǔ),通過Micro Python 為操作語言,實現(xiàn)口罩的檢測,同時也搭載LED 燈增加其功能性。
口罩檢測系統(tǒng)的設(shè)計采用OpenMV 作為核心處理器,它以 STM32H743IIk6 和 OV7725 攝像頭為核心,通過基于卷積神經(jīng)網(wǎng)絡(luò)模型的人臉檢測技術(shù)和目標分類技術(shù)對圖像訓練出識別模型,再通過 Python 代碼搭載至 OpenMV 機器視覺模塊[1],同時可得預(yù)處理后的圖像信息,提高口罩識別的速度。使其實現(xiàn)口罩檢測的功能;LED 顯示模塊由OpenMV 帶有的STM32H743IIk6 處理器控制 LED 燈實現(xiàn)報警功能,當檢測到佩戴口罩時亮綠燈,否則亮紅燈,可在人員流動較大且人工檢測復(fù)雜的地方安裝,彌補了人力疲勞缺陷,保障人員安全[1]。口罩檢測系統(tǒng)設(shè)計思路樣圖如圖1所示。

圖1 口罩識別系統(tǒng)設(shè)計思路樣圖
如圖2 所示,本設(shè)計控制系統(tǒng)由 OpenMV 機器視覺模塊、STM32H743IIK6 核心控制器、LED 燈顯示模塊組成,使用卷積神經(jīng)網(wǎng)絡(luò)算法,通過 Python 編程實現(xiàn)口罩檢測系統(tǒng)。單片機和OpenMV 之間采用同步串行口通信,進行數(shù)據(jù)交換,單片機將接收到的數(shù)據(jù)進行計算分析,進行判斷。當 OpenMV 捕捉到被測對象并處理后,則觸發(fā) LED 燈,如果檢測出人員沒有佩戴口罩,則 LED 燈亮紅燈,如果人員佩戴口罩,則 LED 亮綠燈。

圖2 系統(tǒng)硬件組成框圖
OpenMV 攝像頭是一款小巧,低功耗,低成本的電路板,可以通過高級語言MicroPython,Python[3]的高級數(shù)據(jù)結(jié)構(gòu)使你很容易在機器視覺算法中處理復(fù)雜的輸出。且可以完全控制OpenMV,包括I/O 引腳。同時可以使用外部終端觸發(fā)拍攝或者執(zhí)行算法,也可以把算法的結(jié)果用來控制I/O引腳[4]。
本設(shè)計采用 OpenMv4 H7 plus 機器視覺模塊來進行口罩檢測系統(tǒng)算法的編輯以及口罩檢測圖像的采集與判斷。OpenMV 作為機器視覺模塊搭載STM32H743IIk6 處理器,也可作為控制器實現(xiàn)相關(guān)功能。
攝像頭模塊采用 OpenMV4 中的OV7725 攝像頭模塊。
當 OpenMV 捕捉到被測對象并處理后,檢測出其未佩戴口罩,則觸發(fā)LED 燈亮紅燈。
本設(shè)計采用的是OpenMV 機器視覺模塊來實現(xiàn)口罩檢測功能,使用 Python 語言對 OpenMV 機器視覺模塊進行調(diào)試,它也是一種 STM32 單片機,可通過引腳連接實現(xiàn)相關(guān)硬件的通信,從而實現(xiàn)產(chǎn)品功能,包括數(shù)模轉(zhuǎn)換、模數(shù)轉(zhuǎn)換、圖像捕捉、PWM 輸出等電路。
當OpenMV 模塊啟動后,其搭載的 OV7725 攝像頭模塊開始工作,當通過人臉檢測捕捉到人臉后,進入口罩檢測模式,識別被測人員是否佩戴口罩,如果有,則 LED 燈亮綠燈,如果沒有,則 LED 燈亮紅燈。根據(jù)基于OpenMV口罩檢測系統(tǒng)的原理及分析,設(shè)計代碼的實現(xiàn)需要的程序流程圖如圖3 所示,引入攝像頭、圖像、窗口和時間模塊。首先重置攝像頭,調(diào)整窗口分辨率、像素格式、攝像頭等待時間以及關(guān)閉白平衡[2]。隨后啟動攝像頭模塊,開始拍攝圖像,調(diào)用 snapshot()函數(shù)返回image 對象,調(diào)用卷積神經(jīng)網(wǎng)絡(luò)訓練模型對輸入圖像進行處理,對圖像中人臉口罩置信度進行標注,并顯示標注結(jié)果,最后計算開始計時后到標記目標的時間,并轉(zhuǎn)化為幀率即可。

圖3 軟件系統(tǒng)流程圖
卷積神經(jīng)網(wǎng)絡(luò)對特征識別已經(jīng)目標分類訓練具有操作簡易,準確率高等優(yōu)點,因此,本文擬采用卷積神經(jīng)網(wǎng)絡(luò)算法進行人臉檢測,并將口罩檢測問題轉(zhuǎn)換為圖片二分類目標,通過訓練大量不同情況下的口罩佩戴樣本,對其進行人臉定位、提取定位結(jié)果,通過卷積神經(jīng)網(wǎng)絡(luò)算法對口罩進行二分類識別,及佩戴口罩(mask)和未佩戴口罩(nomask)。
卷積神經(jīng)網(wǎng)絡(luò)是一種特別的神經(jīng)網(wǎng)絡(luò)模型,它將人工神經(jīng)網(wǎng)絡(luò)和深度學習技術(shù)相結(jié)合,其特點為:(1)卷積神經(jīng)網(wǎng)絡(luò)的神經(jīng)元直接非全連接;(2)一些神經(jīng)元的權(quán)重相共享。卷積神經(jīng)網(wǎng)絡(luò)由卷積層、池化層、激活層以及全連接層組成。
卷積神經(jīng)網(wǎng)絡(luò)中,卷積層的作用是將以輸入的特征信息提取出來,它由若干個卷積單元組成,其中每個參數(shù)都是通過反向傳播算法的優(yōu)化得到的,通過感受野(filter)對輸入圖片進行移動,并且對相對應(yīng)的區(qū)域做卷積運算進行特征提取;其中低卷積層只能提取到如邊緣、線條等低級特征,而高卷積層則可以提取到更深度的特征。通過卷積運算提取特征之后得到的圖像特征為線性特征,但實際的樣本不一定是線性的,由于激活函數(shù)存在非線性、單調(diào)性以及連續(xù)可微等特性,因此引入激活函數(shù)來解決這一問題。常用的激活函數(shù)為Sigmod 函數(shù)、Tanh 函數(shù)以及ReLU 函數(shù)。全連接層、在卷積神經(jīng)網(wǎng)絡(luò)的最末端,給出分類的最后結(jié)果,在全連接層中,特征圖失去了空間結(jié)構(gòu),展開成為特征向量,并且把前面提取的特征進行組合形成輸出公式。
通過人臉檢測方式檢查出人臉區(qū)域后,需確定其有無戴口罩,目前可選擇的方式為辨認和檢測這兩個方式。其中,檢測要求對人臉范圍中的所有目標進行標注,工程量較大,而且算法相對繁瑣且速度緩慢。而采用目標劃分技術(shù)的方式,只要求明確標識類別,工程量較小,而且因為口罩類在人臉中的占據(jù)比例也較大,所以用目標劃分技術(shù)就可以取得非常良好的效果。
系統(tǒng)實現(xiàn)口罩檢測的核心是建立一個良好有效的卷積神經(jīng)網(wǎng)絡(luò)訓練模型,訓練出準確率高、方便快捷的口罩檢測模型。基于卷積神經(jīng)網(wǎng)絡(luò)訓練模型的設(shè)計流程,建立的口罩檢測模型包含人臉數(shù)據(jù)采集模塊、圖像處理模塊、網(wǎng)絡(luò)訓練模塊以及最終的口罩檢測模塊。
人臉數(shù)據(jù)采集模塊就是通過OpenMV 攝像頭采集人臉圖像以及在網(wǎng)絡(luò)上搜尋各種狀態(tài)的人臉圖像形成數(shù)據(jù)集。圖像處理模塊是將采集到的圖像中的人臉圖像進行預(yù)處理,經(jīng)過灰度處理后,形成統(tǒng)一大小的圖像。網(wǎng)絡(luò)訓練模塊的作用是用來構(gòu)建基于卷積神經(jīng)網(wǎng)絡(luò)的口罩檢測模型,將處理好的數(shù)據(jù)集輸入至EDGE-IMPULSE 中進而訓練出能夠進行識別的網(wǎng)絡(luò),將訓練好的模型的參數(shù)進行保存并導(dǎo)出,供口罩檢測時使用。口罩識別模塊的功能就是進行實時的口罩檢測,將攝像頭實時采集的人臉圖片進行處理,調(diào)用保存好的網(wǎng)絡(luò)參數(shù),將其放入卷積神經(jīng)網(wǎng)絡(luò)進行識別,若識別到未佩戴口罩,則輸出反饋信號。
卷積網(wǎng)絡(luò)模型訓練整體設(shè)計流程如下:
(1)圖像預(yù)處理階段:將采集到的人臉圖像進行預(yù)處理,形成統(tǒng)一大小的人臉圖像數(shù)據(jù)集;
(2)將數(shù)據(jù)集放入 EDGE-IMPULSE 中進行訓練,完成后保存參數(shù);
(3)對實時視頻進行口罩檢測,通過人臉數(shù)據(jù)采集模塊和圖像處理模塊得到需要判斷的人臉圖像,調(diào)取已生成的網(wǎng)絡(luò)參數(shù),將圖像輸入到卷積神經(jīng)網(wǎng)絡(luò)進行識別,反饋識別結(jié)果。系統(tǒng)流程圖如圖4 所示。

圖4 口罩檢測流程圖
在經(jīng)過數(shù)據(jù)集采集和圖像預(yù)處理后,將可用于訓練的圖像帶入卷積神經(jīng)網(wǎng)絡(luò)進行模型訓練,設(shè)置其訓練周期(Number of training cycles)為20,學習率(Learning rate)為0.0005,驗證集大小(Validation set size)為20%。模型訓練后得到訓練集如圖5 所示。

圖5 口罩檢測模型測試集分布圖
如表1 所示,其中未佩戴口罩檢測準確率為 97.5%,佩戴口罩檢測準確率為 98.1%,其總體準確率為 97.8%,損失函數(shù)為0.07,因此該模型具有比較好的檢測效果。

表1 訓練集混淆驗證集
系統(tǒng)的調(diào)試是整個設(shè)計過程中最重要的一個環(huán)節(jié),它是檢驗系統(tǒng)能否正常運行的核心。分為軟件的測試和硬件的測試。其中,硬件測試需要檢測各個模塊是否可以正常工作。在調(diào)試過程中,首次對各個硬件的外觀進行檢查,看是否存在破損;然后對各個模塊進行上電測試,檢查是否可以正常工作,在各個模塊都確認無誤后,將其進行組裝,進行最終的調(diào)試,測試的主要內(nèi)容有:
(1)口罩識別功能測試:測試被測人員是否佩戴口罩,并輸出系統(tǒng)響應(yīng)速度;
(2)LED 燈顯示測試:在口罩識別過程中,能否根據(jù)被測人員佩戴口罩情況進行燈光顏色轉(zhuǎn)換。
首先進行口罩檢測測試,將編寫好的代碼放入OpenMVIDE 軟件系統(tǒng)中,連接OpenMV 機器視覺模塊,連接并運行。本文選用普通醫(yī)療口罩進行識別,在5cm、10cm 處進行識別響應(yīng),為了增加測試的廣泛性,將男性女性同時作為被測人員,其中女性有長發(fā),可遮擋一部分面部。實驗結(jié)果見表2 所示。

表2
實驗結(jié)果顯示,8 次測試都準確地顯示被測人員是否佩戴了口罩,但是距離的增加會導(dǎo)致識別時間變長,在經(jīng)過后續(xù)多次實驗后,實驗結(jié)果基本符合了設(shè)計的要求,驗證了系統(tǒng)的穩(wěn)定性。
其次在口罩檢測調(diào)試的基礎(chǔ)上增加LED 燈,在相同變量下對LED 燈顯示進行測試。實驗結(jié)果見表3 所示。

表3
實驗結(jié)果顯示,測試都準確地顯示被測人員是否佩戴了口罩,但是距離的增加會導(dǎo)致識別時間變長,在經(jīng)過后續(xù)多次實驗后,實驗結(jié)果基本符合了設(shè)計的要求,驗證了系統(tǒng)的穩(wěn)定性。
本設(shè)計實現(xiàn)口罩檢測功能,要求被測人員被攝像頭采集到人臉信息后能夠識別是否佩戴口罩,檢測到未佩戴口罩時能夠進行報警顯示(LED 燈變色),經(jīng)過調(diào)試和實現(xiàn),最終滿足設(shè)計要求。
本產(chǎn)品的實現(xiàn)對現(xiàn)階段防控疫情有一定的積極意義,能夠大大減輕工作人員的工作量,提高其工作效率,其簡易的操作和低廉的造價成本,使其具有推廣意義,但此設(shè)計仍需進行多方面的優(yōu)化或在更多方向進行拓展。
從設(shè)計水平角度分析,該設(shè)計在軟件設(shè)計和硬件設(shè)計上仍有較大的進步空間。
從設(shè)計的縱向角度分析,由于OpenMV 本身就具有不少 I/O 口,可拓展和升級更多功能,可以此為基礎(chǔ)提高產(chǎn)品的拓展功能,提高產(chǎn)品的功能性。
從產(chǎn)品本身分析,從產(chǎn)品市場橫向?qū)Ρ葋砜矗a(chǎn)品本身的智能化程度還可以進一步強化,可將本設(shè)計集成到智能控制中去,提高其智能效果,使得使用上更加人性化。