Android 向け開発ツール

TensorFlow Lite には、Android アプリにモデルを統合するためのさまざまなツールが用意されています。このページでは、Kotlin、Java、C++ でアプリをビルドするために使用する開発ツールと、Android Studio での TensorFlow Lite 開発のサポートについて説明します。

Kotlin と Java でビルドするためのツール

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

TensorFlow Lite ライブラリ

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

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

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

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

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

特定のハードウェアをターゲットとしている場合を除き、ほとんどの場合、x86x86_64arm32 の各 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 を備えており、必要なボイラープレート コードの量を削減できます。

画像や配列など、入力と出力の一般的なデータ形式をサポートしています。また、画像のサイズ変更や切り抜きなどのタスクを実行する前処理と後処理のユニットも用意されています。

Android アプリでサポート ライブラリを使用するには、MavenCentral でホストされる TensorFlow Lite サポート ライブラリ AAR を組み込みます。

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

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

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

使用方法については、TensorFlow Lite Android サポート ライブラリをご覧ください。

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

ライブラリ minSdkVersion デバイスの要件
tensorflow-lite 21 -
tensorflow-lite-gpu 21 GLES 3.1 または OpenCL(通常は API 21 以降でのみ使用可能)
tensorflow-lite-support 21 -
tensorflow-lite-metadata 21 -

Android Studio の使用

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

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

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

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

  1. TFLite モデルを使用するモジュールを右クリックするか、[File] > [New] > [Other] > [TensorFlow Lite Model] をクリックします。

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

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

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

モデル情報画面に戻るには、Android Studio の ml ディレクトリにある TensorFlow Lite モデルをダブルクリックします。Android Studio のモジュール バインディング機能の使用方法について詳しくは、Android Studio のリリースノートをご覧ください。 Android Studio でモデル バインディングを使用する方法については、instructionsをご覧ください。

C / C++ でビルドするためのツール

TensorFlow Lite の C / C++ ライブラリは、主に Android Native Development Kit(NDK)を使用してアプリをビルドするデベロッパーを対象としています。NDK を使用してアプリをビルドする場合、C++ で TFLite を使用する方法は 2 つあります。

TFLite C API

NDK を使用するデベロッパーには、この API を使用することをおすすめします。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 のヘッダー ファイルも必要です。