TensorFlow Lite for Android

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

学習ロードマップ

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

機械学習モデル

TensorFlow Lite は、より小さく、移植可能で、より効率的な機械学習モデル形式に変換された TensorFlow モデルを使用します。 Android 上の TensorFlow Lite で事前に構築されたモデルを使用するか、独自の TensorFlow モデルを構築して TensorFlow Lite 形式に変換できます。

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

Android でモデルを実行する

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

Android アプリでの TensorFlow Lite モデルの関数実行フロー

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

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

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

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

TensorFlow Lite でアプリを構築する

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

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

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

一般に、Google Play サービスが提供するランタイム環境を使用する必要があります。これは、動的に読み込まれ、アプリのサイズが小さく保たれるため、標準環境よりもスペース効率が高いためです。また、Google Play サービスは、TensorFlow Lite ランタイムの最新の安定したリリースを自動的に使用するため、時間の経過とともに追加機能と改善されたパフォーマンスが提供されます。 Google Play サービスが含まれていないデバイスでアプリを提供する場合、または ML ランタイム環境を厳密に管理する必要がある場合は、標準の TensorFlow Lite ランタイムを使用する必要があります。このオプションでは、追加のコードがアプリにバンドルされるため、アプリのダウンロード サイズが大きくなりますが、アプリの ML ランタイムをより詳細に制御できます。

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

開発 API とライブラリ

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

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

ライブラリ

Google Play サービスを使用して Task API または Interpreter API にアクセスできます。 TensorFlow Lite タスク用のスタンドアロン ライブラリ、または Android アプリで TensorFlow Liteコアおよびサポートライブラリを使用することもできます。 TensorFlow Lite ライブラリとランタイム環境の使用に関するプログラミングの詳細については、 Android の開発ツール を参照してください。

モデルを入手する

Android アプリでモデルを実行するには、TensorFlow Lite 形式のモデルが必要です。事前に構築されたモデルを使用するか、TensorFlow でモデルを構築して Lite 形式に変換できます。 Android アプリのモデルを取得する方法の詳細については、TensorFlow Liteモデルのセクションを参照してください。

入力データの処理

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

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

推論を実行する

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

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

出力結果の処理

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

高度な開発パス

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

高度なランタイム環境

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

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

C および C++ API

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

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

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

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

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

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

次のステップ