99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

電子發(fā)燒友App

硬聲App

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>用微語音控制交通燈

用微語音控制交通燈

2023-06-27 | zip | 0.00 MB | 次下載 | 免費

資料介紹

描述

介紹和動機

機器學習通常涉及大量計算能力,這些計算能力通常以帶有 GPU 的大型數(shù)據(jù)中心的形式出現(xiàn),訓練深度神經(jīng)網(wǎng)絡的成本可能是天文數(shù)字。小至 14 KB 的微型神經(jīng)網(wǎng)絡的出現(xiàn)為新應用打開了大量大門,這些應用可以直接在微處理器本身上分析數(shù)據(jù)并得出可操作的見解(Warden 和 Situnayake,2019 年)。這可以節(jié)省時間并防止延遲,因為我們不必將數(shù)據(jù)傳輸?shù)皆茢?shù)據(jù)中心進行處理并等待其返回(Warden 和 Situnayake,2019 年)。這種現(xiàn)象稱為邊緣計算,允許在存儲數(shù)據(jù)的設備上處理和計算數(shù)據(jù)(Lea,2020)。

學習過程:模型訓練

首先,在我開始這個項目之前,我不知道邊緣計算或 Arduino 是什么。正如技術列表所示,我必須使用并協(xié)調整個工具生態(tài)系統(tǒng),才能實現(xiàn)在運行良好的 Arduino 板上部署語音識別的目標。

我做的第一件事是下載 VS Code IDE 并確保安裝了 Platform IO 擴展。同時,我必須下載 Arduino IDE 并包含 TensorFlow Lite 庫。在 VS Code 中,我從 Arduino IDE 導入了內置的微語音示例,作為一個運行良好的示例。該模型接收到“yes”的輸入,打開 Arduino 上的綠色 LED“否”打開了 Arduino 上的紅色 LED;所有其他打開 Arduino 上的藍色 LED 的單詞;或沒有打開 LED 的靜音。

TensorFlow 已經(jīng)在其 GitHub 存儲庫中提供了訓練腳本:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/micro/examples/micro_speech/train/train_micro_speech_model.ipynb。

這個腳本也是我想如何為我的特定用例訓練微語音模型的基礎。

我最初開始將訓練腳本從 TensorFlow 版本 1.x 轉換為 2.x,因為后者的性能優(yōu)化和簡化的 API 調用。但是,我無法轉換整個腳本,因為在 TensorFlow v2 中沒有等效于 v1 的“tf.lite.constants.INT8”模塊。

修改這個腳本實際上是一個巨大的挑戰(zhàn)。主要因素是因為每當我對模型進行更改時,都需要大約 2 個小時來訓練,所以我選擇的超參數(shù)沒有快速和即時的反饋。我無法通過經(jīng)常試驗和操縱許多參數(shù)來執(zhí)行“快速原型設計”。我遇到的最令人抓狂的問題是,當我在 TensorFlow 中訓練模型后,當我嘗試量化模型并從中生成 TensorFlow Lite 模型時,我會收到如下錯誤消息:

poYBAGN0M_SAQnH-AACbi9MOfj0145.png
?

我對此進行了大量研究,結果發(fā)現(xiàn)這很可能歸因于我每次在 Colab 單元中運行代碼片段時創(chuàng)建的嵌套圖,因此新占位符無法獲得所需的輸入值在評估階段。每次我重新運行我的訓練腳本來訓練微語音模型時,我都通過重新啟動我的 GPU 來解決這個問題。

通過使用“go”和“stop”進行訓練,我的模型得到的初始準確率為 87.2%,因此我認為可以通過將訓練步數(shù)從 15,000 次迭代增加到 25,000 次來改進它。我也很愚蠢同時 tweeked 另一個變量是模型將識別的喚醒詞的數(shù)量,因為我在列表中添加了“向后”和“向前”。

我用 25, 000 步訓練的模型的準確度實際上下降到了 85%。花了幾乎兩倍的時間,3.5 小時,但準確度下降了!造成這種情況的原因可能有兩個:1)混淆矩陣變大,必須識別更大的詞向量并對更大的詞向量更敏感,因此準確率下降;2)峰值性能實際上是在 15,000 個訓練步驟,模型進入收益遞減階段。

我用兩個額外的喚醒詞回到最初的 15,000 個訓練步驟,我的模型的最終準確率為 85.8%。因此,從這個結果中,我可以得出一個結論,即最有可能達到峰值性能需要用 15,000 步進行訓練。

poYBAGN0M_aAZJ_VAACX7zDwdkc575.png
經(jīng)過 15,000 步訓練的最終模型
?

?

pYYBAGN0M_mADog6AACrSYuxwP4728.png
模型經(jīng)過 15,000 次迭代訓練。
?

?

poYBAGN0M_uACLaTAACMW7w45nA967.png
模型經(jīng)過 25,000 次迭代訓練。
?

從我之前在課堂上的作業(yè)來看,0.001 和 0.0001 的學習率產(chǎn)生了具有最高準確度的模型,所以我用它們來訓練我的模型。

我所做的其他調整是模型的實際架構。有幾個可供選擇,其中包括一個全尺寸的卷積神經(jīng)網(wǎng)絡。我最初選擇了 MODEL_ARCHITECTURE = 'conv' 并嘗試將該模型部署到我的 Arduino。結果是模型太大,Arduino 無法處理,所以每當我試圖在麥克風中說出喚醒詞時,它都會拋出一堆“請求失敗”錯誤而關閉。之后我了解到,Arduino 可以處理的唯一模型架構是其中包含“tiny”一詞的架構,例如效果最好的“tiny_conv”和“tiny_embedding_conv”。這些模型架構已經(jīng)預先打包在訓練腳本中并可以使用。

“tiny_conv”模型有一個卷積層,然后是一個具有 4 x 4000 權重的全連接層,最后一層是 softmax 層。

我選擇用來訓練模型的詞多種多樣。該模型從識別“是”和“否”開始,它們之間的區(qū)別足夠大,與“開”和“關”等其他詞對相比,它們不容易混淆。然后我決定添加“前進”和“后退”,使這個模型像交通信號/停車信號一樣。當說出“STOP”或“BACKWARD”時 LED 會變?yōu)榧t色,當說出“GO”或“FORWARD”時 LED 會變?yōu)榫G色。如果說出不屬于這四個類別中的任何一個的單詞,LED 將變?yōu)樗{色。沉默根本不會打開 LED。

微語音模型本質上是將傳給麥克風的音頻輸入轉換為頻譜圖,然后通過 TensorFlow Lite 運行它以對說出的單詞進行分類。一旦模型完成訓練,訓練腳本就會生成一個名為 model.cc 的二進制模型文件。此二進制文件中的數(shù)據(jù)將使用腳本訓練的模型和模型的二進制長度編碼到一個名為 micro_features_model.cpp 的文件中。

pYYBAGN0M_6AcUa_AAF6vWkiW9o322.png
訓練期間輸入到模型的頻譜圖
?

我使用 TensorBoard 來顯示準確度和交叉熵的進展,它們應該分別增加和減少。紅線指的是驗證數(shù)據(jù)集上的性能,它定期發(fā)生,因此數(shù)據(jù)點稀疏。藍線指的是訓練數(shù)據(jù)集上的性能,它經(jīng)常出現(xiàn),所以這些線更接近。

pYYBAGN0NACAad6CAAEIFBxMxNw813.png
?

除了“未知”和“沉默”之外,還有一個名為 kCategoryCount 的變量表示模型需要分類的詞數(shù)。對于我的特定用例,kCategoryCount 等于 6。

學習過程:部署到 Arduino

到目前為止,我剛剛討論了訓練模型并使其達到盡可能高準確度的挑戰(zhàn)。下一個障礙是將這個模型部署到 Arduino。

困擾我的最大挑戰(zhàn)是一個錯誤,說我在項目文件夾中定義了兩次模型。我花費了大量時間梳理所有不同的文件以解決該錯誤。事實證明,我忘記刪除舊的#include 語句,該語句引用的模型與我試圖部署到 Arduino 的模型不同。為了避免將來混淆,我給我的模型取了一個簡單的名稱,并刪除了與另一個模型相關的任何其他文件。我只是清理了我的項目文件夾并選擇了極簡主義。錯誤如下所示。

pYYBAGN0NASAT1BJAAK_NyQ1_H0042.png
錯誤,因為我在我的項目文件夾中定義了兩個不同的模型,并且沒有刪除對舊模型的引用。
?

一旦我清除了這個障礙,我很快就被另一堵磚墻迎接了。該程序能夠編譯,但我無法將其上傳到 Arduino。我得到的錯誤是沒有檢測到上傳端口,所以我無法將模型上傳到 Arduino。我非常焦慮,因為我認為是我的 MacBook Pro 出現(xiàn)問題并且無法檢測到外部設備。我通過將 USB 插入它來測試這個理論,看看它是否會識別它,事實上它確實做到了。我只能摸不著頭腦,將開發(fā)轉移到我的 Windows 計算機上。在將我的模型部署到 Arduino 之前,一切都按預期工作。我得到了完全相同的錯誤,然后我開始非常擔心。我的 Arduino 會壞嗎?寄給我的是有缺陷的嗎?我什至從 Windows 7 移動到 Windows 10 并得到了同樣的錯誤!這變得非常令人擔憂。最后要檢查的是我的微型 USB 電纜。我用過舊的微型 USB 來為我的 Android 手機充電。這實際上是最后一個要改變的變量。如果切換我的微型 USB 電纜仍然不允許我將模型上傳到 Arduino,我只能寫下我無法上傳模型的原因。

我在下面的屏幕截圖中顯示了我的編譯成功但上傳失敗。

poYBAGN0NAaARjAGAAEBRveXF-s001.png
模型已編譯但上傳失敗
?

?

poYBAGN0NAmAbt7BAAEAbxxgUpQ335.png
由于無法檢測到上傳端口,模型無法上傳
?

我將我的微型 USB 電纜換成了另一根更長且不是專門為手機充電的電纜……這是驚人的結果!

pYYBAGN0NAuASbWeAADBcWrC2UQ678.png
?

?

poYBAGN0NA6AE9yNAAC7KCrbkXM882.png
模型成功上傳到我的 Arduino!
?

事實證明,無法檢測到上傳端口的原因是因為微型 USB 電纜有問題!我再放心不過了。

在部署到 Arduino 時解決了這兩個問題后,我現(xiàn)在可以自由地將模型部署到它。端口錯誤確實出現(xiàn)了,但這次我找到了 Arduino 推薦的快速解決方案:“如果板子沒有進入上傳模式,請在啟動上傳過程之前雙擊重置按鈕; 橙色 LED 應該會慢慢淡入淡出,表明開發(fā)板正在等待上傳?!?在 Arduino 上執(zhí)行此重置操作可解決任何端口檢測錯誤。

更多研究還建議在上傳之前對構建文件進行清理,如此屏幕截圖所示。

pYYBAGN0NBCAWWkSAAECohb1I7M486.png
?

學習這些漂亮的技巧將使我進入與 Arduinos 合作的下一階段。

pYYBAGN0NBKALLEzAAC3Tmk2XF0768.png
?

未來的工作

能夠在 Arduino 上部署微型深度學習模型徹底改變了物聯(lián)網(wǎng)和邊緣計算的功能。由于成本的顯著降低,可能性是無窮無盡的。由于模型的準確性可能會更好,因此仍有很多改進工作要做。提高準確性在某種程度上仍然是一項黑盒活動,尤其是在使用此類新技術的情況下,因此通過操縱多個參數(shù)進行徹底的實驗將使我們更接近更好的模型。這個特定模型的音頻輸入非常簡單,下一個合乎邏輯的舉措是訓練并使用完整的短語來控制 Arduino,無論它仍然打開不同顏色的 LED 燈,還是讓它以另一種方式響應。盡管在這個階段,Arduino 上的實現(xiàn)更多的是 POC,而不是可擴展或大規(guī)模工業(yè)生產(chǎn),但它讓我們對這個新的前沿領域有所了解。利用算法簡化的力量,我們可以將這些 POC 提供的解決方案堆疊和組合在一起,以解決與安全相關的更難、時間敏感的問題,例如機器人手術或自動駕駛汽車。

參考

Lea, P. (2020)。面向建筑師的物聯(lián)網(wǎng)和邊緣計算——第二版。O'Reilly 電子[在線]。網(wǎng)址為:https ://learning.oreilly.com/library/view/iot-and-edge/9781839214806/ (訪問日期:2020 年 12 月 14 日)。

Warden, P. 和 Situnayake, D. (2019)。TinyML。O'Reilly 電子書[在線]。網(wǎng)址為:https ://learning.oreilly.com/library/view/tinyml/9781492052036/ (訪問日期:2020 年 11 月 10 日)。

監(jiān)獄長,P.(2017 年)。啟動語音命令數(shù)據(jù)集[在線]。網(wǎng)址為:https ://ai.googleblog.com/2017/08/launching-speech-commands-dataset.html (訪問日期:2020 年 12 月 5 日)。

?

?

?

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費