摘 要:針對目前市面上口罩檢測裝置價格昂貴且技術(shù)復雜的現(xiàn)狀,設(shè)計了一款基于嵌入式機器學習TinyML技術(shù)的口罩檢測裝置。該裝置由M5Stack UnitV2的AI攝像頭結(jié)合M5Stack Core2開發(fā)套件構(gòu)成,通過M5Stack UnitV2的攝像頭設(shè)備檢測是否規(guī)范佩戴口罩,通過串口通信的方式在M5Stack Core2上顯示口罩分類圖像并發(fā)出聲音提醒人們,M5Stack Core2采用M5Stack的UiFlow圖像化編程平臺編寫口罩檢測的Blockly程序。在多種場合多次對不同人臉和不同口罩佩戴情況進行測試,結(jié)果表明:該裝置功耗低、運行穩(wěn)定、可靠,在保證準確率的情況下大大降低了成本,具有較高的應(yīng)用價值。本文對口罩檢測裝置的研究有助于政府在流行病傳播期及時對人們進行管控,降低感染的風險。
關(guān)鍵詞:TinyML技術(shù);M5Stack UnitV2;M5Stack Core2;UiFlow圖像化編程;顯示圖像;聲音提醒
中圖分類號:TP714 文獻標識碼:A 文章編號:2095-1302(2024)03-00-04
0 引 言
新冠肺炎疫情等流行病的爆發(fā)改變了人們的生活方式,嚴重危害了人們的生命安全。佩戴口罩被證實為預防此類傳染病最有效且最直接的方法[1]??谡秩四槞z測屬于比較新的研究領(lǐng)域,受到了社會的廣泛關(guān)注,但市面上大多數(shù)口罩檢測裝置都存在著一些缺點,例如技術(shù)復雜、功能冗余、價格昂貴、功耗大、體積大、安全性低[2-3]。因此需要設(shè)計一款體積小巧、低成本、低功耗、安全性高且技術(shù)簡單的口罩檢測裝置。
目前國內(nèi)對于口罩識別系統(tǒng)的研究也取得了較大的突破。齊曼等[4]以STM32F103 單片機作為核心處理裝置,通過OpenMV與STM32F103進行串口通信、建立聯(lián)系,在TFT顯示屏顯示口罩佩戴情況,若未佩戴口罩則通過蜂鳴器與指示燈進行報警。張欣怡等[5]設(shè)計了一種改進的YOLOv5s算法,對特征融合的neck層進行了改進,更換了卷積的方案,在確保推理速度的前提下,提高了準確率,降低了模型權(quán)重文件內(nèi)存以及對硬件環(huán)境的依賴。趙元龍等[6]提出了基于YOLOv7與DeepSORT的一種佩戴口罩的行人跟蹤算法,能夠通過跟蹤判斷行人是否佩戴口罩。上述方法雖然速度快、精度高,但是代碼框架繁瑣、模型訓練框架較為復雜、功能冗余并且對嵌入式設(shè)備的要求較高。因此本文設(shè)計了一款利用嵌入式機器學習TinyML技術(shù)的口罩檢測裝置。
邊緣計算和物聯(lián)網(wǎng)為在網(wǎng)絡(luò)資源受限的嵌入式設(shè)備上使用機械學習技術(shù)提供了新的機會[7]。在機器學習的未來,隨著物聯(lián)網(wǎng)(IoT)的不斷發(fā)展,TinyML將是一項重要的技術(shù)[8]。
TinyML技術(shù)旨在將過剩的傳統(tǒng)高端系統(tǒng)轉(zhuǎn)移到低端客戶端,設(shè)計能夠適用于M5Stack UnitV2等低功耗和嵌入式設(shè)備的模型,它是能夠在資源受限的微控制器上實現(xiàn)低功耗與低資源占用的機器學習算法[9]。本設(shè)計所用的設(shè)備都是低功耗的邊緣設(shè)備,小巧方便。M5Stack的AI模型訓練服務(wù)V-Training可以很方便地搭建自定義識別模型,使用UIFlow 編寫人臉檢測的Blockly程序,程序簡單清晰,不僅可以顯示口罩分類圖像,還可以發(fā)出語音提醒,滿足口罩檢測的需求,具有較高的實用意義與市場價值。
1 裝置總體方案
該裝置由M5Stack Core2核心控制器以及M5Stack UnitV2的AI攝像頭設(shè)備兩部分構(gòu)成。核心控制器內(nèi)置鋰電池,配備電源管理芯片,可以為核心控制器的主控芯片與攝像頭設(shè)備供電;核心控制器需對攝像頭設(shè)備進行初始化,初始化完成后攝像頭設(shè)備開始工作,攝像頭設(shè)備檢測到人臉信息會不斷輸出識別樣本數(shù)據(jù),通過串口將數(shù)據(jù)發(fā)送給核心控制器;核心控制器接收到數(shù)據(jù)信息以后,對數(shù)據(jù)進行處理,在屏幕上顯示口罩佩戴類別的圖像,并發(fā)出聲音。裝置總體方案如圖1所示。
2 裝置硬件方案
該裝置的硬件部分包括兩部分:M5Stack Core2核心控制器模塊、M5Stack UnitV2的AI攝像頭模塊。
2.1 核心控制器模塊
M5Stack Core2的核心主控配備ESP32-D0WDQ6-V3,具有2個可以單獨控制的Xtensa? 32-bit LX6處理器,主頻高達240 MHz,支持WiFi功能,板載16 MB FLASH與
8 MB的PSRAM,具有功耗低、工作速度快、便于開發(fā)、配置強勁等特點。M5Stack Core2還包括:正面搭載一塊2.0寸一體化電容式觸摸屏,可以很清晰地顯示口罩識別種類,便于人機交互;電源部分搭載AXP192電源管理芯片,可有效控制機身功耗,實現(xiàn)低功耗、長續(xù)航;機身還配備了揚聲器,為了保證獲得更高質(zhì)量的聲音效果,采用I2S數(shù)字音頻接口的功放芯片,能有效防止信號失真,可以控制揚聲器播放本地或云端的音頻文件,并調(diào)整音調(diào)、節(jié)拍和聲道,檢測到人臉以后根據(jù)口罩佩戴種類可以發(fā)出不同的提示音;串口通信可與AI攝像頭模塊建立連接,互相傳發(fā)數(shù)據(jù),根據(jù)接收的數(shù)據(jù)傳達下一步的指令。M5Stack Core2的部分示意圖如圖2所示。
2.2 AI攝像頭模塊
AI圖像識別技術(shù)配備上包括智能化處理的軟件和設(shè)施,可以在沒有人為干擾的情況下,自動地進行數(shù)據(jù)分析處理、深度學習和串聯(lián)系統(tǒng)協(xié)調(diào)工作[10]。UnitV2是一款高效率的AI識別模塊,采用Sigmstar SSD202D(集成雙核處理器)控制核心,集成128 MB-DDR3內(nèi)存、512 MB NAND FLASH以及1080P攝像頭,內(nèi)嵌Linux操作系統(tǒng),集成豐富的軟硬件資源與開發(fā)工具,并且體積只有拇指大小。此外UnitV2內(nèi)部還集成了由M5Stack開發(fā)的基礎(chǔ)AI識別服務(wù),內(nèi)置多種識別功能,可快速幫助我們構(gòu)建AI識別應(yīng)用[11]。該設(shè)備具有體積小、成本低、高性能、資源豐富、功能強大的特點。利用該裝置的識別功能,可以快速幫我們檢測到人臉,當檢測到目標時,會通過底部串口不斷輸出識別樣本的數(shù)據(jù),與核心處理器模塊建立串口通信,可以快速傳輸識別數(shù)據(jù)。M5Stack UnitV2的原理框圖如圖3所示。
3 裝置軟件方案
系統(tǒng)主要依靠軟件實現(xiàn)對人臉佩戴口罩進行識別、顯示口罩佩戴類別、發(fā)出聲音提醒。
3.1 口罩數(shù)據(jù)集的獲取
本文使用的口罩數(shù)據(jù)集主要來自于互聯(lián)網(wǎng)平臺開源的數(shù)據(jù)集。為了確??煽啃?,另外拍攝了一部分口罩圖片。數(shù)據(jù)集包含了不同場景下人們佩戴口罩的情況,按照1∶1的比例被劃分為戴口罩(with_mask)和不帶口罩(without_mask)兩個標簽類別,用于在模型訓練之前將分辨率低、口罩顏色過于鮮艷以及背景過于繁雜的圖片去除。數(shù)據(jù)集圖片示例如圖4所示。
3.2 模型訓練
本文使用M5Stack的V-Training在線AI模型訓練服務(wù)平臺訓練模型,通過此平臺可以輕松構(gòu)建自定義識別模型。
首先將收集好的口罩數(shù)據(jù)集導入項目工程中,通過文本形式批量導入標簽,標簽有with_mask和without_mask兩種,手動完成對圖片的框選并導入標簽,上傳標記好的素材并選擇高效率訓練模式進行模型訓練,迭代次數(shù)為100輪。訓練完成后可以獲取到模型文件以及損失曲線,損失曲線包含dfl-loss和qfl-loss兩條曲線,QFL(Quanlity Focal Loss)和DFL(Distribution Focal Loss)為兩個損失函數(shù),其中QFL的加入強迫classification score(分類分數(shù))和localization quality(定位質(zhì)量評估因子)兩者有了更高的相關(guān)性,從而避免高質(zhì)量錯誤類別檢測的出現(xiàn);DFL的加入能夠使得邊緣分布預測,在清晰的邊界區(qū)域尖銳,而在較模糊的位置處預測出較平緩的分布。QFL的計算公式如式(1)所示,DFL的計算公式如式(2)所示,損失曲線如圖5所示。
(1)
(2)
式中:y為0~1的質(zhì)量標簽;σ為類別輸出概率;S(i)與S(i+1)對應(yīng)y附近兩個預測值y(i)、y(i+1)的概率。
3.3 模型部署
M5Stack UnitV2內(nèi)置了一張有線網(wǎng)卡,通過TypeC接口連接PC端,就可與UnitV2建立起網(wǎng)絡(luò)連接;使用Web界面上傳訓練好的模型壓縮文件,在識別功能的預覽網(wǎng)頁就可以使用模型,查看識別效果;在識別的過程中,UnitV2會不斷地輸出樣本識別數(shù)據(jù),數(shù)據(jù)以JSON格式輸出。模型運行效果如圖6、圖7所示,串口數(shù)據(jù)位于運行效果圖右下角Result處。
3.4 M5Stack Core2程序框架
首先要對AI攝像頭模塊進行初始化操作,本裝置須完成口罩識別任務(wù),因此初始化時選擇Object Recognition;其次要完成對串口的配置,由于M5Stack UnitV2串口的波特率為115 200 b/s,要保證兩者正常通信,M5Stack Core2需要設(shè)置相同的波特率[12],讀取數(shù)據(jù)時需要判斷是否有數(shù)據(jù)輸入,沒有數(shù)據(jù)輸入則顯示數(shù)據(jù)接收異常的信息,若接收正常則讀取口罩佩戴的類別信息,根據(jù)口罩佩戴的情況顯示對應(yīng)的圖片,并發(fā)出對應(yīng)的提示語音。具體流程見圖8所示。
3.5 核心程序
UiFlow編寫的Blockly程序如圖9所示,Python程序如圖10所示。以下程序為Python代碼的核心程序:
while True:
if uart1.any():
object2 = (json.loads((uart1.read())))['obj']
#此處將str類型轉(zhuǎn)化為了字典類型
for i in object2:
label0.set_text(str(i['type']))
type2 = i['type']
if str(type2) == 'with_mask':
#需要將type2進行轉(zhuǎn)化,轉(zhuǎn)化為str類型
image1.set_hidden(True) #顯示佩戴口罩圖片
image0.set_hidden(False)
speaker.playWAV(\"res/yes.wav\")
#發(fā)出口罩佩戴規(guī)范,可以進入的語音
else:
image1.set_hidden(False)
image0.set_hidden(True)#顯示未佩戴圖片
speaker.playWAV(\"res/no.wav\")
#發(fā)出語音提醒佩戴口罩
else:
label0.set_text('Accept data exception')
wait_ms(2)
4 裝置效果測試
模型部署完成后,用電纜線將核心控制器設(shè)備與AI攝像頭設(shè)備的引腳進行連接,開始裝置的測試,在佩戴口罩與未佩戴口罩的數(shù)據(jù)中,隨機抽取5組數(shù)據(jù)進行測試,測試結(jié)果見表1所列。
10名測試人員中僅有1人識別錯誤,正確率為90%。為了防止偶然性,驗證系統(tǒng)的穩(wěn)定性以及準確率,進行了多次測試驗證,總體成功率約為90%;同時證明測試速度快,穩(wěn)定性與準確性較高,低功耗的性能使該口罩檢測裝置可以長時間工作,具有強續(xù)航的能力。
5 結(jié) 語
如今口罩檢測技術(shù)日益成熟,但是基于TinyML技術(shù)的較少,因此基于TinyML的口罩檢測裝置的開發(fā)是很有意義的。本文利用M5Stack Core2與M5Stack UnitV2兩款低功耗的邊緣設(shè)備設(shè)計了一款口罩檢測裝置,對裝置的總體方案設(shè)計以及軟硬件結(jié)構(gòu)做出了詳細的介紹,對該裝置進行了測試,并得到了理想的效果;在能正確識別口罩種類的情況下,還添加了口罩類別的圖像顯示、語音提示以及觸摸屏人機交互等功能,使得該裝置更加智能化。利用嵌入式機器學習TinyML技術(shù)的口罩檢測裝置運行穩(wěn)定、可靠,功耗小,在達到理想的精確率的情況下,大大降低了成本,對于流行病的管控有重要意義,具有很高的實用價值。
注:本文通訊作者為陳飛龍。
參考文獻
[1]金映谷,張濤,楊亞寧,等.基于MobileNet V2的口罩佩戴識別研究[J].大連民族大學學報,2021,23(5):404-409.
[2]陳秋.市場嘗鮮戴口罩人臉識別[N].經(jīng)濟觀察報,2020-07-27(019).
[3]沈澤.應(yīng)用場景日漸繁榮 發(fā)展前景更為廣闊—2021年人臉識別市場發(fā)展現(xiàn)狀與趨勢解析[J].中國安防,2021,16(3):60-63.
[4]齊曼,胡乃瑞,安天洋,等.基于STM32的口罩識別及無接觸測溫系統(tǒng)的實現(xiàn)[J].工業(yè)控制計算機,2022,35(3):128-130.
[5]張欣怡,張飛,郝斌,等.基于改進YOLOv5的口罩佩戴檢測算法[J].計算機工程,2023,49(8):265-274.
[6]趙元龍,單玉剛,袁杰.改進YOLOv7與DeepSORT的佩戴口罩行人跟蹤[J].計算機工程與應(yīng)用,2023,59(6):221-230.
[7] PARTHA P R. A review on TinyML: state-of-the-art and prospects [J]. Journal of King Saud University-Computer and Information Sciences,2022,34(4):1595-1623.
[8] ABATE C J,禾沐.機器學習的未來—Daniel Situnayake訪談[J].單片機與嵌入式系統(tǒng)應(yīng)用,2021,21(6):1-3.
[9] ABATE C J,君謙.什么是tinyML?[J].單片機與嵌入式系統(tǒng)應(yīng)用,2021,21(8):1-3.
[10]關(guān)健榮.圖像識別技術(shù)在“AI+安防”服務(wù)實戰(zhàn)中的應(yīng)用[J].無線互聯(lián)科技,2022,19(10):81-83.
[11]錢玉娟. AI“戰(zhàn)疫”[J].中國中小企業(yè),2020,27(5):30-32.
[12]白文峰,張秋實,李忠健.串行通信中波特率的設(shè)置問題[J].工業(yè)控制計算機,2007,20(4):76-77.
作者簡介:鄭漢(2002—),男,本科生,研究方向為嵌入式系統(tǒng)開發(fā)。
陳飛龍(1990—),男,博士,講師,研究方向為嵌入式系統(tǒng)開發(fā)、3D語音增強、聲音事件定位與檢測等。