国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

用深度學(xué)習(xí)和物聯(lián)網(wǎng)技術(shù)設(shè)計(jì)“AI魔法棒”

2022-05-19 10:56謝作如邱奕盛
中國(guó)信息技術(shù)教育 2022年9期
關(guān)鍵詞:手勢(shì)加速度神經(jīng)網(wǎng)絡(luò)

謝作如 邱奕盛

涉及學(xué)科:物理、技術(shù)、藝術(shù)

在《哈利·波特》系列電影中有各種各樣的魔法棒,配合著不同角度的揮動(dòng),就可以實(shí)現(xiàn)奇特的效果,如點(diǎn)燃火把、拉開窗簾等。從物理學(xué)的角度分析,揮動(dòng)魔法棒其實(shí)是改變魔法棒的運(yùn)動(dòng)速度,而衡量運(yùn)動(dòng)速度變化的物理量是加速度。從理論上講,只要給魔法棒安裝一個(gè)加速度傳感器,就能感知所有的速度變化。

恰好,掌控板上自帶三軸加速度傳感器,那么,能否利用掌控板來準(zhǔn)確判斷魔法棒的手勢(shì)呢?實(shí)際上很多人都嘗試過用掌控板的加速度傳感器來識(shí)別手勢(shì),但都因?yàn)榫幊烫珡?fù)雜、難度太大而放棄。目前,加速度傳感器僅僅應(yīng)用在“搖一搖”的判斷和x、y軸的角度識(shí)別上,有大材小用的感覺。

● 用加速度識(shí)別手勢(shì)的難度分析

為什么用加速度傳感器識(shí)別手勢(shì)很困難呢?因?yàn)樵谀Хò魮]動(dòng)的過程中,加速度是不斷變化的。因此,識(shí)別手勢(shì)需要得到揮動(dòng)過程中所有的數(shù)據(jù)變化,需要在手勢(shì)軌跡中連續(xù)采樣加速度數(shù)值,在得到的一組數(shù)據(jù)中尋找數(shù)據(jù)變化的規(guī)律。但是,每次人工繪制的手勢(shì)數(shù)據(jù)不可能完全相同,總會(huì)因?yàn)榭炻?、形狀的偏差而產(chǎn)生相近但不相同的數(shù)據(jù),這就給編程帶來了很大的難度。

在2018年,筆者曾經(jīng)在本欄目寫過《用掌控板體驗(yàn)機(jī)器學(xué)習(xí)》一文,介紹用曼哈頓距離公式來計(jì)算兩組數(shù)據(jù)的偏差,即先繪制一次樣本數(shù)據(jù),作為手勢(shì)的特征,當(dāng)新采集的數(shù)據(jù)與樣本數(shù)據(jù)的手勢(shì)特征相近,誤差小于某個(gè)閾值時(shí),就可以識(shí)別為正確的手勢(shì)。然而,這種方式需要人為計(jì)算均方根誤差,并且不斷調(diào)整閾值以達(dá)到較好的效果,識(shí)別算法設(shè)計(jì)難度高。再加上掌控板的存儲(chǔ)和計(jì)算資源有限,也很難通過保存多次數(shù)據(jù)取均值改進(jìn)識(shí)別效果,或者部署AI算法進(jìn)行識(shí)別。

● 換一種思路來識(shí)別手勢(shì)

1.深度學(xué)習(xí)

在學(xué)習(xí)人工智能的時(shí)候,大家都知道用機(jī)器學(xué)習(xí)的方式來尋找數(shù)據(jù)中的關(guān)系,是一種非常有效的方式。假設(shè)已經(jīng)擁有一系列不同手勢(shì)的加速度傳感器數(shù)據(jù)(簡(jiǎn)稱加速度數(shù)據(jù)集),那么搭建一個(gè)BP(Back Propagation)神經(jīng)網(wǎng)絡(luò)(如圖1),不斷將數(shù)據(jù)“喂給”這個(gè)網(wǎng)絡(luò)模型,就能訓(xùn)練出一個(gè)能夠識(shí)別手勢(shì)的AI模型。借助于BP神經(jīng)網(wǎng)絡(luò)的機(jī)器學(xué)習(xí),因?yàn)閾碛猩窠?jīng)網(wǎng)絡(luò)分為多層,屬于深度學(xué)習(xí)中的一種。

深度學(xué)習(xí)主要分為數(shù)據(jù)收集、模型訓(xùn)練和模型推理這三個(gè)環(huán)節(jié)。數(shù)據(jù)收集也就是制作數(shù)據(jù)集,類似于人類的學(xué)習(xí)經(jīng)驗(yàn)知識(shí)庫,每條數(shù)據(jù)包含連續(xù)的加速度信息x和手勢(shì)類別信息y。通過收集大量手勢(shì)數(shù)據(jù),并給數(shù)據(jù)正確標(biāo)注類別信息,就可以讓機(jī)器學(xué)習(xí)這些數(shù)據(jù)了。模型訓(xùn)練是讓深度學(xué)習(xí)模型通過不斷學(xué)習(xí)數(shù)據(jù)集信息,達(dá)到手勢(shì)識(shí)別的能力。當(dāng)模型訓(xùn)練好后,只要輸入一組數(shù)據(jù),就能輸出識(shí)別的結(jié)果了(如圖2)。

2.物聯(lián)網(wǎng)技術(shù)

雖然我們沒有辦法在掌控板上部署一個(gè)深度學(xué)習(xí)的計(jì)算框架,但是可以借助物聯(lián)網(wǎng)技術(shù),將數(shù)據(jù)傳輸?shù)絇C機(jī)上處理。例如,我們可以通過發(fā)送MQTT消息將每條數(shù)據(jù)傳輸?shù)轿锫?lián)網(wǎng)平臺(tái)數(shù)據(jù)庫保存,完成手勢(shì)數(shù)據(jù)的收集,也可以將需要識(shí)別的手勢(shì)數(shù)據(jù),通過MQTT消息傳入PC上的深度學(xué)習(xí)系統(tǒng)中進(jìn)行推理(手勢(shì)識(shí)別),然后得到結(jié)果(如圖3)。

● 手勢(shì)數(shù)據(jù)的收集

為了手勢(shì)識(shí)別更加準(zhǔn)確,筆者規(guī)定每一個(gè)手勢(shì)在1秒鐘內(nèi)完成,在這個(gè)過程中平均采集128個(gè)加速度傳感器的數(shù)據(jù)。采集的程序比較簡(jiǎn)單,用mPython就能編寫。如圖4所示,每次按下A鍵開始采集數(shù)據(jù),聽到“滴”的一聲采集完成,如果確認(rèn)采集無誤,按B鍵發(fā)送到SIoT服務(wù)器(消息主題為“shoushi/caiji”)。

重復(fù)多次揮動(dòng)手中的掌控板,在空中畫出相同的路徑,如畫三角形,這樣就可以采集多條數(shù)據(jù)。當(dāng)數(shù)據(jù)達(dá)到一定數(shù)量(筆者分別收集了100條)時(shí),登錄SIoT找到對(duì)應(yīng)主題,可以導(dǎo)出數(shù)據(jù)到本地。然后更換一個(gè)手勢(shì),如“×”號(hào),重復(fù)以上操作。筆者采集的手勢(shì)分別是三角形、對(duì)號(hào)、錯(cuò)號(hào)、五角星和圓形。

接下來整理數(shù)據(jù),為保存到本地的各種手勢(shì)數(shù)據(jù)添加標(biāo)簽,保存為csv文件。文件中每行是一條數(shù)據(jù),第一個(gè)數(shù)據(jù)是標(biāo)簽名,第二個(gè)數(shù)據(jù)是標(biāo)簽序號(hào),后面的128個(gè)數(shù)值是一次完整手勢(shì)軌跡的加速度值序列。

● 手勢(shì)模型的訓(xùn)練

1.安裝MMEdu

深度學(xué)習(xí)框架有很多,如Keras、TensorFlow、PyTorch等。MMEdu開發(fā)團(tuán)隊(duì)基于Pytorch和OpenMMLab,簡(jiǎn)化了神經(jīng)網(wǎng)絡(luò)模型搭建和訓(xùn)練的參數(shù),降低了編程的難度,因此筆者以它為例介紹神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練環(huán)境的搭建。

通過地址gitee.com/openxlab-edu/OpenMMLab-Edu可以下載項(xiàng)目文件。解壓后即可使用,在Demo文件夾中能夠找到范例代碼。MMEdu內(nèi)置了Pyzo,但筆者推薦使用jupyter作為IDE。

2.訓(xùn)練數(shù)據(jù)模型

根據(jù)數(shù)據(jù)格式,筆者將第二列作為類別信息y,后面的128個(gè)數(shù)組成的序列作為加速度數(shù)據(jù)x,以圖5所示的方式讀入。

接下來,搭建一個(gè)BP神經(jīng)網(wǎng)絡(luò)模型進(jìn)行機(jī)器學(xué)習(xí),神經(jīng)網(wǎng)絡(luò)模型的輸入層為128個(gè)神經(jīng)元,因?yàn)槊織l數(shù)據(jù)有128個(gè)特征,輸出層為5,所以手勢(shì)共有5類。中間有3個(gè)隱藏層,神經(jīng)元個(gè)數(shù)分別為64、32、16,隱藏層的作用是增加模型特征提取的效果。隱藏層層數(shù)和神經(jīng)元個(gè)數(shù)可以自行調(diào)整。每個(gè)隱藏層后面緊跟一個(gè)激活層,用于增強(qiáng)模型的非線性擬合能力,代碼如圖6所示。

然后將數(shù)據(jù)載入到網(wǎng)絡(luò)中,進(jìn)行訓(xùn)練。這里的lr指的是學(xué)習(xí)率,epochs是訓(xùn)練輪數(shù),可以根據(jù)實(shí)際情況修改(如圖7)。每訓(xùn)練一輪,會(huì)輸出一次訓(xùn)練情況,其中Loss越小,表明學(xué)習(xí)的效果越好。

如果想在此基礎(chǔ)上再繼續(xù)訓(xùn)練,可以重復(fù)執(zhí)行model.train,也可以修改其中的參數(shù)lr和epochs繼續(xù)訓(xùn)練,以達(dá)到較好的效果(如圖8)。

當(dāng)效果滿意時(shí),也就是當(dāng)Loss數(shù)字不再明顯下降時(shí),就可以停止訓(xùn)練,執(zhí)行model.save("mynet.pkl")來保存模型。

● AI魔法棒的部署和測(cè)試

筆者將訓(xùn)練好的模型部署在計(jì)算機(jī)上,將從SIoT的主題shoushi/caiji收到的信息傳入神經(jīng)網(wǎng)絡(luò)進(jìn)行推理,根據(jù)推理結(jié)果決定是否發(fā)送消息給SIoT的主題shoushi/jieguo。代碼編寫如圖9所示。

在掌控板原來代碼的基礎(chǔ)上,添加一段代碼,使得在掌控板上也能查看識(shí)別的結(jié)果(如第108頁圖10)。

經(jīng)過上述步驟的操作,基本已經(jīng)完成了部署。接下來,就可以測(cè)試一下“AI魔法棒”的效果了。識(shí)別率還不錯(cuò),大部分情況能夠正確分辨出所做的手勢(shì)(如圖11)。

● 小結(jié)

當(dāng)實(shí)現(xiàn)了對(duì)魔法棒的“手勢(shì)”識(shí)別后,下一步就是要實(shí)現(xiàn)一些有趣的創(chuàng)意功能了,如識(shí)別出手勢(shì)后點(diǎn)亮不同的LED或者在屏幕上顯示相應(yīng)的圖案。當(dāng)然,這樣還太簡(jiǎn)單,因?yàn)楣P者的實(shí)驗(yàn)室部署了智能家居系統(tǒng),并且部署了HASS(具體請(qǐng)參考前幾期的文章),那么這個(gè)魔法棒就能和智能家居結(jié)合了。例如,畫個(gè)圓形燈光就點(diǎn)亮,畫個(gè)心形燈光就變成粉色,畫個(gè)“×”號(hào)燈就關(guān)閉等,是不是很有魔法的感覺?

有了深度學(xué)習(xí)和物聯(lián)網(wǎng)技術(shù)的加持,學(xué)生各種天馬行空的想象都更有可能成為現(xiàn)實(shí)。那么,還等什么,當(dāng)人工智能遇上物聯(lián)網(wǎng),精彩的世界正拉開帷幕。

猜你喜歡
手勢(shì)加速度神經(jīng)網(wǎng)絡(luò)
基于人工智能LSTM循環(huán)神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)成績(jī)預(yù)測(cè)
基于圖像處理與卷積神經(jīng)網(wǎng)絡(luò)的零件識(shí)別
MIV-PSO-BP神經(jīng)網(wǎng)絡(luò)用戶熱負(fù)荷預(yù)測(cè)
挑戰(zhàn)!神秘手勢(shì)
三次樣條和二次刪除相輔助的WASD神經(jīng)網(wǎng)絡(luò)與日本人口預(yù)測(cè)
走出“加速度”理解的誤區(qū)
勝利的手勢(shì)
加速度新題型精析
向心加速度公式推導(dǎo)
向心加速度學(xué)習(xí)一卡通