從歷史上看,人工智能 (AI) 是一種 GPU / CPU 甚至 DSP 依賴的技術(shù)。然而,最近人工智能正在通過集成到運行在較小微控制器(也稱為 MCU)上的受限應(yīng)用程序中來進入數(shù)據(jù)采集系統(tǒng)。這一趨勢主要由物聯(lián)網(wǎng) (IoT) 市場推動,Silicon Labs 是其中的主要參與者。
為了應(yīng)對這一新的物聯(lián)網(wǎng)趨勢,Silicon Labs 宣布推出一款可以執(zhí)行硬件加速 AI 操作的無線 MCU。為了實現(xiàn)這一點,該 MCU 設(shè)計為嵌入矩陣矢量處理器 (MVP),即 EFR32xG24。
在本文中,我將首先介紹一些 AI 基礎(chǔ)知識,重點介紹 MVP 的用例。最重要的是,如何使用 EFR32xG24 設(shè)計 AI IoT 應(yīng)用程序。
人工智能、機器學(xué)習(xí)和邊緣計算
人工智能是一個試圖模仿人類行為的系統(tǒng)。更具體地說,它是一種電氣和/或機械實體,可以模擬對輸入的響應(yīng),類似于人類會做的事情。盡管術(shù)語 AI 和機器學(xué)習(xí) (ML) 經(jīng)常互換使用,但它們代表了兩種不同的方法。AI 是一個更廣泛的概念,而 ML 是 AI 的一個子集。
使用機器學(xué)習(xí),系統(tǒng)可以在重復(fù)使用所謂的模型后做出預(yù)測并改進(或訓(xùn)練)自身。模型是使用經(jīng)過訓(xùn)練的算法,最終將用于模擬決策。可以通過收集數(shù)據(jù)或使用現(xiàn)有數(shù)據(jù)集來訓(xùn)練該模型。當該系統(tǒng)將其“訓(xùn)練過的”模型應(yīng)用于新獲取的數(shù)據(jù)以做出決策時,我們將其稱為機器學(xué)習(xí)推理。
如前所述,推理需要通常由高端計算機處理的計算能力。但是,我們現(xiàn)在能夠在不需要連接到此類高端計算機的更多受限設(shè)備上運行推理;這稱為邊緣計算。
通過在 MCU 上運行推理,可以考慮執(zhí)行邊緣計算。邊緣計算涉及在距離獲取數(shù)據(jù)的最近點運行數(shù)據(jù)處理算法。邊緣設(shè)備的示例通常是簡單且受限的設(shè)備,例如傳感器或基本執(zhí)行器(燈泡、恒溫器、門傳感器、電表等)。這些設(shè)備通常在低功耗 ARM Cortex-M 類 MCU 上運行:
執(zhí)行邊緣計算有很多好處。可以說,最有價值的好處是使用邊緣計算的系統(tǒng)不依賴于外部實體。設(shè)備可以在本地“做出自己的決定”。
在本地進行決策具有以下實際好處:
-
提供更低的延遲
原始數(shù)據(jù)不需要傳輸?shù)皆贫诉M行處理,這意味著決策可以實時出現(xiàn)在設(shè)備上。 -
減少所需的互聯(lián)網(wǎng)帶寬
傳感器會產(chǎn)生大量實時數(shù)據(jù),這反過來又會產(chǎn)生對帶寬的大量需求,即使沒有什么可“報告”,從而使無線頻譜飽和并增加運行成本。 -
降低功耗
與傳輸數(shù)據(jù)相比,本地分析數(shù)據(jù)(使用 AI)所需的功率要少得多 -
符合隱私和安全要求
通過在本地做出決策,無需將詳細的原始數(shù)據(jù)發(fā)送到云端,只需將推理結(jié)果和元數(shù)據(jù)發(fā)送到云端,從而消除了數(shù)據(jù)隱私泄露的可能性。 -
降低成本
在本地分析傳感器數(shù)據(jù)可以節(jié)省使用云基礎(chǔ)設(shè)施和流量的費用。 -
提高彈性
如果與云的連接中斷,邊緣節(jié)點仍可以自主運行。
Silicon Labs 用于邊緣計算的 EFR32xG24
EFR32xG24 是一款安全無線 MCU,支持多種 2.4 GHz IoT 協(xié)議(藍牙低功耗、Matter、Zigbee 和 OpenThread 協(xié)議)。它還包括 Secure Vault,這是一種改進的安全功能集,適用于所有 Silicon Labs Series 2 平臺。
但是,除了改進了該 MCU 獨有的安全性和連接性之外,還有一個用于機器學(xué)習(xí)模型推理的硬件加速器(以及其他加速器),稱為矩陣矢量處理器 (MVP)。
與沒有硬件加速的 ARM Cortex-M 相比,MVP 提供了更高效地運行機器學(xué)習(xí)推理的能力,功耗降低了 6 倍,速度提高了 2-4 倍(實際改進取決于模型和應(yīng)用程序)。
MVP 旨在通過處理密集的浮點運算來卸載 CPU。它專為復(fù)雜的矩陣浮點乘法和加法而設(shè)計。
MVP 由專用硬件算術(shù)邏輯單元 (ALU)、加載/存儲單元 (LSU) 和定序器組成。
因此,MVP 有助于加速各種應(yīng)用程序的處理并節(jié)省功耗,例如到達角 (AoA)、MUSIC 算法計算、機器學(xué)習(xí)(本征或基本線性代數(shù)子程序 BLAS)等。
由于該設(shè)備是一個簡單的 MCU,它無法解決 AI/ML 可以涵蓋的所有用例。它旨在解決下面列出的以下四個類別以及實際應(yīng)用:
-
傳感器信號處理
- 預(yù)測性維護
- 生物信號分析
- 冷鏈監(jiān)控
- 加速度計用例
-
音頻模式匹配
- 玻璃破碎檢測
- 鏡頭檢測
-
語音命令
- 智能家電的文字命令集
- 喚醒詞檢測
-
低分辨率視覺
- 存在檢測
- 數(shù)數(shù)
- 指紋
為了幫助解決這些問題,Silicon Labs 提供了基于稱為 TensorFlow 的 AI/ML 框架的專用示例應(yīng)用程序。
TensorFlow 是來自 Google 的用于機器學(xué)習(xí)的端到端開源平臺。它擁有一個由工具、庫和社區(qū)資源組成的全面、靈活的生態(tài)系統(tǒng),使研究人員能夠推動 ML 的最新技術(shù),開發(fā)人員可以輕松構(gòu)建和部署 ML 驅(qū)動的應(yīng)用程序。
Tensor Flow 項目還針對嵌入式硬件變體進行了優(yōu)化,稱為 TensorFlow Lite for Microcontrollers (TFLM)。這是一個開源項目,其中大部分代碼由社區(qū)工程師貢獻,包括 Silicon Labs 和其他芯片供應(yīng)商。目前,這是與 Silicon Labs Gecko SDK 軟件套件一起交付的用于創(chuàng)建 AI/ML 應(yīng)用程序的唯一框架。
Silicon Labs 提供的 AI/ML 示例有:
- Zigbee 3.0 帶語音激活的電燈開關(guān)
- 張量流魔棒
- 聲控 LED
- 張量流 Hello world
- 張量流微演講
要開始開發(fā)基于其中任何一個的應(yīng)用程序,您可以有很少的經(jīng)驗,或者您可以成為專家。Silicon Labs 提供多種機器學(xué)習(xí)開發(fā)工具供您選擇,具體取決于您的機器學(xué)習(xí)專業(yè)水平。
對于第一次 ML 開發(fā)人員,您可以從我們的一個示例開始,或者嘗試我們的第 3 方合作伙伴之一。我們的第 3 方 ML 合作伙伴通過功能豐富且易于使用的 GUI 界面支持完整的端到端工作流程,以便為我們的芯片構(gòu)建最佳機器學(xué)習(xí)模型。
對于希望直接使用 Keras/TensorFlow 平臺的 ML 專家,Silicon Labs 提供了一個自助式、自助式的參考包,將模型開發(fā)工作流程組織成一個專為為 Silicon Labs 芯片構(gòu)建 ML 模型而定制的工作流程。
開發(fā)支持 ML 的應(yīng)用示例:采用 EFR32xG24 的語音控制 Zigbee 開關(guān)
要創(chuàng)建支持 ML 的應(yīng)用程序,需要兩個主要步驟。第一步是創(chuàng)建一個無線應(yīng)用程序,您可以使用 Zigbee、BLE、Matter 或任何基于 2.4 GHz 協(xié)議的專有應(yīng)用程序來完成。它甚至可以是未連接的應(yīng)用程序。第二步是構(gòu)建 ML 模型以將其與應(yīng)用程序集成。
如上所述,Silicon Labs 提供了多種選項來為其 MCU 創(chuàng)建 ML 應(yīng)用程序。此處選擇的方法是使用具有預(yù)定義模型的現(xiàn)有示例應(yīng)用程序。在這個例子中,模型被訓(xùn)練來檢測兩個語音命令:“on”和“off”。
EFR32xG24 應(yīng)用程序入門
![]() ![]() |
要開始使用,請獲取 EFR32MG24 開發(fā)人員套件 BRD2601A(左)。 該開發(fā)套件是一個緊湊型電路板,嵌入了多個傳感器(IMU、溫度、相對濕度等)、LED 和 Stereo I 2 S 麥克風。 該項目將使用 I 2 S 麥克風。 這些設(shè)備可能不像 GPU 那樣稀有,但如果您沒有機會獲得這些套件之一,您還可以使用基于系列 1 的舊開發(fā)套件,稱為“Thunderboard Sense 2”參考。SLTB004A(右)。 但是,此 MCU 沒有 MVP,將使用主內(nèi)核執(zhí)行所有推理,無需加速。 |
![]() ![]() |
接下來,您需要 Silicon Labs 的 IDE Simplicity Studio 來創(chuàng)建 ML 項目。它提供了一種下載 Silicon Labs 的 Gecko SDK 軟件套件的簡單方法,該套件提供了應(yīng)用程序所需的庫和驅(qū)動程序,如下所示。
- 無線網(wǎng)絡(luò)堆棧(本例中為 Zigbee)
- 硬件驅(qū)動程序(用于 I2S 麥克風以及 MVP)
- TensorFlow Lite 框架
- 一個已經(jīng)訓(xùn)練過的用于檢測命令詞的模型
IDE 還提供工具來進一步分析您的應(yīng)用程序功耗或網(wǎng)絡(luò)操作。
創(chuàng)建啟用 MVP 的 Zigbee 3.0 Switch 項目
Silicon Labs 提供了一個即用型示例應(yīng)用程序 Z3SwitchWithVoice,您將創(chuàng)建和構(gòu)建該應(yīng)用程序。該應(yīng)用程序已經(jīng)附帶了一個 ML 模型,因此您無需創(chuàng)建一個。
創(chuàng)建后,請注意 Simplicity Studio 項目由組件帶來的源文件組成,這些組件是 GUI 實體,通過簡化復(fù)雜軟件的集成,可以輕松使用 Silicon Labs 的 MCU。在這種情況下,您可以看到默認安裝了 MVP 支持和 Zigbee 網(wǎng)絡(luò)堆棧。
主要應(yīng)用程序代碼位于 app.c 源文件中。
在網(wǎng)絡(luò)方面,應(yīng)用程序可以通過一個簡單的按鈕與任何現(xiàn)有的 Zigbee 3.0 網(wǎng)絡(luò)配對,也稱為“網(wǎng)絡(luò)轉(zhuǎn)向”。聯(lián)網(wǎng)后,MCU 將尋找兼容且可配對的照明設(shè)備,也稱為“綁定”。
當應(yīng)用程序的網(wǎng)絡(luò)部分啟動并運行時,MCU 將定期輪詢麥克風數(shù)據(jù)樣本并在其上運行推理。此代碼位于keyword_detection.c 中。
() { found_command_index = 0; 分數(shù) = 0; is_new_command = ; current_time_stamp; current_time_stamp = sl_sleeptimer_tick_to_ms(sl_sleeptimer_get_tick_count()); TfLiteStatus process_status = command_recognizer->ProcessLatestResults( sl_tflite_micro_get_output_tensor(), current_time_stamp, &found_command_index, &score, &is_new_command); (process_status != ) { SL_STATUS_FAIL; } (is_new_command) { (found_command_index == 0 || found_command_index == 1) { printf( , kCategoryLabels[found_command_index], 分數(shù),current_time_stamp); 檢測到的關(guān)鍵字(found_command_index); } } SL_STATUS_OK; }
檢測到關(guān)鍵字后,app.c 中的處理程序?qū)l(fā)送相應(yīng)的 Zigbee 命令:
{ 狀態(tài); (emberAfNetworkState()==){ emberAfGetCommandApsFrame()-> = SWITCH_ENDPOINT; (detected_keyword_index == 0) { emberAfFillCommandOnOffClusterOn(); } (detected_keyword_index == 1) { emberAfFillCommandOnOffClusterOff(); } 狀態(tài) = emberAfSendCommandUnicastToBindings(); sl_zigbee_app_debug_print( , , status); } }
此時,您已在無線 MCU 上運行硬件加速推理以進行邊緣計算。
自定義 TensorFlow 模型以使用不同的命令詞
如前所述,實際模型已經(jīng)集成到該應(yīng)用程序中,并且沒有進一步修改。但是,如果您自己集成模型,則可以通過以下步驟進行:
- 收集和標記數(shù)據(jù)
- 設(shè)計和構(gòu)建模型
- 評估和驗證模型
- 為嵌入式設(shè)備轉(zhuǎn)換模型
無論您對機器學(xué)習(xí)多么熟悉,都必須遵循這些步驟。不同之處在于如何構(gòu)建模型,如下所示:
- 如果您是 ML 的初學(xué)者,Silicon Labs 建議使用我們易于使用的端到端第三方合作伙伴平臺之一:Edge Impulse 或 SensiML 來構(gòu)建您的模型。
- 如果您是 Keras/TensorFlow 方面的專家并且不想使用第三方工具,您可以使用機器學(xué)習(xí)工具包 (MLTK),它是一個自助式、自助式的 Python 包。Silicon Labs 圍繞音頻用例創(chuàng)建了這個參考包,可以擴展、修改或以其他方式挑選專家認為有吸引力的部分。該包將在 GitHub 上提供,附帶文檔。您也可以直接導(dǎo)入一個 .tflite 文件,該文件在 TensorFlow lite 的嵌入式版本上運行,用于為 EFR32 產(chǎn)品線進行微編譯。您必須確保數(shù)據(jù)上的特征提取對于訓(xùn)練模型與在目標芯片上運行推理完全相同。
在 Simplicity Studio 中,后者是最簡單的。要在 Simplicity Studio 中更改模型,請將 .tflite 模型文件復(fù)制到項目的 config/tflite 文件夾中。項目配置器提供了一個工具,可以自動將 .tflite 文件轉(zhuǎn)換為 sl_ml_model 源文件和頭文件。此工具的完整文檔可在Flatbuffer Conversion獲得。
[注意:所有圖片和代碼均由 Silicon Labs 提供。]
審核編輯 黃昊宇
-
mcu
+關(guān)注
關(guān)注
146文章
17423瀏覽量
353647
發(fā)布評論請先 登錄
相關(guān)推薦
如何在低功耗MCU上實現(xiàn)人工智能和機器學(xué)習(xí)
什么是機器學(xué)習(xí)?通過機器學(xué)習(xí)方法能解決哪些問題?

NPU與機器學(xué)習(xí)算法的關(guān)系
FPGA加速深度學(xué)習(xí)模型的案例
AI引擎機器學(xué)習(xí)陣列指南

在TM4C MCU上使用FreeRTOS開發(fā)高級應(yīng)用

基于機器學(xué)習(xí)的IWR6843AOP跌倒和姿態(tài)檢測實現(xiàn)

MCU如何實現(xiàn)AI功能
深度學(xué)習(xí)與傳統(tǒng)機器學(xué)習(xí)的對比
MCX N系列微控制器適用于安全、智能的電機控制和機器學(xué)習(xí)應(yīng)用
請問PSoC? Creator IDE可以支持IMAGIMOB機器學(xué)習(xí)嗎?
英飛凌最新的帶神經(jīng)加速的汽車MCU系列 AURIX TC4x微控制器

NVIDIA Isaac機器人平臺升級,加速AI機器人技術(shù)革新
機器學(xué)習(xí)8大調(diào)參技巧

評論