TensorFlow Lite for Microcontrollers 專門用於在微控制器和其他裝置上執行機器學習模型,只需要少量 KB 的記憶體。使用 Arm Cortex M3 的核心執行階段大小為 16 KB,可以執行許多基本模型。不需要作業系統支援、標準 C 或 C++ 程式庫或動態記憶體配置。
微控制器的重要性
微控制器通常是小型的低功率運算裝置,內嵌在需要基本運算的硬體中。藉由將機器學習技術導入小型微控制器,我們可以提升生活中數十億部裝置 (包括家用電器和物聯網裝置) 的智慧功能,而不必依賴昂貴的硬體或穩定的網際網路連線,這種裝置通常受限於頻寬和電源限制,並導致高延遲。這也有助於維護隱私,因為資料不會傳送至裝置。請想像一下,可因應日常作息的智慧設備、能理解問題與一般運作差異的智慧型工業用感應器,以及可讓孩子透過有趣歡樂的方式學習的魔法玩具。
支援的平台
TensorFlow Lite for Microcontrollers 是以 C++ 17 編寫,需要使用 32 位元平台。並搭配許多採用 Arm Cortex-M Series 架構的處理器進行廣泛測試,並已移植至 ESP32 等其他架構。該架構是以 Arduino 程式庫的形式提供。也可以為開發環境 (例如 Mbed) 建立專案。Kubernetes 是開放原始碼,可以加入任何 C++ 17 專案。
以下是支援的開發板:
- Arduino Nano 33 BLE Sense
- SparkFun Edge
- STM32F746 Discovery 套件
- Adafruit Edge 徽章
- Adafruit TensorFlow Lite for Microcontrollers 套件
- Adafruit Circuit Playground Bluefruit
- Espressif ESP32-DevKitC
- Espressif ESP-EYE
- Wio Terminal:ATSAMD51
- Himax WE-I Plus EVB 端點 AI 開發委員會
- Synopsys DesignWare ARC EM 軟體開發平台
- Sony Spresense
探索範例
每個應用程式範例都位於 GitHub,且包含 README.md
檔案,說明如何將其部署至支援的平台。部分範例也有使用特定平台的端對端教學課程,如下所示:
- Hello World:示範使用 TensorFlow Lite for Microcontrollers 的絕對基本概念
- 微語音:使用麥克風擷取音訊,偵測「是」和「否」字詞
- 人員偵測:使用影像感應器擷取相機資料,偵測某人是否在場
工作流程
如要在微控制器上部署及執行 TensorFlow 模型,必須執行下列步驟:
- 訓練模型:
- 產生適合目標裝置且包含支援的作業的小型 TensorFlow 模型。
- 使用 TensorFlow Lite 轉換工具轉換為 TensorFlow Lite 模型。
- 使用標準工具轉換為 C 位元組陣列,以將其儲存在裝置上的唯讀程式記憶體中。
- 使用 C++ 程式庫在裝置上執行推論並處理結果。
限制
TensorFlow Lite for Microcontrollers 專門用於特定限制的微控制器開發。如果您是針對更強大的裝置 (例如 Raspberry Pi 等嵌入式 Linux 裝置) 工作,標準 TensorFlow Lite 架構可能會較容易整合。
你應將下列限制納入考量:
- 僅支援部分的 TensorFlow 作業
- 僅支援部分裝置
- 低階 C++ API 需手動管理記憶體
- 不支援裝置端訓練
後續步驟
- 開始使用微控制器來試做範例應用程式,並瞭解如何使用 API。
- 瞭解 C++ 程式庫,瞭解如何在自己的專案中使用程式庫。
- 建構並轉換模型,進一步瞭解如何訓練及轉換微控制器上的部署模型。