このページは Cloud Translation API によって翻訳されました。
Switch to English

Androidクイックスタート

AndroidでTensorFlow Liteを使い始めるには、次の例を検討することをお勧めします。

Android画像分類の例

ソースコードの説明については、 TensorFlow Lite Android画像分類ご覧ください。

このサンプルアプリは、 画像分類を使用して、デバイスの背面カメラから見えるものを継続的に分類します。アプリケーションは、デバイスまたはエミュレーターで実行できます。

推論は、TensorFlow Lite Java APIとTensorFlow Lite Android Support Libraryを使用して実行されます。デモアプリはフレームをリアルタイムで分類し、最も可能性の高い分類を表示します。これにより、ユーザーは浮動小数点モデルまたは量子化モデルのいずれかを選択し、スレッド数を選択して、CPU、GPU、またはNNAPIのどちらで実行するかを決定できます。

Android Studioでビルドする

Android Studioでサンプルをビルドするには、 README.mdの指示に従ってください。

独自のAndroidアプリを作成する

独自のAndroidコードをすばやく書き始めるには、出発点としてAndroid画像分類の例を使用することをお勧めします。

次のセクションには、AndroidでTensorFlow Liteを使用する際に役立つ情報が含まれています。

TensorFlow Lite Androidサポートライブラリを使用する

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

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

開始するには、 TensorFlow Lite AndroidサポートライブラリのREADME.mdの指示に従ってください。

JCenterのTensorFlow Lite AARを使用する

AndroidアプリでTensorFlow Liteを使用するには、 JCenterでホストされているTensorFlow Lite AARを使用することをお勧めします。

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

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

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

ほとんどの開発者は、 x86x86_64 、およびarm32 ABIを省略することをお勧めします。これは、ほとんどの最新のAndroidデバイスをカバーするarmeabi-v7aarm64-v8aのみを具体的に含む次のGradle構成で実現できます。

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

詳細について学ぶためにabiFilters参照してくださいNdkOptionsアンドロイドのGradleドキュメントのを。

TensorFlow Liteをローカルでビルドする

TensorFlow Liteのローカルビルドを使用したい場合があります。たとえば、TensorFlowから選択されたオペレーションを含むカスタムバイナリを構築している場合や、TensorFlow Liteにローカルの変更を加える場合があります。

Dockerを使用してビルド環境をセットアップする

  • Dockerファイルをダウンロードします。 Dockerファイルをダウンロードすると、次の利用規約がその使用に適用されることに同意したことになります。

同意してクリックすると、Android StudioおよびAndroid Native Development Kitのすべての使用が、 https://developer.android.com/studio/termsで入手可能なAndroid Software Development Kit License Agreementに準拠することに同意したことになります (このようなURL Googleによって随時更新または変更される)。

ファイルをダウンロードするには、利用規約に同意する必要があります。 確認する

  • オプションで、Android SDKまたはNDKのバージョンを変更できます。ダウンロードしたDockerファイルを空のフォルダーに入れ、次のコマンドを実行してdockerイメージをビルドします。
 docker build . -t tflite-builder -f tflite-android.Dockerfile
 
  • 現在のフォルダーをコンテナー内の/ tmpにマウントして、Dockerコンテナーを対話的に起動します(/ tensorflow_srcはコンテナー内のTensorFlowリポジトリであることに注意してください)。
 docker run -it -v $PWD:/tmp tflite-builder bash
 

WindowsでPowerShellを使用する場合は、「$ PWD」を「pwd」に置き換えます。

ホストでTensorFlowリポジトリを使用する場合は、代わりにそのホストディレクトリをマウントします(-v hostDir:/ tmp)。

  • コンテナの内部に移動したら、次のコマンドを実行して、追加のAndroidツールとライブラリをダウンロードできます(ライセンスに同意する必要がある場合があります)。
 android update sdk --no-ui -a --filter tools,platform-tools,android-${ANDROID_API_LEVEL},build-tools-${ANDROID_BUILD_TOOLS_VERSION}
 

これで、「ビルドとインストール」セクションに進むことができます。ライブラリの構築が完了したら、それらをコンテナ内の/ tmpにコピーして、ホスト上のライブラリにアクセスできるようにします。

Dockerなしでビルド環境をセットアップする

BazelとAndroidの前提条件をインストールする

BazelはTensorFlowの主要なビルドシステムです。これを使用してビルドするには、システムとAndroid NDKおよびSDKがシステムにインストールされている必要があります。

  1. Bazelビルドシステムの最新バージョンをインストールします。
  2. ネイティブ(C / C ++)TensorFlow Liteコードをビルドするには、Android NDKが必要です。現在推奨されているバージョンは17cで、 こちらで確認できます
  3. Android SDKおよびビルドツールは、 ここから 、またはAndroid Studioの一部として入手できます。ビルドツールAPI> = 23は、TensorFlow Liteのビルドに推奨されるバージョンです。
WORKSPACEおよび.bazelrcを構成する

ルートTensorFlowチェックアウトディレクトリで./configureスクリプトを実行し、スクリプトがインタラクティブにAndroidビルドの./WORKSPACEを構成するように求めてき./WORKSPACE 、「はい」と答えます。スクリプトは、次の環境変数を使用して設定を構成しようとします。

  • ANDROID_SDK_HOME
  • ANDROID_SDK_API_LEVEL
  • ANDROID_NDK_HOME
  • ANDROID_NDK_API_LEVEL

これらの変数が設定されていない場合は、スクリプトプロンプトで対話的に指定する必要があります。構成が成功すると、ルートフォルダーの.tf_configure.bazelrcファイルに次のようなエントリが生成されます。

 build --action_env ANDROID_NDK_HOME="/usr/local/android/android-ndk-r17c"
build --action_env ANDROID_NDK_API_LEVEL="21"
build --action_env ANDROID_BUILD_TOOLS_VERSION="28.0.3"
build --action_env ANDROID_SDK_API_LEVEL="23"
build --action_env ANDROID_SDK_HOME="/usr/local/android/android-sdk-linux"
 

ビルドしてインストール

Bazelが適切に構成されたら、次のようにルートチェックアウトディレクトリからTensorFlow Lite AARを構築できます。

 bazel build -c opt --fat_apk_cpu=x86,x86_64,arm64-v8a,armeabi-v7a \
  --host_crosstool_top=@bazel_tools//tools/cpp:toolchain \
  //tensorflow/lite/java:tensorflow-lite
 

これにより、 bazel-bin/tensorflow/lite/java/ AARファイルが生成されます。これにより、いくつかの異なるアーキテクチャで「太い」AARが構築されることに注意してください。それらすべてが必要ない場合は、デプロイメント環境に適したサブセットを使用してください。そこから、Android Studioプロジェクトで.aarを使用するために使用できるいくつかのアプローチがあります。

AARをプロジェクトに直接追加

tensorflow-lite.aarファイルをプロジェクトのlibsというディレクトリに移動します。アプリのbuild.gradleファイルを変更して新しいディレクトリを参照し、既存のTensorFlow Lite依存関係を新しいローカルライブラリで置き換えます。例:

 allprojects {
    repositories {
        jcenter()
        flatDir {
            dirs 'libs'
        }
    }
}

dependencies {
    compile(name:'tensorflow-lite', ext:'aar')
}
 
ローカルのMavenリポジトリにAARをインストールする

ルートチェックアウトディレクトリから次のコマンドを実行します。

 mvn install:install-file \
  -Dfile=bazel-bin/tensorflow/lite/java/tensorflow-lite.aar \
  -DgroupId=org.tensorflow \
  -DartifactId=tensorflow-lite -Dversion=0.1.100 -Dpackaging=aar
 

アプリのbuild.gradleで、 mavenLocal()依存関係があることを確認し、標準のTensorFlow Lite依存関係を、選択したTensorFlow演算をサポートする依存関係に置き換えます。

 allprojects {
    repositories {
        jcenter()
        mavenLocal()
    }
}

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

ここでの0.1.100バージョンは、純粋にテスト/開発のためのものであることに注意してください。ローカルAARがインストールされていると、アプリのコードで標準のTensorFlow Lite Java推論APIを使用できます。

C ++を使用してAndroidアプリをビルドする

NDKを使用してアプリをビルドする場合、C ++を通じてTFLiteを使用するには2つの方法があります。

TFLite C APIを使用する

これが推奨されるアプローチです。 JCenterホストされているTensorFlow Lite AARをダウンロードし、名前をtensorflow-lite-*.zipに変更して、解凍します。 4つのヘッダーファイルをheaders/tensorflow/lite/およびheaders/tensorflow/lite/c/フォルダーにlibtensorflowlite_jni.so 、関連するlibtensorflowlite_jni.so動的ライブラリをNDKプロジェクトのjni/フォルダーに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/にすべてのヘッダーファイルを含める必要があります。さらに、 FlatBuffersAbseilのヘッダーファイルが必要になります