Android 向け TensorFlow Lite

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

学習ロードマップ

コード設計TensorFlow Lite を使用して Android アプリを構築するための概念とコード設計について学び、そのまま読み続けてください
コードのクイックスタートクイックスタートを使用して、TensorFlow Lite を使用した Android アプリのコーディングをすぐに開始できます。
ML モデル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 アプリに統合するために使用できる 2 つの主要な API があります。

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

図書館

Google Play サービスを使用してタスク API またはインタープリター 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 で使用する高性能モデルを構築する方法の詳細については、「モデル」セクションの「パフォーマンスのベスト プラクティス」を参照してください。

次のステップ