国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

想在STM32 MCU上部署機器學習模型?這份入門教程,讓你一學就會~

jf_pJlTbmA9 ? 來源:得捷電子DigiKey ? 作者:得捷電子DigiKey ? 2023-10-18 17:45 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

機器學習 (ML) 在服務器和移動應用中已經風靡多年,現在這種趨勢已蔓延到邊緣設備,并且變得突出。由于邊緣設備需要節能,因此開發人員需要學習和了解如何將ML模型部署到基于微控制器的系統中。

在微控制器上運行的ML模型通常被稱為tinyML。然而,將模型部署到微控制器并非易事,但它正在變得越來越容易,沒有經過任何專業培訓的開發人員也能在規定時間完成部署。

本文探討了嵌入式環境開發人員如何通過STMicroelectronics的STM32微控制器開始使用ML。為此,文中展示了如何通過X-CUBE-AITensorFlow Lite for Microcontrollers模型轉換用于STM32CubeIDE,來創建“Hello World”應用。

tinyML用例介紹

tinyML是一個不斷發展的領域,它將ML功能整合到微控制器等資源和功耗受限的設備中,通常采用深度神經網絡。然后,這些微控制器設備可以運行ML模型,在邊緣進行有價值的工作。以下幾個用例中的tinyML非常值得關注。

第一個用例常見于許多移動設備和家庭自動化設備,即關鍵詞識別。通過關鍵詞識別,嵌入式設備可以使用麥克風捕獲語音并檢測預先訓練的關鍵詞。tinyML模型使用表示語音的時間序列輸入,將其轉換為語音特征,通常為頻譜圖,其中包含隨時間變化的頻率信息。然后,將頻譜圖輸入經過訓練的神經網絡,以檢測特定的字詞,結果就是檢測到特定字詞的概率。圖1顯示了這個過程的示例。

wKgZomUD3GaAWiBTAABWBtQkMlk196.jpg

圖1:關鍵詞識別是tinyML的有趣用例。輸入的語音被轉換為頻譜圖,然后輸入經過訓練的神經網絡,以確定是否有預先訓練的字詞。(圖片來源:Arm?)

許多嵌入式環境開發人員感興趣的另一個tinyML用例為圖像識別。微控制器從攝像頭捕獲圖像,然后將其輸入預先訓練的模型。模型可以辨別圖中的內容。例如,模型可以確定是否有貓、狗或者魚等等。圖像識別用于邊緣的一個很好的例子是視頻門鈴。視頻門鈴通常可以檢測門口是否有人,或者是否有放下的包裹。

最后一個非常常見的用例是用tinyML進行預見性維護。預見性維護使用ML基于異常檢測、分類算法和預測模型來預測設備狀態。同樣,從HVAC系統到工廠車間設備,應用非常廣泛。

盡管上述三個用例是目前常見的tinyML,但開發人員無疑還可以找到更多潛在的用例。以下是相關應用的列表:

手勢分類

異常檢測

模擬量表讀取器

指導和控制 (GNC)

包裝檢測

無論哪個用例,開始熟悉tinyML的最好方法是使用“Hello World”應用,它可以幫助開發人員學習和理解實現并運行一個最基礎的系統所遵循的基本流程。在STM32微控制器上運行tinyML模型,有5個必要步驟:

1、捕獲數據
2、標記數據
3、訓練神經網絡
4、轉換模型
5、在微控制器上運行模型

捕獲、標記和訓練“Hello World”模型

關于捕獲和標記用于訓練模型所需的數據,開發人員通常有許多選擇。首先,有大量的線上訓練數據庫。開發人員可以搜索他人收集和標記的數據。例如,對于基本的圖像檢測,有CIFAR-10或ImageNet。如需訓練模型來檢測照片中的微笑,也有一個圖像集。從在線數據存儲庫開始顯然是不錯的選擇。

如果所需的數據尚未在互聯網上公開,開發人員也可以生成自己的數據。可以使用Matlab或其他工具來生成數據集。如果不能自動生成數據,也可以手動完成。最后,如果覺得這些都太耗時,也可在互聯網上購買數據集。收集數據往往是最令人興奮和有趣的選擇,但也最費事。

這里探討的“Hello World”示例展示了如何訓練模型來生成正弦波并將其部署到STM32上。這個示例由Pete Warden和Daniel Situnayake整理,當時他們在谷歌開展TensorFlow Lite for Microcontrollers工作。這樣一來,工作變得更容易,因為他們已經整理出了簡單的捕獲、標記和訓練模型的公開教程。可以在Github上找到(點擊此處);打開鏈接后,開發人員應點擊“Run in Google Colab”(在Google Colab中運行)按鈕。Google Colab是Google Collaboratory的簡稱,它允許開發人員在瀏覽器中編寫和執行Python,無需配置,并提供對Google GPU的免費訪問。

瀏覽訓練示例將輸出兩個不同的模型文件;一個是為微控制器量化的model.tflite TensorFlow模型,一個是沒有量化的model_no_quant.tflite模型。量化可以表明如何以數字方式存儲模型的激活和偏置。量化后可以得到更小的模型,更適合于微控制器。好奇的讀者可以在圖2中查看訓練過的模型結果與實際正弦波結果的對比。模型的輸出以紅色顯示。正弦波輸出并不完美,但對“Hello World”程序而言,其效果已經很好了。

wKgZomUD3GiAfdR1AABX5FVxXAY183.jpg

圖2:TensorFlow模型正弦波預測與實際值的對比。(圖片來源:Beningo Embedded Group)

選擇開發板

在研究如何轉換TensorFlow模型以便在微控制器上運行之前,需要選擇該模型中部署的微控制器。本文將重點介紹STM32微控制器,因為STMicroelectronics公司有許多tinyML/ML工具,可以很好地轉換和運行模型。此外,STMicroelectronics有多種與其ML工具兼容的元器件(圖3)。

wKgaomUD3GmAH5J6AAC5mki5xek257.jpg

圖3:圖示為STMicroelectronics AI生態系統目前支持的微控制器和微處理器單元(MPU)。(圖片來源:STMicroelectronics)

如果辦公室里有這樣一塊開發板,就非常適合啟動和運行“Hello World”應用。然而,如果對本例之外的應用感興趣,想要了解手勢控制或關鍵詞識別,可以選擇STM32 B-L4S5I-IOT01A開發套件物聯網節點(圖4)。

該開發板帶有STM32L4+系列Arm Cortex?-M4處理器。該處理器有2MB閃存和640KB RAM,為tinyML模型提供了充足的空間。該模塊還帶有STMicroelectronics的MP34DT01微機電系統 (MEMS) 麥克風,可用于關鍵詞識別的應用開發,適用于tinyML用例實驗。此外,同樣來自STMicroelectronics的板載LIS3MDLTR三軸加速計,可用于基于tinyML的手勢檢測。

wKgZomUD3GuAd0PDAAF-thlE0eo941.jpg

圖4:STM32 B-L4S5I-IOT01A開發套件物聯網節點搭載Arm Cortex-M4處理器、MEMS麥克風和三軸加速計,是適應性tinyML實驗平臺。(圖片來源:STMicroelectronics)

使用STM32Cube.AI轉換和運行TensorFlow Lite模型

憑借可以運行tinyML模型的開發板,開發人員現在可以開始對TensorFlow Lite模型進行轉換,以便在微控制器上運行。TensorFlow Lite模型可以直接在微控制器上運行,但需要一個運行時環境來處理它。

運行模型時,需要執行一系列的功能。這些功能首先收集傳感器數據,然后篩選,提取必要特征,并反饋給模型。該模型輸出結果,然后對結果進一步篩選,通常還會再進行一些操作。圖5顯示了該過程的概況。

wKgaomUD3GyABOpgAABOKqEk0gA652.jpg

圖5:數據如何從傳感器流向運行時,再到tinyML應用的輸出。(圖片來源:Beningo Embedded Group)

STM32CubeMx的X-CUBE-AI插件提供了解釋TensorFlow Lite模型的運行時環境,并提供了開發人員可以利用的替代運行時和轉換工具。X-CUBE-AI插件在項目中默認不啟用。然而,在創建新項目并初始化電路板后,在Software Packs-> Select Components(軟件包-> 選擇組件)下,有一個啟用AI運行時的選項。這里有幾個選項;確保本例中使用的是Application模板,如圖6所示。

wKgZomUD3G2AIJRxAACkayUUNdU843.jpg

圖6:X-CUBE-AI插件需要使用本例的應用模板來啟用。(圖片來源:Beningo Embedded Group)

啟用X-CUBE-AI后,STMicroelectronics X-CUBE-AI類別將出現在工具鏈中。點擊該類別,開發人員能選擇自己創建的模型文件并設置模型參數,如圖7所示。可通過分析按鈕對模型進行分析,并為開發人員提供RAM、ROM和執行周期信息。強烈建議開發人員比較Keras和TFLite模型選項。在較小的正弦波模型示例中,沒有顯著差異,但卻可以發現其中的區別。點擊“Generate code”(生成代碼)可生成該項目。

wKgaomUD3HCAPv0RAADXLI6HXQE951.jpg

圖7:分析按鈕為開發人員提供RAM、ROM和執行周期信息。(圖片來源:Beningo Embedded Group)

代碼生成器將初始化項目,并為tinyML模型構建運行時環境。但默認情況下,不會為模型提供輸入。開發人員需要添加代碼,為模型提供輸入值 — x值,模型將解釋該值并生成正弦y值。如圖8所示,需要在acquisition_and_process_data和post_process函數中增加幾段代碼。

wKgZomUD3HGAOpdlAABeRUUPfy0910.jpg

圖8:所示代碼將連接偽輸入傳感器值到正弦波模型。(圖片來源:Beningo Embedded Group)

此時,本例運行就緒。注意:添加一些printf語句來獲取模型輸出,以便快速驗證。快速編譯和部署能讓“Hello World”tinyML 模型運行。獲取整個周期的模型輸出得到圖9所示的正弦波。它并不完美,但對于首個tinyML應用來說非常優秀。由此,開發人員可以將輸出與脈沖寬度調制器 (PWM) 聯結起來,并產生正弦波。

wKgZomUD3HOAI2ECAABXU-7lVRg129.jpg

圖9:在 STM32上運行時的“Hello World”正弦波模型輸出。(圖片來源:Beningo Embedded Group)

嵌入式系統上的ML技巧和竅門

開發人員若要在基于微控制器的系統上開始使用ML,需要做相當多的工作,才能讓自己的首個tinyML應用運行起來。然而,記住幾個“技巧和竅門”,可以簡化和加快其開發:

瀏覽TensorFlow Lite for Microcontrollers的“Hello World”示例,包括Google Colab文件。花點兒時間調整參數,了解這些參數對經過訓練的模型的影響。

在微控制器應用中使用量化模型。量化模型經過壓縮,可以使用uint8_t而非32位浮點數。因此,該模型更小,執行速度更快。

了解TensorFlow Lite for Microcontrollers資源庫中的其他示例。其他示例包括手勢檢測和關鍵詞檢測。

以“Hello World”為例,將模型輸出連接到PWM和低通濾波器上,以查看產生的正弦波。執行運行時實驗,增加和減少正弦波頻率。

選擇包括“額外”傳感器的開發板,以便嘗試廣泛的ML應用。

盡管收集數據很有趣,但一般來說,購買或使用開源數據庫來訓練模型更容易。

開發人員遵循這些“技巧和竅門”,可以在確保應用安全的同時節省更多的時間并省去更多的麻煩。

本文小結

機器學習已經蔓延至網絡邊緣,而基于資源受限微控制器的系統是其主要目標。最新的工具可以轉換和優化機器學習模型,以在實時系統上運行。如圖所示,在STM32開發板上實現和運行模型相對容易,但也會涉及復雜性問題。雖然只探討了產生正弦波的簡單模型,但也可以實現更復雜的模型,如手勢檢測和關鍵詞識別。

來源:得捷電子DigiKey
免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯系小編進行處理

審核編輯 黃宇

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

    關注

    147

    文章

    18924

    瀏覽量

    398005
  • STM32
    +關注

    關注

    2309

    文章

    11162

    瀏覽量

    373404
  • 模型
    +關注

    關注

    1

    文章

    3751

    瀏覽量

    52099
  • ML
    ML
    +關注

    關注

    0

    文章

    154

    瀏覽量

    35476
  • 機器學習
    +關注

    關注

    66

    文章

    8553

    瀏覽量

    136928
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    強化學習自動駕駛模型學習更快嗎?

    機器通過“試錯”學會決策的辦法。與監督學習不同,監督學習是有人提供示范答案,
    的頭像 發表于 01-31 09:34 ?641次閱讀
    強化<b class='flag-5'>學習</b>會<b class='flag-5'>讓</b>自動駕駛<b class='flag-5'>模型</b><b class='flag-5'>學習</b>更快嗎?

    如何在NVIDIA Jetson AGX Thor上部署1200億參數大模型

    期介紹了如何在 NVIDIA Jetson AGX Thor 上使用 Docker 部署 vLLM 推理服務,以及使用 Chatbox 作為前端調用 vLLM 運行的模型(上期文章鏈接)。本期
    的頭像 發表于 12-26 17:06 ?4799次閱讀
    如何在NVIDIA Jetson AGX Thor<b class='flag-5'>上部署</b>1200億參數大<b class='flag-5'>模型</b>

    1 GHz Arm? Cortex?-M85 MCU上部署AI模型

    本文將手把手帶你實現實時人臉檢測,并將完整流程開源。打通從數據采集、模型訓練、量化轉換,到集成部署的每個環節。我們已為準備好了數據集、訓練代碼、轉換工具鏈與RT-Thread工程。
    的頭像 發表于 12-02 21:04 ?9198次閱讀
    1 GHz Arm? Cortex?-M85 <b class='flag-5'>MCU</b><b class='flag-5'>上部署</b>AI<b class='flag-5'>模型</b>

    套聽聲辯位的算法,并在板機上部署

    套聽聲辯位的算法,并在板機上部署。有謝。
    發表于 11-10 23:07

    如何快速在云服務器上部署Web環境?

    如何快速在云服務器上部署Web環境
    的頭像 發表于 10-14 14:16 ?656次閱讀

    DeepSeek模型如何在云服務器上部署

    隨著大型語言模型(LLM)的應用日益普及,許多開發者和企業希望將像DeepSeek這樣的優秀模型部署到自己的云服務器上,以實現私有化、定制化服務并保障數據安全。本文將詳細闡述部署Dee
    的頭像 發表于 10-13 16:52 ?935次閱讀

    Arm方案 基于Arm架構的邊緣側設備(樹莓派或 NVIDIA Jetson Nano)上部署PyTorch模型

    本文將為展示如何在樹莓派或 NVIDIA Jetson Nano 等基于 Arm 架構的邊緣側設備上部署 PyTorch 模型
    的頭像 發表于 07-28 11:50 ?2871次閱讀

    stm32N657上部署cubeAI生成代碼,編譯出錯的原因?怎么解決?

    你好,要怎么在stm32N657上部署cubeAI生成代碼呢,編譯出錯,我使用cubeAI生成的手寫數字模型的代碼,編譯報錯 要怎么配置呢,我看其他AI demo都是分了兩個文件,這里要怎么燒錄進去使用呢?
    發表于 06-20 06:31

    邊緣計算中的機器學習:基于 Linux 系統的實時推理模型部署與工業集成!

    你好,旅行者!歡迎來到Medium的這角落。在本文中,我們將把機器學習模型(神經網絡)部署
    的頭像 發表于 06-11 17:22 ?993次閱讀
    邊緣計算中的<b class='flag-5'>機器</b><b class='flag-5'>學習</b>:基于 Linux 系統的實時推理<b class='flag-5'>模型</b><b class='flag-5'>部署</b>與工業集成!

    機器學習賦能的智能光子器件系統研究與應用

    騰訊會議---六月直播 1.機器學習賦能的智能光子器件系統研究與應用 2.COMSOL聲學多物理場仿真技術與應用 3.超表面逆向設計及前沿應用(從基礎入門到論文復現) 4.智能光學計
    的頭像 發表于 06-04 17:59 ?635次閱讀
    <b class='flag-5'>機器</b><b class='flag-5'>學習</b>賦能的智能光子<b class='flag-5'>學</b>器件系統研究與應用

    在V2板子上部署豆包模型調試指南

    在V2板子上部署豆包模型調試指南 準備階段 首先,可以觀看大模型實戰(SC171開發套件V3)并下載工程源碼,之后我們需要在板子上安裝這個代碼所要用到的些庫。 pip3 instal
    發表于 05-25 10:17

    如何使用Docker部署模型

    隨著深度學習和大模型的快速發展,如何高效地部署這些模型成為了個重要的挑戰。Docker 作為
    的頭像 發表于 05-24 16:39 ?1112次閱讀

    RAKsmart企業服務器上部署DeepSeek編寫運行代碼

    在RAKsmart企業服務器上部署并運行DeepSeek模型的代碼示例和詳細步驟。假設使用 Python + Transformers庫 + FastAPI實現個基礎的AI服務。主機推薦小編為您整理發布RAKsmart企業服務
    的頭像 發表于 03-25 10:39 ?697次閱讀

    請問STM32部署機器學習算法硬件至少要使用哪個系列的芯片?

    STM32部署機器學習算法硬件至少要使用哪個系列的芯片?
    發表于 03-13 07:34

    基于stm32h743IIK在cubeai上部署keras模型模型輸出結果都是同組概率數組,為什么?

    基于stm32h743IIK,在cubeai上部署keras模型模型輸出結果都是同組概率數組,
    發表于 03-10 06:42