TensorFlow Lite for Microcontrollers

TensorFlow Lite for Microcontrollers 是 TensorFlow Lite 的實驗性移植版本,專門用來在微控制器和其他裝置上執行機器學習模型,而且只需使用 KB 量級的記憶體。

TensorFlow Lite for Microcontrollers 不需要任何作業系統支援,也不需要標準 C 或 C++ 程式庫或是動態記憶體配置。使用 Arm Cortex M3 的核心執行階段大小為 16 KB,加上足夠執行語音關鍵字偵測模型的運算子,總共需要 22 KB。

我們有提供範例應用程式,展示如何使用微控制器執行工作,包括喚醒字詞偵測、加速計資料的手勢分類,以及使用相機資料的圖片分類等工作。

開始使用

如要試做範例應用程式,並瞭解如何使用 API,請參閱開始使用微控制器

支援的平台

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 專案都可以加入。

我們有提供適用於下列開發板的範例應用程式:

請參閱開始使用微控制器,進一步瞭解程式庫和範例。

微控制器的重要性

微控制器通常是小型的低功率運算裝置,經常內嵌在需要基本計算的硬體中,例如家用電器和物聯網裝置,每年製造的微控制器高達數十億個。

微控制器通常會盡可能耗用最少的電量,並使用最小的尺寸,但也會因此降低處理能力、記憶體和儲存空間。有些微控制器可專門針對機器學習工作的效能進行最佳化。

開發人員可以透過在微控制器上執行機器學習推論,將 AI 技術運用至多種硬體裝置,且不需使用網路連線 (使用網路常常會因為頻寬和電量的限制而導致高延遲)。在裝置端執行推論也有助於維持隱私性,因為資料無須離開裝置。

開發人員工作流程

如要將 TensorFlow 模型部署至微控制器,請依照下列程序執行:

  1. 建立或取得 TensorFlow 模型

    轉換後的模型必須可裝入目標裝置,且只能使用支援的運算。如果你要使用目前不支援的運算,可提供自己的實作。

  2. 將模型轉換成 TensorFlow Lite FlatBuffer

    使用 TensorFlow Lite 轉換工具,將模型轉換為標準的 TensorFlow Lite 格式。建議你輸出量化模型,因為這類模型的大小更小,而且執行效率更高。

  3. 將 FlatBuffer 轉換為 C 位元組陣列

    模型會保存在唯讀程式記憶體中,並以簡單的 C 語言檔形式提供。你可以使用標準工具將 FlatBuffer 轉換為 C 陣列

  4. 整合 TensorFlow Lite for Microcontrollers C++ 程式庫

    編寫微控制器程式碼以收集資料、使用 C++ 程式庫執行推論,並運用該結果。

  5. 在裝置上部署

    在你的裝置上建立並部署程式。

限制

TensorFlow Lite for Microcontrollers 是專門用於具特定限制的微控制器開發。如果你是針對更強大的裝置進行開發 (例如 Raspberry Pi 等嵌入式 Linux 裝置),標準的 TensorFlow Lite 架構可能會更易於整合。

你應將下列限制納入考量:

  • 僅支援一部分的 TensorFlow 運算
  • 僅支援部分裝置
  • 低階 C ++ API 需手動管理記憶體
  • 不支援訓練

後續步驟

如要試做範例應用程式,並瞭解如何使用 API,請參閱開始使用微控制器