Android용 개발 도구

TensorFlow Lite는 Android 앱에 모델을 통합하기 위한 다양한 도구를 제공합니다. 이 페이지에서는 Kotlin, Java, C++로 앱을 빌드하는 데 사용할 수 있는 개발 도구와 Android 스튜디오에서 TensorFlow Lite 개발을 지원하는 방법을 설명합니다.

Kotlin 및 Java를 사용한 빌드용 도구

다음 섹션에서는 Kotlin과 자바 언어를 사용하는 TensorFlow Lite용 개발 도구를 설명합니다.

TensorFlow Lite 라이브러리

MavenCentral에서 호스팅되는 AAR을 개발 프로젝트에 추가하여 Android 앱에서 TensorFlow Lite 라이브러리를 사용합니다.

다음과 같이 build.gradle 종속 항목에서 이를 지정할 수 있습니다.

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

야간 스냅샷을 사용하는 경우 프로젝트에 Sonatype 스냅샷 저장소를 추가해야 합니다.

이 AAR에는 모든 Android ABI용 바이너리가 포함되어 있습니다. 지원해야 하는 ABI만 포함하여 애플리케이션의 바이너리 크기를 줄일 수 있습니다.

특정 하드웨어를 타겟팅하지 않는 한 대부분의 경우 x86, x86_64, arm32 ABI를 생략해야 합니다. 다음 Gradle 구성을 사용하여 이를 구성할 수 있습니다. 구체적으로 armeabi-v7aarm64-v8a만 포함되며 대부분의 최신 Android 기기에 적용됩니다.

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

abiFilters에 관한 자세한 내용은 Android NDK 문서의 Android ABI를 참고하세요.

TensorFlow Lite 지원 라이브러리

TensorFlow Lite Android 지원 라이브러리를 사용하면 모델을 애플리케이션에 더 쉽게 통합할 수 있습니다. 원시 입력 데이터를 모델에 필요한 형식으로 변환하고 모델의 출력을 해석하여 필요한 상용구 코드의 양을 줄이는 상위 수준 API를 제공합니다.

또한 이미지 및 배열을 비롯한 입력과 출력의 일반적인 데이터 형식을 지원합니다. 또한 이미지 크기 조절 및 자르기와 같은 작업을 수행하는 전처리 및 후처리 단위를 제공합니다.

MavenCentral에서 호스팅되는 TensorFlow Lite 지원 라이브러리 AAR을 포함하여 Android 앱에서 지원 라이브러리를 사용합니다.

다음과 같이 build.gradle 종속 항목에서 이를 지정할 수 있습니다.

dependencies {
    implementation 'org.tensorflow:tensorflow-lite-support:+'
}

야간 스냅샷을 사용하는 경우 프로젝트에 Sonatype 스냅샷 저장소를 추가해야 합니다.

시작하는 방법에 관한 안내는 TensorFlow Lite Android 지원 라이브러리를 참고하세요.

라이브러리용 최소 Android SDK 버전

보관함 minSdkVersion 기기 요구사항
tensorflow-lite 21 -
tensorflow-lite-gpu 21 GLES 3.1 또는 OpenCL(일반적으로 API 21 이상에서만 사용 가능)
tensorflow-lite-support 21 -
tensorflow-lite-metadata 21 -

Android 스튜디오 사용

위에서 설명한 개발 라이브러리 외에도 Android 스튜디오는 아래 설명과 같이 TensorFlow Lite 모델 통합을 지원합니다.

Android 스튜디오 ML 모델 바인딩

Android 스튜디오 4.1 이상의 ML 모델 결합 기능을 사용하면 .tflite 모델 파일을 기존 Android 앱으로 가져오고 인터페이스 클래스를 생성하여 코드를 모델과 더 쉽게 통합할 수 있습니다.

TensorFlow Lite (TFLite) 모델을 가져오려면 다음 안내를 따르세요.

  1. TFLite 모델을 사용할 모듈을 마우스 오른쪽 버튼으로 클릭하거나 File > New > Other > TensorFlow Lite Model을 클릭합니다.

  2. TensorFlow Lite 파일의 위치를 선택합니다. 이 도구는 ML 모델 결합으로 모듈의 종속 항목을 구성하고 필요한 모든 종속 항목을 Android 모듈의 build.gradle 파일에 자동으로 추가합니다.

  3. Finish를 클릭하여 가져오기 프로세스를 시작합니다. 가져오기가 완료되면 입력 및 출력 텐서를 포함하여 모델을 설명하는 화면이 표시됩니다.

  4. 모델 사용을 시작하려면 Kotlin 또는 Java를 선택하고 코드를 복사하여 샘플 코드 섹션에 붙여넣습니다.

Android 스튜디오의 ml 디렉터리에 있는 TensorFlow Lite 모델을 더블클릭하여 모델 정보 화면으로 돌아갈 수 있습니다. Android 스튜디오의 Modle Binding 기능 사용에 관한 자세한 내용은 Android 스튜디오 출시 노트를 참고하세요. Android 스튜디오에서 모델 결합을 사용하는 방법에 관한 개요는 코드 예 instructions를 참고하세요.

C 및 C++로 빌드하기 위한 도구

TensorFlow Lite용 C 및 C++ 라이브러리는 기본적으로 Android Native Development Kit (NDK)를 사용하여 앱을 빌드하는 개발자를 위한 것입니다. NDK로 앱을 빌드하는 경우 C++를 통해 TFLite를 사용하는 방법에는 두 가지가 있습니다.

TFLite C API

이 API를 사용하는 것이 NDK를 사용하는 개발자에게 권장되는 방법입니다. MavenCentral에서 호스팅되는 TensorFlow Lite AAR 파일을 다운로드하고 이름을 tensorflow-lite-*.zip로 바꾼 후 압축을 풉니다. 4개의 헤더 파일을 headers/tensorflow/lite/headers/tensorflow/lite/c/ 폴더에, 관련 libtensorflowlite_jni.so 동적 라이브러리를 NDK 프로젝트의 jni/ 폴더에 포함해야 합니다.

c_api.h 헤더 파일에는 TFLite C API 사용에 관한 기본 문서가 포함되어 있습니다.

TFLite C++ API

C++ API를 통해 TFLite를 사용하려면 C++ 공유 라이브러리를 빌드하면 됩니다.

32비트 armeabi-v7a:

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

64비트 arm64-v8a:

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

현재 필요한 모든 헤더 파일을 추출할 수 있는 간단한 방법은 없으므로 TensorFlow 저장소의 모든 헤더 파일을 tensorflow/lite/에 포함해야 합니다. 또한 FlatBuffersAbseil의 헤더 파일이 필요합니다.