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

Android quickstart

Um mit TensorFlow Lite auf Android, empfehlen wir erforschen das folgende Beispiel.

Android Bildklassifizierungs- Beispiel

Lesen TensorFlow Lite Android Bildklassifizierungs- für eine Erklärung des Quellcodes.

Dieses Beispiel App verwendet Bildklassifizierungs- kontinuierlich Klassifizieren , was sie von den Geräten hinten gerichtete Kamera sieht. Die Anwendung kann entweder auf dem Gerät oder Emulator ausgeführt werden.

Inference ausgeführt , um die TensorFlow Lite Java API und die Verwendung von TensorFlow Lite Android Support Library . Der Demo-App stuft Frames in Echtzeit und zeigt die Top-wahrscheinlichste Einstufungen. Es ermöglicht dem Benutzer zwischen einem Floating - Point oder wählen quantisiert Modell, wählen Sie die Anzahl der Threads, und entscheiden , ob sie auf CPU, GPU oder über laufen NNAPI .

Bauen Sie in Android Studio

Um das Beispiel in Android Studio zu erstellen, folgen Sie den Anweisungen in README.md .

Erstellen Sie Ihre eigene Android App

Um loszuzulegen schnell Ihren eigenen Android Code zu schreiben, empfehlen wir unser mit Android Bildklassifizierungs- Beispiel als Ausgangspunkt.

Die folgenden Abschnitte enthalten einige nützliche Informationen für mit TensorFlow Lite auf Android arbeiten.

Verwenden Sie die TensorFlow Lite Android Support Library

Der TensorFlow Lite Android Support Library macht es einfache Modelle in Ihre Anwendung zu integrieren. Es bietet High-Level-APIs, die helfen, Roh-Eingangsdaten in die Form durch das Modell erforderlich transformiert und interpretieren die Ausgabe des Modells erforderlich, um die Menge an Standardcode zu reduzieren.

Es unterstützt die gemeinsame Datenformate für die Ein- und Ausgänge, einschließlich Bildern und Anordnungen. Es bietet auch Pre- und Post-Verarbeitungseinheiten, die Aufgaben wie Bild Verkleinerung und Zuschneiden durchzuführen.

Um damit zu beginnen, folgen Sie den Anweisungen in dem TensorFlow Lite Android Support Library README.md .

Verwenden Sie die TensorFlow Lite AAR aus JCenter

So verwenden TensorFlow Lite in Ihrem Android - App, empfehlen wir die Verwendung von TensorFlow Lite AAR bei JCenter gehostet .

Sie können in Ihrem angeben diese build.gradle Abhängigkeiten wie folgt:

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

Das AAR enthält Binärdateien für alle der Android ABIs . Sie können die Größe Ihrer Anwendung binär reduzieren, indem nur die ABIs einschließlich Sie Unterstützung benötigen.

Wir empfehlen die meisten Entwickler lassen Sie die x86 , x86_64 und arm32 Abi. Dies kann mit der folgenden Gradle Konfiguration erreicht werden, die spezifisch nur enthält armeabi-v7a und arm64-v8a , die die meisten modernen Android - Geräte abdecken sollte.

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

Um mehr darüber zu erfahren , abiFilters finden NdkOptions im Android Gradle Dokumentation.

Bauen Sie TensorFlow Lite lokal

In einigen Fällen möchten Sie vielleicht eine lokale Version von TensorFlow Lite verwenden. Zum Beispiel können Sie eine benutzerdefinierte binäre bauen, der folgendes beinhaltet Operationen ausgewählt aus TensorFlow , oder möchten Sie vielleicht machen lokale Änderungen an TensorFlow Lite.

Richten Sie Build-Umgebung mit Docker

  • Laden Sie die Datei Docker. Mit dem Herunterladen der Datei Docker, stimmen Sie, dass die folgenden Nutzungsbedingungen regeln die Nutzung davon:

Mit einem Klick zu akzeptieren, stimmen Sie hiermit zu, dass die Verwendung des Android Studio und Android india Development Kit wird von der Android Software Development Kit Lizenzvereinbarung finden Sie unter geregelt https://developer.android.com/studio/terms (wie URL kann von Google von Zeit zu Zeit aktualisiert oder geändert werden).

Sie müssen die Nutzungsbedingungen anerkennen , um die Datei herunterzuladen. Quittieren

  • Optional können Sie das Android SDK oder NDK Version ändern. Legen Sie die heruntergeladene Datei Docker in einem leeren Ordner und bauen Sie Ihre Docker Bild durch Ausführen von:
 docker build . -t tflite-builder -f tflite-android.Dockerfile
 
  • Starten Sie den Docker Container interaktiv durch Ihre aktuellen Ordner / tmp im Inneren des Behälters Montage (beachten Sie, dass / tensorflow_src die TensorFlow Repository innerhalb des Behälters ist):
 docker run -it -v $PWD:/tmp tflite-builder bash
 

Wenn Sie Powershell unter Windows verwenden, ersetzen Sie „$ PWD“ mit „PWD“.

Wenn Sie möchten, eine TensorFlow Repository auf dem Host verwenden, montiert, dass die Host-Verzeichnis statt (-v HOSTDIR: / tmp).

  • Sobald Sie im Inneren des Behälters sind, können Sie die folgende ausführen, um weitere Android-Tools und Bibliotheken (beachten Sie, dass Sie die Lizenz akzeptieren müssen) herunterladen:
 android update sdk --no-ui -a --filter tools,platform-tools,android-${ANDROID_API_LEVEL},build-tools-${ANDROID_BUILD_TOOLS_VERSION}
 

Sie können nun mit dem fortfahren „Build and Install“ Abschnitt. Nachdem Sie die Bibliotheken fertig bauen, können Sie sie zu / tmp im Container kopieren, um sie auf dem Host zugreifen können.

Richten Sie Build-Umgebung ohne Docker

Installieren Bazel und Android Voraussetzungen

Bazel ist die primäre Bausystem für TensorFlow. So erstellen Sie mit ihm, müssen Sie es haben und das Android NDK und SDK auf Ihrem System installiert.

  1. Installieren Sie die neueste Version des Bazel Build - System .
  2. Die Android NDK ist erforderlich, um die nativen (C / C ++) TensorFlow Lite Code zu bauen. Die derzeit empfohlene Version ist 17c, die gefunden werden kann hier .
  3. Das Android SDK und Build - Tools erhalten werden hier oder alternativ als Teil des Android Studios . Build-Tools API> = 23 ist die empfohlene Version für den Aufbau TensorFlow Lite.
Konfigurieren ARBEITSBEREICH und .bazelrc

Führen Sie das ./configure Skript im Stamm TensorFlow Kasse Verzeichnis und Antwort „Ja“ , wenn das Skript die interaktiv konfigurieren fragt ./WORKSPACE für Android baut. Das Skript wird zum Konfigurieren von Einstellungen versuchen, die folgenden Umgebungsvariablen:

  • ANDROID_SDK_HOME
  • ANDROID_SDK_API_LEVEL
  • ANDROID_NDK_HOME
  • ANDROID_NDK_API_LEVEL

Wenn diese Variablen nicht gesetzt sind, müssen sie interaktiv in der Skript-Eingabeaufforderung zur Verfügung gestellt werden. Erfolgreiche Konfiguration sollte in der Einträge ähnlich dem folgenden ergeben .tf_configure.bazelrc im Stammordner - Datei:

 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"
 

Bauen und installieren

Sobald Bazel richtig konfiguriert ist, können Sie die TensorFlow Lite AAR aus dem Stammverzeichnis der Kasse bauen wie folgt:

 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
 

Dies wird eine AAR - Datei in generieren bazel-bin/tensorflow/lite/java/ . Beachten Sie, dass diese AAR eine „Fett“ baut mit verschiedenen Architekturen; wenn Sie nicht alle von ihnen benötigen, verwenden Sie die Teilmenge angemessen für die Implementierungsumgebung. Von dort aus gibt es mehrere Ansätze, die Sie ergreifen, um die .aar in Ihrem Android-Studio-Projekt zu verwenden.

In AAR direkt zu Projekt

Bewegen Sie die tensorflow-lite.aar - Datei in ein Verzeichnis mit dem Namen libs in Ihrem Projekt. Ändern Sie bitte Ihre App build.gradle Datei das neue Verzeichnis zu verweisen und die bestehende TensorFlow Lite Abhängigkeit mit der neuen lokalen Bibliothek zu ersetzen, zum Beispiel:

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

dependencies {
    compile(name:'tensorflow-lite', ext:'aar')
}
 
Installieren Sie AAR zu lokalen Maven-Repository

Führen Sie den folgenden Befehl von Ihrem Root-Verzeichnis der Kasse:

 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
 

In der App build.gradle stellen Sie sicher , die haben mavenLocal() Abhängigkeit und die Standard - TensorFlow Lite Abhängigkeit mit dem einen ersetzen , die Unterstützung für ausgewählte TensorFlow ops hat:

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

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

Beachten Sie, dass die 0.1.100 hier Version rein zum Zwecke der Prüfung / Entwicklung. Mit dem lokalen AAR installiert ist , können Sie den Standard verwenden TensorFlow Lite Java - Inferenz - APIs in Ihrem App - Code.

Erstellen Sie Android App mit C ++

Es gibt zwei Möglichkeiten TFLite durch C ++ zu verwenden, wenn Sie Ihre App mit dem NDK bauen:

Verwendung TFLite C API

Dies ist die empfohlene Vorgehensweise. Laden Sie die TensorFlow Lite AAR bei JCenter gehostet , benennen Sie sie in tensorflow-lite-*.zip , Und entpacken Sie es. Sie müssen die vier Header - Dateien in include headers/tensorflow/lite/ und headers/tensorflow/lite/c/ Ordner und die entsprechende libtensorflowlite_jni.so dynamische Bibliothek in jni/ Ordnern in Ihrem NDK Projekt.

Die c_api.h Header - Datei enthält grundlegende Dokumentation über den TFLite C - API.

Verwendung TFLite C ++ API

Wenn Sie TFLite durch C ++ API verwenden möchten, können Sie die C ++ gemeinsam genutzte Bibliotheken bauen:

32bit armeabi-V7A:

 bazel build -c opt --config=android_arm //tensorflow/lite:libtensorflowlite.so
 

64bit arm64-V8A:

 bazel build -c opt --config=android_arm64 //tensorflow/lite:libtensorflowlite.so
 

Derzeit gibt es keine einfache Möglichkeit , alle Header - Dateien benötigt , um zu extrahieren, so dass Sie alle Header - Dateien in beinhalten muss tensorflow/lite/ vom TensorFlow Repository. Darüber hinaus werden Sie Header - Dateien aus benötigen FlatBuffers und Abseil .