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 のみを含めることで、アプリのバイナリのサイズを縮小できます。
特定のハードウェアをターゲットとしている場合を除き、ほとんどの場合、x86
、x86_64
、arm32
の各 ABI を省略する必要があります。これは、次の Gradle 構成で構成できます。具体的には armeabi-v7a
と arm64-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)モデルをインポートするには:
TFLite モデルを使用するモジュールを右クリックするか、[File] > [New] > [Other] > [TensorFlow Lite Model] をクリックします。
TensorFlow Lite ファイルの場所を選択します。このツールは、ML モデルのバインディングを使用してモジュールの依存関係を構成し、必要なすべての依存関係を Android モジュールの
build.gradle
ファイルに自動的に追加します。[
Finish
] をクリックしてインポート プロセスを開始します。インポートが完了すると、入力テンソルと出力テンソルを含むモデルを説明する画面が表示されます。モデルの使用を開始するには、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/
にすべてのヘッダー ファイルを含める必要があります。また、FlatBuffers と Abseil のヘッダー ファイルも必要です。