TensorFlow Lite for Microcontrollers は、わずか数キロバイトのメモリを搭載したマイクロコントローラなどのデバイスで ML モデルを実行するように設計されています。コア ランタイムは Arm Cortex M3 で 16 KB に収まり、多くの基本モデルを実行できます。オペレーティング システムのサポート、標準の C / C++ ライブラリ、動的メモリ割り当ては必要ありません。
マイクロコントローラが重要な理由
マイクロコントローラは通常、基本的な計算を必要とするハードウェアに組み込まれた小型で低電力のコンピューティング デバイスです。ML を小さなマイクロコントローラで実現することで、高価なハードウェアや信頼性の高いインターネット接続に依存することなく、家庭用電化製品やモノのインターネット デバイスなど、生活で使用されている何十億ものデバイスのインテリジェンスを向上させることができます。こうしたデバイスは、帯域幅や電力の制約を受けることが多く、レイテンシが高くなります。また、デバイスの外部に送信されるデータがないため、プライバシーの保護にも役立ちます。日常生活に適応できるスマート家電、問題と通常の動作の違いを理解するインテリジェントな産業センサー、子どもが楽しく楽しく学習できる魔法のおもちゃを想像してみてください。
対応プラットフォーム
TensorFlow Lite for Microcontrollers は C++ 17 で記述されており、32 ビット プラットフォームを必要とします。Arm Cortex-M シリーズ アーキテクチャに基づく多くのプロセッサで幅広くテストされており、ESP32 を含む他のアーキテクチャにも移植されています。このフレームワークは Arduino ライブラリとして利用できます。また、Mbed などの開発環境のプロジェクトも生成できます。オープンソースであり、任意の C++ 17 プロジェクトに含めることができます。
次の開発ボードがサポートされています。
- Arduino Nano 33 BLE Sense
- SparkFun Edge
- STM32F746 ファインド キット
- Adafruit EdgeBadge
- Adafruit TensorFlow Lite for Microcontrollers Kit
- アダフルーツ サーキット プレイグラウンド ブルーフルーツ
- Espressif ESP32-DevKitC
- Espressif ESP-EYE
- Wio 端末: 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++ ライブラリについて理解する。
- モデルの構築と変換。マイクロコントローラにデプロイするモデルのトレーニングと変換について学習する。