帶來人工智慧和機器學習
“
規格:
- 產品名稱:機器學習擴充SDK 版本 2.1.1
- 發售日期:23 年 2025 月 XNUMX 日
- 框架:適用於微控制器的 TensorFlow Lite(TFLM)
- 支援的設備:Series 2 和 SiWG917 設備
產品資訊:
機器學習擴充 SDK 版本 2.1.1(也稱為
Silicon Labs AI/ML)是 Simplicity SDK 的擴展,
使用
適用於微控制器框架的 Tensorflow Lite。
使用說明:
入門:
- 下載並安裝 Simplicity Studio。
- 安裝機器學習擴充 SDK 版本 2.1.1。
- 請參閱開發者文件以取得設定指南
項目並利用 AI/ML 模型。
影像分類器應用:
SDK 包含一個影像分類器(石頭剪刀布)
xG24 和 xG26 設備的應用程式。要使用圖像
分類器:
- 請按照文件中提供的教學進行操作。
- 確保您的專案設定已正確配置
選定的設備。
API 更改:
SDK 引入了用於模型呼叫和執行的新 API
適用於 SiWG917 晶片系列。要使用這些 API:
- 更新您的程式碼以合併新的 API 呼叫。
- 有關
這些 API 的使用。
常問問題:
Q:機器學習擴充支援哪些設備
SDK 版本 2.1.1?
答:該 SDK 支援用於 AI/ML 的 Series 2 和 SiWG917 設備
發展。
Q:2.1.1 版本新增了哪些主要功能?
擴充 SDK?
答:新增的關鍵功能是新的影像分類器
(石頭剪刀布)xG24 和 xG26 的應用程式和教程
裝置.
「`
機器學習
機器學習
使用機器學習進行開發發行說明入門
機器學習入門 Tensorflow Lite Micro 從 Scratch 開始 語音控制 Light 從 Scratch 開始 語音控制 Light 演示 基礎知識 機器學習基礎知識 MVP 加速器開發人員指南 機器學習開發人員指南 將機器學習添加到新項目或現有項目 更新或替換 .tflite File 開發模型 AI/ML 擴充設定 Flatbuffer 轉換工具 SiWx917 的 I2S 配置 機器學習 API 參考 麥克風 機器學習的 I2S 驅動程式 模型特定函數 模型特定變數與常數 機器音訊特徵產生器 影像特徵產生器 TensorFlow Lite Micro 偵錯 TensorFlow Lite Micro Init 機器音訊功能產生器 影像特徵產生器 TensorFlow Lite Micro 偵錯 TensorFlow Lite Micro Init 機器音訊學習 API 其他特徵產生器 TensorFlow Lite Micro 調試 TensorFlow Lite Micro Init 機器音訊學習 API 其他特徵產生器 TensorFlow Lite Micro 調試 TensorFlow Lite Micro Init 機器音訊學習 API 其他特徵產生器 TensorFlow Lite Micro 調試 TensorFlow Lite Micro Init 機器音訊學習 API 其他特徵產生器 TensorFlow Lite Micro 調試 TensorFlow Lite Micro Init 機器音訊學習 API 其他特徵產生器 TensorFlow Lite Micro 偵錯 TensorFlow Lite Micro Init 機器音訊學習 API 其他主題產生器 TensorFlow Lite Micro 調試 TensorFlow Lite Micro Init 機器音訊學習 API 其他主題產生器amp應用程序
超過view 影像分類器第三方工具和解決方案
版權所有 © 2025 Silicon Laboratories。版權所有。
1/89
利用機器學習進行開發
利用機器學習進行開發
使用 Silicon Labs 機器學習 (AI/ML) 進行開發
機器學習是人工智慧 (AI) 的一個分支,它使系統能夠從資料中學習並提升效能,而無需進行明確的程式設計。它涉及識別模式並根據輸入資料做出決策的演算法。深度學習是機器學習的一個專業分支,它使用多層神經網路來建模複雜模式,並在影像和語音辨識等任務中實現高精度。這些技術共同驅動著從推薦系統到自動駕駛汽車等眾多現代應用。作為更廣泛的人工智慧領域的一部分,機器學習和深度學習是創建能夠適應、推理和智慧行動的系統的關鍵。
版權所有 © 2025 Silicon Laboratories。版權所有。
2/89
利用機器學習進行開發
Silicon Labs 目前支援 TensorFlow Lite for Microcontrollers (TFLM) 和相關軟體作為 SiSDK 的擴展。
版權所有 © 2025 Silicon Laboratories。版權所有。
3/89
利用機器學習進行開發
這些頁面的內容是針對想要嘗試或已經使用 Silicon Labs 技術開發機器學習應用程式的人士。有關 Silicon Labs 機器學習產品的資訊:請參閱 silabs.com 上的產品頁面。有關機器學習的背景知識:基礎知識部分是一個不錯的起點。若要開始開發:請參閱「入門」部分,以了解如何使用範例ample 應用程式。如果您已開始開發:請參閱開發者指南。如果您使用的是機器學習 SDK 1.3.x 或更早版本:請參閱 AI/ML 擴充功能設定指南,了解如何從 AI/ML SDK v1.x 過渡到 v2.x。早期版本作為 SiSDK 的軟體組件獲得支持,現在該堆疊已移至擴展中。如需 Silicon Labs AI/ML 擴充原始碼:請參閱 AI/ML 擴充的 GitHub 連結。
版權所有 © 2025 Silicon Laboratories。版權所有。
4/89
機器學習
機器學習
機器學習 (Silicon Labs AI/ML) 擴充 SDK 版本 2.1.1(2025 年 7 月 23 日)– 發行說明
Simplicity SDK 版本 2025.6.1 機器學習擴充也稱為“Silicon Labs AI/ML”,作為 Simplicity SDK 的擴充功能提供。它支援使用 Tensorflow Lite for Microcontrollers (TFLM) 框架在 Series 2 和 SiWG917 裝置上進行 AI/ML 開發。點擊此處查看早期版本。
發布摘要
主要功能 | API 變更 | 錯誤修復 | 晶片支援
主要特點
2.1.1 版本新增:新增了適用於 xG24 和 xG26 裝置的影像分類器(石頭剪刀布)應用程式和教學。修正了使用 Simplicity Studio 中的「複製內容」功能建立專案時出現的錯誤。
2.1.0 版本新增功能,原始碼已移至擴充。 AI/ML 擴充功能現已正式發布 (GA),之前以 Alpha 版本發布。透過軟體優化,新增了對 SiWG917 晶片系列的支援。機器學習 (AI/ML) 開發者文件已重新整理。
API 變更
2.1.1 中已更改,無。
2.1.0 版本更新:針對 SiWG917 晶片系列,新增了用於模型呼叫和執行的 API。新增了用於與機器學習模型互動的變數。
錯誤修復
2.1.1 中修正了使用 Simplicity Studio 中的「複製內容」功能建立專案時出現的錯誤。
在 2.1.0 中修復了當模型無法正確載入時麥克風的記憶體洩漏。
晶片支援
在 2.1.1 中新增無。
版權所有 © 2025 Silicon Laboratories。版權所有。
5/89
機器學習
已在 2.1.0 EFR32xG2x SiWG917 中加入
主要特點
新功能 | 增強功能 | 已刪除的功能 | 已棄用的功能
注意:請參閱功能列表以取得所有適用 API 的列表,例如amp適用於每個功能的檔案、軟體變體、模式、硬體和主機介面。
新功能
已在 2.1.1 版中新增影像分類器(石頭剪刀布)應用程式和適用於 xG24 和 xG26 裝置的教學課程,請參閱影像分類
2.1.0 版本新增原始碼,已移至 AI/ML 擴充。 SiWG917 晶片系列已啟用音訊應用,詳情請參閱音訊分類器和語音控制燈範例。ampSiWG917 的 le 應用程式。新增了用於 SiWG917 晶片系列模型呼叫和執行的 API,詳情請參閱 API 變更。機器學習 (AI/ML) 開發者文件已重新整理和修訂amp完全協調它與文件最佳實踐,檢查文件中的新路徑。
增強功能
2.1.1 中新增了使用 Simplicity Studio 中的「複製內容」功能建立專案時修復錯誤。
2.1.0 版本新增功能 此版本僅新增了新功能,未對現有功能進行任何增強功能。
已刪除的功能
沒有任何。
已棄用的功能
沒有任何。
API 變更
新的 API | 修改後的 API | 刪除的 API | 棄用的 API
新 API
在 2.1.1 中新增無。
在 2.1.0 中加入
版權所有 © 2025 Silicon Laboratories。版權所有。
6/89
機器學習
新的 API 簽章 sl_status_t sl_ml_ _model_init() sl_status_t sl_ml_ _model_run() 靜態 TfliteMicroModel _model 靜態 sl_status_t _model_status uint8_t* _model_flatbuffer const int _model_flatbuffer_length
修改後的 API
沒有任何。
已刪除的 API
沒有任何。
已棄用的 API
沒有任何。
錯誤修復
已在 2.1.1 修復
ID
問題說明
1479968
修正使用 Simplicity Studio 中的「複製內容」功能建立專案時出現的錯誤。
被此取代的棄用 API(如果有) 無 無 無 無 無 無
GitHub / Salesforce 參考(如果有)無
受影響的軟體變體、硬體、模式、主機接口
標準 EFR32xG2x、SiWG917 SoC
已在 2.1.0 修復
ID
問題說明
1452807
由於缺少資源清理,導致 sl_ml_audio_feature_generation_init() 中發生記憶體洩漏。
GitHub / Salesforce 參考(如果有)無
受影響的軟體變體、硬體、模式、主機接口
標準 EFR32xG2x SoC
晶片支援
在 2.1.1 中新增無。
在 2.1.0 中加入
晶片家族 晶片
OPN/開發板/OPN組合
OPN:EFR32xG2x、SiWG917x 主機板:BRD2601b、BRD2608a、BRD2605a、BRD2705a 外部主機:N/A
支援的軟體版本(如果適用)標準
支持的模式
支援的主機介面
系統
版權所有 © 2025 Silicon Laboratories。版權所有。
7/89
機器學習
應用實例amp變化
新前任amples | 修改後的 Examples | 已刪除 Examples | 棄用的 Examp萊斯
新前任amp萊斯
在 2.1.1 中加入
Examp名稱 描述
影像分類器(石頭剪刀布)
請參閱 readme.md
此應用程式使用 TensorFlow Lite for Microcontrollers 運行影像分類機器學習模型,根據外部攝影機擷取的影像資料對手勢進行分類。偵測結果透過開發板上的 LED 進行視覺化,分類結果寫入 VCOM 串列埠。
支援的軟體版本(如果適用)標準
支持的模式
系統
支援的 OPN/開發板/OPN 組合
OPN:EFR32xG2x 主機板:BRD2601b、BRD2608a 外部主機:N/A
支援的主機介面
在 2.1.0 中加入
Examp名字
描述
SiWG917 的音訊分類器
請參閱 readme.md
SiWG917 語音控制燈
此應用程式使用 TensorFlow Lite for Microcontrollers 運行音訊分類機器學習模型,對麥克風錄製的音訊資料中的單字進行分類。偵測結果透過開發板上的 LED 進行視覺化,分類結果寫入 VCOM 序列埠。此應用程式使用 TensorFlow Lite for Microcontrollers 從麥克風錄製的音訊資料中偵測語音單字「開」和「關」。偵測到的關鍵字用於控制開發板上的 LED。
請參閱 readme.md
支援的軟體版本(如果適用)標準
標準
支持的模式
系統
系統
支援的 OPN/開發板/OPN 組合
OPN:SiWG917x 主機板:BRD2605a 外部主機:N/A
OPN:SiWG917x 主機板:BRD2605a 外部主機:N/A
支援的主機介面
修改版amp萊斯
沒有任何。
刪除前amp萊斯
沒有任何。
已棄用的 Examp萊斯
沒有任何。
已知問題和限制
版權所有 © 2025 Silicon Laboratories。版權所有。
8/89
機器學習
編號 1463269
問題或限制描述:Blink 應用在 Series 2 上執行時的行為與 SiWG917 上有所不同。 SiWG917 上的 LED 閃爍時亮度保持基準值,但在 Series 2 上會完全熄滅。這是由於兩個晶片系列的 LED 驅動器實現方式不同所造成的。
GitHub / Salesforce 參考(如果有)無
1463268 音訊功能產生組件顯示 SiWG917 的無設定錯誤。
1464105
在 Series 2 和 SiWG917 晶片系列上,模型呼叫和執行的 API 呼叫有所不同。
沒有任何
解決方法(如果有)
受影響的軟體變體、硬體、模式、主機接口
暫未實施臨時解決方案。該問題正在調查中,旨在將 SiWG917 上的 LED 磁碟機從軟體 PWM 實作轉換為硬體 PWM 實作。
此問題只是表面問題,我們正在研究修復方案,以便在未來的版本中發布。此問題不會影響 Series 2 專案。
系列 2 採用
sl_ml_model_init()
, 和
sl_tflite_micro_get_interpreter()->呼叫()
分別用於模型呼叫和執行,而 SiWG917 使用
sl_ml_ _model_init()
,
sl_ml_ _model_run()
.
SiWG917M111MGTBA BRD2605a SoC
SiWG917M111MGTBA BRD2605a SoC
SiWG917M111MGTBA BRD2605a SoC
版本變更的影響
影響聲明 | 遷移指南
影響陳述
在 2.1.1 中新增無。
在 2.1.0 中加入
改變
原始碼已移至 AI/ML 擴充
影響
元件從“機器學習”移至“Silicon Labs AI/ML v2.1.0 > 機器學習”
受影響的軟體變體(如果適用)標準
受影響的模式
系統
受影響的 OPN/主機板/OPN 組合
OPN:EFR32xG2x、SiWG917x 主機板:BRD2601b、BRD2608a、BRD2605a、BRD2705a 外部主機:N/A
受影響的主機介面
遷移指南
版權所有 © 2025 Silicon Laboratories。版權所有。
9/89
機器學習
遷移到 AI/ML 擴充
使用此版本
此版本包含哪些內容? | 相容軟體 | 安裝與使用 | 幫助與回饋
此次發布包含哪些內容?
2.1.1 中新增此修補程式版本包括一個新的影像分類器(石頭剪刀布)應用程式和適用於 xG24 和 xG26 裝置的教學課程,並修正了使用 Simplicity Studio 中的「複製內容」功能建立專案時出現的錯誤。
在 2.1.0 中加入
這是第一個將 AI/ML 軟體作為 Simplicity SDK 擴充功能提供的版本。它支援使用 Tensorflow Lite for Microcontrollers (TFLM) 框架的 Silicon Labs 2 系列和 SiWG917 系列設備。此版本的亮點在於 SDK 的性能提升,新增了對 SiWG917 晶片系列的支持,該系列的 SoC 架構與 2 系列設備截然不同。 SiWG917 是一款高效能、低功耗的 Wi-Fi 晶片,非常適合 AI/ML 應用。因此,您的 AI/ML 應用程式現在可以利用 Wi-Fi 連線來運行基於雲端的 AI/ML 應用程式和服務。
相容軟體
在 2.1.1 中加入
軟體軟體開發工具包(SDK)
相容版本或變體
Simplicity SDK:2025.6.1 WiSeConnect SDK:3.5.1
在 2.1.0 中加入
軟體軟體開發工具包(SDK)
相容版本或變體
Simplicity SDK:2025.6.1 WiSeConnect SDK:3.5.1
安裝與使用
在 2.1.1 中加入
若要使用此版本升級您現有的軟體,請從 Studio 安裝管理員將 Simplicity Studio 更新至最新版本,將 SiSDK 更新至 v2025.6.1,將 WiSeConnect SDK 更新至 v3.5.1,並將 AI/ML Extension 更新至 v2.1.1,或從上方「相容軟體」部分列出的對應連結下載 SDK。若要更新 AI/ML Extension,請參閱 AI/ML Extension 設定指南。
在 2.1.0 中加入
若要使用此版本升級您現有的軟體,請從 Studio 安裝管理員將 Simplicity Studio 更新至最新版本,將 SiSDK 更新至 v2025.6.0,將 WiSeConnect SDK 更新至 v3.5.0,並將 AI/ML Extension 更新至 v2.1.0,或從上方「相容軟體」部分列出的對應連結下載 SDK。若要更新 AI/ML Extension,請參閱 AI/ML Extension 設定指南。
要運行您的第一個演示,請參閱我們的入門指南
要開始開發,請參閱我們的開發者指南
有關安全保險庫整合的信息,請參閱安全保險庫。
重新view 安全性和軟體公告通知並管理您的通知偏好:
1. 造訪 https://community.silabs.com/。 2.
版權所有 © 2025 Silicon Laboratories。版權所有。
10/89
機器學習
使用您的帳戶憑證登入。 3. 點選您的專業file 圖示. 4. 從下拉式選單中選擇“通知”。 5. 在「通知」部分,前往「我的產品通知」標籤以重新view 歷史安全和軟體公告通知 6. 若要管理您的偏好設置,請使用「管理通知」標籤自訂您接收的產品更新和公告。
要了解有關此版本軟體的更多信息,請深入了解我們的線上文檔
幫助和回饋
聯絡 Silicon Labs 支援團隊。如需使用我們的 Ask AI 工具取得答案,請查看本頁面頂部的搜尋列。
注意:Ask AI 尚處於實驗階段。
從我們的開發者社群獲得幫助。
特徵矩陣
支援的功能 | 不支援的功能
支援的功能
在 2.1.1 中新增無。
在 2.1.0 中加入
功能名稱 特定於模型的 API
描述用於在裝置上呼叫和執行 AI/ML 模型的特定模型 API。
品質
相關 API 名稱
實驗性的
AI/ML API 參考指南
sl_ml_ _model_init()
sl_ml_ _model_run()
支援的軟體版本、硬體、模式、主機介面
標準 SiWG917 SoC
相關範例amp名字
SiWG917 的音訊分類器 SiWG917 的語音控制燈
聲音的
音訊應用程式已啟用
透過軟體應用 SiWG917
最佳化
實驗性的
標準 SiWG917 SoC
SiWG917 的音訊分類器 SiWG917 的語音控制燈
不支持的功能
在 2.1.1 中新增無。
在 2.1.0 中加入
版權所有 © 2025 Silicon Laboratories。版權所有。
11/89
機器學習
SiWG917 不會直接使用內建的 TensorFlow 元件,而是透過配置器自動產生程式碼來提供支援。第二代設備不支援新的軟體最佳化,但由於其架構特性,其效率仍與 SiWG917 相當,甚至更高。
SDK發布及維護政策
請參閱我們的 SDK 發布和維護政策。
版權所有 © 2025 Silicon Laboratories。版權所有。
12/89
入門
入門
機器學習入門
介紹
Silicon Labs TensorFlow Lite 用於微控制器集成
Silicon Labs 為 TensorFlow Lite for Microcontrollers (TFLM) 提供強大的支持,作為 Simplicity Studio SDK (SiSDK) 的擴展,為開發人員提供靈活的選項,可使用 Simplicity Studio 的專案配置器在 EFx32 和 Si91x 微控制器上部署機器學習模型。本指南介紹如何使用 AIML 擴充將 TensorFlow Lite for Microcontrollers 與 SiSDK 集成,以便在 Silicon Labs 的 EFx32 和 Si91x 裝置上使用。
適用於微控制器的 TensorFlow Lite
TensorFlow 是一個廣泛使用的深度學習框架,能夠在各種平台上開發和執行神經網路。 TensorFlow Lite 提供了一套專門針對行動和嵌入式設備機器學習而最佳化的工具。
TensorFlow Lite for Microcontrollers (TFLM) 專門提供了一個 C++ 函式庫,用於在記憶體受限的嵌入式環境中執行機器學習模型。 Silicon Labs 提供工具和支持,用於載入和運行與該程式庫相容的預訓練模型。
AIML擴充
安裝 Silicon Labs Simplicity Studio 的 AI/ML 擴展
有關安裝 AI/ML 擴充功能的詳細說明,請參閱 AI/ML 擴充安裝指南。此擴充功能使開發人員能夠將機器學習功能整合到基於 Silicon Labs 的專案中。
訓練和量化模型
要在 Silicon Labs 裝置上執行神經網路推理,首先需要一個經過訓練的 TFLite Flatbuffer 格式的模型。對於有 TensorFlow 經驗的開發者,可以考慮兩種方法:
遵循已發布的使用 TensorFlow 訓練神經網路的教程,如“開發模型”中所述。使用 Silicon Labs 的 AI/ML 合作夥伴。更多信息,請參閱 Silicon Labs 物聯網機器學習頁面的“AI/ML 合作夥伴”部分。使用 Silicon Labs 機器學習工具包,這是一個 Python 參考包,它整合並簡化了所有必要的 TensorFlow 訓練步驟。
使用 Simplicity Studio、SiSDK 和 AIML 擴充功能開發推理應用程式
在您擁有經過訓練和量化的 TFLite 模型後,下一步是設定 TFLM 庫以在 Silicon Labs 設備上運行推理。
項目配置器設定
專案配置器包含 TFLM 庫作為軟體元件。這些軟體組件可以添加到任何現有項目中。它們在 SDK 組件中進行了描述。view任何機器學習專案所需的核心組件如下:
1. TensorFlow Lite Micro。這是引入所有 TFLM 依賴項的核心軟體元件。 2. 支援的 TFLM 內核實作。核心是用於特定硬體/平台的低階操作的實現,
TensorFlow。核心選擇可以顯著改變神經網路的效能和計算時間。預設情況下,最佳
版權所有 © 2025 Silicon Laboratories。版權所有。
13/89
入門
自動選擇給定設備的內核實現。 3. 支援的 TFLM 調試記錄器。專案配置器預設使用記錄器的 I/O 流實作。要停用
完全記錄日誌,新增「調試日誌記錄停用」元件。
除了必需的 TFLM 元件外,還可以將用於獲取和預處理感測器資料的軟體元件添加到專案中。例如amp對於音訊應用,Silicon Labs 提供了一個音訊特徵產生器元件,該元件包含強大的 DSP 功能,可從原始音訊資料中過濾和提取特徵,可用作基於麥克風的應用的前端。 Silicon Labs 開發的麥克風、加速度計和其他感測器驅動程式提供了一個簡單的接口,用於獲取感測器資料並將其傳輸到網路。
版權所有 © 2025 Silicon Laboratories。版權所有。
14/89
從 Scratch 開始的 Tensorflow Lite Micro
從 Scratch 開始的 Tensorflow Lite Micro
從零開始在 Silicon Labs 裝置上進行機器學習
本指南假定您熟悉《入門指南》的內容。它詳細介紹如何使用 TensorFlow API,作為 Silicon Labs 提供的自動初始化的替代方案,如《將機器學習添加到新專案》指南中所述。
模型包含
在專案配置器中新增 TensorFlow Lite Micro 元件後,下一步是載入模型 file 到項目中。為此,請複製 .tflite 模型 file 進入專案的 config/tflite 目錄。專案配置器提供了一個工具,可以自動將 .tflite 檔案轉換為 files 進入 sl_tflite_micro_model 來源和頭文件 files. 此工具的完整文件可在 Flatbuffer Converter Tool 取得。若要手動執行此步驟,可以使用 xxd 等工具從 .tflite 檔案建立 C 陣列。
TFLM 初始化與推理
若要實例化並使用 TensorFlow API,請依照下列步驟將 TFLM 功能新增至專案的應用層。本指南嚴格遵循 TFLM 入門指南,並經過改編,適用於 Silicon Labs 的專案。需要特別注意 TensorFlow 所使用的操作。操作是指神經網路層執行的特定類型的計算。所有操作可以一次性包含在專案中,但這樣做可能會顯著增加二進位檔案的大小(>100kB)。更有效率的選擇是僅包含運行特定模型所需的操作。以下步驟將分別介紹這兩種選擇。
0.停用TensorFlow Lite Micro元件提供的自動初始化
若要手動設定 TensorFlow,首先透過在 TensorFlow Lite Micro 元件(sl_tflite_micro_config.h)的配置頭中停用自動初始化模型來停用模型的自動初始化。
1. 包含庫頭文件
如果使用自訂的、有限的操作集(建議):
版權所有 © 2025 Silicon Laboratories。版權所有。
15/89
從 Scratch 開始的 Tensorflow Lite Micro
#include “tensorflow/lite/micro/micro_mutable_op_resolver.h” #include “tensorflow/lite/micro/tflite_bridge/micro_error_reporter.h” #include “tensorflow/lite/micro/micro_interpreter.h” #includetentenflow/lite/schema/lite/micro/micro_intermter.h” #includeten_flow/lite/schema/lite/micro/microi-ma_m.h” #include)flowflow/lite/schema/lite/micro/microin-ma_m/liteh.”!
如果使用所有操作:
#include “tensorflow/lite/micro/all_ops_resolver.h” #include “tensorflow/lite/micro/micro_error_reporter.h” #include “tensorflow/lite/micro/micro_interpreter.h” #include “tensorflow/lite/schema/schema_microversion.”
2. 包含模型頭
由於 autogen/ 資料夾始終包含在專案包含路徑中,因此導入的模型通常可以包含在任何專案來源中 file 和:
#包括“sl_tflite_micro_model.h”
如果不使用 Flatbuffer Converter Tool,請包含 file 包含您的模型定義。
3. 定義一個記憶體區域
TensorFlow 需要一個記憶體區域 (arena),用於在運行時儲存輸入、輸出和中間數組。該區域應靜態分配,其大小取決於所使用的模型。建議在原型設計階段從較大的區域開始。
constexpr int tensor_arena_size = 10 * 1024; uint8_t tensor_arena[tensor_arena_size];
注意:原型設計完成後,建議根據所用模型手動調整記憶體 arena 的大小。模型確定後,先從較大的 arena 大小開始,然後逐步減小,直到解釋器分配(如下所述)失敗。
4. 設定日誌記錄
即使使用了「偵錯日誌記錄已停用」元件,也應執行此操作。建議靜態實例化該元件,並在 app.cpp 中的 app_init() 序列中呼叫記錄器初始化函數。
靜態 tflite::MicroErrorReporter micro_error_reporter;tflite::ErrorReporter* error_reporter = &;微錯誤報告器;
5.加載模型
在 app_init() 序列中繼續,下一步是將模型載入到 tflite 中:
版權所有 © 2025 Silicon Laboratories。版權所有。
16/89
從 Scratch 開始的 Tensorflow Lite Micro
const tflite::Model* model = ::tflite::GetModel(sl_tflite_model_array); 如果 (model->version() != TFLITE_SCHEMA_VERSION) {
TF_LITE_REPORT_ERROR(error_reporter, “提供的模型架構版本 %d 不等於” “支援的版本 %dn”, model->version(), TFLITE_SCHEMA_VERSION);
}
6.實例化操作解析器
如果使用所有操作,這非常簡單。在 app_init() 期間,透過以下方式靜態實例化解析器:
靜態 tflite::AllOpsResolver 解析器;
注意:載入所有操作會導致二進位檔案大小大幅增加。建議使用自訂操作集。
如果使用自訂操作集,則必須配置並初始化可變操作解析器。這將根據模型和應用程式而有所不同。若要確定給定 .tflite 檔案中所使用的操作 file,可以使用第三方工具(例如 netron)來視覺化網路並檢查正在使用的操作。
版權所有 © 2025 Silicon Laboratories。版權所有。
17/89
從 Scratch 開始的 Tensorflow Lite Micro
前任amp下面的 le 載入了 TensorFlow hello_world ex 所需的最小運算符ample 模型。如 Netron 視覺化所示,這只需要完全連接的層:
#定義NUM_OPS 1
靜態 tflite::MicroMutableOpResolver micro_op_resolver; 如果 (micro_op_resolver.AddFullyConnected() != kTfLiteOk) {
返回; }
如果使用 Flatbuffer 轉換工具,它會產生一個 C 預處理器宏,該宏會自動為 flatbuffer 設定最佳的 tflite::MicroMutableOpResolver:
#包括“sl_tflite_micro_opcode_resolver.h”
SL_TFLITE_MICRO_OPCODE_RESOLVER(micro_op_resolver,error_reporter);
7.初始化解釋器
app_init() 的最後一步是實例化一個解釋器並在記憶體區域內分配緩衝區供解釋器使用:
// 靜態宣告 tflite::MicroInterpreter* interpreter = nullptr;
// 在 app_init 中初始化 tflite::MicroInterpreter interpreter(model, micro_op_resolver, tensor_arena,
tensor_arena_size,error_reporter);解釋器=&interpreter_struct;TfLiteStatus allocate_status = interpreter.AllocateTensors();如果(allocate_status!=kTfLiteOk){
TF_LITE_REPORT_ERROR(error_reporter,“AllocateTensors()失敗”);返回;}
如果 arena 太小,無法容納模型所需的所有操作和緩衝區,則分配將失敗。請相應地調整 tensor_arena_size 以解決此問題。
8. 運行模型
為了在裸機應用程式中保持預設行為,建議在 app.cpp 中的 app_process_action() 函數中運行模型,以便在標準事件循環中進行週期性推理。運行模型涉及三個步驟tages:
1. 感測器資料經過預處理(如有必要),然後作為輸入提供給解釋器。
TfLiteTensor* input = interpreter.input(0); // 儲存 0.0 到模型的輸入張量 input->data.f[0] = 0.;
將輸入感測器資料的形狀與模型預期的形狀相匹配非常重要。這可以透過檢查輸入結構體中定義的屬性來查詢。例如amp這是 hello_world 範例ample 如下所示:
TfLiteTensor* 輸入 = 解釋器->輸入(0); 如果 ((輸入->dims->size != 1) || (輸入->類型 != kTfLiteFloat32)) {
TF_LITE_REPORT_ERROR(error_reporter,“模型中的輸入張量參數錯誤”);
返回; }
2. 然後呼叫解釋器來運行模型的所有層。
版權所有 © 2025 Silicon Laboratories。版權所有。
18/89
從 Scratch 開始的 Tensorflow Lite Micro
TfLiteStatus invoke_status = interpreter->Invoke(); 如果(invoke_status != kTfLiteOk){
TF_LITE_REPORT_ERROR(error_reporter,“x_val:%fn呼叫失敗”,static_cast (x_val));
返回; }
3. 從解釋器中讀取輸出預測。
TfLiteTensor* output = interpreter->output(0); // 從張量取得輸出值 float value = output->data.f[0];
此時,應該根據輸出預測執行與應用程式相關的行為。應用程式將在 app_process_action() 的每次迭代中執行推理。
完整程式碼片段
按照上述步驟並選擇使用可變操作解析器後,產生的 app.cpp 現在如下所示:
版權所有 © 2025 Silicon Laboratories。版權所有。
19/89
從 Scratch 開始的 Tensorflow Lite Micro
#include “tensorflow/lite/micro/micro_mutable_op_resolver.h” #include “tensorflow/lite/micro/micro_error_reporter.h” #include “tensorflow/lite/micro/micro_interpreter.h” #include “tensorflow/lite/schema/schescheh_g.”
#包括“sl_tflite_micro_model.h”
#定義NUM_OPS 1
constexpr int tensor_arena_size = 10 * 1024; uint8_t tensor_arena[tensor_arena_size];
tflite::MicroInterpreter* 解譯器 = nullptr;
/****************************************************************************************//** * 初始化應用程式。 ************************************************************************************/
void app_init(void){
靜態 tflite::MicroErrorReporter micro_error_reporter;tflite::ErrorReporter* error_reporter = µ_error_reporter;
const tflite::Model* model = ::tflite::GetModel(g_model); 如果 (model->version() != TFLITE_SCHEMA_VERSION) {
TF_LITE_REPORT_ERROR(error_reporter, “提供的模型架構版本 %d 不等於” “支援的版本 %dn”, model->version(), TFLITE_SCHEMA_VERSION);
}
靜態 tflite::MicroMutableOpResolver micro_op_resolver; 如果 (micro_op_resolver.AddFullyConnected() != kTfLiteOk) {
返回; }
靜態 tflite::MicroInterpreter interpreter_struct(model, micro_op_resolver, tensor_arena, tensor_arena_size, error_reporter);
解釋器 = &interpreter_struct; TfLiteStatus allocate_status = interpreter.AllocateTensors(); 如果 (allocate_status != kTfLiteOk) {
TF_LITE_REPORT_ERROR(error_reporter,「AllocateTensors()失敗」);回傳;} }
/****************************************************************************************//** * 應用程式勾選功能。 ************************************************************************************/
void app_process_action(void){
// 儲存 0.0 到模型的輸入張量 TfLiteTensor* input = interpreter->input(0); input->data.f[0] = 0.;
TfLiteStatus invoke_status = interpreter->Invoke(); 如果(invoke_status != kTfLiteOk){
TF_LITE_REPORT_ERROR(error_reporter,“x_val:%fn呼叫失敗”,static_cast (x_val));
返回; }
TfLiteTensor* 輸出 = 解釋器->輸出(0); 浮點值 = 輸出->資料.f[0]; }
版權所有 © 2025 Silicon Laboratories。版權所有。
20/89
從 Scratch 開始的 Tensorflow Lite Micro
Examp萊斯
正如 S 所述ample 應用程式結束view, 前任ampTensorFlow 團隊開發的文件,示範了 hello_world 範例amp本指南中所述的範例,以及一個簡單的語音辨識範例ampmicro_speech 包含在 Simplicity SDK 中。請注意,micro_speech example 示範如何使用 MicroMutableOpResolver 來只載入所需的操作。
版權所有 © 2025 Silicon Laboratories。版權所有。
21/89
從零開始的語音控制燈
從零開始的語音控制燈
從頭開始創建語音控制輕量級機器學習應用程式的端到端步驟
本指南詳細介紹如何在 EFR32xG24 開發套件上使用 TensorFlow Lite Micro (TFLM) 建立語音控制燈光應用程式。本範例ample 使用 keyword_spotting_on_off_v3.tflite 模型(建議)進行「開啟」和「關閉」關鍵字偵測。有關模型創建的更多信息,請參閱 MLTK 教程。
硬體:EFR32xG24 開發套件板(BRD2601B Rev A01)軟體:Simplicity Studio(SiSDK 2024.12 或更高版本)
1. 安裝 AI/ML 擴充功能
1. 點選頂部欄上的「安裝」。
2. 點選管理已安裝的軟體包。
3. 在 SDKs 下,安裝最新版本的 AI/ML 擴充功能(從 SiSDK 2024.12 開始可用)。
2. 啟動新的簡化項目
1. 從 File 選單,選擇新建 > Silicon Labs 專案精靈。
版權所有 © 2025 Silicon Laboratories。版權所有。
22/89
從零開始的語音控制燈
2. 選擇目標板(EFR32xG24 開發套件)、SDK(Simplicity SDK v2024.12.0 或更高版本)和 IDE/工具鏈(例如 GNU ARM v12.2.1)。點選“下一步”。
3. 選擇「空 C++ 專案」。點選“下一步”。 4. 為項目命名,然後點選「完成」。
版權所有 © 2025 Silicon Laboratories。版權所有。
23/89
從零開始的語音控制燈
3. 新增機器學習軟體組件
1. 打開你的項目 file (具有 .slcp 副檔名的檔案)。
2. 在「軟體元件」下,搜尋「aiml」。 3. 點選「啟用擴充」啟用 AI/ML 擴充。 4. 展開「AI/ML」>>「機器學習」>>「TensorFlow」。選擇“TensorFlow Lite Micro”並點選“安裝”。 5. 系統將提示您選擇其他元件:
版權所有 © 2025 Silicon Laboratories。版權所有。
24/89
從零開始的語音控制燈
偵錯日誌:選擇「使用 IO 流進行偵錯日誌」(如果需要)或「停用偵錯日誌」。點選“安裝”。核心:選擇“MVPv1 加速核心”。點選“安裝”。
4. 配置 TFLM 組件
1. 在TensorFlow Lite Micro軟體元件中點選Configure。
2. 設定競技場大小。例如amp例如,輸入“-1”。這將告訴系統在運行時動態確定最佳競技場大小。
5. 包含並轉換模型
1. 在專案的配置目錄中建立一個 tflite 目錄(可選,但建議這樣做)。 2. 將 keyword_spotting_on_off_v2.tflite 拖放到 file 進入 config/tflite 目錄(或直接進入 config,如果你
跳過建立子目錄)。 3. 框架會自動將 .tflite 檔案轉換為 file 放入 C 陣列(autogen 目錄中的 sl_tflite_micro_model.c)。
TFLM 解譯器也會自動初始化。
版權所有 © 2025 Silicon Laboratories。版權所有。
25/89
從零開始的語音控制燈
6.專業版file 模型(可選)
模型分析有助於優化。對於希望分析模型效能的高級用戶,MLTK Model Profiler 實用程式可以使用。對於這個基本範例來說,這不是嚴格要求的amp勒。
7. 運行模型
1. 包含 TensorFlow Init API:新增初始化 TFLM 解釋器所需的程式碼。 2. 提供輸入資料:
取得輸入張量的指標:TfLiteTensor* input = sl_tflite_micro_get_input_tensor(); . 將輸入資料(量化為 int8 的麥克風音訊)載入至輸入張量:input->data.int8f[0] = ;(參見範例amp用於音訊特徵產生的程式碼)。 3. 執行推理:呼叫解釋器:TfLiteStatus invoke_status = sl_tflite_micro_get_interpreter()->Invoke(); 檢查錯誤:if (invoke_status != kTfLiteOk) {
TF_LITE_REPORT_ERROR(sl_tflite_micro_get_error_reporter(), “模型中的輸入張量參數錯誤”); }
4. 讀取輸出:取得指向輸出張量的指標:TfLiteTensor* output = sl_tflite_micro_get_output_tensor(); 存取輸出資料:int8_t value = output->data.int8_tf[0];
8. 實施後處理
1. 發展演算法:建立一種演算法來解釋模型的輸出(例如,int8_t 值)並確定說的是「開」還是「關」。
2. 觸發事件:根據後處理輸出,觸發控制 LED 等操作。請參閱 voice_control_light.cc 、 recognize_commands.cc 和 recognize_commands.h 檔案。 fileaiml-extension ex 中的 samp請參閱 les 以取得實現此邏輯的指導,包括 LED 控制和命令識別。您需要將麥克風、音訊處理和 LED 控制的組件添加到您的專案中。
版權所有 © 2025 Silicon Laboratories。版權所有。
26/89
語音控制燈演示
語音控制燈演示
語音控制燈示範 – 快速入門指南
本指南提供了使用預先建置二進位檔案快速示範語音控制燈應用程式的說明。此示範可讓您透過對麥克風說出「開」或「關」來控制 EFR32xG24 開發套件 (BRD2601B Rev A01) 上的 LED。
硬體:EFR32xG24 開發套件板(BRD2601B Rev A01)軟體:Simplicity Studio(SiSDK 2024.12 或更高版本)
步驟
1. 開啟 Simplicity Studio:啟動 Simplicity Studio(點擊右上角的火箭按鈕)。 2. 連接設備:將 EFR32xG24 開發套件連接到電腦。等待 5-10 秒,設備將被識別。
Simplicity Studio。故障排除:如果您的裝置無法識別,請點擊「偵錯適配器」子視窗(通常位於左下角)中的「刷新」按鈕。
3. 選擇您的設備:從「已連接設備」下拉式選單中選擇您連接的設備,然後按一下「開始」。 4. 導覽至演示:前往演示ample 專案和演示。在左側上下文選單中,向下捲動到“功能”,然後選擇
機器學習。 5. 執行演示:找到語音控制燈演示,然後點選「運行」。這會將預先建立的二進位檔案刷入你的開發板。
版權所有 © 2025 Silicon Laboratories。版權所有。
27/89
基礎知識
基礎知識
機器學習基礎知識
適用於微控制器的 TensorFlow Lite 是一個框架,提供了一套用於在微控制器上運行神經網路推理的工具。它包含豐富的核心運算符,並對 8 位元整數化網路提供良好的支援。此框架僅限於模型推理,不支援訓練。有關如何訓練神經網路的信息,請參閱 Silicon Labs 機器學習工具包 (MLTK)。
Silicon Labs 提供適用於微控制器的 TensorFlow Lite 與 Simplicity SDK 的整合。請參閱入門指南,以了解如何在專案中使用機器學習的逐步說明。
SDK 組件結束view
可以在 Simplicity Studio 專案配置器中的軟體元件瀏覽器 UI 中的機器學習 > TensorFlow 下找到使用 TensorFlow Lite for Microcontrollers 所需的軟體元件。
TensorFlow Lite 微型
此元件包含完整的 TensorFlow Lite for Microcontrollers 框架,並預設自動為專案所選裝置引入最佳的核心實作。若要使用 TensorFlow Lite Micro,只需明確安裝此組件即可。但是,如果需要,也可以手動安裝不同的核心實現,例如比較推理效能或程式碼大小,以及手動安裝不同的偵錯日誌實作。預設情況下,TensorFlow Lite Micro 元件使用 Flatbuffer Converter Tool 將 .tflite 檔案轉換為 file 將其轉換為 C 數組並自動初始化此神經網路模型。有關更多詳細信息,請參閱自動初始化部分。
核心實現
參考內核
此元件提供所有核心的未最佳化軟體實作。這是預設實現,旨在易於閱讀並可在任何平台上運行。因此,這些核心的運行速度可能比最佳實現慢。
CMSIS-NN優化內核
某些核心的實作已使用 CMSIS-NN 函式庫針對特定 CPU 架構進行了最佳化。使用這些內核(如果可用)可以顯著提升推理效能。啟用此元件後,可用的最佳化核心實作將會新增至專案中,以取代相應的參考核心實作。其餘核心將透過依賴參考核心元件來回退到使用參考實作。
MVP加速內核
某些核心針對特定 Silicon Labs 元件上提供的 MVP 加速器進行了最佳化。使用這些核心將提升推理效能。啟用此元件後,可用的加速核心實作將會新增至專案中,以取代相應的最佳化或參考核心實作。其餘核心將根據相應的元件回退到使用最佳化或參考實作。查看有關加速器的更多詳細信息,以了解受支援的內核以及適用的限制。
使用 I/O 流進行調試日誌記錄/已停用
TensorFlow 使用偵錯日誌記錄來顯示偵錯和錯誤訊息。此外,它也可用於顯示推理結果。調試日誌記錄預設為啟用,其實作方式是使用 I/O Stream 透過 UART 列印到虛擬 COM
版權所有 © 2025 Silicon Laboratories。版權所有。
28/89
基礎知識
開發套件上的連接埠(VCOM)。可以透過確保專案中包含「Debug Logging Disabled」元件來停用日誌記錄。
TensorFlow 第三方相依性
與 TensorFlow Lite for Microcontrollers 一樣,CMSIS-NN 函式庫的特定版本也用於最佳化某些核心。此庫與 TensorFlow Lite for Microcontrollers 一起包含在專案中。 TensorFlow 依賴 CMSIS-NN 的最新版本,而 Simplicity SDK 的其餘部分則使用穩定的 CMSIS 版本。強烈建議避免在專案的其他部分使用 Simplicity SDK 版本的 CMSIS-DSP 和 CMSIS-NN 函數,而應使用 TensorFlow Lite for Microcontrollers 捆綁的版本,以避免兩者之間的版本衝突。
音訊特徵產生器
音訊特徵產生器可用於從音訊訊號中提取時頻特徵,以用於機器學習 (ML) 音訊分類應用。產生的特徵數組是一個梅爾縮放頻譜圖,表示給定時間訊號的頻率資訊。amp音頻的長度。
與 Flatbuffer 轉換工具一起使用時,音訊特徵產生器預設使用 .tflite 扁平緩衝區模型參數中的配置設定。您可以使用 Silicon Labs 機器學習工具包將此類元資料新增至扁平緩衝區。這可確保在嵌入式裝置上進行推理時使用的設定與訓練時使用的設定相符。如果使用不包含此類元資料的模型,則可以啟用設定選項“啟用手動前端設定”,並在設定頭檔 sl_ml_audio_feature_generation_config.h 中設定設定值。
預設模型的自動初始化
將 TensorFlow Lite Micro 元件新增至專案後,它會預設嘗試使用 TFLite Micro Init API 自動初始化一個預設模型。它會透過為給定的 flatbuffer 建立操作碼解析器和解釋器來執行 TensorFlow Lite Micro 的初始化。此外,它還會創建張量競技場緩衝區。
自動初始化程式碼使用的模型來自 Flatbuffer Converter Tool。如果 Flatbuffer 是使用 MLTK 產生的,它可能包含關於所需張量區域大小的元資料。如果存在此類訊息,它將自動初始化為正確的大小。如果使用非 MLTK Flatbuffer,則必須使用配置手動配置張量區域大小 file 用於 TensorFlow Lite Micro 組件。
如果不希望在啟動時自動初始化,可以使用自動初始化模型(SL_TFLITE_MICRO_INTERPRETER_INIT_ENABLE)設定選項將其關閉。
版本
Silicon Labs 的 AI/ML 擴充功能在 third_party/tflite-micro/ 目錄中整合了 TensorFlow Lite for Microcontrollers 版本 #02414075e7f718a2d0412775fcadbf28fb4cc5aa。 TensorFlow Lite for Microcontrollers 的核心版本尚未打補丁,而所有針對 Silicon Labs 裝置的附加內容均位於擴充程式的根目錄中。
第三方工具和合作夥伴
工具
Netron 是一款神經網路視覺化工具,相容於 .tflite 模型 files. 這對於 view模型中使用的操作、張量和核的大小等。
AI/ML合作夥伴
Silicon Labs 的 AI/ML 合作夥伴提供資料收集、模型開發和訓練方面的專業知識和平台。請參閱技術合作夥伴頁面以了解更多資訊。
版權所有 © 2025 Silicon Laboratories。版權所有。
29/89
MVP加速器
MVP加速器
MVP加速器
MVP 加速器是一款用於執行矩陣和向量運算的協處理器。使用硬體加速核心實作可以縮短神經網路推理時間,並減輕主處理器的負擔,使其能夠執行其他任務或進入休眠狀態。 Silicon Labs 已將常見的神經網路運算子實作為 MVP 上可執行的程序,並將其與 TensorFlow Lite for Microcontrollers 整合。 MVP 擁有 5 個陣列控制器,每個控制器都支援在 3 個獨立維度上進行迭代。每個維度最多包含 1024 個元素,每個元素之間的步長為 2047。因此,大多數神經網路運算的限制因素是寬度和深度維度的乘積,因為這將成為高度維度的步長。所有 MVP 加速運算均以符號的 8 位元整數作為輸入和輸出。如果張量的內維度大小為偶數,則每個元素可以包含兩個 int8 值,加速器會將其解釋為複數 int8 值。這樣,加速器就可以有效支援 2048 個 int8 值。如果內部維度為奇數,加速器必須一次執行一項計算,這會降低效能並將維度大小限制為 1024 個 int8 值。如果張量大小允許,下列運算子將使用 MVP 加速。如果特定張量無法加速,則實作將在運行時自動回退到使用最佳化 (CMSIS-NN) 或參考核心實作。為了最大限度地提高運算符受加速器支援的可能性,請在設計模型時使用偶數值通道數。在內部,MVP 加速器使用 16 位元浮點運算,即使輸入為 8 位元整數也是如此。這意味著計算精度會略有下降,在執行累積大量元素的運算時尤其明顯。有關 MVP 硬體加速器的更多信息,請參閱 EFR32xG24 參考手冊。
加速 TensorFlow 運算符
添加
TensorFlow 運算子名稱:ADD 支援任意張量大小。
全連結(密集)
TensorFlow 算子名稱:FULLY_CONNECTED、FULLY_CONNECTED_INT8 支援所有維度均不超過 1024 個元素限制的張量。此外,還支援更大的張量,其中最後一個維度的大小可分解為兩個均不超過 1024 個元素限制的因子。
平均池2D
TensorFlow 運算子名稱:AVERAGE_POOL_2D 支援寬度*通道在 2047 元素步幅限制內且所有維度都在 1024 元素限制內的張量。
最大池化二維
TensorFlow 運算子名稱:MAX_POOL_2D
版權所有 © 2025 Silicon Laboratories。版權所有。
30/89
MVP加速器
支援寬度*通道在 2047 元素步幅限制內且所有維度都在 1024 元素限制內的張量。
卷積二維
TensorFlow 運算子名稱:CONV_2D
支援寬度*通道在 2047 元素步幅限制內且所有維度都在 1024 元素限制內的張量。
DepthwiseConv2D
TensorFlow 運算子名稱:DEPTHWISE_CONV_2D
支援寬度*通道數在 2047 個元素步長限制內且所有維度均在 1024 個元素限制內的張量。不支持擴張。
轉置Conv2D
TensorFlow 運算子名稱:TRANSPOSE_CONV_2D
支援寬度*通道數在 2047 個元素步長限制內且所有維度均在 1024 個元素限制內的張量。不支持擴張。
等待加速器時暫停執行
MVP 加速器的軟體 API 是阻塞式的,這意味著對 MVP 驅動程式的任何呼叫都必須等待其完成才能從函數呼叫返回。為了節省能源,驅動程式可以選擇在等待加速器完成操作時暫停主處理器的執行。預設情況下,主處理器處於忙碌等待狀態,等待加速器完成操作。
沒睡 (0)
使用「無休眠」選項時,MCU 核心將忙碌地等待 MVP 完成。此選項可提供最快的 MVP 執行時間。 「無休眠」選項可用於裸機應用程式或使用即時作業系統 (RTOS) 的應用程式。
輸入 EM1 (1)
使用「進入能量模式 1」選項時,每當驅動程式等待 MVP 程式完成時,MCU 都會進入能量模式 1。 「進入能量模式 1」選項在使用 RTOS 的應用程式中並不安全,因為它會阻止 RTOS 的正確調度。
讓出 RTOS 線程 (2)
使用「Yield RTOS thread」選項時,等待 MVP 程式完成的任務將讓出,允許系統中的其他任務運行,或者可能允許調度程式將系統置於睡眠模式。 「Yield RTOS thread」要求應用程式使用 RTOS。可以透過設定 sl_mvp_config.h 設定頭檔中的 SL_MVP_POWER_MODE 設定選項來設定 MVP 驅動程式的功耗模式。
版權所有 © 2025 Silicon Laboratories。版權所有。
31/89
開發者指南
開發者指南
機器學習開發者指南
開發者指南內容組織如下:將機器學習新增至新專案或現有專案:描述將機器學習模型新增至新專案或現有專案的流程。更新或取代 .tflite 文件 File:描述在專案中更新和替換機器學習模型的步驟。開發模型:解釋開發機器學習模型的流程。 AI/ML 擴充設定:深入講解如何在設定中加入 AI/ML 擴充功能。 Flatbuffer 轉換工具:示範如何將 Flatbuffer 轉換為字節,以便將其包含在標題中。 file. SiWx917 的 I2S 配置:提供有關在 SiWx917 上為 AI/ML 音訊應用程式配置 I2S 的詳細資訊。
版權所有 © 2025 Silicon Laboratories。版權所有。
32/89
將機器學習新增至新專案或現有專案中
將機器學習新增至新專案或現有專案中
將機器學習新增至新專案或現有專案中
本指南詳細介紹如何在新專案或現有專案中新增機器學習功能,並利用 Silicon Labs 提供的 TensorFlow Lite for Microcontrollers 封裝 API 自動初始化 TFLM 框架。本指南假設 Simplicity Studio 工作區中已存在項目,並且您已安裝 AI/ML 擴充功能。如果您是從零開始,可以從任何 s 開始。ample 應用程式或空的 C++ 應用程式。請參閱 AI/ML 擴充設置,了解如何安裝 AI/ML 擴充功能。 TFLM 有一個 C++ API,因此與之互動的應用程式程式碼也需要用 C++ 編寫。如果您開始使用主要由 C 程式碼組成的應用程序,請參閱「與 C 程式碼互動」部分,以了解如何透過新增單獨的 C++ 程式碼來建置專案。 file 用於 TFLM 介面。
安裝 TensorFlow Lite 微組件
1. 打開你的項目 file (具有 .slcp 副檔名的檔案)。
2. 在軟體元件下,搜尋「aiml」。
3. 點選啟用擴展,啟用 AI/ML 擴充。
4. 展開:AI/ML > 機器學習 > TensorFlow。選擇 TensorFlow Lite Micro 並點選「安裝」。注意:SiWx917 應用請跳過此步驟。
版權所有 © 2025 Silicon Laboratories。版權所有。
33/89
將機器學習新增至新專案或現有專案 5. 系統將提示您選擇其他元件:注意:對於 SiWx917 應用程序,請跳過此步驟。
偵錯日誌記錄:選擇「使用 IO 流進行偵錯日誌記錄」(如果需要)或「停用偵錯日誌記錄」。點選“安裝”。注意:如果您的專案尚未包含 I/O 流實現,您可能會收到依賴項驗證警告。這並非問題,只是意味著需要選擇 I/O 流後端。 USART 或 EUSART 後端是最常見的,因為它們可以透過開發套件虛擬 COM 連接埠 (VCOM) 與連接的 PC 通訊。
IO 流:如果您在序列控制台上看不到輸出,則可能還需要安裝 EUSART 或 USART 元件。
接受預設的“vcom”作為實例名稱,這將自動配置引腳排列以連接到開發板的 VCOM 線路。如果您使用自己的硬件,則可以設定任意實例名稱並手動配置引腳排列。
版權所有 © 2025 Silicon Laboratories。版權所有。
34/89
將機器學習新增至新專案或現有專案中
附加軟體元件和 C++ 建置設置
注意:對於系列 2 設備,請跳至「型號包含」部分。本部分僅適用於 SiWx917 設備。 1. 確保您的專案中安裝了以下組件。
WiseConnect SDK > 設備 > Si91X > MCU > 服務 > 電源管理器 > Si91x 平台睡眠定時器 > 週邊 > 通用接口
2. 更新您的 C++ 建置設置,如下所示:在 C 預處理器定義中,新增: SUPPORT_CPLUSPLUS 。在 GNU ARM C++ 編譯器 > 其他設定中,新增: -mfp16-format=ieee 。
版權所有 © 2025 Silicon Laboratories。版權所有。
35/89
將機器學習新增至新專案或現有專案中
版權所有 © 2025 Silicon Laboratories。版權所有。
36/89
將機器學習新增至新專案或現有專案中
替代方法:您也可以將這些設定直接新增至專案的 .slcp file:
打開 .slcp file 在文字編輯器中。將 SUPPORT_CPLUSPLUS 新增至 C 預處理器定義的定義部分。例如amp樂:
定義:-名稱:SUPPORT_CPLUSPLUS值:1
將 -mfp16-format=ieee 加入 C++ 編譯器標誌的 toolchain_settings 部分,例如amp樂:
toolchain_settings:– 選項:gcc_compiler_option 值:-mfp16-format=ieee
儲存 file 並重新生成您的項目以應用更改。
模型包含
在專案配置器中新增 TensorFlow Lite Micro 元件後,下一步是載入模型 file 到項目中。為此,請在專案的 config 目錄中建立 tflite 目錄,並將 .tflite 模型複製到 file 到其中。專案配置器提供了一個工具,可以自動將 .tflite files 進入 sl_tflite_micro_model 來源和頭文件 files. 此工具的完整文件可在 Flatbuffer Converter Tool 中找到。
對於 SiWx917 設備,複製 .tflite 模型後 file 進入項目,標題 file 名為 sl_ml_model_產生了 .h 檔。此頭檔提供對從轉換後的 .tflite 檔案獲取的 C 數組的訪問 file,以及初始化和運行模型的 API。
自動初始化
版權所有 © 2025 Silicon Laboratories。版權所有。
37/89
將機器學習新增至新專案或現有專案中
TensorFlow 框架使用 SDK 程式設計模型中所述的系統初始化框架自動初始化。這包括分配張量區域、實例化解釋器以及載入模型。
配置
注意:SiWx917 的所有配置均自動完成。
如果模型是使用 Silicon Labs 機器學習工具包 (MLTK) 產生的,則模型中已經包含指示 Tensor Arena 所需大小的元資料。 Tensor Arena 是 TensorFlow 用於運行時儲存輸入、輸出和中間數組的記憶體區域。所需的 Arena 大小取決於所使用的模型。如果不使用 MLTK,則需要設定 Arena 大小。配置方式有兩種:
[自動] 將競技場大小設為 -1,它將在初始化時嘗試自動推斷大小。 [手動] 在開發過程中,從較大的數字開始,並作為大小最佳化的一部分,逐漸減少分配,直到初始化失敗。
運行 2 系列設備的模型
包含 Silicon Labs TensorFlow Init API
#包括“sl_tflite_micro_init.h”
對於裸機應用程式中的預設行為,建議在 app.cpp 中的 app_process_action() 期間運行模型,以確保在標準事件循環期間進行週期性推理。運行模型涉及三個步驟tages:向解釋器提供輸入感測器資料經過預處理(如有必要),然後作為輸入提供給解釋器。
TfLiteTensor* input = sl_tflite_micro_get_input_tensor(); // 儲存 0.0 到模型的輸入張量 input->data.f[0] = 0.;
版權所有 © 2025 Silicon Laboratories。版權所有。
38/89
將機器學習新增至新專案或現有專案中
運行推理
然後呼叫解釋器來運行模型的所有層。
TfLiteStatus invoke_status = sl_tflite_micro_get_interpreter()->Invoke(); 如果 (invoke_status != kTfLiteOk) { TF_LITE_REPORT_ERROR(sl_tflite_micro_get_error_reporter(),
“模型中的輸入張量參數錯誤”);返回;}
讀取 2 系列設備的輸出
輸出預測是從解釋器讀取的。
TfLiteTensor* output = sl_tflite_micro_get_output_tensor(); // 從張量取得輸出值 float value = output->data.f[0];
此時,應該根據輸出預測執行與應用程式相關的行為。應用程式將在 app_process_action() 的每次迭代中執行推理。
完整程式碼片段(系列 2)
按照上述步驟操作後,產生的 app.cpp 如下所示:
#包括“sl_tflite_micro_init.h”
/****************************************************************************************//** * 初始化應用程式。 ************************************************************************************/
void app_init(void){
// 初始化自動發生 }
/****************************************************************************************//** * 應用程式勾選功能。 ************************************************************************************/
void app_process_action(void){
TfLiteTensor* input = sl_tflite_micro_get_input_tensor(); // 儲存 0.0 到模型的輸入張量 input->data.f[0] = 0.;
TfLiteStatus invoke_status = sl_tflite_micro_get_interpreter()->Invoke(); 如果 (invoke_status != kTfLiteOk) { TF_LITE_REPORT_ERROR(sl_tflite_micro_get_error_reporter(),
“模型中的輸入張量參數錯誤”);返回;}
TfLiteTensor* output = sl_tflite_micro_get_output_tensor(); // 從張量取得輸出值 float value = output->data.f[0]; }
運行 SiWx917 設備的模型
版權所有 © 2025 Silicon Laboratories。版權所有。
39/89
將機器學習新增至新專案或現有專案中
對於 SiWx917 設備,API 與系列 2 不同。請使用產生的模型 C++ API 來初始化並執行您的模型。以下是使用這些 API 的通用指南:
1. 包含必需的標頭
//為此模型提供_init()和_run()函數#include“sl_ml_model_ .h” // ...根據需要添加其他標題...
2. 系統初始化
sl_system_init();
3. 模型初始化
//載入並初始化具有名稱的模型//初始化其參數 //初始化其解釋器 //初始化其錯誤報告器 //為模型的張量分配記憶體
sl_status_t 狀態 = slx_ml_ _model_init(); 如果(狀態!= SL_STATUS_OK){
printf(“初始化模型失敗”);//處理錯誤}
4. 訪問並準備輸入張量
對於(無符號整數 i = 0;i < _model.n_inputs(); ++i) { 自動&輸入張量 = * _model.input(i); // 用你的輸入資料填入 input_tensor.data
}
5. 運行推理
/// 執行具有名稱的模型透過呼叫 TFLite Micro 的解釋器並返回執行狀態。 /// 輸出儲存在模型本身的輸出張量中。 status = slx_ml_model_ _run(); 如果(狀態!= SL_STATUS_OK){
printf(「執行推理時出錯」);//處理錯誤}
6. 訪問輸出張量
對於(無符號整數 i = 0;i < _model.n_outputs(); ++i) { 自動& 輸出張量 = * _model.output(i); // 從output_tensor.data讀取結果
}
完整程式碼片段(SiWx917)
下面是在 SiWx917 設備上運行模型的通用程式碼片段。替換用您的實際型號名稱。
應用程式頭檔
版權所有 © 2025 Silicon Laboratories。版權所有。
40/89
將機器學習新增至新專案或現有專案中
#如果定義 APP_H #定義 APP_H
#ifdef __cplusplus extern “C” { #endif
void app_init(void); void app_process_action(void);
#ifdef __cplusplus } #endif
#endif // APP_H
應用程式
#包括“app.h” #包括“model_runner.h”
sl_status_t _model_status = SL_STATUS_OK;
// 初始化邏輯 void app_init(void) {
_model_status = model_runner_init(); 如果( _model_status != SL_STATUS_OK) {
// 列印有用的錯誤訊息或處理錯誤回傳;} }
void app_process_action(void) { 如果( _model_status != SL_STATUS_OK) { // 列印錯誤訊息或指示錯誤回傳;} model_runner_loop();
}
模型運行器.cc
版權所有 © 2025 Silicon Laboratories。版權所有。
41/89
將機器學習新增至新專案或現有專案中
#包括“sl_ml_model_ .h”
sl_status_t model_runner_init(void) { // 週邊裝置和其他初始化邏輯
_model_status = slx_ml_ _model_init();
如果 ( _model_status != SL_STATUS_OK) { // 週邊取消初始化或清除邏輯回傳 SL_STATUS_FAIL;
} 返回_模型_狀態;}
sl_status_t model_runner_loop(void) { // 資料擷取與預處理邏輯
_model_status = slx_ml_ _模型_運行();
如果 ( _model_status != SL_STATUS_OK) { // 週邊取消初始化或清除邏輯回傳 SL_STATUS_FAIL;
}
// 後處理邏輯
返回_模型_狀態;}
附錄:與 C 程式碼接口
如果您的專案是用 C 而不是 C++ 編寫的,請將與 TFLM 介面的程式碼放入單獨的 file 透過介面頭導出一個 C API。例如amp樂,一個 file假設名稱為 app_ml.cpp 的程式實作了 ml_process_action() 函數,其內容與 ex 中的相同amp上面的。
應用程式_ml.h
#ifdef __cplusplus extern “C” { #endif
無效 ml_process_action(void);
#ifdef __cplusplus } #endif
應用程式_ml.cpp
#包括“app_ml.h” #包括“sl_tflite_micro_init.h”
外部“C” void ml_process_action(void){
// … }
應用程式c
版權所有 © 2025 Silicon Laboratories。版權所有。
42/89
將機器學習新增至新專案或現有專案中
#include “app_ml.h” //... void app_process_action(void) {
ml_process_action(); }
附錄:Series 2 到 SiWx917(以及反之)應用程式轉換
如果您需要將應用程式從 2 系列移植到 SiWx917,請先從專案中移除 TensorFlow Lite Micro 元件。然後,請按照以下步驟新增所需的軟體元件和 C++ 建置設定。 SiWx917 設備的 API 和工作流程與 2 系列不同。請使用產生的模型 C++ API,具體方法請參閱上文「運行 SiWx917 設備的模型」部分。有關初始化、運行推理和訪問輸入/輸出張量的詳細信息,請參閱本頁面提供的程式碼片段和逐步說明。完整的範例amp請參閱完整程式碼片段 (SiWx917) 部分。更新專案後,請重新產生專案以確保所有相依性均已正確配置。
版權所有 © 2025 Silicon Laboratories。版權所有。
43/89
更新或取代 .tflite File
更新或取代 .tflite File
更新或取代 .tflite File 在專案中
本指南介紹如何在現有項目中替換模型。本指南假設該專案使用 Flatbuffer 轉換工具。
更換模型
若要取代現有項目中的模型,請將新模型拖曳到 file 到專案的 config/tflite/ 目錄中。如果新模型具有相同的 file 將其命名為先前的模型,接受提示以覆蓋 file。如果新模型有不同的名稱,請刪除或重新命名舊的 .tflite file 這樣它就不再有 .tflite 副檔名。當目錄監視程式發現不同的 .tflite 檔案時,Flatbuffer Converter Tool 將自動執行 file 存在。
注意:如果您有多個 .tflite files 在 config/tflite/ 目錄中,轉換工具會選擇第一個 file 按字母順序排列。因此建議重新命名或刪除任何舊模型,以確保工具使用正確的 file.
檢查模型
您可以採取措施確保從 .tflite 自動重新產生 C 陣列和標頭 file 按預期執行。如果您不確定哪個模型是應用程式二進位檔案的一部分,可以採取以下任何步驟。
檢查模型尺寸
產生的 file autogen/sl_tflite_micro_model.c 定義了一個大小變數 sl_tflite_model_len 。這個數字可以與 file .tflite 的大小 file 以位元組為單位,例如ample,透過右鍵點擊 .tflite file 並查看屬性 > 資源 > 大小的值。
檢查模型使用的運算符
產生的 file autogen/sl_tflite_micro_opcode_resolver.h 包含對 tflite::MicroMutableOpResolver::AddXXX 的多次調用,其中 XXX 是模型使用的算子的名稱。您可以將其與您已知的模型應該使用的算子進行比較。
檢查模型參數
如果 .tflite file 使用 Silicon Labs 機器學習工具包生成,它包含生成到 autogen/sl_tflite_micro_model_parameters.h 中的元資料。這些參數可以與預期參數進行比較。
C 的力生成 files
如果發生任何事情導致產生的 .c 和 .h 與 .tflite 不同步 file,可以透過按下項目配置器的項目詳細資料窗格上的強制產生按鈕來強制重新產生項目。
版權所有 © 2025 Silicon Laboratories。版權所有。
44/89
開發模型
開發模型
開發機器學習模型
使用 TensorFlow 和 Keras 手動開發模型
在開發和訓練用於嵌入式系統的神經網路時,請務必注意 TFLM 在模型架構和訓練方面的限制。嵌入式平台也存在顯著的效能限制,在設計和評估模型時必須考慮這些限制。嵌入式 TLFM 文件連結詳細描述了這些限制和注意事項。
此外,Simplicity Studio 中的 TensorFlow 軟體元件需要已訓練模型的量化 *.tflite 表示。因此,TensorFlow 和 Keras 是建議的模型開發和訓練平台,因為這兩個平台都支援可產生 .tflite 模型表示的 TensorFlow Lite 轉換器。
TensorFlow 和 Keras 都提供了模型發展和訓練指南:
TensorFlow 基本訓練循環
版權所有 © 2025 Silicon Laboratories。版權所有。
45/89
開發模型
Keras 訓練與評估 在 TensorFlow 或 Keras 中建立並訓練模型後,需要將其轉換並序列化為 *.tflite file在模型轉換過程中,透過量化來優化模型的記憶體使用非常重要。強烈建議在 Silicon Labs 裝置上使用整數量化。
TensorFlow Lite 轉換器量化結束view 一個完整的前任amp可從 TensorFlow 取得示範簡單 TFLM 相容神經網路的訓練、轉換和量化的檔案:TensorFlow Hello World Training Example 訓練的 Hello World 模型(下載 .zip file 包含模型)
利用 Silicon Labs AI/ML 合作夥伴開發模型
如需了解更多關於 Silicon Labs AI/ML 合作夥伴的信息,請參閱 Silicon Labs 物聯網機器學習頁面的「AI/ML 合作夥伴」部分。這些合作夥伴可以幫助您開發與 Silicon Labs 裝置相容的模型。
使用 MLTK 開發模型
注意:MLTK 尚處於實驗階段,尚未獲得官方支援。建議 MLTK 的使用者為精通 TensorFlow 和 Python 的機器學習專家,或願意學習的開發者。
Silicon Labs 機器學習工具包 (MLTK) 是一個 Python 軟體包,它在 TensorFlow 之上實作了一個層,幫助 TensorFlow 開發者建立可成功部署在 Silicon Labs 晶片上的模型。這些腳本是音訊用例的參考實現,包括在訓練和推理端使用音訊特徵產生器。這是 TensorFlow「微前端」音訊前端的修改版本。 MLTK 是一個自助式、自支援、文檔齊全的 Python 參考軟體包,透過 GitHub 發布。我們目前以實驗性軟體包的形式提供,這意味著它隨時可用。
版權所有 © 2025 Silicon Laboratories。版權所有。
46/89
AI/ML擴充設定
AI/ML擴充設定
安裝 Silicon Labs Simplicity Studio 的 AI/ML 擴展
本指南詳細介紹了 Silicon Labs Simplicity Studio 中 AI/ML 擴充的安裝過程。此擴充功能使開發人員能夠將機器學習功能整合到基於 Silicon Labs 的專案中。
先決條件
在繼續安裝之前,請確保您具有以下條件:
Silicon Labs Simplicity Studio:Simplicity Studio 的最新版本必不可少。請從 Silicon Labs 官網下載。 web網站。支援的硬體:請確認您的目標 Silicon Labs 硬體是否與 AI/ML 擴充功能相容。請參閱擴充的發行說明或文檔,以了解支援的設備清單。 Python 環境(可能):某些 AI/ML 功能可能依賴 Python 環境。建議安裝 Python 3.7 或更高版本。強烈建議使用虛擬環境以有效管理依賴項。 Git(可能):某些安裝方法或存取特定資源可能需要 Git。請確保您的系統已安裝 Git。
安裝方法
可以透過以下方法安裝 AI/ML 擴充功能:
1. Simplicity Studio 安裝管理器(建議)
這是最直接和最推薦的方法。
1. 開啟 Simplicity Studio。 2. 導覽至「幫助」>「更新軟體…」。 3. 點選「安裝管理員」>「SDK…」。 4. 從 Simplicity SDK 下的可用擴充功能清單中選擇 Silicon Labs AI/ML 擴充功能。 5. 依照螢幕上的指示完成安裝。
2. 手動安裝(如適用)
如果擴充功能管理器方法中提供了手動安裝方法,請按照以下說明操作。請注意,這種情況並不常見。
1. 從 https://github.com/SiliconLabsSoftware/aiml-extension/releases 下載所需的 AI/ML 擴充版本。擴充包的發行說明中也提供了對應發行版本的連結。
2. 將下載的軟體包解壓縮到「simplicity_sdkextension」資料夾。 3. 請參閱擴充功能的文檔,以了解具體的手動安裝步驟。這些步驟可能涉及複製 file具體來說
Simplicity Studio 安裝目錄內的位置或執行安裝腳本。
安裝後步驟
安裝成功後:
1. 重新啟動 Simplicity Studio:重新啟動 Simplicity Studio 以確保變更生效。 2. 驗證安裝:檢查 Simplicity Studio 首選項或已安裝的軟體列表,確認 AI/ML 擴充功能已列出,並
已安裝。 3. 瀏覽文件和 Examples:AI/ML 擴充功能應該包括文件和範例ample 項目。這些資源
對於入門和了解如何使用擴充功能的功能和 API 至關重要。
版權所有 © 2025 Silicon Laboratories。版權所有。
47/89
AI/ML擴充設定
故障排除
如果您在安裝過程中遇到任何問題:1. 檢查 Simplicity Studio 日誌:檢查 Simplicity Studio 日誌中是否有任何錯誤訊息。這些日誌可以提供寶貴的線索,幫助您
故障排除。 2.view 文件:請參閱 AI/ML 擴充功能的文件和發行說明,以了解故障排除技巧和已知問題。 3. Silicon Labs 社群論壇:Silicon Labs 社群論壇是尋找常見問題解決方案的絕佳資源
問題或向其他使用者和 Silicon Labs 專家尋求協助。
更新擴充
若要更新 AI/ML 擴展,請按照上述相同的安裝步驟操作。 Simplicity Studio 通常會偵測較新版本並引導您完成更新過程。
解除安裝
若要解除安裝 AI/ML 擴展,請使用 Simplicity Studio 擴充功能管理器,或查閱擴充文件以取得具體的卸載說明。
重要提示:本指南提供了一般信息view 了解 AI/ML 擴充安裝過程的最新資訊。請務必參考發行說明,以了解可能需要的特定版本自訂說明。任何附加說明和相關 URL發行說明中將提供其附帶的手冊說明。
版權所有 © 2025 Silicon Laboratories。版權所有。
48/89
Flatbuffer 轉換工具
Flatbuffer 轉換工具
Flatbuffer 轉換工具
Flatbuffer 轉換工具有助於將 .tflite file 轉換為可編譯為嵌入式系統二進位的 C 陣列。此陣列可與 TensorFlow Lite for Microcontrollers API 搭配使用,該 API 將指向包含模型的緩衝區的 void 指標作為其 tflite::GetModel() 初始化函數的參數。除了將 flatbuffer 轉換為 C 數組外,該工具還支援將模型參數嵌入到 .tflite 檔案中作為元資料。 file 作為 C 預處理器巨集。
輸入
該工具需要一個包含一個或多個 .tflite 的目錄 files 作為輸入。如果目錄由多個 files,只有第一個 file 按字母順序轉換。
提示:如果您有多個 file目錄中,但您要轉換的不是第一個 file 按字母順序排列,你可以重新命名其他 files 新增 .bak 副檔名或重新命名目標 file 因此。
輸出
該工具將其輸出寫入多個 files 在單一輸出目錄中。
模型陣列
該工具總是發出一對 filesl_tflite_micro_model.c / .h ,其中宣告了以下變數。 const uint8_t sl_tflite_model_array[] 包含 .tflite 的全部內容 file const uint32_t sl_tflite_model_len 包含模型陣列的長度
操作碼解析器
標題 file sl_tflite_micro_opcode_resolver.h 也會被發出。這 file 宣告一個 C 預處理器巨集 SL_TFLITE_MICRO_OPCODE_RESOLVER(opcode_resolver, error_reporter),該巨集實例化一個 tflite::MicroMutableOpResolver 對象,並自動註冊解析模型所需的一組運算子。此巨集可用作初始化序列的一部分,以自動初始化最佳操作碼解析器。
型號參數
如果 .tflite file 在其元資料部分中包含模型參數,第三個標題 file sl_tflite_micro_model_parameters.h 已產生。對於每個模型參數鍵值對,都會產生一個 C 預處理器巨集 SL_TFLITE_MODEL_使用相關值創建。請參閱 MLTK 文檔,以了解有關在 .tflite 文件中嵌入模型參數的更多信息 file.
SLC專案配置集成
版權所有 © 2025 Silicon Laboratories。版權所有。
49/89
Flatbuffer 轉換工具
Flatbuffer Converter Tool 與 Simplicity Studio 中的 SLC 專案配置工具以及使用 SLC-CLI 的命令列工具整合。使用這些工具時,Flatbuffer Converter 會自動執行,以專案的 config/tflite/ 目錄作為輸入,以 autogen/ 目錄作為輸出。換句話說,任何 file 專案中 config/tflite/ 目錄中帶有 .tflite 副檔名的檔案會在產生專案時自動轉換。如果使用 Simplicity Studio,目錄監控器會確保在出現 .tflite 檔案時自動產生項目。 file 新增或刪除。這意味著只需將 .tflite 檔案拖放到 file 放入項目中,並自動轉換為C代碼。
手動使用
如果需要在完整的 SLC 專案產生週期之外進行轉換,可以手動呼叫 Flatbuffer 轉換器。這通常不是必需的,但對於高級用戶來說是一個選項。這只能使用 SLC-CLI 完成,建議 Simplicity Studio 使用者重新產生完整的專案。
作為 SLC 項目產生器
SLC-CLI 支援透過將 -tools 傳遞給 slc generate 指令來執行單一專案產生工具。專案產生過程的 Flatbuffer Converter 步驟可以透過執行以下命令獨立運作:
slc 生成-p -工具 tflite
作為獨立的 SLC-CLI 命令
Flatbuffer 轉換器也可作為 SLC-CLI 中的獨立指令使用,以便在專案環境之外使用。請使用輸入和輸出目錄的絕對路徑執行以下命令。
slc tflite 產生 -contentFolder [/path/to/config/tflite] -generationOutput [/path/to/autogen]
版權所有 © 2025 Silicon Laboratories。版權所有。
50/89
SiWx917 的 I2S 配置
SiWx917 的 I2S 配置
SiWx917 平台上 ML 音訊應用的 I2S 接腳配置
SiWx917 上 I2S 接腳的預設配置無法為所有 AI/ML 音訊應用提供硬體分類結果的預期輸出。您必須使用 .slcp 檔案手動設定 I2S 引腳,如下所述。若要為您的開發板配置 I2S 接腳,請使用 Simplicity Studio 請依照下列步驟操作:
1. 透過軟體元件啟用 I2S 週邊
一旦 .pintool file 已在專案資料夾中生成,開啟 .slcp file 在 Simplicity Studio 中。之後,導航到“軟體組件”選項卡。 搜尋 並啟用 I2S 週邊裝置(例如 I2S0 )。導覽至 WiSeConnect 3 SDK v3.5.0 > 裝置 > Si91x > MCU > 週邊 > I2S > i2s0 > 設定。
2. 配置 I2S 引腳
在軟體元件設定中,按一下已啟用的 I2S 週邊裝置旁的設定按鈕。
將所需的 I2S 訊號( DIN0 、 SCLK 和 WSCLK )指派到對應的 GPIO 接腳,如下圖所示。配置工具會顯示可用的引腳。請確保僅選擇圖中所示的引腳。
版權所有 © 2025 Silicon Laboratories。版權所有。
51/89
SiWx917 的 I2S 配置
3.儲存並產生程式碼
該工具會自動為您的專案產生必要的引腳配置程式碼。
4.重建項目
建立您的項目,確保包含新的引腳配置。如需更多詳情,請參閱 Simplicity Studio 軟體元件文件。
版權所有 © 2025 Silicon Laboratories。版權所有。
52/89
機器學習 API 參考
機器學習 API 參考
機器學習 API 參考
模組清單 TensorFlow Lite Micro Init TensorFlow Lite Micro Debug Audio Feature Generator
模型特定功能
模型特定變數和常數
描述
初始化 TensorFlow Lite Micro 運行時。用於登入 TensorFlow Lite Micro 的附加 SL 公用程式。
從音訊訊號中提取梅爾濾波器組特徵,用於機器學習音訊分類應用。使用 .tflite 模型名稱產生的函數 file.(目前僅適用於 SiWx917 平台)使用 .tflite 模型名稱產生的模型特定變數和常數 file.(目前僅適用於 SiWx917 平台)
版權所有 © 2025 Silicon Laboratories。版權所有。
53/89
用於機器學習的麥克風 I2S 驅動程式
用於機器學習的麥克風 I2S 驅動程式
用於機器學習的麥克風 I2S 驅動程式
SI91x 上 I2S 介面的麥克風驅動程式 API。
類型定義
類型定義 void(*
sl_mic_buffer_ready_callback_t(const void *buffer,uint32_t n_frames)
回調函數表明ample 緩衝區已準備就緒。
功能
sl_status_t sl_status_t sl_status_t sl_status_t
sl_ml_mic_init(uint32_t sample_rate,uint8_t 通道)
初始化麥克風。
sl_ml_mic_deinit(無效)
取消麥克風的初始化。
sl_ml_mic_start_streaming(void *buffer,uint32_t n_frames,sl_mic_buffer_ready_callback_t回呼)
讀秒amp麥克風裡的文件ample 緩衝區連續。
sl_ml_mic_stop(無效)
停止麥克風。
Typedef 文檔
sl_mic_buffer_ready_callback_t
typedef void(* sl_mic_buffer_ready_callback_t)(const void *buffer,uint32_t n_frames)(const void *buffer,uint32_t n_frames)
回調函數表明ample 緩衝區已準備好。參數
類型
方向 [英吋] [英吋]
參數名稱緩衝區 n_frames
描述 指向 sample 緩衝區。 s 中的音訊幀數amp緩衝區。
返回 None。
功能文件
sl_ml_mic_init
sl_status_t sl_ml_mic_init (uint32_t sample_rate,uint8_t 通道)
初始化麥克風。
版權所有 © 2025 Silicon Laboratories。版權所有。
54/89
用於機器學習的麥克風 I2S 驅動程式
參數
類型 uint32_t uint8_t
方向 [英吋] [英吋]
參數名稱ample_rate 通道
返回成功時返回 SL_STATUS_OK,否則返回非零
描述 所需的amp以 Hz 為單位的速率 音訊通道數(1 或 2)
sl_ml_mic_deinit
sl_status_t sl_ml_mic_deinit(無效)
取消初始化麥克風。參數
類型 void
方向 N/A
參數名稱
描述
sl_ml_mic_start_streaming
sl_status_t sl_ml_mic_start_streaming(void * buffer,uint32_t n_frames,sl_mic_buffer_ready_callback_t 回呼)
讀秒amp麥克風裡的文件ample 緩衝區連續。參數
類型
方向
參數名稱
描述
空白 *
[在]緩衝區指針ample緩衝區來儲存資料。 16位元通道資料是
從 ch0 開始連續儲存。此緩衝區應足夠大
由於乒乓操作而保存兩倍的 n_frames。
uint32_t
[在]n_frames 呼叫回呼之前要接收的音訊幀數。
最大值受 DMADRV_MAX_XFER_COUNT 限制。
sl_mic_buffer_ready_callback_t [輸入]
當 s 中的 n_frames 被呼叫時回調ample 緩衝區已準備就緒。
此函數啟動麥克風ampling 並且僅在呼叫 sl_ml_mic_stop 或 sl_ml_mic_deinit 時停止。緩衝區以“乒乓”方式使用,這意味著一半的緩衝區用於ampling,而另一半正在處理中。
sl_ml_mic_stop
sl_status_t sl_ml_mic_stop(無效)
停止麥克風。參數
類型 void
方向 N/A
參數名稱
描述
版權所有 © 2025 Silicon Laboratories。版權所有。
55/89
用於機器學習的麥克風 I2S 驅動程式
版權所有 © 2025 Silicon Laboratories。版權所有。
56/89
模型特定功能
模型特定功能
模型特定功能
使用 .tflite 模型的名稱產生的函數 file。這些 API 目前僅適用於 SiWx917 平台。
sl_ml_ _init
sl_status_t sl_ml_ _model_init(無效)
建立錯誤報告器和操作碼解析器並為給定模型初始化變數。源自 file 你的 .tflite 檔案的名稱 file. 退貨
模型初始化狀態。如果成功,則傳回 SL_STATUS_OK ;否則,傳回 SL_STATUS_FAIL 。
sl_ml_ _跑步
sl_status_t sl_ml_ _model_run(無效)
執行模型一次進行推理。輸出在模型內部更新。返回
模型執行和推理的狀態。如果成功,則傳回 SL_STATUS_OK ;否則,傳回 SL_STATUS_FAIL 。
版權所有 © 2025 Silicon Laboratories。版權所有。
57/89
模型特定變數和常數
模型特定變數和常數
模型特定變數和常數
使用 .tflite 模型的名稱產生的模型特定變數和常數 file。這些 API 目前僅適用於 SiWx917 平台。
_模型
靜態 TfliteMicroModel _模型
模型物件具有大量與模型互動的方法。
_模型_狀態
靜態 sl_status_t _模型_狀態
追蹤_model 初始化並執行時。
_model_flatbuffer
uint8_t* _model_flatbuffer
指向所引用模型的原始平面緩衝區的指針_模型
_model_flatbuffer_length
常數 int _model_flatbuffer_length
原始平面緩衝區的長度_model_flatbuffer
版權所有 © 2025 Silicon Laboratories。版權所有。
58/89
音訊特徵產生器
音訊特徵產生器
音訊特徵產生器
音訊特徵產生器從音訊訊號中提取梅爾濾波器組特徵,以便使用麥克風作為音訊來源的機器學習音訊分類應用程式使用。
特徵生成
梅爾尺度模擬了人耳的行為,人耳對低頻的分辨率較高,而對高頻的辨別力較弱。為了創建梅爾濾波器組,需要對訊號應用多個濾波器,其中低通道濾波器的通帶較窄,並隨著頻率升高而增加。
使用視窗函數(Hamming)將音訊訊號分割成短的重疊片段。對每個片段應用快速傅立葉變換 (FFT) 來檢索頻譜,然後檢索該片段的功率譜。濾波器組是透過對輸出應用一系列梅爾縮放濾波器來創建的。最後,對輸出應用對數運算來提高較低通道之間的靈敏度。
音訊訊號
加窗
快速傅立葉變換
梅爾濾波器
紀錄
對數尺度梅爾濾波器組
特徵數組是透過將連續片段的濾波器組堆疊在一起形成頻譜圖而產生的。此數組按以下方式排序:第一個元素是最早的濾波器組的第一個通道。
用法
sl_ml_audio_feature_generation_init() 根據 sl_ml_audio_feature_generation_config.h 中的配置初始化用於特徵產生的前端。它還會初始化麥克風並將其啟動為流模式,從而將音訊訊號amp放入環形緩衝區。
如果與 Flatbuffer Converter Tool 和相容的 TensorFlow Lite 模型一起使用,則預設從 TensorFlow Lite 模型中提取配置。設定配置選項 SL_ML_AUDIO_FEATURE_GENERATION_MANUAL_CONFIG_ENABLE 可覆寫此行為並使用設定頭檔中手動配置的選項。
呼叫 sl_ml_audio_feature_generation_update_features() 時會產生特徵。然後,特徵產生器會更新盡可能多的新音訊片段的特徵,從上次呼叫函數開始到當前時間。新特徵會被加入到特徵緩衝區,取代最舊的特徵,以確保特徵陣列始終包含最新的特徵。
版權所有 © 2025 Silicon Laboratories。版權所有。
59/89
音訊特徵產生器
請注意,如果音訊緩衝區不夠大,無法容納所有音訊amp在呼叫 sl_ml_audio_feature_generation_update_features() 期間產生特徵所需的文件,音訊資料將被覆寫。生成器不會回傳錯誤。因此,必須將音訊緩衝區配置為足夠大,以儲存所有新的amp更新功能之間的 led 資料。
要檢索產生的特徵,必須呼叫 sl_ml_audio_feature_generation_get_features_raw()、sl_ml_audio_feature_generation_get_features_quantized() 或 sl_ml_audio_feature_generation_fill_tensorration)。
Example
與 TensorFlow Lite Micro 一起使用時,可以使用音訊特徵產生器透過 sl_ml_audio_feature_generation_fill_tensor() 直接填充張量。但是,模型必須使用與推理相同的特徵產生器配置進行訓練,該配置在 sl_ml_audio_feature_generation_config.h 中配置。
#包括“sl_tflite_micro_init.h” #包括“sl_ml_audio_feature_generation.h”
無效主(無效){
sl_ml_audio_feature_generation_init();
while(1){ sl_ml_audio_feature_generation_update_features();
如果(do_inference){ sl_ml_audio_feature_generation_fill_tensor(sl_tflite_micro_get_input_tensor()); sl_tflite_micro_get_interpreter()->呼叫();
}
…
} }
請注意,更新特徵和檢索特徵可以獨立執行。更新特徵應足夠頻繁,以避免覆蓋音訊緩衝區,而檢索特徵只需在推理之前進行。
音訊特徵產生器從音訊訊號中提取梅爾濾波器組特徵,以便使用麥克風作為音訊來源的機器學習音訊分類應用程式使用。
特徵生成
梅爾尺度模擬了人耳的行為,人耳對低頻的分辨率較高,而對高頻的辨別力較弱。為了創建梅爾濾波器組,需要對訊號應用多個濾波器,其中低通道濾波器的通帶較窄,並隨著頻率升高而增加。
使用視窗函數(Hamming)將音訊訊號分割成短的重疊片段。對每個片段應用快速傅立葉變換 (FFT) 來檢索頻譜,然後檢索該片段的功率譜。濾波器組是透過對輸出應用一系列梅爾縮放濾波器來創建的。最後,對輸出應用對數運算來提高較低通道之間的靈敏度。
版權所有 © 2025 Silicon Laboratories。版權所有。
60/89
音訊特徵產生器
音訊訊號
加窗
快速傅立葉變換
梅爾濾波器
紀錄
對數尺度梅爾濾波器組
特徵數組是透過將連續片段的濾波器組堆疊在一起形成頻譜圖而產生的。此數組按以下方式排序:第一個元素是最早的濾波器組的第一個通道。
用法
sl_ml_audio_feature_generation_init() 根據 sl_ml_audio_feature_generation_config_si91x.h 中的配置初始化用於特徵產生的前端。它還會初始化麥克風並將其啟動為流模式,從而將音訊訊號amp放入環形緩衝區。
如果與 Flatbuffer Converter Tool 和相容的 TensorFlow Lite 模型一起使用,則預設從 TensorFlow Lite 模型中提取配置。設定配置選項 SL_ML_AUDIO_FEATURE_GENERATION_MANUAL_CONFIG_ENABLE 可覆寫此行為並使用設定頭檔中手動配置的選項。
呼叫 sl_ml_audio_feature_generation_update_features() 時會產生特徵。然後,特徵產生器會更新盡可能多的新音訊片段的特徵,從上次呼叫函數開始到當前時間。新特徵會被加入到特徵緩衝區,取代最舊的特徵,以確保特徵陣列始終包含最新的特徵。
請注意,如果音訊緩衝區不夠大,無法容納所有音訊amp在呼叫 sl_ml_audio_feature_generation_update_features() 期間產生特徵所需的文件,音訊資料將被覆寫。生成器不會回傳錯誤。因此,必須將音訊緩衝區配置為足夠大,以儲存所有新的amp更新功能之間的 led 資料。
要檢索產生的特徵,必須呼叫 sl_ml_audio_feature_generation_get_features_raw()、sl_ml_audio_feature_generation_get_features_quantized() 或 sl_ml_audio_feature_generation_fill_tensorration)。
Example
與 TensorFlow Lite Micro 一起使用時,可以使用音訊特徵產生器透過 sl_ml_audio_feature_generation_fill_tensor() 直接填充張量。但是,模型必須使用與推理相同的特徵產生器配置進行訓練,該配置在 sl_ml_audio_feature_generation_config_si91x.h 中配置。
版權所有 © 2025 Silicon Laboratories。版權所有。
61/89
音訊特徵產生器
#包括“sl_tflite_micro_init.h” #包括“sl_ml_audio_feature_generation_si91x.h”
無效主(無效){
sl_ml_audio_feature_generation_init();
while(1){ sl_ml_audio_feature_generation_update_features();
如果(do_inference){ sl_ml_audio_feature_generation_fill_tensor(sl_tflite_micro_get_input_tensor()); sl_tflite_micro_get_interpreter()->呼叫();
}
…
} }
請注意,更新特徵和檢索特徵可以獨立執行。更新特徵應足夠頻繁,以避免覆蓋音訊緩衝區,而檢索特徵只需在推理之前進行。
類型定義
類型定義 void(*
sl_ml_audio_feature_generation_mic_callback_t)(void *arg,const int16_t *data,uint32_t n_frames)
用於音訊特徵產生的麥克風回呼函數類型。
變數
int16_t *
sl_ml_audio_feature_generation_audio_buffer
用於產生音訊特徵的外部音訊緩衝區。
功能
sl_status_t sl_status_t sl_status_t sl_status_t sl_status_t
整數
int 無效
sl_ml_audio_feature_generation_init()
將麥克風設定為特徵產生的音訊來源,並初始化特徵生成的前端。
sl_ml_audio_feature_generation_frontend_init()
根據sl_ml_audio_feature_generation_config.h中的設定初始化microfrontend。
sl_ml_audio_feature_generation_update_features()
使用自上次呼叫此函數以來缺少的特徵切片來更新特徵緩衝區。
sl_ml_audio_feature_generation_get_features_raw(uint16_t *buffer,size_t num_elements)
檢索 uint16 類型的特徵並將其複製到提供的緩衝區。
sl_ml_audio_feature_generation_fill_tensor(TfLiteTensor *輸入張量)
使用 int8 類型的特徵資料填入 TensorFlow 張量。
sl_ml_audio_feature_generation_get_new_feature_slice_count()
傳回自上次呼叫 sl_ml_audio_feature_generation_get_features_raw 或 sl_ml_audio_feature_generation_fill_tensor 以來更新的新的或未取得的特徵切片的數量。
sl_ml_audio_feature_generation_get_feature_buffer_size()
傳回特徵緩衝區大小。
sl_ml_audio_feature_generation_reset()
重置音訊特徵產生器的狀態。
版權所有 © 2025 Silicon Laboratories。版權所有。
62/89
音訊特徵產生器
sl_status_t
sl_ml_audio_feature_generation_init_with_buffer(int16_t *buffer,int n_frames)
使用使用者提供的緩衝區初始化音訊特徵產生。
sl_status_t
sl_ml_audio_feature_generation_get_features_raw_float32(浮點數*緩衝區,size_t num_elements)
檢索 float32 類型的特徵並將其複製到提供的緩衝區。
sl_status_t
sl_ml_audio_feature_generation_get_features_scaled(浮點數*緩衝區,size_t num_elements,浮點數縮放器)
檢索特徵,透過給定的縮放器對其進行縮放,並填充浮點緩衝區。
sl_status_t
sl_ml_audio_feature_generation_get_features_mean_std_normalized(浮點數*緩衝區,size_t num_elements)
檢索特徵,以其平均值和標準差為中心進行標準化,並填入浮點緩衝區。
sl_status_t
sl_ml_audio_feature_generation_activity_detected()
如果活動偵測區塊偵測到音訊串流中的活動,則傳回。
sl_status_t
sl_ml_audio_feature_generation_set_mic_callback(sl_ml_audio_feature_generation_mic_callback_t回調,void *arg)
設定麥克風回調以產生音訊特徵。
Typedef 文檔
sl_ml_audio_feature_generation_mic_callback_t
typedef void(* sl_ml_audio_feature_generation_mic_callback_t) (void *arg,const int16_t *data,uint32_t n_frames) )(void *arg,const int16_t *data,uint32_t n_frames) *arg,const int16_t *data,uint32_t n_frames) *arg,const int16_t *data,uint32_t n_frames) *arg,const int16_t *data,uint32_t n_frames) *arg,const int16_t *data,uint32_t n_frames) *arg,const int16_t *數據 n_frames)
用於產生音訊特徵的麥克風回呼函數類型。參數
類型
方向 N/AN/AN/A
參數名稱 arg 資料 n_frames
描述:傳遞給回呼函數的使用者自訂參數。指向音訊資料緩衝區的指標。緩衝區中的音訊幀數。
變數文檔
sl_ml_audio_feature_generation_audio_buffer
int16_t* sl_ml_audio_feature_generation_audio_buffer 用於產生音訊特徵的外部音訊緩衝區。
功能文件
sl_ml_audio_feature_generation_init
sl_status_t sl_ml_audio_feature_generation_init () 將麥克風設定為特徵產生的音訊來源,並初始化特徵產生的前端。返回
版權所有 © 2025 Silicon Laboratories。版權所有。
63/89
音訊特徵產生器 SL_STATUS_OK 表示成功 SL_STATUS_FAIL
sl_ml_audio_feature_generation_frontend_init
sl_status_t sl_ml_audio_feature_generation_frontend_init ()
根據 sl_ml_audio_feature_generation_config.h 中的配置初始化微前端。根據 sl_ml_audio_feature_generation_config_si91x.h 中的配置初始化微前端。返回
SL_STATUS_OK 表示成功 SL_STATUS_FAIL
sl_ml_audio_feature_generation_update_features
sl_status_t sl_ml_audio_feature_generation_update_features ()
使用自上次呼叫此函數以來缺少的特徵切片更新特徵緩衝區。若要擷取這些特徵,請呼叫 sl_ml_audio_feature_generation_get_features_raw 或 sl_ml_audio_feature_generation_fill_tensor。注意
需要經常呼叫此函數以確保音訊緩衝區不被覆蓋。返回
SL_STATUS_OK 表示成功 SL_STATUS_EMPTY 未計算新的切片
sl_ml_audio_feature_generation_get_features_raw
sl_status_t sl_ml_audio_feature_generation_get_features_raw(uint16_t *緩衝區,size_t num_elements)
檢索 uint16 類型的特徵並將其複製到提供的緩衝區。參數
類型
方向
參數名稱
描述
uint16_t [輸出] * size_t [輸入]
緩衝
指向儲存特徵資料的緩衝區的指針
num_elements 與緩衝區大小對應的元素數量;如果該數量不足以儲存整個特徵緩衝區,則函數將傳回錯誤。
注意:此函數將覆蓋整個緩衝區。
成功時回傳 SL_STATUS_OK SL_STATUS_INVALID_PARAMETER num_elements 太小
sl_ml_audio_feature_generation_fill_tensor
版權所有 © 2025 Silicon Laboratories。版權所有。
64/89
音訊特徵產生器
sl_status_t sl_ml_audio_feature_generation_fill_tensor(TfLiteTensor * 輸入張量)
使用 int8 類型的特徵資料填入 TensorFlow 張量。參數
型 TfLiteTensor *
方向 [輸入]
參數名稱 input_tensor
描述要用特徵填滿的輸入張量。
int8 值是透過將微前端輸出量化為 -128 到 127 範圍內的有符號整數而得出的,預期範圍為 0 到 670。
筆記
此函數覆蓋整個輸入張量。支援 kTfLiteInt8 類型的張量。
退貨
SL_STATUS_OK 表示成功 SL_STATUS_INVALID_PARAMETER 張量類型或大小與設定不對應
sl_ml_audio_feature_generation_get_new_feature_slice_count
int sl_ml_audio_feature_generation_get_new_feature_slice_count ()
傳回自上次呼叫 sl_ml_audio_feature_generation_get_features_raw 或 sl_ml_audio_feature_generation_fill_tensor 以來更新的新的或未取得的特徵切片的數量。返回
未取得的特徵切片數量
sl_ml_audio_feature_generation_get_feature_buffer_size
int sl_ml_audio_feature_generation_get_feature_buffer_size ()
傳回特徵緩衝區大小。返回
特徵緩衝區的大小
sl_ml_audio_feature_generation_reset
void sl_ml_audio_feature_generation_reset () 重設音訊特徵產生器的狀態。
sl_ml_audio_feature_generation_init_with_buffer
sl_status_t sl_ml_audio_feature_generation_init_with_buffer(int16_t * buffer,int n_frames)
版權所有 © 2025 Silicon Laboratories。版權所有。
65/89
音訊特徵產生器
使用使用者提供的緩衝區初始化音訊特徵產生。參數
類型 int16_t * int
方向 [英吋] [英吋]
參數名稱緩衝區 n_frames
描述:指向用於特徵產生的音訊緩衝區的指標。緩衝區中的音訊幀數。
成功時傳回 SL_STATUS_OK,否則傳回 SL_STATUS_FAIL。
sl_ml_audio_feature_generation_get_features_raw_float32
sl_status_t sl_ml_audio_feature_generation_get_features_raw_float32(浮點數*緩衝區,size_t num_elements)
檢索 float32 類型的特徵並將其複製到提供的緩衝區。參數
類型
方向
參數名稱
描述
浮點數 * [輸出]
緩衝
指向儲存特徵資料的緩衝區的指針
size_t [輸入]
num_elements 與緩衝區大小對應的元素數量;如果該數量不足以儲存整個特徵緩衝區,則函數將傳回錯誤。
注意:此函數將覆蓋整個緩衝區。
成功時回傳 SL_STATUS_OK SL_STATUS_INVALID_PARAMETER num_elements 太小
sl_ml_audio_feature_generation_get_features_scaled
sl_status_t sl_ml_audio_feature_generation_get_features_scaled(浮點數*緩衝區,size_t num_elements,浮點數縮放器)
檢索特徵,透過給定的縮放器對其進行縮放,並填充浮點緩衝區。參數
類型
方向
參數名稱
描述
浮點數 * [輸出]
緩衝
指向儲存縮放特徵資料的緩衝區的指針
size_t [輸入]
num_elements 與緩衝區大小對應的元素數量;如果該數量不足以儲存整個特徵緩衝區,則函數將傳回錯誤。
浮動[輸入]
定標器
應用於每個特徵值的比例因子。
緩衝區 = (float)uint16_features_data * 縮放器 注意
此函數覆蓋整個緩衝區。
版權所有 © 2025 Silicon Laboratories。版權所有。
66/89
音訊特徵產生器
成功時回傳 SL_STATUS_OK SL_STATUS_INVALID_PARAMETER num_elements 太小
sl_ml_audio_feature_generation_get_features_mean_std_normalized
sl_status_t sl_ml_audio_feature_generation_get_features_mean_std_normalized(浮點數*緩衝區,size_t num_elements)
檢索特徵,以其平均值和標準差為中心進行標準化,並填充浮點緩衝區。參數
類型
方向
參數名稱
描述
浮點數 * [輸出]
緩衝
指向儲存規範化特徵資料的緩衝區的指針
size_t [輸入]
num_elements 與緩衝區大小對應的元素數量;如果該數量不足以儲存整個特徵緩衝區,則函數將傳回錯誤。
緩衝區 = ((float)uint16_features_data – 平均值(uint16_features_data)) / std(uint16_features_data) 請注意
此函數覆蓋整個緩衝區。返回
SL_STATUS_OK 表示成功 SL_STATUS_INVALID_PARAMETER num_elements 太小
sl_ml_audio_feature_generation_activity_detected
sl_status_t sl_ml_audio_feature_generation_activity_detected ()
如果活動偵測區塊偵測到音訊串流中的活動,則傳回。必須定期呼叫 sl_ml_audio_feature_generation_update_features() 來偵測活動。注意
若要使用此 API,SL_ML_FRONTEND_ACTIVITY_DETECTION_ENABLE 必須為 1。呼叫此 API 後,內部狀態將被重設。例如,如果此 API 傳回 SL_STATUS_OK,則再次呼叫此 API 將傳回 SL_STATUS_IN_PROGRESS,直到偵測到新的活動。如果偵測到活動,則傳回 SL_STATUS_OK;如果未偵測到活動,則傳回 SL_STATUS_IN_PROGRESS;如果未啟用活動偵測區塊,則傳回 SL_STATUS_NOT_AVAILABLE。
sl_ml_audio_feature_generation_set_mic_callback
sl_status_t sl_ml_audio_feature_generation_set_mic_callback (sl_ml_audio_feature_generation_mic_callback_t callback, void * arg) 設定用於音訊特徵產生的麥克風回呼。參數
版權所有 © 2025 Silicon Laboratories。版權所有。
67/89
音訊特徵產生器
類型 sl_ml_audio_feature_generation_mic_callback_t void *
方向 N/AN/A
參數名稱回呼參數
描述:指向麥克風回呼函數的函數指標。使用者自訂的參數,用於傳遞給回調函數。
傳回 sl_status_t 表示成功或失敗的狀態代碼。
版權所有 © 2025 Silicon Laboratories。版權所有。
68/89
影像特徵產生器
影像特徵產生器
影像特徵產生器
影像特徵產生器處理從相機捕獲的輸入影像並提取所需的特徵,以便使用相機作為影像來源的機器學習影像分類應用程式使用。
特徵生成
根據應用程式使用的模型配置,使用裁剪和平均值-標準差歸一化對捕獲的影像進行預處理。
影像
莊稼
檢查平均值
正常化
模型
用法
sl_ml_image_feature_generation_init() 根據 sl_ml_image_feature_generation_config.h 中的設定初始化特徵產生。它還會初始化並以串流模式啟動相機,從而將影像amples 進入乒乓緩衝區。
當呼叫 sl_ml_image_feature_generation_fill_tensor() 時,映像會被預處理並填入輸入張量中。
要檢索產生的特徵,必須呼叫 sl_ml_image_feature_generation_fill_tensor()。
Example
與 TensorFlow Lite Micro 一起使用時,可以使用 sl_ml_image_feature_generation_fill_tensor() 直接使用影像特徵產生器填充張量。但是,模型必須使用與推理相同的特徵產生器配置進行訓練,該配置在 sl_ml_image_feature_generation_config.h 中配置。
版權所有 © 2025 Silicon Laboratories。版權所有。
69/89
影像特徵產生器
#包括“sl_tflite_micro_init.h” #包括“sl_ml_image_feature_generation.h”
無效主(無效){
sl_ml_image_feature_generation_init();
while(1){ * if(do_inference){ sl_ml_image_feature_generation_fill_tensor(sl_tflite_micro_get_input_tensor()); sl_tflite_micro_get_interpreter()->Invoke(); }
…
} }
功能
sl_status_t sl_status_t sl_status_t
無效 無效 無效 sl_status_t sl_status_t sl_status_t sl_status_t 無效
sl_ml_image_feature_generation_init()
將相機設定為特徵產生的影像來源。
sl_ml_image_feature_generation_fill_tensor(TfLiteTensor *輸入張量)
使用特徵資料填充 TensorFlow 張量。模型輸入影像的資料類型將根據模型配置進行選擇。
sl_ml_initialize_arducam_camera()
將 aurducam 設定為特徵產生的影像來源,並使用配置初始化相機。
sl_ml_dump_image(const uint8_t *image_data,uint32_t image_length)
將 JLink 流設定為輸出節點。影像資料透過 JLink 傳輸到 Python 介面。
sl_ml_retrieve_next_camera_image(uint8_t **image_data,uint32_t *image_size)
從 aurducam 擷取的 ping-pog 緩衝區中檢索影像。將影像資料儲存到目標指針。
sl_ml_image_crop_lut_init()
初始化用於裁切影像的查找表。
sl_ml_image_feature_generation_get_image_scaled(uint8_t *image_data,float *buffer,size_t num_elements,float scaler)
檢索特徵,透過給定的縮放器對其進行縮放,並填充浮點緩衝區。
sl_ml_get_image_mean(uint8_t *in_cam_image,浮點數*mean,浮點數*mean2,size_t num_elements)
計算輸入影像的平均值和均方。
sl_ml_image_feature_generation_get_image_mean_std_normalized(uint8_t *image_data,float *buffer,float mean,float mean2,size_t num_elements)
檢索特徵,以其平均值和標準差為中心進行標準化,並填入浮點緩衝區。
sl_ml_image_feature_generation_get_image_raw_float32(uint8_t *image_data,float *buffer,size_t num_elements)
檢索 float32 類型的特徵並將其複製到提供的緩衝區。
sl_ml_image_feature_generation_reset()
重置影像特徵產生器的狀態。
功能文件
sl_ml_image_feature_generation_init
版權所有 © 2025 Silicon Laboratories。版權所有。
70/89
影像特徵產生器
sl_status_t sl_ml_image_feature_generation_init ()
將相機設定為特徵產生的影像來源。返回
SL_STATUS_OK 表示成功 SL_STATUS_FAIL
sl_ml_image_feature_generation_fill_tensor
sl_status_t sl_ml_image_feature_generation_fill_tensor(TfLiteTensor * 輸入張量)
使用特徵資料填充 TensorFlow 張量。模型輸入影像的資料類型將根據模型配置進行選擇。參數
型 TfLiteTensor *
方向 [輸入]
參數名稱 input_tensor
描述要用特徵填滿的輸入張量。
注意此函數會覆蓋整個輸入張量。
成功時傳回 SL_STATUS_OK SL_STATUS_INVALID_PARAMETER 張量類型或大小與設定不對應
sl_ml_initialize_arducam_相機
sl_status_t sl_ml_initialize_arducam_camera ()
將 aurducam 設定為特徵產生的影像來源,並使用配置初始化相機。返回
SL_STATUS_OK 表示成功 SL_STATUS_FAIL
sl_ml_轉儲_映像
void sl_ml_dump_image(const uint8_t * image_data,uint32_t image_length)
將 JLink 流設定為輸出節點。影像資料透過 JLink 傳輸到 Python 介面。參數
型別 const uint8_t * uint32_t
方向 N/AN/A
參數名稱 image_data image_length
退貨
SL_STATUS_OK 表示成功 SL_STATUS_FAIL
描述
版權所有 © 2025 Silicon Laboratories。版權所有。
71/89
影像特徵產生器
sl_ml_retrieve_next_camera_image
void sl_ml_retrieve_next_camera_image(uint8_t ** image_data,uint32_t * image_size)
從 aurducam 擷取的 ping-pog 緩衝區中檢索影像。將影像資料儲存到目標指針。參數
類型 uint8_t ** uint32_t *
方向 N/AN/A
參數名稱 image_data image_size
描述
sl_ml_image_crop_lut_init
void sl_ml_image_crop_lut_init () 初始化用於裁切影像的查找表。
sl_ml_image_feature_generation_get_image_scaled
sl_status_t sl_ml_image_feature_generation_get_image_scaled(uint8_t * image_data,float * buffer,size_t num_elements,float scaler)
檢索特徵,透過給定的縮放器對其進行縮放,並填充浮點緩衝區。參數
類型
方向
參數名稱
描述
uint8_t [輸出] * 浮點數 * [輸入]
image_data緩衝區
指向儲存縮放特徵資料的緩衝區的指針
與緩衝區大小相對應的元素數量;如果該數量不足以儲存整個特徵緩衝區,則函數將傳回錯誤。
size_t [輸入]
num_elements 應用於每個特徵值的比例因子。
浮動 N/A
定標器
緩衝區 = (浮點)影像資料 * 縮放器
筆記
此函數覆蓋整個緩衝區。
退貨
SL_STATUS_OK 表示成功 SL_STATUS_INVALID_PARAMETER num_elements 太小
sl_ml_取得影像平均值
sl_status_t sl_ml_get_image_mean(uint8_t * in_cam_image,浮點數*平均值,浮點數*平均值2,size_t num_elements)
計算輸入影像的平均值和均方。參數
版權所有 © 2025 Silicon Laboratories。版權所有。
72/89
影像特徵產生器
類型
方向
參數名稱
描述
類型
方向
參數名稱
描述
uint8_t [輸出] * 浮點數 * [輸出]
in_cam_image 指向平均值的指針,用於儲存影像的平均值。
意思是
指向mean2的指針,用於儲存影像的均方值。
浮點數 * [輸入]
平均值2
與緩衝區大小相對應的元素數量;如果該數量不足以儲存整個特徵緩衝區,則函數將傳回錯誤。
size_t 不適用
元素數量
平均值 = ((浮點數)影像資料/(寬度*長度)
退貨
SL_STATUS_OK 表示成功 SL_STATUS_INVALID_PARAMETER num_elements 太小
sl_ml_image_feature_generation_get_image_mean_std_normalized
sl_status_t sl_ml_image_feature_generation_get_image_mean_std_normalized(uint8_t * image_data,float * buffer,float mean,float mean2,size_t num_elements)
檢索特徵,以其平均值和標準差為中心進行標準化,並填充浮點緩衝區。參數
類型
方向
參數名稱
描述
uint8_t [輸出] * 浮點數 * [輸入]
image_data緩衝區
指向緩衝區的指針,用於儲存標準化的特徵資料浮點平均值,即影像的平均值。
浮動[輸入]
意思是
float mean2,影像的均方值。
浮動[輸入]
平均值2
與緩衝區大小相對應的元素數量;如果該數量不足以儲存整個特徵緩衝區,則函數將傳回錯誤。
size_t 不適用
元素數量
緩衝區 = ((浮點數)影像資料 – 平均值(影像資料)) / std(影像資料)
筆記
此函數覆蓋整個緩衝區。
退貨
SL_STATUS_OK 表示成功 SL_STATUS_INVALID_PARAMETER num_elements 太小
sl_ml_image_feature_generation_get_image_raw_float32
sl_status_t sl_ml_image_feature_generation_get_image_raw_float32 (uint8_t * image_data, float * buffer, size_t num_elements) 檢索 float32 類型的特徵並將其複製到提供的緩衝區。參數
版權所有 © 2025 Silicon Laboratories。版權所有。
73/89
影像特徵產生器
類型
方向
參數名稱
描述
uint8_t [輸出] * 浮點數 * [輸入]
image_data緩衝區
指向儲存特徵資料的緩衝區的指針
與緩衝區大小相對應的元素數量;如果該數量不足以儲存整個特徵緩衝區,則函數將傳回錯誤。
size_t 不適用
元素數量
筆記
此函數覆蓋整個緩衝區。
退貨
SL_STATUS_OK 表示成功 SL_STATUS_INVALID_PARAMETER num_elements 太小
sl_ml_image_feature_generation_reset
void sl_ml_image_feature_generation_reset () 重設影像特徵產生器的狀態。
版權所有 © 2025 Silicon Laboratories。版權所有。
74/89
TensorFlow Lite 微調試
TensorFlow Lite 微調試
TensorFlow Lite 微調試
用於在 TensorFlow Lite Micro 中登入的附加 SL 實用程式。
功能
無效布林值
sl_tflite_micro_enable_debug_log(布林啟用)
啟用或停用調試日誌記錄。
sl_tflite_micro_is_debug_log_enabled(無效)
檢查調試日誌記錄是否已啟用。
功能文件
sl_tflite_micro_enable_debug_log
void sl_tflite_micro_enable_debug_log(布林啟用)
啟用或停用調試日誌記錄。參數
類型 bool
方向 [輸入]
參數名稱啟用
描述是否應啟用或停用調試日誌記錄。
sl_tflite_micro_is_debug_log_enabled
bool sl_tflite_micro_is_debug_log_enabled(無效)
檢查調試日誌是否已啟用。參數
類型 void
方向 N/A
退貨
是否啟用調試日誌記錄。
參數名稱
描述
版權所有 © 2025 Silicon Laboratories。版權所有。
75/89
TensorFlow Lite 微初始化
TensorFlow Lite 微初始化
TensorFlow Lite 微初始化
TensorFlow Lite Micro Init 函數由 flatbuffer 自動生成 file 配置中提供了根據 flatbuffer 中包含的算子產生的 opsResolver。此外,還提供了用於存取輸入和輸出張量的輔助函數。
功能
sl_status_t
uint8_t * tflite::ErrorR
eporter * tflite::MicroI
解譯器 * TfLiteTensor * TfLiteTensor * tflite::MicroO
pResolver 與 void
sl_tflite_micro_estimate_arena_size(const tflite::Model *model,const tflite::MicroOpResolver &opcode_resolver,size_t *estimated_size)
估計給定模型的競技場大小。
sl_tflite_micro_allocate_tensor_arena(size_t arena_size,uint8_t **tensor_arena)
動態分配可用於張量區域的緩衝區。
sl_tflite_micro_get_error_reporter()
取得 init 函數所建立的 TensorFlow Lite Micro 錯誤報告器的指標。
sl_tflite_micro_get_interpreter()
取得 init 函數所建立的 TensorFlow Lite Micro 解譯器的指標。
sl_tflite_micro_get_input_tensor()
取得指向輸入張量的指針,由 init 函數設定。
sl_tflite_micro_get_output_tensor()
取得指向輸出張量的指針,由 init 函數設定。
sl_tflite_micro_opcode_resolver()
取得指向配置給出的平面緩衝區的操作碼解析器的指標。
sl_tflite_micro_init(無效)
建立錯誤報告器和操作碼解析器並初始化配置給出的平面緩衝區的變數。
功能文件
sl_tflite_micro_estimate_arena_size
sl_status_t sl_tflite_micro_estimate_arena_size(const tflite::Model * model,const tflite::MicroOpResolver & opcode_resolver,size_t * estimated_size)
估計給定模型的競技場大小。參數
類型 const tflite::Model * const tflite::MicroOpResolver & size_t *
方向 [進] [進] [出]
參數名稱模型opcode_resolver估計大小
如果估計成功,則傳回 SL_STATUS_OK。
描述:指向用於估算競技場大小的模型的指標。用於此模型的操作碼解析器。競技場的估算大小,作為輸出。
版權所有 © 2025 Silicon Laboratories。版權所有。
76/89
TensorFlow Lite 微初始化
sl_tflite_micro_allocate_tensor_arena
uint8_t * sl_tflite_micro_allocate_tensor_arena(size_t arena_size,uint8_t ** tensor_arena)
動態分配可用於張量區域的緩衝區。參數
類型 size_t uint8_t **
方向 [進] [出]
參數名稱 arena_size tensor_arena
描述:待分配的arena大小。指向已分配的張量arena緩衝區的指標。
退貨
指向已指派的基底緩衝區的指標。如果指派失敗,則傳回 nullptr。基緩衝區用於釋放已分配的記憶體。
sl_tflite_micro_get_error_reporter
tflite::錯誤報告器 * sl_tflite_micro_get_error_reporter ()
取得 init 函數所建立的 TensorFlow Lite Micro 錯誤報告器的指標。返回
指向錯誤報告器的指標。
sl_tflite_micro_get_interpreter
tflite::MicroInterpreter * sl_tflite_micro_get_interpreter ()
取得 init 函數所建立的 TensorFlow Lite Micro 解譯器的指標。返回
指向解釋器的指標。
sl_tflite_micro_get_input_tensor
TfLiteTensor * sl_tflite_micro_get_input_tensor()
取得指向輸入張量的指針,由 init 函數設定。返回
指向輸入張量的指標。
sl_tflite_micro_get_output_tensor
TfLiteTensor * sl_tflite_micro_get_output_tensor()
版權所有 © 2025 Silicon Laboratories。版權所有。
77/89
TensorFlow Lite 微初始化
取得指向輸出張量的指針,由 init 函數設定。返回
指向輸出張量的指標。
sl_tflite_micro_opcode_resolver
tflite::MicroOpResolver & sl_tflite_micro_opcode_resolver ()
取得指向配置給出的平面緩衝區的操作碼解析器的指標。返回
操作碼解析器的位址。
sl_tflite_micro_init
void sl_tflite_micro_init(void)
建立錯誤報告器和操作碼解析器,並初始化配置給出的平面緩衝區的變數。參數
類型 void
方向 N/A
參數名稱
描述
版權所有 © 2025 Silicon Laboratories。版權所有。
78/89
Samp應用程序
Samp應用程序
Sample 應用程式結束view
以下應用程式示範如何使用 TensorFlow Lite for Microcontrollers 框架與 Simplicity SDK。
語音控制燈
此應用程式示範了一個基於 TensorFlow Lite 微控制器的神經網絡,用於在 Micrium OS 核心任務中,從麥克風錄製的音訊資料中檢測語音單字「開」和「關」。偵測到的關鍵字用於控制開發板上的 LED 燈。音訊數據amp持續引導並使用音訊特徵產生器組件進行預處理。每 200 毫秒對過去約 1 秒的音訊資料進行一次推理。這amp應用程式使用 Flatbuffer Converter Tool 添加 .tflite file 到應用程式二進位檔案。
Z3語音開關
此應用將語音偵測與 Zigbee 3.0 結合,創建了一個語音控制開關節點,可用於切換燈光節點。該應用程式使用與語音控制燈相同的模型來偵測語音關鍵字「開」和「關」。偵測到後,開關節點會透過 Zigbee 網路發送開/關命令。amp應用程式使用 Flatbuffer Converter Tool 添加 .tflite file 到應用程式二進位檔案。
TensorFlow Lite Micro – 你好,世界
此應用程式演示了一個經過訓練的模型,該模型可以複製正弦函數並使用推理結果來控制 LED 的亮度。該應用程式最初由 TensorFlow 編寫,但已移植到 Simplicity SDK。該模型大小約為 2.5 KB。整個應用程式佔用約 157 KB 快閃記憶體和 15 KB RAM。由於該應用程式未手動指定模型中使用的操作,因此會編譯所有內核實現,因此佔用了大量閃存。該應用程式示範了一個極簡推理應用程序,可作為理解 TensorFlow Lite for Microcontrollers 模型解釋流程的良好起點。ample 應用程式使用 hello_world_model_data.cc 中包含的固定模型。
TensorFlow Lite Micro – 微語音
此應用程式展示了一個 20 KB 的模型,該模型經過訓練後可從麥克風錄製的語音資料中偵測簡單詞彙。該應用程式最初由 TensorFlow 編寫,但已移植到 Simplicity SDK。此應用程式佔用約 100 KB 的快閃記憶體和 37 KB 的 RAM。其中約 10 KB 的 RAM 用於 FFT 前端和音訊資料的儲存。在 38.4 MHz 的時脈速度下,使用最佳化的核心實現,對約 1 秒音訊資料的推理時間約為 111 毫秒。此應用程式演示了從音訊資料生成特徵並即時進行檢測的過程。它還示範如何手動指定網路中使用的操作,從而節省大量快閃記憶體。ample 應用程式使用 micro_speech_model_data.cc 中包含的固定模型。
TensorFlow Lite Micro – 魔杖
版權所有 © 2025 Silicon Laboratories。版權所有。
79/89
Samp應用程序
此應用程式演示了一個 10 KB 的模型,該模型使用加速度計檢測運動來訓練識別各種手勢。偵測到的手勢會列印到序列埠。該應用程式最初由 TensorFlow 編寫,但已移植到 Simplicity SDK。
此應用程式佔用約 104 KB 快閃記憶體和 25 KB RAM。它示範如何使用加速度計資料作為推理輸入,並展示如何手動指定網路中使用的操作,從而節省了大量快閃記憶體。
這是amp應用程式使用 Flatbuffer Converter Tool 添加 .tflite file 到應用程式二進位檔案。
TensorFlow 模型專業版filer
此應用程式旨在file Silicon Labs 硬體上的 TensorFlow Lite Micro 型號。應用程式使用的模型由 TensorFlow Lite flatbuffer 提供 file 在 config/tflite 子目錄中名稱為 model.tflite。 profiler 將在執行推理時測量模型每一層的 CPU 時脈週期數和耗時。推理完成後,它也會產生摘要。在執行單一推理之前,模型的輸入層會被全零填滿。分析結果透過 VCOM 傳輸。
要使用不同的 .tflite 模型運行應用程序,您可以替換 file 使用新的 TensorFlow Lite Micro flatbuffer 呼叫 model.tflite file. 這個新的 file 也必須稱為“model.tflite”,並放置在 config/tflite 子目錄中,以便被 s 拾取ample 應用程式。模型替換完成後,重新產生項目。
若要在 TensorFlow Lite Micro 模型上載入並執行推理,請為「張量區域」指派一定數量的位元組,以儲存 TensorFlow Lite Micro 所需的狀態。此張量區域的大小取決於模型的大小和運算子的數量。 TensorFlow Model Profiler 應用程式可用於測量張量區域載入特定 TensorFlow Lite Micro 模型所需的 RAM 量。測量方式為張量區域動態分配 RAM,並在 VCOM 上報告所需的位元組數。張量區域所需的位元組數稍後可用於在其他應用程式中使用該模型時靜態分配記憶體。
這是amp應用程式使用 Flatbuffer Converter Tool 添加 .tflite file 到應用程式二進位檔案。
石頭剪刀布(圖片分類)
影像分類是深度學習和人工智慧最重要的應用之一。影像分類是指根據影像中存在的某些特徵或特性為影像分配標籤。演算法識別這些特徵,並利用它們來區分不同的圖像,並為它們分配標籤。
此應用使用 TensorFlow Lite for Microcontrollers 運行影像分類機器學習模型,對 ArduCAM 攝影機擷取的影像資料中的手勢進行分類。偵測結果透過開發板上的 LED 進行視覺化,分類結果寫入 VCOM 串列埠。
有關更多信息,請參閱圖像分類器文件。
版權所有 © 2025 Silicon Laboratories。版權所有。
80/89
影像分類器
影像分類器
影像分類器
影像分類是深度學習和人工智慧最重要的應用之一。影像分類是指根據影像中存在的某些特徵或特性為影像分配標籤。該演算法識別這些特徵,並利用它們區分不同的圖像,並為它們分配標籤。本應用使用 TensorFlow Lite for Microcontrollers 運行影像分類機器學習模型,從 ArduCAM 攝影機擷取的影像資料中對手勢進行分類。偵測結果透過開發板上的 LED 進行視覺化,分類結果寫入 VCOM 序列埠。amp應用程式使用 Flatbuffer Converter Tool 添加 .tflite file 到應用程式二進位檔案。
類別標籤
岩石:一個人的手製作的圖像
所需硬體和設置
Silicon Labs EFR 系列電路板 BRD2601B 或 BRD2608A。 Berg Strip 連接器帶跳線(至少 8 根),可採用以下任意組合。
公頭-伯格帶,帶母頭對母頭跳線。母頭-伯格帶,帶公頭對母頭跳線。 ArduCAM 攝影機模組。
引腳配置
下表顯示了 ArduCAM 和開發套件之間的引腳連接。
版權所有 © 2025 Silicon Laboratories。版權所有。
81/89
影像分類器
ArduCAM 腳位 GND VCC CS MOSI MISO SCK SDA SCL
主機板擴充介面接腳 1 18 10 4 6 8 16 15
所需軟件
帶有 simplicity_sdk aiml-extension 的 Simplicity studio v5
將影像轉儲到 PC
此應用程式使用 JLink 將映像資料串流傳輸到位於 aiml-extension/tools/image-visualization 的 Python 腳本。若要開始使用,請參閱 readme.md 中提供的說明。 file。將應用程式二進位檔案刷入開發板後,您可以啟動視覺化工具來 view 傳入的影像流並可選擇將其儲存至本機。
應用筆記
相機輸入:此應用程式使用 ArduCAM 相機拍攝的影像。光照條件:此模型基於光照充足的影像進行訓練。為了獲得最佳效果,請在良好的光照條件下進行實驗。調整 .slcp 配置中的 SL_ML_IMAGE_MEAN_THRESHOLD 參數 file 設定影像處理所需的最小平均強度。建議距離:實驗過程中,相機與主體手部之間保持約0.5公尺的距離。背景設定:使用純色背景(最好是白色或黑色)以提高偵測準確性和一致性。
卷積神經網絡
本應用程式所使用的機器學習模型類型是卷積神經網路(CNN)。
卷積神經網路 (ConvNet/CNN) 是一種深度學習演算法,它可以接收輸入影像,為影像中的各個方面/物件分配重要性(可學習的權重和偏差),並能夠區分它們。
典型的 CNN 可以視覺化如下:
版權所有 © 2025 Silicon Laboratories。版權所有。
82/89
影像分類器:典型的 CNN 由多層構成。每一層本質上都是對多維數組(又稱張量)進行數學運算。 CNN 的層級可以分為兩個核心階段:特徵學習:使用卷積層提取
深度學習管道
深度學習流程通常由三個主要部分組成tages:資料集收集、模型訓練和推理如下。
一些amp下圖說明了此應用中用於訓練模型的資料。
資料預處理
預處理tage 涉及特定的資料規範化設置,由 ml_image_feature_generation 元件管理。 samplewise_center = True samplewise_std_normalization = True
版權所有 © 2025 Silicon Laboratories。版權所有。
83/89
影像分類器
norm_img = (img – mean(img)) / std(img) 這些設定使用公式對每個輸入影像進行單獨歸一化。這有助於確保模型不太依賴相機和光照變化。
型號詳情
模型摘要提供了有關每一層的詳細資訊以及所涉及的參數數量。此細分概述了用於執行影像分類任務的架構。
模型評估
模型評估的基本方法包括輸入測試amp將訓練過程中未使用的新資料(新的、未見過的資料)輸入模型,並將其預測與實際預期值進行比較。如果每個預測都正確,則模型的準確率達到 100%;每個錯誤的預測都會降低整體準確率。
下圖說明了使用石頭剪刀布資料集實現的關鍵績效指標 (KPI),包括:
準確率:正確預測佔總預測的比例 ROC 曲線:真陽性率與假陽性率的圖形表示 召回率:衡量模型識別所有相關實例的能力 精確率:所有預測陽性中真陽性的比例
版權所有 © 2025 Silicon Laboratories。版權所有。
84/89
影像分類器
整體準確率:95.037% 類別準確率:
布 = 98.394% 剪刀 = 97.500% 石頭 = 92.476% 未知 = 92.083% 平均 ROC AUC:98.664% 類 ROC AUC:布 = 99.461% 未知 = 99.042% 剪刀 AUC:布 = 99.461% 未知 = 99.042% 剪刀 = 98.
版權所有 © 2025 Silicon Laboratories。版權所有。
85/89
其他主題
其他主題
第三方工具和合作夥伴解決方案
工裝
TensorFlow
SiSDK 原生支援 TensorFlow Lite for Microcontrollers (TFLM)。開發者可以創建量化的 .tflite 模型 file 直接使用 TensorFlow 環境並將其整合到 GDSK 中。入門
使用 TensorFlow 和 Keras 開發模型
Silicon Labs 機器學習工具包 (MLTK)(已棄用)
機器學習工具包 (MLTK) 正是出於這些原因而創建的,旨在幫助 Tensorflow 開發人員。它是一組 Python 腳本,旨在遵循 Silicon Labs 嵌入式裝置的典型機器學習工作流程。
附註:此軟體包是一個開源、自助式、社群支援的參考軟體包,並附帶一套全面的線上文件。 Silicon Labs 目前不提供此軟體的支援服務。這些腳本是針對文件教學中涵蓋的用例的參考實作。其他用例的支援由開發人員負責。
開始為 SiSDK ex 建立關鍵字辨識模型amp勒。 (GitHub.io) – MLTK 教程
整合模型
訓練好的模型,無論是直接使用 TensorFlow 或 MLTK,都以 .tflite 表示 file. 若要新增 .tflite file 請參閱開發推理應用程式。 SiSDK 有幾種範例amp包含機器學習並展示如何使用預訓練模型進行推理的文件。預訓練模型可以用模型
文件/資源
![]() |
Silicon Labs 帶來人工智慧和機器學習 [pdf] 使用者手冊 帶來人工智慧和機器學習,帶來人工智慧和機器學習,機器學習,學習 |
