이 페이지는 Cloud Translation API를 통해 번역되었습니다.
Switch to English

Android 용 TensorFlow Lite 빌드

이 문서는 TensorFlow Lite Android 라이브러리를 직접 빌드하는 방법을 설명합니다. 일반적으로 TensorFlow Lite Android 라이브러리를 로컬로 빌드 할 필요가 없습니다. 사용하려는 경우 가장 쉬운 방법은 JCenter에서 호스팅되는 TensorFlow Lite AAR을 사용하는 입니다. Android 프로젝트에서 사용하는 방법에 대한 자세한 내용은 Android 빠른 시작 을 참조하세요.

로컬에서 TensorFlow Lite 빌드

경우에 따라 TensorFlow Lite의 로컬 빌드를 사용하고 싶을 수 있습니다. 예를 들어 TensorFlow 에서 선택한 작업 을 포함하는 커스텀 바이너리를 빌드하거나 TensorFlow Lite를 로컬로 변경하고자 할 수 있습니다.

Docker를 사용하여 빌드 환경 설정

  • Docker 파일을 다운로드하십시오. Docker 파일을 다운로드하면 다음 서비스 약관이 파일 사용에 적용된다는 데 동의하는 것입니다.

동의를 클릭하면 Android Studio 및 Android Native Development Kit의 모든 사용이 https://developer.android.com/studio/terms 에서 제공되는 Android 소프트웨어 개발 키트 라이선스 계약 (이러한 URL은 Google에서 수시로 업데이트하거나 변경).

파일을 다운로드하려면 서비스 약관에 동의해야합니다. 확인

  • 선택적으로 Android SDK 또는 NDK 버전을 변경할 수 있습니다. 다운로드 한 Docker 파일을 빈 폴더에 넣고 다음을 실행하여 Docker 이미지를 빌드합니다.
docker build . -t tflite-builder -f tflite-android.Dockerfile
  • 컨테이너 내부의 / host_dir에 현재 폴더를 마운트하여 대화 형으로 docker 컨테이너를 시작합니다 (/ tensorflow_src는 컨테이너 내부의 TensorFlow 저장소입니다).
docker run -it -v $PWD:/host_dir tflite-builder bash

Windows에서 PowerShell을 사용하는 경우 "$ PWD"를 "pwd"로 바꿉니다.

호스트에서 TensorFlow 저장소를 사용하려면 대신 해당 호스트 디렉토리를 마운트하십시오 (-v hostDir : / host_dir).

  • 컨테이너 내부에 있으면 다음을 실행하여 추가 Android 도구 및 라이브러리를 다운로드 할 수 있습니다 (라이선스에 동의해야 할 수 있음).
android update sdk --no-ui -a --filter tools,platform-tools,android-${ANDROID_API_LEVEL},build-tools-${ANDROID_BUILD_TOOLS_VERSION}

이제 "빌드 및 설치"섹션으로 진행할 수 있습니다. 라이브러리 빌드를 완료 한 후 컨테이너 내부의 / host_dir에 복사하여 호스트에서 액세스 할 수 있습니다.

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 를 대화식으로 구성하도록 요청하면 "예"라고 대답합니다. 스크립트는 다음 환경 변수를 사용하여 설정을 구성하려고합니다.

  • 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-r18b"
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을 구축한다는 점에 유의하십시오. 모두 필요하지 않은 경우 배포 환경에 적합한 하위 집합을 사용하십시오.

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

위 스크립트는 모델 중 하나가 tensorflow-lite-select-tf-ops.aar 작업을 사용하는 경우 tensorflow-lite.aar 파일 및 선택적으로 tensorflow-lite-select-tf-ops.aar 파일을 생성합니다. 자세한 내용은 TensorFlow Lite 바이너리 크기 줄이기 섹션을 참조하세요.

프로젝트에 직접 AAR 추가

tensorflow-lite.aar 파일을 프로젝트의 libs 라는 디렉토리로 이동합니다. 새 디렉터리를 참조하도록 앱의 build.gradle 파일을 수정하고 기존 TensorFlow Lite 종속성을 새 로컬 라이브러리로 build.gradle . 예 :

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 작업을 지원하는 종속성으로 mavenLocal() .

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

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

여기서 0.1.100 버전은 순전히 테스트 / 개발을위한 것입니다. 로컬 AAR이 설치되면 앱 코드에서 표준 TensorFlow Lite Java 추론 API 를 사용할 수 있습니다.