黃家駒,陸江華,張睿哲,王蕤,李嘉樂(lè)
(西安培華學(xué)院,陜西西安,710125)
自2019 年末開(kāi)始,新型冠狀病毒肺炎(COVID-19)在全世界全面爆發(fā)并迅速傳播,公共場(chǎng)合佩戴口罩可以有效地減少感染率。因此,為減輕公共場(chǎng)合防疫人員檢查人員是否佩戴口罩的壓力,提高其效率,設(shè)計(jì)開(kāi)發(fā)基于OpenMV 的口罩檢測(cè)系統(tǒng)具有非常積極的現(xiàn)實(shí)意義。本文以O(shè)penMV 機(jī)器視覺(jué)和卷積神經(jīng)網(wǎng)絡(luò)的理論為基礎(chǔ),通過(guò)Micro Python 為操作語(yǔ)言,實(shí)現(xiàn)口罩的檢測(cè),同時(shí)也搭載LED 燈增加其功能性。
口罩檢測(cè)系統(tǒng)的設(shè)計(jì)采用OpenMV 作為核心處理器,它以 STM32H743IIk6 和 OV7725 攝像頭為核心,通過(guò)基于卷積神經(jīng)網(wǎng)絡(luò)模型的人臉檢測(cè)技術(shù)和目標(biāo)分類技術(shù)對(duì)圖像訓(xùn)練出識(shí)別模型,再通過(guò) Python 代碼搭載至 OpenMV 機(jī)器視覺(jué)模塊[1],同時(shí)可得預(yù)處理后的圖像信息,提高口罩識(shí)別的速度。使其實(shí)現(xiàn)口罩檢測(cè)的功能;LED 顯示模塊由OpenMV 帶有的STM32H743IIk6 處理器控制 LED 燈實(shí)現(xiàn)報(bào)警功能,當(dāng)檢測(cè)到佩戴口罩時(shí)亮綠燈,否則亮紅燈,可在人員流動(dòng)較大且人工檢測(cè)復(fù)雜的地方安裝,彌補(bǔ)了人力疲勞缺陷,保障人員安全[1]??谡謾z測(cè)系統(tǒng)設(shè)計(jì)思路樣圖如圖1所示。
圖1 口罩識(shí)別系統(tǒng)設(shè)計(jì)思路樣圖
如圖2 所示,本設(shè)計(jì)控制系統(tǒng)由 OpenMV 機(jī)器視覺(jué)模塊、STM32H743IIK6 核心控制器、LED 燈顯示模塊組成,使用卷積神經(jīng)網(wǎng)絡(luò)算法,通過(guò) Python 編程實(shí)現(xiàn)口罩檢測(cè)系統(tǒng)。單片機(jī)和OpenMV 之間采用同步串行口通信,進(jìn)行數(shù)據(jù)交換,單片機(jī)將接收到的數(shù)據(jù)進(jìn)行計(jì)算分析,進(jìn)行判斷。當(dāng) OpenMV 捕捉到被測(cè)對(duì)象并處理后,則觸發(fā) LED 燈,如果檢測(cè)出人員沒(méi)有佩戴口罩,則 LED 燈亮紅燈,如果人員佩戴口罩,則 LED 亮綠燈。
圖2 系統(tǒng)硬件組成框圖
OpenMV 攝像頭是一款小巧,低功耗,低成本的電路板,可以通過(guò)高級(jí)語(yǔ)言MicroPython,Python[3]的高級(jí)數(shù)據(jù)結(jié)構(gòu)使你很容易在機(jī)器視覺(jué)算法中處理復(fù)雜的輸出。且可以完全控制OpenMV,包括I/O 引腳。同時(shí)可以使用外部終端觸發(fā)拍攝或者執(zhí)行算法,也可以把算法的結(jié)果用來(lái)控制I/O引腳[4]。
本設(shè)計(jì)采用 OpenMv4 H7 plus 機(jī)器視覺(jué)模塊來(lái)進(jìn)行口罩檢測(cè)系統(tǒng)算法的編輯以及口罩檢測(cè)圖像的采集與判斷。OpenMV 作為機(jī)器視覺(jué)模塊搭載STM32H743IIk6 處理器,也可作為控制器實(shí)現(xiàn)相關(guān)功能。
攝像頭模塊采用 OpenMV4 中的OV7725 攝像頭模塊。
當(dāng) OpenMV 捕捉到被測(cè)對(duì)象并處理后,檢測(cè)出其未佩戴口罩,則觸發(fā)LED 燈亮紅燈。
本設(shè)計(jì)采用的是OpenMV 機(jī)器視覺(jué)模塊來(lái)實(shí)現(xiàn)口罩檢測(cè)功能,使用 Python 語(yǔ)言對(duì) OpenMV 機(jī)器視覺(jué)模塊進(jìn)行調(diào)試,它也是一種 STM32 單片機(jī),可通過(guò)引腳連接實(shí)現(xiàn)相關(guān)硬件的通信,從而實(shí)現(xiàn)產(chǎn)品功能,包括數(shù)模轉(zhuǎn)換、模數(shù)轉(zhuǎn)換、圖像捕捉、PWM 輸出等電路。
當(dāng)OpenMV 模塊啟動(dòng)后,其搭載的 OV7725 攝像頭模塊開(kāi)始工作,當(dāng)通過(guò)人臉檢測(cè)捕捉到人臉后,進(jìn)入口罩檢測(cè)模式,識(shí)別被測(cè)人員是否佩戴口罩,如果有,則 LED 燈亮綠燈,如果沒(méi)有,則 LED 燈亮紅燈。根據(jù)基于OpenMV口罩檢測(cè)系統(tǒng)的原理及分析,設(shè)計(jì)代碼的實(shí)現(xiàn)需要的程序流程圖如圖3 所示,引入攝像頭、圖像、窗口和時(shí)間模塊。首先重置攝像頭,調(diào)整窗口分辨率、像素格式、攝像頭等待時(shí)間以及關(guān)閉白平衡[2]。隨后啟動(dòng)攝像頭模塊,開(kāi)始拍攝圖像,調(diào)用 snapshot()函數(shù)返回image 對(duì)象,調(diào)用卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練模型對(duì)輸入圖像進(jìn)行處理,對(duì)圖像中人臉口罩置信度進(jìn)行標(biāo)注,并顯示標(biāo)注結(jié)果,最后計(jì)算開(kāi)始計(jì)時(shí)后到標(biāo)記目標(biāo)的時(shí)間,并轉(zhuǎn)化為幀率即可。
圖3 軟件系統(tǒng)流程圖
卷積神經(jīng)網(wǎng)絡(luò)對(duì)特征識(shí)別已經(jīng)目標(biāo)分類訓(xùn)練具有操作簡(jiǎn)易,準(zhǔn)確率高等優(yōu)點(diǎn),因此,本文擬采用卷積神經(jīng)網(wǎng)絡(luò)算法進(jìn)行人臉檢測(cè),并將口罩檢測(cè)問(wèn)題轉(zhuǎn)換為圖片二分類目標(biāo),通過(guò)訓(xùn)練大量不同情況下的口罩佩戴樣本,對(duì)其進(jìn)行人臉定位、提取定位結(jié)果,通過(guò)卷積神經(jīng)網(wǎng)絡(luò)算法對(duì)口罩進(jìn)行二分類識(shí)別,及佩戴口罩(mask)和未佩戴口罩(nomask)。
卷積神經(jīng)網(wǎng)絡(luò)是一種特別的神經(jīng)網(wǎng)絡(luò)模型,它將人工神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)技術(shù)相結(jié)合,其特點(diǎn)為:(1)卷積神經(jīng)網(wǎng)絡(luò)的神經(jīng)元直接非全連接;(2)一些神經(jīng)元的權(quán)重相共享。卷積神經(jīng)網(wǎng)絡(luò)由卷積層、池化層、激活層以及全連接層組成。
卷積神經(jīng)網(wǎng)絡(luò)中,卷積層的作用是將以輸入的特征信息提取出來(lái),它由若干個(gè)卷積單元組成,其中每個(gè)參數(shù)都是通過(guò)反向傳播算法的優(yōu)化得到的,通過(guò)感受野(filter)對(duì)輸入圖片進(jìn)行移動(dòng),并且對(duì)相對(duì)應(yīng)的區(qū)域做卷積運(yùn)算進(jìn)行特征提??;其中低卷積層只能提取到如邊緣、線條等低級(jí)特征,而高卷積層則可以提取到更深度的特征。通過(guò)卷積運(yùn)算提取特征之后得到的圖像特征為線性特征,但實(shí)際的樣本不一定是線性的,由于激活函數(shù)存在非線性、單調(diào)性以及連續(xù)可微等特性,因此引入激活函數(shù)來(lái)解決這一問(wèn)題。常用的激活函數(shù)為Sigmod 函數(shù)、Tanh 函數(shù)以及ReLU 函數(shù)。全連接層、在卷積神經(jīng)網(wǎng)絡(luò)的最末端,給出分類的最后結(jié)果,在全連接層中,特征圖失去了空間結(jié)構(gòu),展開(kāi)成為特征向量,并且把前面提取的特征進(jìn)行組合形成輸出公式。
通過(guò)人臉檢測(cè)方式檢查出人臉區(qū)域后,需確定其有無(wú)戴口罩,目前可選擇的方式為辨認(rèn)和檢測(cè)這兩個(gè)方式。其中,檢測(cè)要求對(duì)人臉?lè)秶械乃心繕?biāo)進(jìn)行標(biāo)注,工程量較大,而且算法相對(duì)繁瑣且速度緩慢。而采用目標(biāo)劃分技術(shù)的方式,只要求明確標(biāo)識(shí)類別,工程量較小,而且因?yàn)榭谡诸愒谌四樦械恼紦?jù)比例也較大,所以用目標(biāo)劃分技術(shù)就可以取得非常良好的效果。
系統(tǒng)實(shí)現(xiàn)口罩檢測(cè)的核心是建立一個(gè)良好有效的卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練模型,訓(xùn)練出準(zhǔn)確率高、方便快捷的口罩檢測(cè)模型。基于卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練模型的設(shè)計(jì)流程,建立的口罩檢測(cè)模型包含人臉數(shù)據(jù)采集模塊、圖像處理模塊、網(wǎng)絡(luò)訓(xùn)練模塊以及最終的口罩檢測(cè)模塊。
人臉數(shù)據(jù)采集模塊就是通過(guò)OpenMV 攝像頭采集人臉圖像以及在網(wǎng)絡(luò)上搜尋各種狀態(tài)的人臉圖像形成數(shù)據(jù)集。圖像處理模塊是將采集到的圖像中的人臉圖像進(jìn)行預(yù)處理,經(jīng)過(guò)灰度處理后,形成統(tǒng)一大小的圖像。網(wǎng)絡(luò)訓(xùn)練模塊的作用是用來(lái)構(gòu)建基于卷積神經(jīng)網(wǎng)絡(luò)的口罩檢測(cè)模型,將處理好的數(shù)據(jù)集輸入至EDGE-IMPULSE 中進(jìn)而訓(xùn)練出能夠進(jìn)行識(shí)別的網(wǎng)絡(luò),將訓(xùn)練好的模型的參數(shù)進(jìn)行保存并導(dǎo)出,供口罩檢測(cè)時(shí)使用??谡肿R(shí)別模塊的功能就是進(jìn)行實(shí)時(shí)的口罩檢測(cè),將攝像頭實(shí)時(shí)采集的人臉圖片進(jìn)行處理,調(diào)用保存好的網(wǎng)絡(luò)參數(shù),將其放入卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行識(shí)別,若識(shí)別到未佩戴口罩,則輸出反饋信號(hào)。
卷積網(wǎng)絡(luò)模型訓(xùn)練整體設(shè)計(jì)流程如下:
(1)圖像預(yù)處理階段:將采集到的人臉圖像進(jìn)行預(yù)處理,形成統(tǒng)一大小的人臉圖像數(shù)據(jù)集;
(2)將數(shù)據(jù)集放入 EDGE-IMPULSE 中進(jìn)行訓(xùn)練,完成后保存參數(shù);
(3)對(duì)實(shí)時(shí)視頻進(jìn)行口罩檢測(cè),通過(guò)人臉數(shù)據(jù)采集模塊和圖像處理模塊得到需要判斷的人臉圖像,調(diào)取已生成的網(wǎng)絡(luò)參數(shù),將圖像輸入到卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行識(shí)別,反饋?zhàn)R別結(jié)果。系統(tǒng)流程圖如圖4 所示。
圖4 口罩檢測(cè)流程圖
在經(jīng)過(guò)數(shù)據(jù)集采集和圖像預(yù)處理后,將可用于訓(xùn)練的圖像帶入卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行模型訓(xùn)練,設(shè)置其訓(xùn)練周期(Number of training cycles)為20,學(xué)習(xí)率(Learning rate)為0.0005,驗(yàn)證集大小(Validation set size)為20%。模型訓(xùn)練后得到訓(xùn)練集如圖5 所示。
圖5 口罩檢測(cè)模型測(cè)試集分布圖
如表1 所示,其中未佩戴口罩檢測(cè)準(zhǔn)確率為 97.5%,佩戴口罩檢測(cè)準(zhǔn)確率為 98.1%,其總體準(zhǔn)確率為 97.8%,損失函數(shù)為0.07,因此該模型具有比較好的檢測(cè)效果。
表1 訓(xùn)練集混淆驗(yàn)證集
系統(tǒng)的調(diào)試是整個(gè)設(shè)計(jì)過(guò)程中最重要的一個(gè)環(huán)節(jié),它是檢驗(yàn)系統(tǒng)能否正常運(yùn)行的核心。分為軟件的測(cè)試和硬件的測(cè)試。其中,硬件測(cè)試需要檢測(cè)各個(gè)模塊是否可以正常工作。在調(diào)試過(guò)程中,首次對(duì)各個(gè)硬件的外觀進(jìn)行檢查,看是否存在破損;然后對(duì)各個(gè)模塊進(jìn)行上電測(cè)試,檢查是否可以正常工作,在各個(gè)模塊都確認(rèn)無(wú)誤后,將其進(jìn)行組裝,進(jìn)行最終的調(diào)試,測(cè)試的主要內(nèi)容有:
(1)口罩識(shí)別功能測(cè)試:測(cè)試被測(cè)人員是否佩戴口罩,并輸出系統(tǒng)響應(yīng)速度;
(2)LED 燈顯示測(cè)試:在口罩識(shí)別過(guò)程中,能否根據(jù)被測(cè)人員佩戴口罩情況進(jìn)行燈光顏色轉(zhuǎn)換。
首先進(jìn)行口罩檢測(cè)測(cè)試,將編寫(xiě)好的代碼放入OpenMVIDE 軟件系統(tǒng)中,連接OpenMV 機(jī)器視覺(jué)模塊,連接并運(yùn)行。本文選用普通醫(yī)療口罩進(jìn)行識(shí)別,在5cm、10cm 處進(jìn)行識(shí)別響應(yīng),為了增加測(cè)試的廣泛性,將男性女性同時(shí)作為被測(cè)人員,其中女性有長(zhǎng)發(fā),可遮擋一部分面部。實(shí)驗(yàn)結(jié)果見(jiàn)表2 所示。
表2
實(shí)驗(yàn)結(jié)果顯示,8 次測(cè)試都準(zhǔn)確地顯示被測(cè)人員是否佩戴了口罩,但是距離的增加會(huì)導(dǎo)致識(shí)別時(shí)間變長(zhǎng),在經(jīng)過(guò)后續(xù)多次實(shí)驗(yàn)后,實(shí)驗(yàn)結(jié)果基本符合了設(shè)計(jì)的要求,驗(yàn)證了系統(tǒng)的穩(wěn)定性。
其次在口罩檢測(cè)調(diào)試的基礎(chǔ)上增加LED 燈,在相同變量下對(duì)LED 燈顯示進(jìn)行測(cè)試。實(shí)驗(yàn)結(jié)果見(jiàn)表3 所示。
表3
實(shí)驗(yàn)結(jié)果顯示,測(cè)試都準(zhǔn)確地顯示被測(cè)人員是否佩戴了口罩,但是距離的增加會(huì)導(dǎo)致識(shí)別時(shí)間變長(zhǎng),在經(jīng)過(guò)后續(xù)多次實(shí)驗(yàn)后,實(shí)驗(yàn)結(jié)果基本符合了設(shè)計(jì)的要求,驗(yàn)證了系統(tǒng)的穩(wěn)定性。
本設(shè)計(jì)實(shí)現(xiàn)口罩檢測(cè)功能,要求被測(cè)人員被攝像頭采集到人臉信息后能夠識(shí)別是否佩戴口罩,檢測(cè)到未佩戴口罩時(shí)能夠進(jìn)行報(bào)警顯示(LED 燈變色),經(jīng)過(guò)調(diào)試和實(shí)現(xiàn),最終滿足設(shè)計(jì)要求。
本產(chǎn)品的實(shí)現(xiàn)對(duì)現(xiàn)階段防控疫情有一定的積極意義,能夠大大減輕工作人員的工作量,提高其工作效率,其簡(jiǎn)易的操作和低廉的造價(jià)成本,使其具有推廣意義,但此設(shè)計(jì)仍需進(jìn)行多方面的優(yōu)化或在更多方向進(jìn)行拓展。
從設(shè)計(jì)水平角度分析,該設(shè)計(jì)在軟件設(shè)計(jì)和硬件設(shè)計(jì)上仍有較大的進(jìn)步空間。
從設(shè)計(jì)的縱向角度分析,由于OpenMV 本身就具有不少 I/O 口,可拓展和升級(jí)更多功能,可以此為基礎(chǔ)提高產(chǎn)品的拓展功能,提高產(chǎn)品的功能性。
從產(chǎn)品本身分析,從產(chǎn)品市場(chǎng)橫向?qū)Ρ葋?lái)看,產(chǎn)品本身的智能化程度還可以進(jìn)一步強(qiáng)化,可將本設(shè)計(jì)集成到智能控制中去,提高其智能效果,使得使用上更加人性化。