TensorFlow Lite for Android

TensorFlow Liteを使用すると、AndroidアプリでTensorFlow機械学習(ML)モデルを実行できます。 TensorFlow Liteシステムは、ハードウェアアクセラレーションのオプションを含め、Androidでモデルを迅速かつ効率的に実行するための、事前に構築されたカスタマイズ可能な実行環境を提供します。

学習ロードマップ

TensorFlow Liteを使用してAndroidアプリを構築するための概念とコード設計を学び、読み続けてください。
クイックスタートを使用して、TensorFlowLiteでAndroidアプリのコーディングをすぐに開始します。
TensorFlow LiteでのMLモデルの選択と使用については、モデルのドキュメントをご覧ください。

機械学習モデル

TensorFlow Liteは、より小さく、ポータブルで、より効率的な機械学習モデル形式に変換されたTensorFlowモデルを使用します。 AndroidのTensorFlowLiteでビルド済みモデルを使用することも、独自のTensorFlowモデルをビルドしてTensorFlowLite形式に変換することもできます。

このページでは、すでに構築されている機械学習モデルの使用について説明しますが、モデルの構築、トレーニング、テスト、変換については説明していません。モデルセクションで、TensorFlow Liteの機械学習モデルの選択、変更、構築、変換の詳細をご覧ください。

Androidでモデルを実行する

Androidアプリ内で実行されているTensorFlowLiteモデルは、データを取り込み、データを処理し、モデルのロジックに基づいて予測を生成します。 TensorFlow Liteモデルを実行するには、特別なランタイム環境が必要です。モデルに渡されるデータは、テンソルと呼ばれる特定のデータ形式である必要があります。モデルがデータを処理するとき(推論の実行と呼ばれます)、予測結果を新しいテンソルとして生成し、Androidアプリに渡して、ユーザーに結果を表示したり、追加のビジネスロジックを実行したりするなどのアクションを実行できるようにします。

AndroidアプリでのTensorFlowLiteモデルの機能実行フロー

1.AndroidアプリでのTensorFlowLiteモデルの機能実行フロー。

機能設計レベルでは、TensorFlow Liteモデルを実行するには、Androidアプリに次の要素が必要です。

  • モデルを実行するためのTensorFlowLiteランタイム環境
  • データをテンソルに変換するためのモデル入力ハンドラー
  • 出力結果テンソルを受け取り、それらを予測結果として解釈するためのモデル出力ハンドラー

次のセクションでは、TensorFlowLiteライブラリとツールがこれらの機能要素を提供する方法について説明します。

TensorFlowLiteでアプリを構築する

このセクションでは、AndroidアプリにTensorFlowLiteを実装するための推奨される最も一般的なパスについて説明します。ランタイム環境開発ライブラリのセクションに最も注意を払う必要があります。カスタムモデルを開発した場合は、「高度な開発パス」セクションを確認してください。

ランタイム環境オプション

Androidアプリでモデルを実行するためのランタイム環境を有効にする方法はいくつかあります。推奨されるオプションは次のとおりです。

一般に、標準のTensorFlow Liteランタイム環境を使用する必要があります。これは、Androidでモデルを実行するための最も用途の広い環境だからです。 Google Playサービスが提供するランタイム環境は、Google Playリソースから読み込まれ、アプリにバンドルされていないため、標準環境よりも便利でスペース効率に優れています。一部の高度なユースケースでは、モデルのランタイム環境をカスタマイズする必要があります。これについては、高度なランタイム環境のセクションで説明しています。

TensorFlow Lite開発ライブラリをアプリ開発環境に追加することで、Androidアプリでこれらのランタイム環境にアクセスします。アプリで標準のランタイム環境を使用する方法については、次のセクションを参照してください。その他のランタイム環境については、高度なランタイム環境を参照してください。

開発APIとライブラリ

TensorFlowLite機械学習モデルをAndroidアプリに統合するために使用できる主なAPIは2つあります。

Interpreter APIは、既存のTensorFlowLiteモデルで推論を実行するためのクラスとメソッドを提供します。 TensorFlow LiteタスクAPIは、Interpreter APIをラップし、ビジュアル、オーディオ、およびテキストデータの処理に関する一般的な機械学習タスクを実行するための高レベルのプログラミングインターフェイスを提供します。特定のユースケースをサポートしていないことがわかった場合を除き、TaskAPIを使用する必要があります。

ライブラリ

AndroidアプリにTensorFlowLiteタスクライブラリを含めることで、タスクAPIにアクセスできます。タスクライブラリには、必要に応じてInterpreterAPIクラスとメソッドも含まれています。

Interpreter APIを使用するだけの場合は、 TensorFlowLiteライブラリを含めることができます。または、TensorFlowLite用のGooglePlayサービスライブラリを含め、別のライブラリをアプリにバンドルせずに、Playサービスを介してInterpreterAPIにアクセスすることもできます。

TensorFlow Liteサポートライブラリは、モデル、モデルメタデータ、およびモデル推論結果のデータを管理するための追加機能を提供するためにも利用できます。

TensorFlow Liteライブラリとランタイム環境の使用に関するプログラミングの詳細については、Android用の開発ツールをご覧ください。

モデルを入手する

Androidアプリでモデルを実行するには、TensorFlowLite形式のモデルが必要です。ビルド済みのモデルを使用することも、TensorFlowを使用してモデルをビルドしてLite形式に変換することもできます。 Androidアプリのモデルを取得する方法の詳細については、「TensorFlowLiteモデル」セクションを参照してください。

入力データを処理する

MLモデルに渡すデータはすべて、テンソルの形状と呼ばれることが多い特定のデータ構造を持つテンソルである必要があります。モデルを使用してデータを処理するには、アプリコードで、データを画像、テキスト、音声データなどのネイティブ形式からモデルに必要な形状のテンソルに変換する必要があります。

TensorFlow Liteタスクライブラリは、ビジュアル、テキスト、オーディオデータをTensorFlowLiteモデルで処理される正しい形状のテンソルに変換するためのデータ処理ロジックを提供します。

推論を実行する

モデルを介してデータを処理して予測結果を生成することは、推論の実行と呼ばれます。 Androidアプリで推論を実行するには、TensorFlow Liteランタイム環境モデル入力データが必要です。

モデルが特定のデバイスで推論を生成できる速度は、処理されるデータのサイズ、モデルの複雑さ、メモリやCPUなどの利用可能なコンピューティングリソース、またはアクセラレータと呼ばれる特殊なプロセッサによって異なります。機械学習モデルは、デリゲートと呼ばれるTensorFlow Liteハードウェアドライバーを使用して、グラフィックスプロセッシングユニット(GPU)やテンソルプロセッシングユニット(TPU)などのこれらの特殊なプロセッサーでより高速に実行できます。モデル処理のデリゲートとハードウェアアクセラレーションの詳細については、ハードウェアアクセラレーションの概要を参照してください。

出力結果を処理する

モデルはテンソルとして予測結果を生成します。テンソルは、アクションを実行するか、結果をユーザーに表示することにより、Androidアプリで処理する必要があります。モデルの出力結果は、画像分類の単一の結果(0 =犬、1 =猫、2 =鳥)に対応する数値から、より複雑な結果(複数の分類されたオブジェクトの複数の境界ボックスなど)まで単純にすることができます。画像、予測信頼度は0〜1です。

高度な開発パス

より洗練されたカスタマイズされたTensorFlowLiteモデルを使用する場合、上記よりも高度な開発アプローチを使用する必要がある場合があります。次のセクションでは、Androidアプリでモデルを実行してTensorFlowLite用にモデルを開発するための高度な手法について説明します。

高度なランタイム環境

TensorFlowLiteの標準ランタイムおよびGooglePlayサービスランタイム環境に加えて、Androidアプリで使用できる追加のランタイム環境があります。これらの環境で最も可能性の高い用途は、TensorFlowLiteの標準ランタイム環境でサポートされていないML操作を使用する機械学習モデルがある場合です。

TensorFlow Lite Flexランタイムを使用すると、モデルに必要な特定の演算子を含めることができます。モデルを実行するための高度なオプションとして、TensorFlow Lite for Androidを構築して、TensorFlow機械学習モデルの実行に必要なオペレーターやその他の機能を含めることができます。詳細については、Android用のTensorFlowLiteのビルドをご覧ください。

CおよびC++API

TensorFlow Liteは、CおよびC++を使用してモデルを実行するためのAPIも提供します。アプリでAndroidNDKを使用している場合は、このAPIの使用を検討する必要があります。複数のプラットフォーム間でコードを共有できるようにする場合は、このAPIの使用を検討することもできます。この開発オプションの詳細については、開発ツールのページを参照してください。

サーバーベースのモデル実行

一般に、Androidデバイスのアプリでモデルを実行して、ユーザーのレイテンシーの短縮とデータプライバシーの向上を活用する必要があります。ただし、クラウドサーバー上でデバイス外でモデルを実行する方が優れたソリューションである場合があります。たとえば、ユーザーのAndroidデバイスに適合するサイズに簡単に圧縮できない、またはそれらのデバイスで妥当なパフォーマンスで実行できる大きなモデルがある場合です。幅広いデバイスでモデルの一貫したパフォーマンスが最優先事項である場合は、このアプローチも推奨されるソリューションになる可能性があります。

Google Cloudは、TensorFlow機械学習モデルを実行するための完全なサービススイートを提供します。詳細については、GoogleCloudのAIおよび機械学習製品のページをご覧ください。

カスタムモデルの開発と最適化

より高度な開発パスには、カスタムの機械学習モデルの開発と、Androidデバイスで使用するためのそれらのモデルの最適化が含まれる可能性があります。カスタムモデルを構築する場合は、メモリと処理のコストを削減するために、モデルに量子化手法を適用することを検討してください。 TensorFlow Liteで使用する高性能モデルを構築する方法の詳細については、「モデル」セクションの「パフォーマンスのベストプラクティス」を参照してください。

次のステップ