在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【tinyML】使用EdgeImpulse讓您的Arduino可以辨識(shí)手勢!

jf_cVC5iyAO ? 來源:易心Microbit編程 ? 作者:易心Microbit編程 ? 2022-12-06 11:12 ? 次閱讀

1 認(rèn)識(shí) wio terminal

Wio Terminal 是一款專門用于 IoTTinyML 的多功能開發(fā)板 – 包含了 ATSAMD51P19 芯片并以 ARMCortex-M4F 為核心 (20MHz),已支持多種針對微控制器的 ML推論框架。

本開發(fā)板已包含:

?光傳感器(模擬)

?麥克風(fēng)

?可自定義按鈕 x 3

?4 英吋彩色LCD

?加速度傳感器

?Grove 接頭 x 2,可連接多達(dá)300種 Grove 傳感器

就軟件面來說, Arduino IDE 已可用于開發(fā)各種支持 Edge Impulse 與 Tensorflow Lite 的微控制器裝置來進(jìn)行神經(jīng)網(wǎng)絡(luò)訓(xùn)練與推論,或者您也可以玩玩看另一款熱門的開發(fā)環(huán)境 platformIO 也可以玩玩看。EdgeImpulse 是一款針對邊緣運(yùn)算裝置 x 機(jī)器學(xué)習(xí)的簡單易用的 coding free 開發(fā)環(huán)境。用戶可透過網(wǎng)頁接口就可以完成整個(gè) tinyML 作業(yè)流程,從數(shù)據(jù)收集、數(shù)據(jù)處理、訓(xùn)練神經(jīng)網(wǎng)絡(luò)到導(dǎo)出部署,一條龍啊!

本文將示范如何把 wio terminal 所收集到的手勢資料 (光傳感器數(shù)值變化) 上傳到 Edge Impulse,完成上述流程之后再放回到 wio terminal 來執(zhí)行脫機(jī) ML 推論,超好玩又富有學(xué)習(xí)意義!

如何辨識(shí)手勢

在此的假設(shè)為,不同的手勢在光傳感器上方晃動(dòng)時(shí),會(huì)產(chǎn)生可區(qū)別的時(shí)序數(shù)據(jù)(time series data),我們就是要把這些數(shù)據(jù)送到 Edge Impulse 網(wǎng)站來處理、學(xué)習(xí),并匯出一個(gè) wio terminal 可執(zhí)行推論的神經(jīng)網(wǎng)絡(luò)模型文件!

可想而知,如果用傳統(tǒng)的做法就很難去定義,怎樣的 pattern 可以一體適用各種不同的手勢都可以有不錯(cuò)的辨識(shí)效果。(后續(xù)各位在收數(shù)據(jù)的時(shí)候就知道,同一種手勢的 time series 數(shù)據(jù)形狀差異很大!)

2 PC端設(shè)定

2-1 設(shè)定 Arduino IDE 2.0

根據(jù)原廠文件,請使用 Arduino IDE 1.9 以上,所以我直接使用 2.0,請根據(jù)您的操作系統(tǒng)版本取得對應(yīng)的 Arduino 2.0 IDE。

注意!編譯 Edge Impulse 匯出檔案才需要用到 Arduino IDE 1.9以上,如果是把 wio terminal 當(dāng)作一般 arduno 使用的話,經(jīng)我實(shí)測使用 Arudino 1.8.X 沒有問題

請?jiān)?File → Preference → Additional Baord url 字段中填入:

9e9e68f6-7473-11ed-8abf-dac502259ad0.png

完成之后就可以透過 Tools → Board → Boardmanager,輸出“Wio”來安裝 wio terminal 相關(guān)套件,點(diǎn)選 INSTALL:

9eb5de50-7473-11ed-8abf-dac502259ad0.png

完成就可以看到 Wio Terminal 相關(guān)選項(xiàng)

9edc0198-7473-11ed-8abf-dac502259ad0.png

2-2 安裝 node.js 與 edgeimpulse 相關(guān)工具

根據(jù)您的平臺(tái)安裝 Node.js 1.0 以上版本,完成之后開啟 cmd 輸入以下指令來安裝 edge-impulse-cli:

npm install -g edge-impulse-cli

9ef91058-7473-11ed-8abf-dac502259ad0.png

3 透過 edge cli 上傳傳感器數(shù)據(jù)到 EdgeImpulse

請新增一個(gè) Arduino項(xiàng)目,輸入以下程序代碼上傳到 wio terminal,會(huì)透過 serial 把光傳感器數(shù)據(jù)傳給 edge cli,再上傳到 Edge Impulse 網(wǎng)站的指定項(xiàng)目(當(dāng)然是您的賬號)

由 FREQUENCY_HZ 40 可知,我們會(huì)在 1000 ms (1秒鐘) 的時(shí)間長度取得 40 筆光傳感器數(shù)據(jù),并以這一段時(shí)間中的亮度變化作為指定的手勢,也預(yù)設(shè)石頭 與 布 的手勢差異是可以被學(xué)習(xí)出來的。

#define FREQUENCY_HZ 40

#define INTERVAL_MS (1000 / (FREQUENCY_HZ))

void setup() {

Serial.begin(115200);

Serial.println("Started");

}

void loop() {

static unsigned long last_interval_ms = 0;

float light;

if (millis() > last_interval_ms + INTERVAL_MS) {

last_interval_ms = millis();

light = analogRead(WIO_LIGHT); //讀取 wio 光傳感器模擬腳位

Serial.println(light);

}

}

刻錄完成之后 wio terminal 就擺著,接著要透過 edge cli 來上傳數(shù)據(jù)到 edge Impulse 網(wǎng)站

開啟 cmd 之后輸入以下指令,會(huì)請您登入 edge Impulse 的賬號密碼并詢問以下事項(xiàng):

?裝置所連接的 COM port

?命名數(shù)據(jù)字段:如下圖的 light

由下圖可以看到您的裝置 ID: 01FE…這一段,就是透過這個(gè) ID 來識(shí)別您的裝置。

edge-impulse-data-forwarder

9f189c3e-7473-11ed-8abf-dac502259ad0.png

Edge Impulse – 登入與設(shè)定裝置

這一段最辛苦啦,幾乎所有的設(shè)定都是在 Edge Impulse 網(wǎng)站上完成,但說真的已經(jīng)省很多事情了。

請先建立一個(gè) Edge Impulse 賬號并登入。為了怕各位迷路,我會(huì)用顏色來標(biāo)注現(xiàn)在是在哪一個(gè) tab。以下是登入后的主畫面,也就是畫面左側(cè)– Dashboard,可以看到項(xiàng)目相關(guān)設(shè)定。

9f3f3ee8-7473-11ed-8abf-dac502259ad0.png

左側(cè)– Device

裝置基本設(shè)定,可以看到本賬號下的所有裝置,可以點(diǎn)選右側(cè)… 來編輯裝置設(shè)定或刪除裝置

9f6bfe4c-7473-11ed-8abf-dac502259ad0.png

Edge Impulse – 收資料

這里要收資料,請確認(rèn)您的 wio terminal 已經(jīng)上傳上述 arduino sketch 來準(zhǔn)備傳數(shù)據(jù),否則數(shù)據(jù)當(dāng)然無法上傳到 Edge Impulse網(wǎng)站。

請點(diǎn)選左側(cè)– Data acquisition

中間的 collected data 一開始當(dāng)然不會(huì)有東西,因?yàn)檫€沒開始上傳數(shù)據(jù)。請于畫面右側(cè)這樣設(shè)定:

?Label: rock (石頭)/ paper (布) -> 要辨識(shí)多少種手勢都沒問題,端看您愿意花多少時(shí)間去收數(shù)據(jù)而已。

?Sensor: Sensor with 1 axes (light)

?sample length(ms): 1000

?Frequency (39Hz) 這里自動(dòng)帶入 arduino sketch 的 FREQUENCY_HZ,不用改

好了之后,按下右下角的 Start sampling,這時(shí)候請準(zhǔn)備好您的手在 wio terminal 的光傳感器擺好手勢并晃動(dòng)。取得資料,就會(huì)在畫面中間多一筆新的數(shù)據(jù)出來,點(diǎn)選該筆數(shù)據(jù)就可以看到他形狀(光傳感器讀數(shù) vs 時(shí)間)

9fa1f024-7473-11ed-8abf-dac502259ad0.png

上傳多筆數(shù)據(jù)之后的畫面如下,在此請讓您所要辨識(shí)的 label 的數(shù)據(jù)筆數(shù)盡量相等,反正上傳也不會(huì)很麻煩,每一筆數(shù)據(jù)右側(cè)的… 都可以點(diǎn)選來編輯數(shù)據(jù)屬性或刪除該筆數(shù)據(jù)。

9fd55414-7473-11ed-8abf-dac502259ad0.png

最后請點(diǎn)選 train / test split 來設(shè)定訓(xùn)練/測試數(shù)據(jù)的分配比例,完成每一項(xiàng)的必要設(shè)定之后,前面會(huì)亮起綠色燈,才能進(jìn)到下一步。

a00a3008-7473-11ed-8abf-dac502259ad0.png

Edge Impulse – 訓(xùn)練模型

左側(cè)– impulse design / Create impulse

根據(jù) EdgeImpulse 本身的定義,impulse 是指一個(gè) pipeline,您會(huì)在此設(shè)定關(guān)于 raw data 處理方式、如何處理(processing block)、如何學(xué)習(xí)(learning block),這樣才算是一個(gè)完整的流程。

以我們的手勢辨識(shí)范例,在此是長度為一秒鐘的光傳感器數(shù)據(jù),所以屬于 time series data。在此請把 window size 與 window increase 分別設(shè)為 1000, 50ms,F(xiàn)requency 會(huì)自動(dòng)帶入 wio terminal Arduino 碼設(shè)定中所的頻率 (40Hz),這里就不用動(dòng)。

a044c95c-7473-11ed-8abf-dac502259ad0.png

點(diǎn)選 [Add a processing block] ,選單中選擇 Raw data,就會(huì)新增這個(gè)block。

請?jiān)谄渲羞x擇 Input axes 也就是所要處理的數(shù)據(jù),在此只有一筆,就是 light。不同型態(tài)的數(shù)據(jù)可能會(huì)用到更多 processing block,之后再慢慢說明。

a0779ada-7473-11ed-8abf-dac502259ad0.png

接著點(diǎn)選 [Add a learningblock] ,選單中選擇 Classification (Keras),就會(huì)新增這個(gè) block。fafa Input feature 選擇 Raw data,輸出會(huì)自動(dòng)帶出 2 (paper,rock) 也就是 data acquisition 時(shí)所設(shè)定的 label 名稱。

a0b5acc6-7473-11ed-8abf-dac502259ad0.png

本區(qū)設(shè)定完成如下圖,最后點(diǎn)選 Save Impulse 就完成了。

a0d86ba8-7473-11ed-8abf-dac502259ad0.png

Edge Impulse – 原始數(shù)據(jù)產(chǎn)生特征

左側(cè)– impulse design / Raw data

在此要針對原始數(shù)據(jù)產(chǎn)生特征,先看到 Parameters 卷標(biāo),到時(shí)候要把 Raw feature 這一段復(fù)制到最后匯出的 arduino sketch 才能順利執(zhí)行推論。

a10d9b3e-7473-11ed-8abf-dac502259ad0.png

接著按下 Generate features 標(biāo)簽,跑完會(huì)看到如右圖的數(shù)據(jù)特征分布,這一段就完成了。

a13a70e6-7473-11ed-8abf-dac502259ad0.png

Edge Impulse – 訓(xùn)練模型

左側(cè)– impulse design / NNclassifier

本段要設(shè)定神經(jīng)網(wǎng)絡(luò)架構(gòu),可以自己定義神經(jīng)網(wǎng)絡(luò)架構(gòu),在此我新增了兩個(gè) Dense 密集連接層,分別使用 20, 10 個(gè)神經(jīng)元,相當(dāng)小巧。另外兩個(gè)參數(shù)如下設(shè)定:

?Number of training cycles: 看過一遍所有數(shù)據(jù)稱為一次,在此設(shè)定 500

?Learning rate: 神經(jīng)網(wǎng)絡(luò)收斂的速度,這個(gè)數(shù)值通常非常小,在此設(shè)定 0.0001

a1673edc-7473-11ed-8abf-dac502259ad0.png

當(dāng)然功能不止這樣啦,點(diǎn)選 [Add an extra layer],可以看到以下 keras 層,要加入卷積層也是可以的,別急,之后都可以玩玩看的。

a19c636e-7473-11ed-8abf-dac502259ad0.png

設(shè)定好架構(gòu)之后,點(diǎn)選下方的 [Start training] 就會(huì)開始訓(xùn)練,過程中沒有寫一行程序代碼,真的很方便!右側(cè)可以看到訓(xùn)練過程中的輸出訊息。

a1e4a08e-7473-11ed-8abf-dac502259ad0.png

第一次訓(xùn)練完的 accuracy / loss 只有 75%, 0.65,差強(qiáng)人意

a20ed1c4-7473-11ed-8abf-dac502259ad0.png

我又上傳了一些手勢數(shù)據(jù),用同樣的架構(gòu)再跑一次,accuracy 就到 100%了!當(dāng)然 loss 0.62 很高啦,不過這之后可以慢慢調(diào),先繼續(xù)下去吧

a23d81f4-7473-11ed-8abf-dac502259ad0.png

Edge Impulse – 測試神經(jīng)網(wǎng)絡(luò)模型成效

網(wǎng)站左側(cè),選擇Live Classification

先不急著匯出,先上傳一筆數(shù)據(jù)玩玩看,可以上傳懸心數(shù)據(jù),或是從既有數(shù)據(jù)來看看

左下角可以看到 PAPERS 0.52, ROCK 0.48,這當(dāng)然不是一個(gè)很好的結(jié)果,就需要回頭去調(diào)整數(shù)據(jù),或是修正更好的神經(jīng)網(wǎng)絡(luò)架構(gòu)

a26d5654-7473-11ed-8abf-dac502259ad0.png

Edge Impulse – 導(dǎo)出神經(jīng)網(wǎng)絡(luò)模型

網(wǎng)站左側(cè),選擇 Deployment

會(huì)列出目前可匯出的平臺(tái),請點(diǎn)選 Arduino,另外也可以看到 NVIDIA tensorRT,各種選項(xiàng)愈來愈完整,非常棒。

a2c2466e-7473-11ed-8abf-dac502259ad0.png

同一個(gè)頁面往下拉,使用預(yù)設(shè)設(shè)定 Quantized (int8),接著選擇 Build。

a2ee3bb6-7473-11ed-8abf-dac502259ad0.png

看到這張圖就沒問題了, .zip 檔不用解壓縮,等等直接匯入 Arduino IDE 即可。

a3419b30-7473-11ed-8abf-dac502259ad0.png

Arduino 匯入之后開始使用

開啟 Arduino IDE,選擇 Sketch → Include Library → Add .ZIP library 匯入上一步取得的 .zip

a365cb36-7473-11ed-8abf-dac502259ad0.png

完成之后就可以在File 選到這個(gè)范例,請開啟其中的 static buffer

a37b9b50-7473-11ed-8abf-dac502259ad0.png

請到 Edge Impulse 網(wǎng)站,選擇 Impusle design / Raw data,復(fù)制 Raw features 到您的樣板項(xiàng)目中,有一個(gè)復(fù)制符號可以直接按,這里的數(shù)據(jù)數(shù)量就會(huì)等于 Frequency,以本范例來說就是 40。

a3afb804-7473-11ed-8abf-dac502259ad0.png

貼到您的 Arduino 范例中的 features[] 數(shù)組中,這樣就可以了。

a3e80ed4-7473-11ed-8abf-dac502259ad0.png

接著上傳程序到 wio termnial ,就可以從 serial monitor 看到每一次的推論結(jié)果,happy making!!

a40e19b2-7473-11ed-8abf-dac502259ad0.png

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2551

    文章

    51097

    瀏覽量

    753530
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5050

    瀏覽量

    97456
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6469

    瀏覽量

    187056
  • TinyML
    +關(guān)注

    關(guān)注

    0

    文章

    42

    瀏覽量

    1237

原文標(biāo)題:【tinyML】使用 EdgeImpulse 讓您的 Arduino 可以辨識(shí)手勢!

文章出處:【微信號:易心Microbit編程,微信公眾號:易心Microbit編程】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    什么是TinyML?微型機(jī)器學(xué)習(xí)

    神經(jīng)網(wǎng)絡(luò)實(shí)例的可視化。另一方面,TinyML 可以被定義為機(jī)器學(xué)習(xí)的一個(gè)子領(lǐng)域,該領(lǐng)域致力于在資源和能力受限的設(shè)備上實(shí)現(xiàn)機(jī)器學(xué)習(xí)應(yīng)用程序。TinyML 的目標(biāo)是以一種極端的方式將機(jī)器學(xué)習(xí)帶到邊緣,電池供電
    發(fā)表于 04-12 10:20

    基于Arduino創(chuàng)建一個(gè)手勢控制車

    描述如何制作手勢控制機(jī)器人|| #MadeWithArduino(發(fā)射器)嘿,歡迎回到一個(gè)新項(xiàng)目。所以今天我們將學(xué)習(xí)使用Arduino創(chuàng)建一個(gè)手勢控制車。這里我將分享項(xiàng)目發(fā)射器部分的詳細(xì)教程,我還分
    發(fā)表于 06-22 06:55

    arduino手勢控制小車

    描述arduino手勢控制車
    發(fā)表于 08-09 06:51

    基于arduino設(shè)計(jì)的手勢控制小車

    基于arduino手勢控制小車
    發(fā)表于 09-25 06:06

    使用Arduino和PAJ7620手勢傳感器制作手勢控制機(jī)器人

    使用Arduino和PAJ7620手勢傳感器制作手勢控制機(jī)器人,簡單程序即可實(shí)現(xiàn)。小小的傳感器可以識(shí)別各種手勢。它采用內(nèi)置的空間傳感器,
    發(fā)表于 09-27 06:17

    arduino手勢控制車

    電子發(fā)燒友網(wǎng)站提供《arduino手勢控制車.zip》資料免費(fèi)下載
    發(fā)表于 07-26 10:29 ?1次下載
    <b class='flag-5'>arduino</b><b class='flag-5'>手勢</b>控制車

    手勢識(shí)別:用于8位微控制器的TinyML

    電子發(fā)燒友網(wǎng)站提供《手勢識(shí)別:用于8位微控制器的TinyML.zip》資料免費(fèi)下載
    發(fā)表于 10-24 10:52 ?3次下載
    <b class='flag-5'>手勢</b>識(shí)別:用于8位微控制器的<b class='flag-5'>TinyML</b>

    使用TinyMLArduino Nano 33 BLE計(jì)算閱讀時(shí)間

    電子發(fā)燒友網(wǎng)站提供《使用TinyMLArduino Nano 33 BLE計(jì)算閱讀時(shí)間.zip》資料免費(fèi)下載
    發(fā)表于 10-28 16:50 ?1次下載
    使用<b class='flag-5'>TinyML</b>和<b class='flag-5'>Arduino</b> Nano 33 BLE計(jì)算閱讀時(shí)間

    使用Open cv python(手勢)和arduino控制Led

    電子發(fā)燒友網(wǎng)站提供《使用Open cv python(手勢)和arduino控制Led.zip》資料免費(fèi)下載
    發(fā)表于 10-28 10:19 ?6次下載
    使用Open cv python(<b class='flag-5'>手勢</b>)和<b class='flag-5'>arduino</b>控制Led

    帶有EdgeImpulse的基于視覺的手勢控制無人機(jī)

    電子發(fā)燒友網(wǎng)站提供《帶有EdgeImpulse的基于視覺的手勢控制無人機(jī).zip》資料免費(fèi)下載
    發(fā)表于 11-14 10:47 ?0次下載
    帶有<b class='flag-5'>EdgeImpulse</b>的基于視覺的<b class='flag-5'>手勢</b>控制無人機(jī)

    什么是TinyML?它可以(也不能)用于什么?

    FPGA一直以低功耗、可重構(gòu)的特點(diǎn)在各個(gè)領(lǐng)域內(nèi)應(yīng)用,同時(shí)也可以大大增加物聯(lián)網(wǎng)應(yīng)用環(huán)境,所以在FPGA上應(yīng)用TinyML是否是FPGA方便的最佳應(yīng)用?我們接下來分析一下TinyML的特點(diǎn)再來總結(jié)。
    的頭像 發(fā)表于 11-28 10:25 ?7053次閱讀

    Arduino手勢手套

    電子發(fā)燒友網(wǎng)站提供《Arduino手勢手套.zip》資料免費(fèi)下載
    發(fā)表于 12-21 14:17 ?1次下載
    <b class='flag-5'>Arduino</b><b class='flag-5'>手勢</b>手套

    基于Arduino UNO的手勢控制伺服電機(jī)

    電機(jī)旋轉(zhuǎn) 180 度。通過跟蹤,伺服器只會(huì)在食指抬起而其他手指保持閉合時(shí)才會(huì)轉(zhuǎn)動(dòng)。這可以在具有多個(gè)伺服器的許多項(xiàng)目中實(shí)現(xiàn),但在這種情況下,我們堅(jiān)持使用一個(gè)伺服器。伺服電機(jī)伺服是一種只能旋轉(zhuǎn)180度的減速電機(jī)。它是通過從Arduin
    發(fā)表于 12-21 11:26 ?0次下載

    Arduino手勢控制LED亮度

    電子發(fā)燒友網(wǎng)站提供《Arduino手勢控制LED亮度.zip》資料免費(fèi)下載
    發(fā)表于 01-31 14:47 ?1次下載
    <b class='flag-5'>Arduino</b><b class='flag-5'>手勢</b>控制LED亮度

    使用Esp32和TinyML進(jìn)行手勢分類

    電子發(fā)燒友網(wǎng)站提供《使用Esp32和TinyML進(jìn)行手勢分類.zip》資料免費(fèi)下載
    發(fā)表于 06-15 11:43 ?2次下載
    使用Esp32和<b class='flag-5'>TinyML</b>進(jìn)行<b class='flag-5'>手勢</b>分類
    主站蜘蛛池模板: 国内黄色录像| 男人女人真曰批视频播放| 一区二区三区影视| 天堂在线视频网站| 国产精品15p| 操黄色| 在线观看你懂的网址| 精品三级三级三级三级三级| 欧美极品bbbbⅹxxxx| 国产精品性| 久草成人在线视频| 国产一级毛片午夜福| 亚洲国产成人精品青青草原100| 久久婷婷国产一区二区三区| 免费网站黄成人影院| 在线天堂中文官网| 国产香港日本三级在线观看| 福利看片| 四虎国产精品影库永久免费| 亚洲第七页| 性刺激的欧美三级视频| 女人张开腿让男人桶免费网站| 手机福利在线观看| 一级片 在线播放| 成人v片| 中文字幕区| 免费黄色三级| 国产亚洲欧美成人久久片| 午夜色婷婷| 午夜狠狠操| 91久久澡人人爽人人添| 国产欧美综合在线| 欧美性一区| 免费一看一级毛片| 操欧美女人| 日本在线观看永久免费网站| 奇米影视大全| 四虎永久网址在线观看| 天天干天天做天天操| 亚洲午夜久久久久久噜噜噜| 一级视频在线观看免费|