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 アプリで Task Library を使用するには、 Task Vision ライブラリTask Text ライブラリ、およびTask Audio Libraryにそれぞれ MavenCentral の AAR を使用します。

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

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

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

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

TensorFlow Lite ライブラリ

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

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

dependencies {
    implementation 'org.tensorflow:tensorflow-lite:0.0.0-nightly-SNAPSHOT'
}

毎晩のスナップショットを使用する場合は、必ず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:0.3.0'
}

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

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

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

としょうかんminSdkVersionデバイス要件
テンソルフローライト19 NNAPI の使用には API 27+ が必要です
tensorflow-lite-gpu 19 GLES 3.1 または OpenCL (通常、API 21 以降でのみ使用可能)
テンソルフローライトヘキサゴン19 -
tensorflow-lite-サポート19 -
tensorflow-lite-タスクビジョン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に変更して解凍します。 4 つのヘッダー ファイルをheaders/tensorflow/lite/およびheaders/tensorflow/lite/c/フォルダーに含め、関連するlibtensorflowlite_jni.soダイナミック ライブラリを NDK プロジェクトのjni/フォルダーに含める必要があります。

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/に含める必要があります。さらに、 FlatBuffersおよびAbseilからのヘッダー ファイルが必要になります。