물체 감지기 통합

물체 감지기는 알려진 물체 세트 중 어떤 것이 존재할 수 있는지 식별하고 주어진 이미지 또는 비디오 스트림 내의 위치에 대한 정보를 제공할 수 있습니다. 물체 감지기는 여러 클래스의 물체의 존재와 위치를 감지하도록 훈련되었습니다. 예를 들어, 모델은 각 객체에 표시되는 위치를 지정 그들이 대표 과일의 클래스 (예 : 사과, 바나나, 또는 딸기), 데이터가 지정하는 라벨과 함께 과일의 다양한 부분을 포함하는 이미지 훈련 될 수있다 이미지. 참고 항목 물체 검출의 도입을 목적 탐지기에 대한 자세한 내용은.

태스크 라이브러리 사용 ObjectDetector 모바일 앱으로 사용자 정의 개체 감지기 또는 pretrained 사람을 배포하는 API를.

ObjectDetector API의 주요 기능

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

  • 레이블 맵 로케일.

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

  • Top-k 탐지 결과.

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

지원되는 물체 감지기 모델

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

Java에서 추론 실행

참고 항목 객체 탐지 참조 응용 프로그램을 사용하는 방법의 예를 들어 ObjectDetector 안드로이드 응용 프로그램에서.

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
ObjectDetectorOptions options = ObjectDetectorOptions.builder().setMaxResults(1).build();
ObjectDetector objectDetector = ObjectDetector.createFromFileAndOptions(context, modelFile, options);

// Run inference
List<Detection> results = objectDetector.detect(image);

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

C++에서 추론 실행

// Initialization
ObjectDetectorOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_file);
std::unique_ptr<ObjectDetector> object_detector = ObjectDetector::CreateFromOptions(options).value();

// Run inference
const DetectionResult result = object_detector->Detect(*frame_buffer).value();

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

예시 결과

여기서 검출 결과의 예이다 SSD mobilenet V1 TensorFlow 허브에서이.

개

Results:
 Detection #0 (red):
  Box: (x: 355, y: 133, w: 190, h: 206)
  Top-1 class:
   index       : 17
   score       : 0.73828
   class name  : dog
 Detection #1 (green):
  Box: (x: 103, y: 15, w: 138, h: 369)
  Top-1 class:
   index       : 17
   score       : 0.73047
   class name  : dog

입력 이미지에 경계 상자를 렌더링합니다.

감지 출력

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

모델 호환성 요구 사항

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

호환되는 물체 감지기 모델은 다음 요구 사항을 충족해야 합니다.

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

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

    • 위치 텐서(kTfLiteFloat32)

      • 크기 텐서 [1 x num_results x 4] , 형태 바운딩 박스를 나타내는 내부 배열 [좌측 상단, 우측, 하단].

      • BoundingBoxProperties는 메타 데이터에 첨부하고 지정해야 필요 type=BOUNDARIES 와`coordinate_type = 비율.

    • 클래스 텐서(kTfLiteFloat32)

      • 크기 텐서 [1 x num_results] 는 클래스의 정수 인덱스를 각각 나타내는 값.

      • 선택적(그러나 권장되는) 레이블 맵은 한 줄에 하나의 레이블을 포함하는 TENSOR_VALUE_LABELS 유형의 AssociatedFile-s로 첨부할 수 있습니다. 참고 항목 예 라벨 파일을 . 최초의 AssociatedFile (있는 경우)을 채우기 위해 사용된다 class_name 결과 필드. display_name 필드는 그 로켈과 일치하는 AssociatedFile (있는 경우)에서 가득 display_names_locale 의 필드 ObjectDetectorOptions 생성 시간 ( "EN"기본적으로, 즉 영어)에서 사용합니다. 이 중 어느 것도 사용할 수없는 경우에만 index 결과의 필드에 입력됩니다.

    • 점수 텐서(kTfLiteFloat32)

      • 크기 텐서 [1 x num_results] , 검출 대상의 점을 각각 나타내는 값.
    • 감지 텐서 수(kTfLiteFloat32)

      • 크기의 텐서 등 정수 NUM_RESULTS [1] .