TensorFlow Lite for Microcontrollers は、メモリが数キロバイトしかないマイクロコントローラなどのデバイス上で機械学習モデルを実行するように設計されています。コアランタイムは Arm Cortex M3 で 16 KB に収まり、さまざまな基本的モデルを実行できます。オペレーティング システムのサポート、標準の C / C++ ライブラリ、動的メモリ割り当ては必要ありません。
マイクロコントローラが重要な理由
マイクロコントローラは通常、小型で低電力のコンピューティング デバイスであり、基本的な計算を必要とするハードウェアに埋め込まれています。小さなマイクロコントローラに機械学習を行わせることで、家電やモノのインターネットなど、日常生活で使用するさまざまなデバイスのインテリジェンスを高められます。高価なハードウェアや、信頼性の高いインターネット接続(帯域幅や電力の制約によりレイテンシが高くなりがち)に頼る必要もなくなります。さらに、データがデバイスの外に出ないため、プライバシーの保護にも役立ちます。毎日決まった仕事をこなせるスマート家電、動作の異常と正常を見分けられるインテリジェント工業センサー、子どもが自分で楽しく学習できる魅力的なおもちゃを想像してください。
対応プラットフォーム
TensorFlow Lite for Microcontrollers は C++ 11 で記述されており、32 ビット プラットフォームを必要とします。Arm Cortex-M シリーズ アーキテクチャに基づく多くのプロセッサで幅広くテストされており、ESP32 などの他のアーキテクチャにも移植されています。フレームワークは Arduino ライブラリとして利用できます。また、Mbed などの開発環境のプロジェクトも生成できます。オープンソースであり、任意の C++ 11 プロジェクトに含めることができます。
次の開発ボードに対応しています。
- Arduino Nano 33 BLE Sense
- SparkFun Edge
- STM32F746 Discovery kit
- Adafruit EdgeBadge
- Adafruit TensorFlow Lite for Microcontrollers Kit
- 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 - マイクで音声をキャプチャし、「yes」と「no」という単語を検出します
- Magic wand - 加速度計データをキャプチャして、3 つの異なる物理的ジェスチャーを分類します
- Person detection - 画像センサーでカメラデータをキャプチャし、人の存在や不在を検出します
ワークフロー
マイクロコントローラに TensorFlow モデルをデプロイして実行するには、次の手順を行う必要があります。
- モデルをトレーニングする:
- ターゲット デバイスに適合し、サポートされている演算を含む、小さな TensorFlow モデルを生成します。
- TensorFlow Lite コンバータを使用して TensorFlow Lite モデルに変換します。
- 標準ツールを使用して C バイト配列に変換し、デバイスの読み取り専用プログラム メモリに格納します。
- C++ ライブラリを使用してデバイス上で推論を実行し、結果を処理します。
制限事項
TensorFlow Lite for Microcontrollers は、特にマイクロコントローラの開発上の制約に対応した設計となっています。より高機能なデバイス(Raspberry Pi のような組み込み Linux デバイスなど)の開発を行う場合は、標準の TensorFlow Lite フレームワークの方が容易に統合できます。
考慮する必要がある制限事項は次のとおりです。
- TensorFlow オペレーションの一部しかサポートされていない
- デバイスの一部しかサポートされていない
- 低レベルの C++ API では手動でのメモリ管理が必要となる
- デバイス上でのトレーニングはサポートされていない
次のステップ
- マイクロコントローラを使ってみるでサンプル アプリケーションを試し、API の使用方法を確認します。
- C++ ライブラリを理解するで、独自のプロジェクトでライブラリを使用する方法についてご確認ください。
- モデルの構築と変換で、マイクロコントローラにデプロイするモデルのトレーニングと変換の方法についてご確認ください。