AndroidでTensorFlowLiteの使用を開始するには、次の例を検討することをお勧めします。
ソースコードの説明については、 TensorFlow LiteAndroid画像分類をお読みください。
このサンプルアプリは、画像分類を使用して、デバイスの背面カメラから見えるものを継続的に分類します。アプリケーションは、デバイスまたはエミュレーターのいずれかで実行できます。
推論は、TensorFlow Lite JavaAPIとTensorFlowLiteAndroidサポートライブラリを使用して実行されます。デモアプリはフレームをリアルタイムで分類し、最も可能性の高い分類を表示します。これにより、ユーザーは浮動小数点モデルまたは量子化モデルのいずれかを選択し、スレッド数を選択して、CPU、GPU、またはNNAPIのいずれで実行するかを決定できます。
AndroidStudioでビルド
Android Studioでサンプルをビルドするには、 README.mdの手順に従ってください。
独自のAndroidアプリを作成する
独自のAndroidコードの記述をすばやく開始するには、 Android画像分類の例を出発点として使用することをお勧めします。
次のセクションには、AndroidでTensorFlowLiteを操作するための役立つ情報が含まれています。
Android StudioMLモデルバインディングを使用する
TensorFlow Lite(TFLite)モデルをインポートするには:
モジュールを右クリックしますTFLiteモデルを使用するか、をクリックしたい
File
、そしてNew
>Other
>TensorFlow Lite Model
TFLiteファイルの場所を選択します。ツールは、MLモデルバインディングを使用してモジュールの依存関係を構成し、すべての依存関係はAndroidモジュールの
build.gradle
ファイルに自動的に挿入されることに注意してください。オプション: GPUアクセラレーションを使用する場合は、TensorFlowGPUをインポートするための2番目のチェックボックスを選択します。
[
Finish
クリックします。インポートが成功すると、次の画面が表示されます。モデルの使用を開始するには、KotlinまたはJavaを選択し、コードをコピーして[
Sample Code
セクションに貼り付けます。 Android Studioのml
ディレクトリの下にあるTFLiteモデルをダブルクリックすると、この画面に戻ることができます。
TensorFlowLiteタスクライブラリを使用する
TensorFlow Liteタスクライブラリには、アプリ開発者がTFLiteでMLエクスペリエンスを作成するための、強力で使いやすいタスク固有のライブラリのセットが含まれています。画像分類、質問と回答など、一般的な機械学習タスク用に最適化されたすぐに使用できるモデルインターフェイスを提供します。モデルインターフェイスは、最高のパフォーマンスと使いやすさを実現するために、タスクごとに特別に設計されています。タスクライブラリはクロスプラットフォームで動作し、Java、C ++、およびSwiftでサポートされています(近日公開予定)。
Androidアプリでサポートライブラリを使用するには、JCenter for TaskVisionライブラリとTaskTextライブラリでそれぞれホストされているAARを使用することをお勧めします。
これは、 build.gradle
依存関係で次のように指定できます。
dependencies {
implementation 'org.tensorflow:tensorflow-lite-task-vision:0.1.0'
implementation 'org.tensorflow:tensorflow-lite-task-text:0.1.0'
}
詳細については、 TensorFlowLiteタスクライブラリの概要の概要をご覧ください。
TensorFlow LiteAndroidサポートライブラリを使用する
TensorFlow Lite Androidサポートライブラリを使用すると、モデルをアプリケーションに簡単に統合できます。生の入力データをモデルに必要な形式に変換し、モデルの出力を解釈するのに役立つ高レベルのAPIを提供し、必要な定型コードの量を削減します。
画像や配列など、入力と出力の一般的なデータ形式をサポートしています。また、画像のサイズ変更やトリミングなどのタスクを実行する前処理ユニットと後処理ユニットも提供します。
Androidアプリでサポートライブラリを使用するには、 JCenterでホストされているTensorFlowLiteサポートライブラリAARを使用することをお勧めします。
これは、 build.gradle
依存関係で次のように指定できます。
dependencies {
implementation 'org.tensorflow:tensorflow-lite-support:0.1.0'
}
開始するには、 TensorFlow LiteAndroidサポートライブラリの手順に従ってください。
JCenterのTensorFlowLiteAARを使用する
AndroidアプリでTensorFlowLiteを使用するには、 JCenterでホストされているTensorFlow LiteAARを使用することをお勧めします。
これは、 build.gradle
依存関係で次のように指定できます。
dependencies {
implementation 'org.tensorflow:tensorflow-lite:0.0.0-nightly-SNAPSHOT'
}
このAARには、すべてのAndroidABIのバイナリが含まれています。サポートする必要のあるABIのみを含めることで、アプリケーションのバイナリのサイズを減らすことができます。
ほとんどの開発者は、 x86
、 x86_64
、およびarm32
省略することをお勧めします。これは、次のGradle構成で実現できます。これには、特にarmeabi-v7a
とarm64-v8a
のみが含まれ、最新のAndroidデバイスのほとんどをカバーする必要があります。
android {
defaultConfig {
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a'
}
}
}
詳細について学ぶためにabiFilters
参照してくださいNdkOptions
アンドロイドのGradleドキュメントのを。
C ++を使用してAndroidアプリをビルドする
NDKを使用してアプリをビルドする場合、C ++を介してTFLiteを使用する方法は2つあります。
TFLite CAPIを使用する
これが推奨されるアプローチです。 JCenterでホストされているTensorFlowLite AARをダウンロードし、名前をtensorflow-lite-*.zip
に変更して、解凍します。 4つのヘッダーファイルをheaders/tensorflow/lite/
headers/tensorflow/lite/c/
フォルダーとheaders/tensorflow/lite/c/
フォルダーにlibtensorflowlite_jni.so
し、関連するlibtensorflowlite_jni.so
ダイナミックライブラリをNDKプロジェクトのjni/
フォルダーにjni/
する必要があります。
c_api.h
ヘッダーファイルには、TFLite CAPIの使用に関する基本的なドキュメントが含まれています。
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/
にすべてのヘッダーファイルをtensorflow/lite/
する必要があります。さらに、 FlatBuffersとAbseilのヘッダーファイルが必要になります。