Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

Zbuduj TensorFlow Lite dla Androida

W tym dokumencie opisano, jak samodzielnie zbudować bibliotekę TensorFlow Lite dla systemu Android. Zwykle nie ma potrzeby lokalnego tworzenia biblioteki TensorFlow Lite dla systemu Android. Jeśli chcesz go po prostu używać, najłatwiej jest użyć TensorFlow Lite AAR hostowanego w JCenter . Zobacz przewodnik Szybki start dla Androida, aby uzyskać więcej informacji o tym, jak używać ich w projektach systemu Android.

Twórz TensorFlow Lite lokalnie

W niektórych przypadkach możesz chcieć użyć lokalnej kompilacji TensorFlow Lite. Na przykład, możesz budować niestandardowy plik binarny zawierający operacje wybrane z TensorFlow lub możesz chcieć wprowadzić lokalne zmiany w TensorFlow Lite.

Skonfiguruj środowisko kompilacji za pomocą platformy Docker

  • Pobierz plik Docker. Pobierając plik Docker, zgadzasz się, że korzystanie z niego podlega następującym warunkom świadczenia usług:

Klikając „Akceptuję”, zgadzasz się, że wszelkie korzystanie z Android Studio i Android Native Development Kit będzie podlegać Umowie licencyjnej zestawu Android Software Development Kit dostępnej pod adresem https://developer.android.com/studio/terms (taki adres URL może być od czasu do czasu aktualizowane lub zmieniane przez Google).

Aby pobrać plik , musisz zaakceptować warunki korzystania z usługi. Potwierdź

  • Opcjonalnie możesz zmienić wersję Android SDK lub NDK. Umieść pobrany plik Dockera w pustym folderze i skompiluj obraz Dockera, uruchamiając:
docker build . -t tflite-builder -f tflite-android.Dockerfile
  • Uruchom kontener Dockera interaktywnie, montując bieżący folder do / tmp wewnątrz kontenera (zwróć uwagę, że / tensorflow_src to repozytorium TensorFlow wewnątrz kontenera):
docker run -it -v $PWD:/tmp tflite-builder bash

Jeśli używasz programu PowerShell w systemie Windows, zamień „$ PWD” na „pwd”.

Jeśli chcesz użyć repozytorium TensorFlow na hoście, zamontuj ten katalog hosta (-v katalog_hosta: / tmp).

  • Po wejściu do kontenera możesz uruchomić następujące opcje, aby pobrać dodatkowe narzędzia i biblioteki systemu Android (pamiętaj, że może być konieczne zaakceptowanie licencji):
android update sdk --no-ui -a --filter tools,platform-tools,android-${ANDROID_API_LEVEL},build-tools-${ANDROID_BUILD_TOOLS_VERSION}

Możesz teraz przejść do sekcji „Kompiluj i instaluj”. Po zakończeniu budowania bibliotek możesz skopiować je do / tmp wewnątrz kontenera, aby mieć do nich dostęp na hoście.

Skonfiguruj środowisko kompilacji bez Dockera

Zainstaluj Bazel i wymagania wstępne Androida

Bazel to podstawowy system kompilacji dla TensorFlow. Aby z nim zbudować, musisz go mieć i zainstalować w systemie Android NDK i SDK.

  1. Zainstaluj najnowszą wersję systemu kompilacji Bazel .
  2. Android NDK jest wymagany do zbudowania natywnego (C / C ++) kodu TensorFlow Lite. Aktualnie zalecana wersja to 17c, którą można znaleźć tutaj .
  3. Zestaw Android SDK i narzędzia do kompilacji można pobrać tutaj lub alternatywnie jako część Android Studio . Build tools API> = 23 to zalecana wersja do budowania TensorFlow Lite.

Skonfiguruj WORKSPACE i .bazelrc

Uruchom skrypt ./configure w głównym katalogu checkout TensorFlow i odpowiedz „Tak”, gdy skrypt zażąda interaktywnej konfiguracji ./WORKSPACE dla systemu Android. Skrypt podejmie próbę skonfigurowania ustawień przy użyciu następujących zmiennych środowiskowych:

  • ANDROID_SDK_HOME
  • ANDROID_SDK_API_LEVEL
  • ANDROID_NDK_HOME
  • ANDROID_NDK_API_LEVEL

Jeśli te zmienne nie są ustawione, należy je podać interaktywnie w zachęcie skryptu. Pomyślna konfiguracja powinna dać wpisy podobne do poniższych w pliku .tf_configure.bazelrc w folderze głównym:

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"

Zbuduj i zainstaluj

Po poprawnym skonfigurowaniu Bazel możesz zbudować TensorFlow Lite AAR z głównego katalogu checkout w następujący sposób:

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

Spowoduje to wygenerowanie pliku AAR w bazel-bin/tensorflow/lite/java/ . Zauważ, że tworzy to „gruby” AAR z kilkoma różnymi architekturami; jeśli nie potrzebujesz ich wszystkich, użyj podzbioru odpowiedniego dla środowiska wdrażania.

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

tensorflow-lite.aar skrypt wygeneruje plik tensorflow-lite.aar i opcjonalnie plik tensorflow-lite-select-tf-ops.aar , jeśli jeden z modeli korzysta z operacji Tensorflow. Aby uzyskać więcej informacji, zobacz sekcję Zmniejsz rozmiar binarny TensorFlow Lite .

Dodaj AAR bezpośrednio do projektu

Przenieś plik tensorflow-lite.aar do katalogu o nazwie libs w swoim projekcie. Zmodyfikuj plik build.gradle aplikacji, aby odwoływał się do nowego katalogu i zastąp istniejącą zależność TensorFlow Lite nową biblioteką lokalną, np .:

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

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

Zainstaluj AAR w lokalnym repozytorium Maven

Wykonaj następujące polecenie z głównego katalogu pobierania:

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

W mavenLocal() build.gradle aplikacji upewnij się, że masz zależność mavenLocal() i zamień standardową zależność TensorFlow Lite na tę, która obsługuje wybrane operacje TensorFlow:

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

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

Zwróć uwagę, że wersja 0.1.100 jest tutaj wyłącznie do celów testowania / rozwoju. Po zainstalowaniu lokalnego AAR możesz używać standardowych interfejsów API wnioskowania Java TensorFlow Lite w kodzie aplikacji.