Android 用の開発ツール

TensorFlow Lite は、モデルを Android アプリに統合するためのツールを多数提供します。このページでは、Kotlin、Java、C++ を使用したアプリの構築に使用する開発ツールと、Android Studio での TensorFlow Lite 開発のサポートについて説明します。

Android コードの作成をすぐに開始するには、 「Android のクイックスタート」を参照してください。

Kotlin と Java を使用して構築するためのツール

次のセクションでは、Kotlin 言語と Java 言語を使用する TensorFlow Lite の開発ツールについて説明します。

TensorFlow Lite タスク ライブラリ

TensorFlow Lite タスク ライブラリには、アプリ開発者が TensorFlow Lite で構築できる強力で使いやすいタスク固有のライブラリのセットが含まれています。画像分類、質問と回答などの一般的な機械学習タスクに最適化された、すぐに使用できるモデル インターフェイスを提供します。モデル インターフェイスは、最高のパフォーマンスと使いやすさを実現するために各タスクに合わせて特別に設計されています。タスク ライブラリはクロスプラットフォームで動作し、Java と C++ でサポートされています。

Android アプリでタスク ライブラリを使用するには、MavenCentral の AAR をTask Vision ライブラリTask Text ライブラリ、およびTask Audio Libraryにそれぞれ使用します。

次のように、 build.gradle依存関係でこれを指定できます。

dependencies {
    implementation 'org.tensorflow:tensorflow-lite-task-vision:+'
    implementation 'org.tensorflow:tensorflow-lite-task-text:+'
    implementation 'org.tensorflow:tensorflow-lite-task-audio:+'
}

夜間のスナップショットを使用する場合は、必ずSonatype スナップショット リポジトリをプロジェクトに追加してください。

詳細については、TensorFlow Lite タスク ライブラリの概要の概要を参照してください。

TensorFlow Lite ライブラリ

MavenCentral でホストされている AAR を開発プロジェクトに追加して、Android アプリで TensorFlow Lite ライブラリを使用します。

次のように、 build.gradle依存関係でこれを指定できます。

dependencies {
    implementation 'org.tensorflow:tensorflow-lite:+'
}

夜間のスナップショットを使用する場合は、必ずSonatype スナップショット リポジトリをプロジェクトに追加してください。

この AAR には、すべてのAndroid ABI のバイナリが含まれています。サポートする必要がある ABI のみを含めることで、アプリケーションのバイナリのサイズを削減できます。

特定のハードウェアをターゲットにしている場合を除き、ほとんどの場合、 x86x86_64 、およびarm32 ABI を省略する必要があります。これは、次の Gradle 構成で構成できます。具体的にはarmeabi-v7aarm64-v8aのみが含まれており、最新の Android デバイスのほとんどをカバーするはずです。

android {
    defaultConfig {
        ndk {
            abiFilters 'armeabi-v7a', 'arm64-v8a'
        }
    }
}

abiFiltersの詳細については、Android NDK ドキュメントの「Android ABI」を参照してください。

TensorFlow Lite サポート ライブラリ

TensorFlow Lite Android サポート ライブラリを使用すると、モデルをアプリケーションに簡単に統合できます。生の入力データをモデルに必要な形式に変換し、モデルの出力を解釈して、必要な定型コードの量を削減するのに役立つ高レベルの API を提供します。

画像や配列などの入出力の一般的なデータ形式をサポートします。また、画像のサイズ変更やトリミングなどのタスクを実行する前処理ユニットと後処理ユニットも提供します。

MavenCentral でホストされている TensorFlow Lite サポート ライブラリ AARを含めることにより、Android アプリでサポート ライブラリを使用します。

次のように、 build.gradle依存関係でこれを指定できます。

dependencies {
    implementation 'org.tensorflow:tensorflow-lite-support:+'
}

夜間のスナップショットを使用する場合は、必ずSonatype スナップショット リポジトリをプロジェクトに追加してください。

開始方法については、 「TensorFlow Lite Android サポート ライブラリ」を参照してください。

ライブラリの最小 Android SDK バージョン

図書館minSdkVersionデバイス要件
テンソルフローライト19 NNAPI の使用には API 27 以降が必要です
テンソルフローライトGPU 19 GLES 3.1 または OpenCL (通常は API 21+ でのみ利用可能)
tensorflow-lite-hexagon 19 -
tensorflow-lite-サポート19 -
tensorflow-lite-task-vision 21 android.graphics.Color 関連の API には API 26 以降が必要です
tensorflow-lite-タスクテキスト21 -
tensorflow-lite-タスク-オーディオ23 -
tensorflow-lite-メタデータ19 -

Android Studioの使用

上記の開発ライブラリに加えて、Android Studio は、以下で説明するように、TensorFlow Lite モデルの統合のサポートも提供します。

Android Studio ML モデル バインディング

Android Studio 4.1 以降の ML モデル バインディング機能を使用すると、 .tfliteモデル ファイルを既存の Android アプリにインポートし、コードをモデルと簡単に統合できるようにインターフェイス クラスを生成できます。

TensorFlow Lite (TFLite) モデルをインポートするには:

  1. TFLite モデルを使用するモジュールを右クリックするか、 [ファイル] > [新規] > [その他] > [TensorFlow Lite モデル]をクリックします。

  2. TensorFlow Lite ファイルの場所を選択します。このツールは、ML モデル バインディングを使用してモジュールの依存関係を構成し、必要なすべての依存関係を Android モジュールのbuild.gradleファイルに自動的に追加することに注意してください。

  3. Finishをクリックしてインポートプロセスを開始します。インポートが完了すると、ツールは入力テンソルと出力テンソルを含むモデルを説明する画面を表示します。

  4. モデルの使用を開始するには、Kotlin または Java を選択し、コードをコピーして「サンプル コード」セクションに貼り付けます。

Android Studio のmlディレクトリ配下の TensorFlow Lite モデルをダブルクリックすると、モデル情報画面に戻ることができます。 Android Studio のモジュール バインディング機能の使用方法の詳細については、 Android Studioリリース ノート を参照してください。 Android Studio でのモデル バインディングの使用の概要については、コード例の説明を参照してください。

C および C++ で構築するためのツール

TensorFlow Lite の C および C++ ライブラリは、主に Android ネイティブ開発キット (NDK) を使用してアプリを構築する開発者を対象としています。 NDK を使用してアプリを構築する場合、C++ 経由で TFLite を使用するには 2 つの方法があります。

TFLite C API

この API の使用は、NDK を使用する開発者にとって推奨されるアプローチです。 MavenCentral でホストされている TensorFlow Lite AARファイルをダウンロードし、名前をtensorflow-lite-*.zipに変更して解凍します。 NDK プロジェクトのheaders/tensorflow/lite/フォルダーとheaders/tensorflow/lite/c/フォルダーに 4 つのヘッダー ファイルを含める必要があり、 jni/フォルダーに関連するlibtensorflowlite_jni.soダイナミック ライブラリを含める必要があります。

c_api.hヘッダー ファイルには、TFLite C API の使用に関する基本的なドキュメントが含まれています。

TFLite C++ API

C++ API を通じて TFLite を使用する場合は、C++ 共有ライブラリを構築できます。

32 ビット armeabi-v7a:

bazel build -c opt --config=android_arm //tensorflow/lite:libtensorflowlite.so

64 ビット arm64-v8a:

bazel build -c opt --config=android_arm64 //tensorflow/lite:libtensorflowlite.so

現時点では、必要なすべてのヘッダー ファイルを抽出する簡単な方法はないため、TensorFlow リポジトリからtensorflow/lite/にすべてのヘッダー ファイルを含める必要があります。さらに、 FlatBuffersAbseilのヘッダー ファイルが必要になります。