如何在 STM32 微控制器上運行“Hello World”機器學(xué)習模型

發(fā)布時(shí)間:2022-8-29 10:06    發(fā)布者:eechina
關(guān)鍵詞: STM32 , 微控制器 , 機器學(xué)習
來(lái)源:Digi-Key
作者:Jacob Beningo

機器學(xué)習 (ML) 在服務(wù)器和移動(dòng)應用中已經(jīng)風(fēng)靡多年,現在這種趨勢已蔓延到邊緣設備,并且變得突出。由于邊緣設備需要節能,因此開(kāi)發(fā)人員需要學(xué)習和了解如何將 ML 模型部署到基于微控制器的系統中。在微控制器上運行的 ML 模型通常被稱(chēng)為 tinyML。然而,將模型部署到微控制器并非易事,但它正在變得越來(lái)越容易,沒(méi)有經(jīng)過(guò)任何專(zhuān)業(yè)培訓的開(kāi)發(fā)人員也能在規定時(shí)間完成部署。

本文探討了嵌入式環(huán)境開(kāi)發(fā)人員如何通過(guò) STMicroelectronics 的 STM32 微控制器開(kāi)始使用 ML。為此,文中展示了如何通過(guò) X-CUBE-AI 將 TensorFlow Lite for Microcontrollers 模型轉換用于 STM32CubeIDE,來(lái)創(chuàng )建“Hello World”應用。

tinyML 用例介紹

TinyML 是一個(gè)不斷增長(cháng)的領(lǐng)域,它將 ML 功能整合到微控制器等資源和功耗受限的設備中,通常采用深度神經(jīng)網(wǎng)絡(luò )。然后,這些微控制器設備可以運行 ML 模型,在邊緣進(jìn)行有價(jià)值的工作。以下幾個(gè)用例中的 tinyML 非常值得關(guān)注。

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


圖 1:關(guān)鍵詞識別是 tinyML 的有趣用例。輸入的語(yǔ)音被轉換為頻譜圖,然后輸入經(jīng)過(guò)訓練的神經(jīng)網(wǎng)絡(luò ),以確定是否有預先訓練的字詞。(圖片來(lái)源:Arm®)

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

最后一個(gè)非常常見(jiàn)的用例是用 tinyML 進(jìn)行預見(jiàn)性維護。預見(jiàn)性維護使用 ML 基于異常檢測、分類(lèi)算法和預測模型來(lái)預測設備狀態(tài)。同樣,從 HVAC 系統到工廠(chǎng)車(chē)間設備,應用非常廣泛。

盡管上述三個(gè)用例是目前常見(jiàn)的 tinyML,但開(kāi)發(fā)人員無(wú)疑還可以找到更多潛在的用例。以下是快捷列表:

· 手勢分類(lèi)
· 異常檢測
· 模擬量表讀取器
· 指導和控制 (GNC)
· 包裝檢測

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

1、捕獲數據
2、標記數據
3、訓練神經(jīng)網(wǎng)絡(luò )
4、轉換模型
5、在微控制器上運行模型

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

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

如果所需的數據尚未在互聯(lián)網(wǎng)上公開(kāi),開(kāi)發(fā)人員也可以生成自己的數據?梢允褂 Matlab 或其他工具來(lái)生成數據集。如果不能自動(dòng)生成數據,也可以手動(dòng)完成。最后,如果覺(jué)得這些都太耗時(shí),也可在互聯(lián)網(wǎng)上購買(mǎi)數據集。收集數據往往是最令人興奮和有趣的選擇,但也最費事。

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

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


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

選擇開(kāi)發(fā)板

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


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

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

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


圖 4:STM32 B-L4S5I-IOT01A 開(kāi)發(fā)套件物聯(lián)網(wǎng)節點(diǎn)搭載 Arm Cortex-M4 處理器、MEMS 麥克風(fēng)和三軸加速計,是適應性 tinyML 實(shí)驗平臺。(圖片來(lái)源:STMicroelectronics)

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

憑借可以運行 tinyML 模型的開(kāi)發(fā)板,開(kāi)發(fā)人員現在可以開(kāi)始對 TensorFlow Lite 模型進(jìn)行轉換,以便在微控制器上運行。TensorFlow Lite 模型可以直接在微控制器上運行,但需要一個(gè)運行時(shí)環(huán)境來(lái)處理它。

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


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

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


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

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


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

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


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

此時(shí),本例運行就緒。注意:添加一些 printf 語(yǔ)句來(lái)獲取模型輸出,以便快速驗證?焖倬幾g和部署能讓“Hello World”tinyML 模型運行。獲取整個(gè)周期的模型輸出得到圖 9 所示的正弦波。它并不完美,但對于首個(gè) tinyML 應用來(lái)說(shuō)非常優(yōu)秀。由此,開(kāi)發(fā)人員可以將輸出與脈沖寬度調制器 (PWM) 聯(lián)結起來(lái),并產(chǎn)生正弦波。


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

嵌入式系統上的 ML 技巧和竅門(mén)

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

· 瀏覽 TensorFlow Lite for Microcontrollers 的“Hello World”示例,包括 Google Colab 文件;c(diǎn)兒時(shí)間調整參數,了解這些參數對經(jīng)過(guò)訓練的模型的影響。
· 在微控制器應用中使用量化模型。量化模型經(jīng)過(guò)壓縮,可以使用 uint8_t 而非 32 位浮點(diǎn)數。因此,該模型更小,執行速度更快。
· 了解 TensorFlow Lite for Microcontrollers 資源庫中的其他示例。其他示例包括手勢檢測和關(guān)鍵詞檢測。
· 以“Hello World”為例,將模型輸出連接到 PWM 和低通濾波器上,以查看產(chǎn)生的正弦波。執行運行時(shí)實(shí)驗,增加和減少正弦波頻率。
· 選擇包括“額外”傳感器的開(kāi)發(fā)板,以便嘗試廣泛的 ML 應用。
· 盡管收集數據很有趣,但一般來(lái)說(shuō),購買(mǎi)或使用開(kāi)源數據庫來(lái)訓練模型更容易。

開(kāi)發(fā)人員遵循這些“技巧和竅門(mén)”,可以在確保應用安全的同時(shí)節省更多的時(shí)間并省去更多的麻煩。

總結

ML 已經(jīng)蔓延至網(wǎng)絡(luò )邊緣,而基于資源受限微控制器的系統是其主要目標。最新的工具可以轉換和優(yōu)化 ML 模型,以在實(shí)時(shí)系統上運行。如圖所示,在 STM32 開(kāi)發(fā)板上實(shí)現和運行模型相對容易,但也會(huì )涉及復雜性問(wèn)題。雖然只探討了產(chǎn)生正弦波的簡(jiǎn)單模型,但也可以實(shí)現更復雜的模型,如手勢檢測和關(guān)鍵詞識別。
本文地址:http://selenalain.com/thread-799265-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页