TensorFlow Lite for Microcontrollers 專門用於在微控制器和其他裝置上執行機器學習模型,而且只需使用幾 KB 的記憶體。使用 ARM Cortex M3 的核心執行階段大小只要 16 KB,而且可以執行許多基本模型。TensorFlow Lite for Microcontrollers 不需要任何作業系統支援,也不需要標準 C 或 C++ 程式庫或是動態記憶體配置。
微控制器的重要性
微控制器通常是小型的低功率運算裝置,內嵌在需要基本計算的硬體中。透過在小型微控制器中導入機器學習技術,我們可大幅改善生活中所用數十億部裝置 (包括家用電器和物聯網裝置) 的智慧功能,而不必依賴昂貴的硬體或可靠的網際網路連線,這類硬體或網際網路連線常常會因為頻寬和電量的限制而導致高延遲。這項做法也有助於維持隱私性,因為資料無須離開裝置。想像一下:可依照您的日常作息進行調整的智慧應用程式、可區分問題與一般操作的智慧型工業用感應器,以及可讓兒童透過開心又有趣的方式學習的神奇玩具。
支援的平台
TensorFlow Lite for Microcontrollers 是以 C++ 11 寫成,必須使用 32 位元平台。此外,TensorFlow Lite for Microcontrollers 已在 ARM Cortex-M Series 架構的多個處理器上經過廣泛測試,並已移植到 ESP32 等其他架構。TensorFlow Lite for Microcontrollers 架構是以 Arduino 程式庫的形式提供,也可以為開發環境 (例如 Mbed) 建立專案。TensorFlow Lite for Microcontrollers 為開放原始碼,可以加入至任何 C++ 11 專案。
以下是支援的開發板:
- Arduino Nano 33 BLE Sense
- SparkFun Edge
- STM32F746 Discovery 套件
- Adafruit EdgeBadge
- Adafruit TensorFlow Lite for Microcontrollers 套件
- Adafruit Circuit Playground Bluefruit
- Espressif ESP32-DevKitC
- Espressif ESP-EYE
- Wio Terminal:ATSAMD51
- Himax WE-I Plus EVB Endpoint AI 開發板
- Synopsys DesignWare ARC EM Software Development Platform
- 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++ 程式庫,瞭解如何在自己的專案中使用這個程式庫。
- 建構和轉換模型,進一步瞭解如何訓練及轉換要部署在微控制器上的模型。