TensorFlow Lite を使用すると、Android アプリで TensorFlow 機械学習(ML)モデルを実行できます。TensorFlow Lite システムは、ハードウェア アクセラレーションのオプションを含め、Android でモデルを迅速かつ効率的に実行するためのビルド済みでカスタマイズ可能な実行環境を提供します。
機械学習モデル
TensorFlow Lite は、より小さく、移植可能で効率的な ML モデル形式に変換された TensorFlow モデルを使用します。Android では、TensorFlow Lite で事前構築済みのモデルを使用することも、独自の TensorFlow モデルを構築して TensorFlow Lite 形式に変換することもできます。
このページでは、構築済みの ML モデルの使用について説明します。モデルの構築、トレーニング、テスト、変換については説明しません。TensorFlow Lite の ML モデルの選択、変更、構築、変換の詳細については、モデルページをご覧ください。
Android でモデルを実行する
Android アプリ内で実行される TensorFlow Lite モデルは、データを受け取って処理し、モデルのロジックに基づいて予測を生成します。TensorFlow Lite モデルを実行するには、特別なランタイム環境が必要です。モデルに渡されるデータは、テンソルと呼ばれる特定のデータ形式である必要があります。モデルがデータを処理(推論の実行)すると、予測結果を新しいテンソルとして生成し、Android アプリに渡して、ユーザーへの結果の表示や追加のビジネス ロジックの実行などのアクションを実行できるようにします。
図 1. Android アプリでの TensorFlow Lite モデルの機能的な実行フロー。
機能設計レベルでは、Android アプリで TensorFlow Lite モデルを実行するには、次の要素が必要です。
- モデルを実行するための TensorFlow Lite ランタイム環境
- データをテンソルに変換するモデル入力ハンドラ
- モデル出力ハンドラ: 出力結果のテンソルを受け取り、予測結果として解釈します。
以降のセクションでは、TensorFlow Lite のライブラリとツールがこれらの機能要素を提供する方法について説明します。
TensorFlow Lite でアプリを作成する
このセクションでは、Android アプリに TensorFlow Lite を実装するために推奨される最も一般的な手順について説明します。特に、ランタイム環境と開発環境のセクションに注意してください。カスタムモデルを開発した場合は、高度な開発パスのセクションをご覧ください。
ランタイム環境オプション
Android アプリでモデルを実行するためのランタイム環境を有効にする方法はいくつかありますが、推奨されるオプションは次のとおりです。
- Google Play 開発者サービスのランタイム環境での TensorFlow Lite(推奨)
- スタンドアロンの TensorFlow Lite ランタイム環境
一般に、Google Play 開発者サービスが提供するランタイム環境を使用することをおすすめします。スタンダード環境は、動的に読み込まれ、アプリのサイズを小さく抑えることができるため、スタンダード環境よりもスペース効率が良いためです。また、Google Play 開発者サービスは TensorFlow Lite ランタイムの最新の安定版リリースを自動的に使用するため、機能が追加され、時間の経過とともにパフォーマンスが向上します。Google Play 開発者サービスを含まないデバイスでアプリを提供する場合や、ML ランタイム環境を綿密に管理する必要がある場合は、標準の TensorFlow Lite ランタイムを使用する必要があります。このオプションは、追加のコードをアプリにバンドルします。これにより、アプリのダウンロード サイズを増やす代わりに、アプリ内の ML ランタイムをより詳細に制御できます。
Android アプリでこれらのランタイム環境にアクセスするには、アプリ開発環境に TensorFlow Lite 開発ライブラリを追加します。アプリで標準のランタイム環境を使用する方法については、次のセクションをご覧ください。
ライブラリ
Interpreter API にアクセスするには、Google Play 開発者サービスを使用します。Android アプリで TensorFlow Lite のコアライブラリとサポート ライブラリを使用できます。TensorFlow Lite ライブラリとランタイム環境の使用に関するプログラミングの詳細については、Android 用の開発ツールをご覧ください。
モデルを取得する
Android アプリでモデルを実行するには、TensorFlow Lite 形式のモデルが必要です。事前構築済みのモデルを使用するか、TensorFlow でモデルを構築し、Lite 形式に変換できます。Android アプリのモデルの取得の詳細については、TensorFlow Lite のモデルページをご覧ください。
入力データを処理する
ML モデルに渡すデータは、テンソルのシェイプと呼ばれる特定のデータ構造を持つテンソルでなければなりません。モデルを使用してデータを処理するには、アプリコードで、画像、テキスト、音声などのデータをネイティブ形式からモデルに必要な形状のテンソルに変換する必要があります。
推論を実行する
モデルを使用してデータを処理して予測結果を生成することを「推論」と呼びます。Android アプリで推論を実行するには、TensorFlow Lite のランタイム環境、model、入力データが必要です。
特定のデバイスでモデルが推論を生成できる速度は、処理されるデータのサイズ、モデルの複雑さ、使用可能なコンピューティング リソース(メモリや CPU、アクセラレータと呼ばれる専用プロセッサなど)によって異なります。「デリゲート」と呼ばれる TensorFlow Lite ハードウェア ドライバを使用して、グラフィック プロセッシング ユニット(GPU)やテンソル プロセッシング ユニット(TPU)などの専用プロセッサで ML モデルをより高速に実行できます。モデル処理のデリゲートとハードウェア アクセラレーションの詳細については、ハードウェア アクセラレーションの概要をご覧ください。
出力結果を処理する
モデルは予測結果をテンソルとして生成します。テンソルとして生成するには、Android アプリでアクションを実行するか、結果をユーザーに表示する必要があります。モデルの出力結果は、画像分類の 1 つの結果(0 = 犬、1 = 猫、2 = 鳥)に対応する数値のような単純なものから、予測の信頼度評価が 0 ~ 1 である画像内の複数の分類されたオブジェクトの複数の境界ボックスなど、より複雑な結果まで、さまざまです。
高度な開発パス
より高度でカスタマイズされた TensorFlow Lite モデルを使用する場合は、前述のものよりも高度な開発アプローチが必要になる場合があります。以降のセクションでは、Android アプリで TensorFlow Lite 用のモデルを実行して開発するための高度な手法について説明します。
高度なランタイム環境
TensorFlow Lite の標準ランタイム環境と Google Play 開発者サービスのランタイム環境に加えて、Android アプリで使用できるその他のランタイム環境があります。こうした環境を使用する可能性が最も高いのは、TensorFlow Lite の標準ランタイム環境でサポートされていない ML オペレーションを使用する ML モデルがある場合です。
- TensorFlow Lite 用 Flex ランタイム
- カスタムビルドの TensorFlow Lite ランタイム
TensorFlow Lite の Flex ランタイムでは、モデルに必要な特定の演算子を含めることができます。モデルを実行するための高度なオプションとして、TensorFlow Lite for Android を構築して、TensorFlow ML モデルの実行に必要な演算子やその他の機能を含めることができます。詳細については、TensorFlow Lite for Android をビルドするをご覧ください。
C / C++ API
TensorFlow Lite には、C と C++ を使用してモデルを実行するための API も用意されています。アプリで Android NDK を使用している場合は、この API の使用を検討してください。また、複数のプラットフォーム間でコードを共有したい場合は、この API の使用を検討することもできます。この開発オプションの詳細については、開発ツールのページをご覧ください。
サーバーベースのモデルの実行
一般に、Android デバイスのアプリでモデルを実行して、レイテンシを短縮し、ユーザーのデータ プライバシーを強化する必要があります。ただし、デバイス外のクラウド サーバーでモデルを実行する方が適切なソリューションもあります。たとえば、ユーザーの Android デバイスに収まるサイズに簡単に圧縮できない大きなモデルがある場合や、それらのデバイスで相応のパフォーマンスで実行可能なモデルがある場合です。幅広いデバイスで一貫したモデルのパフォーマンスが最優先の場合は、この方法が推奨されます。
Google Cloud には、TensorFlow ML モデルを実行するためのフルパッケージのサービスが用意されています。詳細については、Google Cloud の AI と ML のプロダクトのページをご覧ください。
カスタムモデルの開発と最適化
より高度な開発パスには、多くの場合、カスタム機械学習モデルを開発し、Android デバイスで使用するためにモデルを最適化することが含まれます。カスタムモデルを構築する場合は、モデルに量子化手法を適用して、メモリと処理の費用を削減することを検討してください。TensorFlow Lite で使用する高パフォーマンス モデルの構築方法については、モデル セクションのパフォーマンスに関するベスト プラクティスをご覧ください。