基于 TinyML 的口罩檢測(cè)系統(tǒng)
點(diǎn)擊下方卡片,關(guān)注“新機(jī)器視覺(jué)”公眾號(hào)
視覺(jué)/圖像重磅干貨,第一時(shí)間送達(dá)
眾所周知,一場(chǎng)流行病改變了人類(lèi)的生活方式。預(yù)防大流行最有效的方法是戴口罩。一項(xiàng)具有挑戰(zhàn)性的研究任務(wù)是檢測(cè)戴口罩或不戴口罩的人,以防止 SARS-CoV-2 在人與人之間傳播。
最近開(kāi)始對(duì)邊緣計(jì)算感興趣,于是從M5Stack買(mǎi)了各種邊緣設(shè)備開(kāi)始使用。因此,這次我使用M5Stack UnitV2的AI攝像頭結(jié)合M5Stack Core2開(kāi)發(fā)套件開(kāi)發(fā)了一個(gè)口罩識(shí)別。M5Stack UnitV2的 攝像頭設(shè)備監(jiān)控入口并檢測(cè)口罩是否佩戴,并通過(guò)在M5Stack Core2上顯示圖像以聲音和視覺(jué)通知您。
本教程甚至適用于那些第一次使用邊緣設(shè)備和面罩識(shí)別的人,只需按照以下過(guò)程使用 UiFlow 工具的拖放塊編碼,無(wú)需編寫(xiě)代碼即可執(zhí)行。M5stack 的圖形化編程平臺(tái) UiFlow 讓每個(gè)人都可以輕松開(kāi)始創(chuàng)建他們的 IoT 和 TinyML 項(xiàng)目!
先決條件
在開(kāi)始學(xué)習(xí)本教程之前,您需要具備以下條件:
M5Stack Core2 ESP32 物聯(lián)網(wǎng)開(kāi)發(fā)套件
M5Stack UnitV2 - 用于邊緣計(jì)算的獨(dú)立 AI 相機(jī) (SSD202D) TinyML
一臺(tái)具有互聯(lián)網(wǎng)連接并能夠刷寫(xiě) M5Stack Core2 的計(jì)算機(jī)。在這里,我們將使用筆記本電腦。
一些 Python 和 Blockly 的經(jīng)驗(yàn)會(huì)有所幫助,但不是必需的。
那么,讓我們開(kāi)始吧!
什么是 TinyML?
讓我們從解釋什么是 TinyML 開(kāi)始。
TinyML 是機(jī)器學(xué)習(xí)領(lǐng)域,涉及適用于M5Stack UnitV2等低功耗和嵌入式設(shè)備的模型。

關(guān)于 M5Stack UnitV2
首先簡(jiǎn)單介紹一下相機(jī)設(shè)備M5Stack UnitV2。它是 M5Stack 出售的配備 AI 的相機(jī)設(shè)備。
所述UnitV2從M5Stack是采用SigmaStar SSD202D(ARM的Cortex-A7雙核1.2GHz)為核心,嵌入式128MB DDR3存儲(chǔ)器,具有512MB NAND閃存,1080P照相機(jī),2.4G無(wú)線(xiàn)網(wǎng)絡(luò)連接,和冷卻風(fēng)扇的獨(dú)立設(shè)備。

UnitV2還集成了M5Stack開(kāi)發(fā)的AI識(shí)別應(yīng)用(如人臉識(shí)別、物體跟蹤、顏色跟蹤、形狀檢測(cè)、條碼檢測(cè)),幫助用戶(hù)構(gòu)建自己的AI應(yīng)用。
您可以通過(guò)連接到計(jì)算機(jī)的 M5Unit V2訪(fǎng)問(wèn)http://10.254.239.1/來(lái)使用預(yù)裝的功能。
另外,M5Stack的AI模型訓(xùn)練服務(wù)V-Training可以用來(lái)搭建自定義識(shí)別模型,下面我會(huì)介紹一下。
關(guān)于 M5Stack Core2
該系統(tǒng)的核心是 ESP32 - 樂(lè)鑫生產(chǎn)的微控制器。
本產(chǎn)品是M5Stack開(kāi)發(fā)套件系列的第二代Core設(shè)備,是對(duì)原代Core功能的進(jìn)一步提升。
M5Stack擁有豐富的傳感器等功能擴(kuò)展模塊,無(wú)需焊接即可連接,因?yàn)樗梢宰屇鄬?duì)輕松地啟動(dòng)復(fù)雜的項(xiàng)目,加快開(kāi)發(fā)速度,同時(shí)提高質(zhì)量。

本產(chǎn)品的開(kāi)發(fā)平臺(tái)和編程語(yǔ)言為Arduino 、UIFlow 、MicroPython 。
從 Kaggle 下載自定義數(shù)據(jù)集
沒(méi)有數(shù)據(jù)就沒(méi)有機(jī)器學(xué)習(xí)。因此,第一步涉及收集訓(xùn)練數(shù)據(jù)。任何深度學(xué)習(xí)模型都需要大量的訓(xùn)練數(shù)據(jù)才能在推理上獲得良好的結(jié)果。
我們需要使用 Kaggle 網(wǎng)站找到口罩的數(shù)據(jù)集。要使用 Kaggle 資源,您需要登錄 Kaggle 網(wǎng)站。第一步,從Kaggle下載數(shù)據(jù)集。該數(shù)據(jù)集可從以下鏈接下載。
課程是:
帶口罩
不帶口罩
解壓縮一個(gè) zip 文件。
V-Training 對(duì)象識(shí)別模型訓(xùn)練服務(wù)
V-Training是一項(xiàng)服務(wù),可讓您使用M5Stack UnitV2輕松識(shí)別對(duì)象。
接下來(lái),讓我們實(shí)際創(chuàng)建一個(gè)使用 V-Training 進(jìn)行面罩識(shí)別的模型。官網(wǎng)有更詳細(xì)的教程,這里是對(duì)訓(xùn)練過(guò)程的大致說(shuō)明。
第 1 步:V-Training 注冊(cè)
好的,現(xiàn)在讓我們開(kāi)始吧。轉(zhuǎn)到此鏈接并在 V-Training 中創(chuàng)建一個(gè)免費(fèi)帳戶(hù)。如果您已經(jīng)在 M5 論壇中擁有一個(gè)帳戶(hù),只需使用您的憑據(jù)登錄即可。

第 2 步:從您的數(shù)據(jù)集中上傳圖像
學(xué)習(xí)所需的最少圖像數(shù)量為每班 30 張圖像。圖像訓(xùn)練集的整體大小不允許超過(guò) 200M。

為了提高訓(xùn)練效果,樣本越多越好。
第 3 步:創(chuàng)建標(biāo)簽
例如,本教程中創(chuàng)建了兩個(gè)樣本標(biāo)簽。帶口罩和不帶口罩。

第 4 步:數(shù)據(jù)標(biāo)記
這一步比較枯燥,因?yàn)椴杉臄?shù)據(jù)是沒(méi)有標(biāo)簽的,所以需要手動(dòng)標(biāo)記圖片中的目標(biāo)。
我們?cè)谖覀兿M麢z測(cè)器看到的每個(gè)對(duì)象周?chē)L制一個(gè)框,并用我們希望檢測(cè)器預(yù)測(cè)的對(duì)象類(lèi)標(biāo)記每個(gè)框。

在此屏幕截圖中,我放置了一個(gè)矩形來(lái)標(biāo)記面罩。在這里,我將矩形標(biāo)記為With_mask。
第 5 步:訓(xùn)練模型
選擇高效模式并點(diǎn)擊上傳。訓(xùn)練并等待結(jié)果返回。

等待訓(xùn)練完成以生成模型。
如果學(xué)習(xí)模型創(chuàng)建成功,您將收到如下所示的結(jié)果。

如果創(chuàng)建模型失敗,寫(xiě)的原因會(huì)寫(xiě)為Failed ,請(qǐng)更正后重試。如果你能訓(xùn)練成功,你可以檢查模型的準(zhǔn)確性和訓(xùn)練結(jié)果損失的轉(zhuǎn)變。

訓(xùn)練好的模型可以作為壓縮文件從網(wǎng)站下載。
第 6 步:模型部署
現(xiàn)在模型已經(jīng)訓(xùn)練好了,是時(shí)候?qū)⑺渴鸬?M5Stack UnitV2 上了。由于它從一開(kāi)始就內(nèi)置了對(duì)象檢測(cè)程序,因此您需要通過(guò)使用 Web 界面來(lái)上傳您的訓(xùn)練模型。
UnitV2啟動(dòng)后,AP熱點(diǎn)(SSID:M5UV2_XXX:PWD:12345678)默認(rèn)開(kāi)啟,用戶(hù)可以通過(guò)Wi-Fi接入與UnitV2建立網(wǎng)絡(luò)連接。
我們可以使用UnitV2作為AI攝像頭,從串口發(fā)送目標(biāo)檢測(cè)結(jié)果。它將通過(guò)串口(底部的HY2.0-4P接口)不斷輸出識(shí)別樣本數(shù)據(jù)。與UART串口通信,所有識(shí)別內(nèi)容通過(guò)串口以JSON格式輸出。

簡(jiǎn)單來(lái)說(shuō),UnitV2識(shí)別出來(lái)并以JSON格式通過(guò)UART發(fā)送到M5Stack。
M5Stack Core2 設(shè)置
為了使用 M5Stack Core2,您需要先進(jìn)行設(shè)置。
與其他主板不同,默認(rèn)情況下,UIFlow 功能不會(huì)閃存到 M5Stack Core2 上。這是開(kāi)始使用 UIFlow 對(duì)電路板進(jìn)行編程所需要做的第一件事。
下載并安裝M5Burner ,這是一個(gè)根據(jù)您正在使用的M5Stack模塊進(jìn)行固件寫(xiě)入的工具。
打開(kāi) M5Burner

下載最新版本的 M5Stack Core2 固件。
將 M5Stack 連接到您的 PC,指定 COM 端口,并使用 BURN 寫(xiě)入固件
建議在連接 WiFi 時(shí)也使用此 M5Burner 進(jìn)行設(shè)置。
當(dāng)M5Stack重新啟動(dòng)并連接到WiFi時(shí),會(huì)顯示API Key,網(wǎng)絡(luò)連接成功!
現(xiàn)在您可以開(kāi)始使用 UIFlow 進(jìn)行編程了!
使用 UIFlow 編寫(xiě)人臉檢測(cè)的 Blockly 程序
UIFlow是基于谷歌開(kāi)源的可視化編程環(huán)境Block為M5Stack系列開(kāi)發(fā)的基于Web的可視化編程環(huán)境。您可以在塊編程和 Python 編碼之間切換。
將以下代碼塊復(fù)制到Blockly編輯區(qū),然后點(diǎn)擊右上角的Run執(zhí)行代碼。也拖放控件元素。
下面的程序只是在 M5Stack Core2 的屏幕上顯示預(yù)測(cè)類(lèi)別,并且在檢測(cè)到面罩與否時(shí)發(fā)出聲音。

使用 Grove 電纜將 M5Unit V2 連接到 M5 Core2。

結(jié)論
今天,我們開(kāi)發(fā)了一種檢測(cè)口罩的工具,它使用帶有攝像頭的設(shè)備 M5Stack UnitV2 與著名的 M5Stack Core2 共同開(kāi)發(fā)。這個(gè)UnitV2的重要部分不僅是拇指大小,而且可以進(jìn)行低成本和高性能的圖像處理。與 Nvidia Jetson Nano 相比,UnitV2 更加方便和簡(jiǎn)單。此外,我們使用 V-Training 使學(xué)習(xí)更容易、更快。未來(lái),我想嘗試提高檢測(cè)精度并將數(shù)據(jù)上傳到云物聯(lián)網(wǎng)服務(wù)。
原文鏈接:https://www.cirmall.com/articles/36331/?wxautologin=
—版權(quán)聲明—
僅用于學(xué)術(shù)分享,版權(quán)屬于原作者。
若有侵權(quán),請(qǐng)聯(lián)系微信號(hào):yiyang-sy 刪除或修改!
