Эта страница была переведа с помощью Cloud Translation API.
Switch to English

Сборка TensorFlow Lite для Android

В этом документе описывается, как собрать Android-библиотеку TensorFlow Lite самостоятельно. Обычно вам не нужно создавать локальную библиотеку Android TensorFlow Lite. Если вы просто хотите его использовать, самый простой способ - использовать TensorFlow Lite AAR, размещенный в JCenter . См. Краткое руководство по Android для получения дополнительных сведений о том, как использовать их в своих проектах Android.

Соберите TensorFlow Lite локально

В некоторых случаях вы можете использовать локальную сборку TensorFlow Lite. Например, вы можете создавать собственный двоичный файл, который включает операции, выбранные из TensorFlow , или вы можете захотеть внести локальные изменения в TensorFlow Lite.

Настроить среду сборки с помощью Docker

  • Загрузите файл Docker. Скачивая файл Docker, вы соглашаетесь с тем, что следующие условия обслуживания регулируют его использование:

Нажимая принять, вы соглашаетесь с тем, что любое использование Android Studio и Android Native Development Kit будет регулироваться Лицензионным соглашением Android Software Development Kit, доступным по адресу https://developer.android.com/studio/terms (такой URL-адрес может обновляться или изменяться Google время от времени).

Чтобы загрузить файл, необходимо принять условия обслуживания. Благодарю

  • При желании вы можете изменить версию Android SDK или NDK. Поместите загруженный файл Docker в пустую папку и создайте образ докера, запустив:
docker build . -t tflite-builder -f tflite-android.Dockerfile
  • Запустите контейнер докера в интерактивном режиме, подключив текущую папку к / tmp внутри контейнера (обратите внимание, что / tensorflow_src - это репозиторий TensorFlow внутри контейнера):
docker run -it -v $PWD:/tmp tflite-builder bash

Если вы используете PowerShell в Windows, замените «$ 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. Android NDK требуется для сборки собственного (C / C ++) кода TensorFlow Lite. Текущая рекомендуемая версия - 17c, которую можно найти здесь .
  3. Android SDK и инструменты сборки можно получить здесь или как часть Android Studio . API инструментов сборки> = 23 - рекомендуемая версия для сборки TensorFlow Lite.

Настройте рабочее пространство и .bazelrc

Запустите сценарий ./configure в корневом каталоге проверки TensorFlow и ответьте «Да», когда сценарий попросит интерактивно настроить ./WORKSPACE для сборок Android. Сценарий попытается настроить параметры, используя следующие переменные среды:

  • ANDROID_SDK_HOME
  • ANDROID_SDK_API_LEVEL
  • ANDROID_NDK_HOME
  • ANDROID_NDK_API_LEVEL

Если эти переменные не установлены, они должны быть предоставлены интерактивно в приглашении сценария. При успешной настройке в корневом каталоге должны .tf_configure.bazelrc записи, подобные приведенным ниже, в файле .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

Это сгенерирует файл AAR в bazel-bin/tensorflow/lite/java/ . Обратите внимание, что это создает «толстый» AAR с несколькими разными архитектурами; если они вам не нужны, используйте подмножество, подходящее для вашей среды развертывания.

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

Вышеупомянутый скрипт сгенерирует файл tensorflow-lite.aar и, необязательно, файл tensorflow-lite-select-tf-ops.aar если одна из моделей использует операции Tensorflow. Дополнительные сведения см. В разделе « Уменьшение размера двоичного файла TensorFlow Lite ».

Добавить AAR прямо в проект

Переместите файл tensorflow-lite.aar в каталог с именем libs в вашем проекте. Измените файл build.gradle вашего приложения, чтобы он ссылался на новый каталог и замените существующую зависимость TensorFlow Lite новой локальной библиотекой, например:

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

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

Установите AAR в локальный репозиторий Maven

Выполните следующую команду из корневого каталога проверки:

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 вашего приложения build.gradle , что у вас есть зависимость mavenLocal() и замените стандартную зависимость TensorFlow Lite той, которая поддерживает select ops TensorFlow:

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

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

Обратите внимание, что версия 0.1.100 здесь предназначена исключительно для тестирования / разработки. Установив локальный AAR, вы можете использовать стандартные API-интерфейсы вывода Java TensorFlow Lite в коде своего приложения.