[Tensorlite] Android Tensorflow 추론 앱 개발 - 1. Android용 TensorFlow Lite

1. Tensorflow Lite

TensorFlow Lite는 더 작고 휴대 가능하며 효율적인 기계 학습 모델 형식으로 변환되는 TensorFlow 모델을 사용합니다. Android에서 TensorFlow Lite와 함께 사전 빌드된 모델을 사용하거나 고유한 TensorFlow 모델을 빌드하고 TensorFlow Lite 형식으로 변환할 수 있습니다.

단, TensorFlow Lite 모델과 TensorFlow 모델은 형식이 다르며 상호 교환할 수 없습니다. TensorFlow 모델은 TensorFlow Lite 모델로 변환할 수 있지만 해당 프로세스는 되돌릴 수 없습니다.

- 개발 워크플로

다음 가이드는 워크플로의 각 단계를 둘러보고 다음 안내에 관한 링크를 제공합니다.

  1. TensorFlow Lite 모델 생성
  2. 추론 실행

1. TensorFlow Lite 모델 생성

TensorFlow Lite 모델은 FlatBuffers(.tflite 파일 확장자로 식별됨)라는 효율적으로 이동 가능한 특수 형식으로 표현된다. TensorFlow Lite 모델은 선택적으로 메타데이터를 포함할 수 있으며 이 메타데이터에는 기기 추론 중에 파이프라인 전처리와 후처리의 자동 생성을 위해 사람이 읽을 수 있는 모델 설명과 머신이 읽을 수 있는 데이터가 포함됩니다. 자세한 내용은 메타데이터 추가 를 참고하세요.

다음 방법으로 TensorFlow Lite 모델을 생성할 수 있습니다.

  • 기존 TensorFlow Lite 모델 사용: 기존 모델을 선택하려면 TensorFlow Lite 예를 참고하세요. 모델은 메타데이터를 포함할 수도 있고, 포함하지 않을 수도 있습니다.

  • TensorFlow Lite 모델 생성: TensorFlow Lite Model Maker를 사용하여 자체 맞춤 데이터 세트를 포함하는 모델을 만듭니다. 기본적으로 모든 모델은 메타데이터를 포함합니다.

  • TensorFlow 모델을 TensorFlow Lite 모델로 변환: TensorFlow Lite 변환기를 사용하여 TensorFlow 모델을 TensorFlow Lite 모델로 변환합니다. 변환 중에 최적화(예: 양자화)를 적용하여 정확성의 손실이 없거나 최소화된 상태로 모델 크기와 지연 시간을 줄일 수 있습니다. 기본적으로 모든 모델은 메타데이터를 포함하지 않습니다.

2. 추론 실행

메타데이터가 없는 모델: TensorFlow Lite Interpreter API를 사용합니다. 다양한 플랫폼과 언어(예: 자바, Swift, C++, Objective-C, Python)에서 지원됩니다.

메타데이터가 있는 모델: TensorFlow Lite 작업 라이브러리를 사용하는 즉시 사용 가능한 API를 활용하거나 TensorFlow Lite 지원 라이브러리를 사용하는 맞춤 추론 파이프라인을 빌드할 수 있습니다. Android 기기 사용자는 Android 스튜디오 ML 모델 결합 또는 TensorFlow Lite 코드 생성기를 사용하여 자동으로 코드 래퍼를 생성할 수 있습니다. Swift(iOS)와 C++는 작업 중이며 자바(Android)에서만 지원됩니다.



2. 기계햑습 모델과 Android

Tensorflow 모델에서 생상한 추론 엔진을 Android 앱에서 사용할 수 있도록 한다.

Android 에서 Tensorflow 모델 실행

Android 앱은 TensorFlow Lite 모델을 실행하기 위해 다음 요소가 필요합니다.

  1. Android App (Java, Kotlin)
  2. 모델 실행을 위한 TensorFlow Lite 런타임 환경
  3. 데이터를 텐서로 변환하는 모델 입력 핸들러
  4. 출력 결과 텐서를 수신하고 예측 결과로 해석하는 출력 핸들러를 모델링한다.

Tensorflow Lite Runtime 환경

Android 앱에서 모델을 실행하기 위해 런타임 환경을 활성화하는 방법에는 여러 가지가 있습니다. 다음은 기본 옵션입니다.

  • Google Play 서비스 런타임 환경 의 TensorFlow Lite(권장)
  • 독립형 TensorFlow Lite 런타임 환경

Tensorflow Lite 변환기

https://www.tensorflow.org/lite/convert?hl=ko

TensorFlow Lite 변환기는 TensorFlow 모델을 사용하고 TensorFlow Lite 모델(.tflite 파일 확장자로 식별되는 최적화된 FlatBuffer 형식)을 생성합니다. 변환기를 사용하는 옵션에는 다음 두 가지가 있습니다.

  • Python API(권장): 모델 개발 파이프라인의 일부로 모델을 더 쉽게 변환하고 최적화를 적용하며 메타데이터를 추가하는 등 다양한 기능이 많습니다.
  • 명령줄: 기본 모델 변환만 지원합니다.

Tensorflow Lite 변환기 계층

Object Detection 예제

https://www.tensorflow.org/lite/android/quickstart?hl=ko

참고

Tensorflow Lite 관련:

  1. https://www.tensorflow.org/lite/guide?hl=ko

Android App 관련:

  1. Android용 TensorFlow Lite

  2. Recognize Flowers with TensorFlow Lite on Android
    Android 에서 Tensorflow Lite 앱 이용 Codelab


모델 학습 관련:

  1. Image classification with TensorFlow Lite Model Maker

[Tensorlite] Android Tensorflow 추론 앱 개발 - 1. Android용 TensorFlow Lite

Android Studio ML 모델 바인딩 사용
참고: Android Studio 4.1 이상 필요

TensorFlow Lite(TFLite) 모델을 가져오려면 다음과 같이 합니다.

TFLite 모델을 사용하려는 모듈을 마우스 오른쪽 버튼으로 클릭하거나 파일, 새로 만들기 > 기타 > TensorFlow Lite 모델 Right-click menus to access the TensorFlow Lite import functionality을 클릭합니다.

TFLite 파일의 위치를 선택합니다. 도구가 ML 모델을 바인딩하고 모든 종속성은 Android 모듈의 build.gradle 파일에 자동으로 삽입하는 등 사용자를 대신하여 모듈의 종속성을 구성합니다.

선택 사항: GPU 가속을 사용하려는 경우 TensorFlow GPU를 가져오기 위한 두 번째 확인란을 선택합니다. Import dialog for TFLite model

Finish를 클릭합니다.

가져오기가 성공하면 다음 화면이 나타납니다. 모델 사용을 시작하려면 Kotlin 또는 Java를 선택하고 Sample Code 섹션 아래에 코드를 복사하여 붙여 넣습니다. Android Studio의 ml 디렉터리 아래에 있는 TFLite 모델을 두 번 클릭하여 이 화면으로 돌아갈 수 있습니다. Model details page in Android Studio

https://www.tensorflow.org/lite/guide/android?hl=ko