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

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

3天內不再提示

如何在ESP32上使用代碼運行TensorFlow模型?

電子設計 ? 來源:電路城 ? 作者:電路城 ? 2021-04-27 14:54 ? 次閱讀

該項目使用在ESP32上運行的TensorFlow Lite創(chuàng)建一個語音控制的機器人。它可以響應簡單的單字命令:“左”,“右”,“前進”和“后退”。

硬件部件:

樂鑫ESP32S× 1個

伺服模塊(通用)× 2

通用車輪× 2

Gerneric USB移動電源× 1個

I2S麥克風板× 1個

軟件應用程序和在線服務:

PlatformIO IDE

我在Google的Commands數(shù)據(jù)集上使用TensorFlow訓練了一個模型。其中包含大約20個單詞,我選擇了一個很小的單詞子集-足以控制機器人的單詞,但數(shù)量不多,以至于模型變得難以管理。

為了生成訓練數(shù)據(jù),我們將WAV文件加載到其中,并從每個文件中提取頻譜圖。

為了獲得足夠的數(shù)據(jù)用于命令詞,我已經(jīng)多次重復這些詞,以改變音頻的位置并添加隨機噪聲-這為我們的神經(jīng)網(wǎng)絡提供了更多訓練數(shù)據(jù),并應該有助于其推廣。

幾個單詞-前進和后退的示例更少,因此我更經(jīng)常重復這些示例。

我最后得到了一個相當簡單的卷積神經(jīng)網(wǎng)絡,其中包含2個卷積層,然后是一個完全連接的層,然后是一個輸出層。

當我們試圖識別多個不同的單詞時,我們使用“ softmax”激活函數(shù),并使用“ CategoricalCrossentropy”作為我們的損失函數(shù)。

訓練模型后,我得到的訓練數(shù)據(jù)準確度不到92%,而驗證數(shù)據(jù)的準確度則超過92%。測試數(shù)據(jù)集為我們提供了類似的性能水平。

查看混淆矩陣,我們可以看到它主要是將單詞誤分類為無效單詞。這對于我們的用例來說是相當不錯的,因為這應該意味著機器人會誤判誤報而不是誤報。

由于模型似乎不適合,我已經(jīng)在完整的數(shù)據(jù)集上對其進行了訓練。這給了我們大約94%的最終精度,而在混淆矩陣上我們看到了更好的結果。但是,可能會有些過度擬合。

對于實際的機器人,我構建了一個非常簡單的兩輪機器人。為了驅動車輪,我使用了兩個連續(xù)的伺服系統(tǒng)和小型動力單元。它具有相當寬的軸距,因為帶有ESP32的面包板非常大。

為了在ESP32上運行TensorFlow模型,我使用了TensorFlow Lite。我將其包裝在自己的代碼中,使其更易于使用。

要讀取音頻,我們使用I2S-它可以從模擬麥克風的內置ADC讀取,也可以直接從I2S數(shù)字麥克風讀取。

命令檢測器由一個任務運行,該任務等待音頻樣本可用,然后為命令檢測器提供服務。

我們的命令檢測器將音頻數(shù)據(jù)后退一秒鐘,獲取頻譜圖,然后運行預測。

為了提高檢測的魯棒性,我們在多個音頻片段上對預測進行了采樣,并且還拒絕了在先前檢測的一秒鐘內發(fā)生的任何檢測。

如果我們檢測到命令,則將其排隊等待命令處理器處理。

我們的命令處理器運行一個任務,該任務偵聽此隊列中的命令。

當命令到達時,它將更改發(fā)送到電動機的PWM信號,以停止電動機或設置所需的方向。

為了向前移動,我們將兩個電機都向前驅動,對于向后,我們將兩個電機都向后驅動。對于左,我們反轉左電動機并向前驅動右電動機,而對于右,我們進行相反的,右電動機反向,左電動機向前。

對于我們的連續(xù)伺服器,1500us的占空比將使它們停止,低于此值應使它們反向,而高于此值將使它們向前驅動。

我略微調整了右馬達正向值的值,因為它的旋轉速度不如左馬達快,這導致機器人轉向一側。

請注意,因為我們有正確的電機上下顛倒驅動它,所以我們將其反向運行,而將其向后驅動,則我們將其向前驅動。

您可能需要校準自己的電動機才能使機器人直線運動。

它運作良好!

它偶爾會混淆單詞并左右混合。
責任編輯:pj

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

    關注

    210

    文章

    27834

    瀏覽量

    204561
  • 檢測器
    +關注

    關注

    1

    文章

    847

    瀏覽量

    47554
  • 數(shù)據(jù)

    關注

    8

    文章

    6711

    瀏覽量

    88299
  • 頻譜
    +關注

    關注

    7

    文章

    868

    瀏覽量

    45459
收藏 人收藏

    評論

    相關推薦

    基于ESP32C3運行RT-THREAD

    ESP32上面運行 RT-THREAD.
    的頭像 發(fā)表于 06-25 07:58 ?9116次閱讀
    基于<b class='flag-5'>ESP32</b>C3<b class='flag-5'>運行</b>RT-THREAD

    ESP32-WROOM-32電后不會運行的原因?

    最近我們在調試ESP32-WROOM-32板子是發(fā)現(xiàn)一個問題。代碼是完整下載到芯片里并且是可以運行的。但是,但板子電后,ESP32芯片卻不
    發(fā)表于 06-05 08:05

    請問ESP32如何運行TensorFlow模型?

    請問ESP32如何運行TensorFlow模型?
    發(fā)表于 07-09 07:30

    何在esp32板子實現(xiàn)自己的web_radio

    esp32開發(fā)板實現(xiàn)的web_radio,基于wm8978 codec芯片前言下載編譯硬件連接燒寫測試TODO前言本文介紹了如何在esp32板子
    發(fā)表于 08-12 06:49

    何在ESP32使用MicroPython

    ESP32的原有程序,擦除成功后下載MicroPython固件,并使用簡單的“Hello World(你好,世界)”程序進行測試。安裝esptool打開命令行,輸入`pip install esptool此操作將在系統(tǒng)安裝esptool,之后將通過python環(huán)境下
    發(fā)表于 01-11 07:58

    ESP32教程之如何在Windows系統(tǒng)搭建開發(fā)環(huán)境

    本文檔的主要內容詳細介紹的是ESP32教程之如何在Windows系統(tǒng)搭建開發(fā)環(huán)境。
    發(fā)表于 12-13 15:34 ?40次下載
    <b class='flag-5'>ESP32</b>教程之如<b class='flag-5'>何在</b>Windows系統(tǒng)<b class='flag-5'>上</b>搭建開發(fā)環(huán)境

    關于C程序源代碼是如何在硬件運行的?

    C程序源代碼是如何在硬件運行的?
    的頭像 發(fā)表于 02-05 12:37 ?2726次閱讀

    ESP32模組的主要特性

    WT-ESP32-DevKitC V4是一款基于ESP32的小型開發(fā)板,集WIFI+藍牙方案于一體,板模組絕大部分管腳均已引出,開發(fā)人員可根據(jù)實際需求,輕松通過跳線連接多種外圍器件,或將開發(fā)板直接
    發(fā)表于 11-04 14:54 ?3782次閱讀

    ESP32芯片模組機器學習算法運行的應用

    ESP32以其強大的無線通信能力、領先的低功耗和高性價比等特性,已成為各類AIoT應用的理想選擇。 用戶使用Arduino框架和EdgeImpulse平臺,只需添加幾行代碼,即可在ESP32
    發(fā)表于 03-15 17:23 ?1152次閱讀

    何在ESP32/ESP8266使用MicroPython

    在本教程中,我們將了解 MicroPython,它與 Python 有何不同,以及如何在 ESP32/ESP8266 開始使用 MicroPython。此外,我們將看到一個 LED
    發(fā)表于 08-19 15:09 ?1.3w次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>ESP32</b>/<b class='flag-5'>ESP</b>8266<b class='flag-5'>上</b>使用MicroPython

    在MaaXBoard RT運行幾乎任何TensorFlow模型

    電子發(fā)燒友網(wǎng)站提供《在MaaXBoard RT運行幾乎任何TensorFlow模型.zip》資料免費下載
    發(fā)表于 10-31 10:28 ?2次下載
    在MaaXBoard RT<b class='flag-5'>上</b><b class='flag-5'>運行</b>幾乎任何<b class='flag-5'>TensorFlow</b><b class='flag-5'>模型</b>

    使用Visuino DIY如何在M5StickC ESP32顯示時間

    電子發(fā)燒友網(wǎng)站提供《使用Visuino DIY如何在M5StickC ESP32顯示時間.zip》資料免費下載
    發(fā)表于 11-21 09:36 ?0次下載
    使用Visuino DIY如<b class='flag-5'>何在</b>M5StickC <b class='flag-5'>ESP32</b><b class='flag-5'>上</b>顯示時間

    使用MTCNN和用于ESP32-S3的TensorFlow Lite進行人臉檢測

    電子發(fā)燒友網(wǎng)站提供《使用MTCNN和用于ESP32-S3的TensorFlow Lite進行人臉檢測.zip》資料免費下載
    發(fā)表于 06-13 15:28 ?0次下載
    使用MTCNN和用于<b class='flag-5'>ESP32</b>-S3的<b class='flag-5'>TensorFlow</b> Lite進行人臉檢測

    ESP8266或ESP32的WiFi Webradio

    電子發(fā)燒友網(wǎng)站提供《ESP8266或ESP32的WiFi Webradio.zip》資料免費下載
    發(fā)表于 06-13 11:38 ?1次下載
    <b class='flag-5'>ESP</b>8266或<b class='flag-5'>ESP32</b><b class='flag-5'>上</b>的WiFi Webradio

    esp32esp8266代碼共用嗎

    本文將介紹ESP32ESP8266兩款流行的微控制器在代碼共用性方面的可能性與差異性。 一、引言 隨著物聯(lián)網(wǎng)技術的飛速發(fā)展,越來越多的智能設備開始進入我們的生活。其中,ESP32
    的頭像 發(fā)表于 08-19 18:23 ?599次閱讀