Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Erstellen Sie TensorFlow Lite für Android

In diesem Dokument wird beschrieben, wie Sie die TensorFlow Lite-Android-Bibliothek selbst erstellen. Normalerweise müssen Sie die TensorFlow Lite-Android-Bibliothek nicht lokal erstellen. Wenn Sie es nur verwenden möchten, verwenden Sie am einfachsten den bei JCenter gehosteten TensorFlow Lite AAR . Weitere Informationen zur Verwendung in Ihren Android-Projekten finden Sie unter Android-Schnellstart .

Erstellen Sie TensorFlow Lite lokal

In einigen Fällen möchten Sie möglicherweise einen lokalen Build von TensorFlow Lite verwenden. Beispielsweise können Sie eine benutzerdefinierte Binärdatei erstellen, die aus TensorFlow ausgewählte Vorgänge enthält, oder Sie möchten lokale Änderungen an TensorFlow Lite vornehmen.

Richten Sie die Build-Umgebung mit Docker ein

  • Laden Sie die Docker-Datei herunter. Durch das Herunterladen der Docker-Datei erklären Sie sich damit einverstanden, dass die folgenden Nutzungsbedingungen Ihre Nutzung regeln:

Durch Klicken auf "Akzeptieren" erklären Sie sich hiermit einverstanden, dass die gesamte Nutzung von Android Studio und Android Native Development Kit durch die Lizenzvereinbarung für Android Software Development Kit unter https://developer.android.com/studio/terms geregelt wird (diese URL kann von Zeit zu Zeit von Google aktualisiert oder geändert werden).

  • Sie können optional die Android SDK- oder NDK-Version ändern. Legen Sie die heruntergeladene Docker-Datei in einen leeren Ordner und erstellen Sie Ihr Docker-Image, indem Sie Folgendes ausführen:
docker build . -t tflite-builder -f tflite-android.Dockerfile
  • Starten Sie den Docker-Container interaktiv, indem Sie Ihren aktuellen Ordner in / tmp im Container mounten (beachten Sie, dass / tensorflow_src das TensorFlow-Repository im Container ist):
docker run -it -v $PWD:/tmp tflite-builder bash

Wenn Sie PowerShell unter Windows verwenden, ersetzen Sie "$ PWD" durch "pwd".

Wenn Sie ein TensorFlow-Repository auf dem Host verwenden möchten, hängen Sie stattdessen dieses Hostverzeichnis ein (-v hostDir: / tmp).

  • Sobald Sie sich im Container befinden, können Sie Folgendes ausführen, um zusätzliche Android-Tools und -Bibliotheken herunterzuladen (beachten Sie, dass Sie möglicherweise die Lizenz akzeptieren müssen):
android update sdk --no-ui -a --filter tools,platform-tools,android-${ANDROID_API_LEVEL},build-tools-${ANDROID_BUILD_TOOLS_VERSION}

Sie können jetzt mit dem Abschnitt "Erstellen und Installieren" fortfahren. Nachdem Sie die Bibliotheken erstellt haben, können Sie sie in / tmp im Container kopieren, damit Sie auf dem Host darauf zugreifen können.

Richten Sie die Build-Umgebung ohne Docker ein

Installieren Sie die Voraussetzungen für Bazel und Android

Bazel ist das primäre Build-System für TensorFlow. Um damit zu bauen, müssen Sie es und das Android NDK und SDK auf Ihrem System installiert haben.

  1. Installieren Sie die neueste Version des Bazel-Build-Systems .
  2. Das Android NDK ist erforderlich, um den nativen (C / C ++) TensorFlow Lite-Code zu erstellen. Die aktuell empfohlene Version ist 17c, die Sie hier finden .
  3. Das Android SDK und die Build-Tools können hier oder alternativ als Teil von Android Studio bezogen werden . Build Tools API> = 23 ist die empfohlene Version zum Erstellen von TensorFlow Lite.

Konfigurieren Sie WORKSPACE und .bazelrc

Führen Sie das Skript ./configure im Stammverzeichnis von TensorFlow aus und antworten Sie mit "Ja", wenn das Skript die interaktive Konfiguration von ./WORKSPACE für Android-Builds ./WORKSPACE . Das Skript versucht, Einstellungen mithilfe der folgenden Umgebungsvariablen zu konfigurieren:

  • ANDROID_SDK_HOME
  • ANDROID_SDK_API_LEVEL
  • ANDROID_NDK_HOME
  • ANDROID_NDK_API_LEVEL

Wenn diese Variablen nicht festgelegt sind, müssen sie interaktiv in der Skriptaufforderung bereitgestellt werden. Eine erfolgreiche Konfiguration sollte Einträge ähnlich den folgenden in der Datei .tf_configure.bazelrc im Stammordner ergeben:

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"

Erstellen und installieren

Sobald Bazel ordnungsgemäß konfiguriert ist, können Sie den TensorFlow Lite-AAR wie folgt aus dem Root-Checkout-Verzeichnis erstellen:

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

Dadurch wird eine AAR-Datei in bazel-bin/tensorflow/lite/java/ generiert. Beachten Sie, dass dadurch ein "fetter" AAR mit mehreren unterschiedlichen Architekturen erstellt wird. Wenn Sie nicht alle benötigen, verwenden Sie die für Ihre Bereitstellungsumgebung geeignete Teilmenge.

bash tensorflow/lite/tools/build_aar.sh \
  --input_models=model1,model2 \
  --target_archs=x86,x86_64,arm64-v8a,armeabi-v7a

Das tensorflow-lite.aar Skript generiert die Datei tensorflow-lite.aar und optional die Datei tensorflow-lite-select-tf-ops.aar , wenn eines der Modelle Tensorflow ops verwendet. Weitere Informationen finden Sie im Abschnitt Reduzieren der TensorFlow Lite-Binärgröße .

Fügen Sie AAR direkt zum Projekt hinzu

Verschieben Sie die Datei tensorflow-lite.aar in ein Verzeichnis namens libs in Ihrem Projekt. Ändern Sie die build.gradle Datei Ihrer App, build.gradle auf das neue Verzeichnis zu verweisen, und ersetzen Sie die vorhandene TensorFlow Lite-Abhängigkeit durch die neue lokale Bibliothek, z.

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

dependencies {
    compile(name:'tensorflow-lite', ext:'aar')
}

Installieren Sie AAR im lokalen Maven-Repository

Führen Sie den folgenden Befehl in Ihrem Root-Checkout-Verzeichnis aus:

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 Sie im mavenLocal() Ihrer App build.gradle , dass Sie über die Abhängigkeit mavenLocal() verfügen, und ersetzen Sie die Standardabhängigkeit TensorFlow Lite durch die Abhängigkeit, die ausgewählte TensorFlow-Operationen unterstützt:

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

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

Beachten Sie, dass die Version 0.1.100 hier nur zum Testen / Entwickeln dient. Wenn der lokale AAR installiert ist, können Sie die Standard- Java-Inferenz-APIs von TensorFlow Lite in Ihrem App-Code verwenden.