이미지 분류기 통합

이미지 분류는 이미지가 나타내는 것을 식별하기 위해 기계 학습을 일반적으로 사용합니다. 예를 들어 주어진 그림에 어떤 종류의 동물이 나타나는지 알고 싶을 수 있습니다. 이미지가 무엇을 나타내는 지 예측하는 작업은 영상 분류라고합니다. 이미지 분류기는 다양한 이미지 클래스를 인식하도록 훈련됩니다. 예를 들어 모델은 토끼, 햄스터, 개 등 세 가지 유형의 동물을 나타내는 사진을 인식하도록 훈련될 수 있습니다. 참고 항목 영상 분류의 소개 영상 분류에 대한 자세한 내용은.

태스크 라이브러리 사용 ImageClassifier 모바일 앱에 사용자 정의 이미지 분류 또는 pretrained 사람을 배포하는 API를.

ImageClassifier API의 주요 기능

  • 회전, 크기 조정 및 색 공간 변환을 포함한 입력 이미지 처리.

  • 입력 이미지의 관심 영역입니다.

  • 레이블 맵 로케일.

  • 결과를 필터링하기 위한 점수 임계값입니다.

  • Top-k 분류 결과.

  • 허용 목록 및 거부 목록에 레이블을 지정합니다.

지원되는 이미지 분류기 모델

다음 모델은 호환을 보장받을 수 있습니다 ImageClassifier API.

Java에서 추론 실행

참고 항목 이미지 분류 참조 응용 프로그램을 사용하는 방법의 예를 들어 ImageClassifier 안드로이드 응용 프로그램에서.

1단계: Gradle 종속성 및 기타 설정 가져오기

복사 .tflite 모델이 실행됩니다 안드로이드 모듈의 자산 디렉토리에 모델 파일을. 파일이 압축되지 않아야 함을 지정하고 모듈의에 TensorFlow 라이트 라이브러리를 추가 build.gradle 파일 :

android {
    // Other settings

    // Specify tflite file should not be compressed for the app apk
    aaptOptions {
        noCompress "tflite"
    }

}

dependencies {
    // Other dependencies

    // Import the Task Vision Library dependency
    implementation 'org.tensorflow:tensorflow-lite-task-vision:0.2.0'
}

2단계: 모델 사용

// Initialization
ImageClassifierOptions options = ImageClassifierOptions.builder().setMaxResults(1).build();
ImageClassifier imageClassifier = ImageClassifier.createFromFileAndOptions(context, modelFile, options);

// Run inference
List<Classifications> results = imageClassifier.classify(image);

참고 항목 소스 코드와 javadoc의 구성에 더 많은 옵션에 대한 ImageClassifier .

C++에서 추론 실행

// Initialization
ImageClassifierOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_file);
std::unique_ptr<ImageClassifier> image_classifier = ImageClassifier::CreateFromOptions(options).value();

// Run inference
const ClassificationResult result = image_classifier->Classify(*frame_buffer).value();

참고 항목 소스 코드 구성에 더 많은 옵션에 대한 ImageClassifier .

예시 결과

여기에서의 분류 결과의 일례이다 조류 분류기 .

참새

Results:
  Rank #0:
   index       : 671
   score       : 0.91406
   class name  : /m/01bwb9
   display name: Passer domesticus
  Rank #1:
   index       : 670
   score       : 0.00391
   class name  : /m/01bwbt
   display name: Passer montanus
  Rank #2:
   index       : 495
   score       : 0.00391
   class name  : /m/0bwm6m
   display name: Passer italiae

간단한 사용해보십시오 ImageClassifier에 대한 CLI 데모 도구를 자신의 모델과 테스트 데이터.

모델 호환성 요구 사항

ImageClassifier API는 필수와 TFLite 모델 기대 TFLite 모델 메타 데이터 . 사용하여 이미지 분류에 대한 메타 데이터 생성의 예를 참조하십시오 TensorFlow 라이트 메타 데이터 라이터 API를 .

호환되는 이미지 분류기 모델은 다음 요구 사항을 충족해야 합니다.

  • 입력 이미지 텐서(kTfLiteUInt8/kTfLiteFloat32)

    • 크기의 화상 입력 [batch x height x width x channels] .
    • 배치 추론 (지원하지 않는 batch 1이 될 필요가있다).
    • RGB 입력 만이 지원된다 ( channels 3을 할 필요가있다).
    • type이 kTfLiteFloat32인 경우 입력 정규화를 위해 NormalizationOptions를 메타데이터에 첨부해야 합니다.
  • 출력 점수 텐서(kTfLiteUInt8/kTfLiteFloat32)

    • N 클래스와 중 2 또는 4 차원, 즉 [1 x N] 또는 [1 x 1 x 1 x N]

    • TENSOR_AXIS_LABELS 유형의 AssociatedFile-s로 선택적인(하지만 권장되는) 레이블 맵으로, 한 줄에 하나의 레이블을 포함합니다. 참고 항목 예 라벨 파일을 . 최초의 AssociatedFile (있는 경우)를 작성하는 데 사용되는 label (라는 이름 필드 class_name 결과 C ++하여). display_name 필드는 그 로켈과 일치하는 AssociatedFile (있는 경우)에서 가득 display_names_locale 의 필드 ImageClassifierOptions 생성 시간 ( "EN"기본적으로, 즉 영어)에서 사용합니다. 이 중 어느 것도 사용할 수없는 경우에만 index 결과의 필드에 입력됩니다.