TensorFlow Lite for Microcontrollers

TensorFlow Lite for Microcontrollers は、メモリが数キロバイトしかないマイクロコントローラなどのデバイス上で機械学習モデルを実行するように設計された、TensorFlow Lite の実験的な移植版です。

オペレーティング システムのサポート、標準の C / C++ ライブラリ、動的メモリ割り当ては必要ありません。コアランタイムは Arm Cortex M3 で 16 KB に収まり、音声キーワード検出モデルを実行するのに十分な演算子を使用する場合でも、合計 22 KB となります。

サンプル アプリケーションがあり、マイクロコントローラを使用して、ウェイクワード検出、加速度計データからのジェスチャー分類、カメラデータを使用した画像分類などのタスクのデモンストレーションも行えます。

始める

サンプル アプリケーションを試し、API の使用方法を確認するには、マイクロコントローラのスタートガイドをご覧ください。

対応プラットフォーム

TensorFlow Lite for Microcontrollers は C++ 11 で記述されており、32 ビット プラットフォームを必要とします。Arm Cortex-M シリーズ アーキテクチャに基づく多くのプロセッサで幅広くテストされており、ESP32 などの他のアーキテクチャにも移植されています。

フレームワークは Arduino ライブラリとして利用できます。また、Mbed などの開発環境のプロジェクトも生成できます。オープンソースであり、任意の C++ 11 プロジェクトに含めることができます。

サンプル アプリケーションを利用できる開発ボードは次のとおりです。

ライブラリとサンプルの詳細については、マイクロコントローラのスタートガイドをご覧ください。

マイクロコントローラが重要な理由

マイクロコントローラは通常、小型で低電力のコンピューティング デバイスです。家電製品やモノのインターネット(IoT)デバイスを含め、基本的な演算を必要とするハードウェアに組み込まれます。毎年、何十億台ものマイクロコントローラが製造されています。

マイクロコントローラは多くの場合、処理能力、メモリ、ストレージ容量を抑える代わりに、低消費電力と小型化を実現できるように最適化されています。マイクロコントローラによっては、機械学習タスクのパフォーマンスを最適化するように設計された機能を持つものもあります。

機械学習の推論をマイクロコントローラ上で実行することで、デベロッパーは帯域幅と電力の制約からレイテンシが増加するネットワーク接続の影響を受けることなく、幅広いハードウェア デバイスに 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 の使用方法をご確認ください。