TensorFlow Lite 微控制器旨在於記憶體僅有幾 KB 的微控制器和其他裝置上執行機器學習模型。核心執行階段僅佔用 Arm Cortex M3 上的 16 KB,即可執行許多基本模型。它不需要作業系統支援、任何標準 C 或 C++ 程式庫或動態記憶體配置。
為何微控制器如此重要
微控制器通常是小型、低功耗的運算裝置,嵌入在需要基本運算的硬體中。透過將機器學習引入微小的微控制器,我們可以提升數十億個日常生活中使用的裝置(包括家用電器和物聯網裝置)的智慧,而無需依賴昂貴的硬體或可靠的網際網路連線,後者通常會受到頻寬和電力限制,並導致高延遲。這也有助於保護隱私,因為沒有資料會離開裝置。想像一下,智慧型家電可以適應您的日常作息、智慧型工業感測器可以了解問題和正常運作之間的差異,以及可以幫助孩子以有趣且愉快的方式學習的魔法玩具。
支援的平台
TensorFlow Lite 微控制器以 C++ 17 編寫,需要 32 位元平台。它已在許多基於 Arm Cortex-M 系列 架構的處理器上進行了廣泛測試,並已移植到包括 ESP32 在內的其他架構。該框架可作為 Arduino 程式庫使用。它也可以為 Mbed 等開發環境產生專案。它是開放原始碼,可以包含在任何 C++ 17 專案中。
支援以下開發板
- Arduino Nano 33 BLE Sense
- SparkFun Edge
- STM32F746 Discovery kit
- Adafruit EdgeBadge
- Adafruit TensorFlow Lite 微控制器套件
- Adafruit Circuit Playground Bluefruit
- Espressif ESP32-DevKitC
- Espressif ESP-EYE
- Wio Terminal: ATSAMD51
- Himax WE-I Plus EVB Endpoint AI Development Board
- Synopsys DesignWare ARC EM Software Development Platform
- Sony Spresense
探索範例
每個範例應用程式都在 Github 上,並有一個 README.md
檔案說明如何將其部署到支援的平台上。一些範例也有使用特定平台的端對端教學課程,如下所示
- Hello World - 示範使用 TensorFlow Lite 微控制器的絕對基礎知識
- Micro speech - 使用麥克風擷取音訊以偵測「是」和「否」
- Person detection - 使用影像感測器擷取相機資料,以偵測人員是否存在
工作流程
需要在微控制器上部署和執行 TensorFlow 模型,需要以下步驟
- 訓練模型:
- 產生一個小型 TensorFlow 模型,該模型可以適用於您的目標裝置並包含 支援的操作。
- 使用 TensorFlow Lite 轉換器 轉換為 TensorFlow Lite 模型。
- 使用 標準工具 轉換為 C 位元組陣列,以將其儲存在裝置上的唯讀程式記憶體中。
- 使用 C++ 程式庫 在裝置上執行推論,並處理結果。
限制
TensorFlow Lite 微控制器是專為微控制器開發的特定限制而設計的。如果您正在使用功能更強大的裝置(例如,像 Raspberry Pi 這樣的嵌入式 Linux 裝置),則標準 TensorFlow Lite 框架可能更容易整合。
應考慮以下限制
- 支援 有限的子集 TensorFlow 操作
- 支援有限的裝置集
- 需要手動記憶體管理的低階 C++ API
- 不支援裝置端訓練
後續步驟
- 開始使用微控制器 來試用範例應用程式並學習如何使用 API。
- 了解 C++ 程式庫 以學習如何在您自己的專案中使用該程式庫。
- 建構與轉換模型 以了解更多關於訓練和轉換模型以部署在微控制器上的資訊。