객체 감지기는 알려진 객체 세트 중 어떤 것이 존재할 수 있는지 식별하고 주어진 이미지 또는 비디오 스트림 내 위치에 대한 정보를 제공 할 수 있습니다. 물체 감지기는 여러 등급의 물체의 존재와 위치를 감지하도록 훈련되었습니다. 예를 들어, 다양한 과일 조각이 포함 된 이미지, 과일이 나타내는 과일의 종류 (예 : 사과, 바나나 또는 딸기)를 지정하는 레이블 및 각 개체가 나타나는 위치를 지정하는 데이터로 모델을 학습시킬 수 있습니다. 이미지. 객체 감지기에 대한 자세한 내용은 객체 감지 소개를 참조하세요.
Task Library ObjectDetector
API를 사용하여 커스텀 객체 감지기 또는 사전 학습 된 감지기를 모델 앱에 배포합니다.
ObjectDetector API의 주요 기능
회전, 크기 조정 및 색 공간 변환을 포함한 입력 이미지 처리.
라벨 맵 로케일.
결과를 필터링하기위한 점수 임계 값.
Top-k 탐지 결과.
허용 목록 및 거부 목록에 레이블을 지정합니다.
지원되는 물체 감지기 모델
다음 모델은 ObjectDetector
API와의 호환성이 보장됩니다.
AutoML Vision Edge 객체 감지로 만든 모델입니다.
모델 호환성 요구 사항 을 충족하는 사용자 지정 모델.
자바에서 추론 실행
Android 앱에서 ObjectDetector
를 사용하는 방법의 예는 Object Detection 참조 앱 을 참조 하세요.
1 단계 : Gradle 종속성 및 기타 설정 가져 오기
.tflite
모델 파일을 모델이 실행될 Android 모듈의 assets 디렉터리에 복사하십시오. 파일이 압축되지 않도록 지정하고 TensorFlow Lite 라이브러리를 모듈의 build.gradle
파일에 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.1.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);
ObjectDetector
를 구성하는 더 많은 옵션은 소스 코드와 javadoc 을 참조하십시오.
C ++에서 추론 실행
// Initialization
ObjectDetectorOptions options;
options.mutable_model_file_with_metadata()->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
를 구성하는 추가 옵션은 소스 코드 를 참조하십시오.
예제 결과
다음은 TensorFlow Hub의 ssd mobilenet v1 감지 결과의 예입니다.
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 모델을 예상합니다.
호환되는 물체 감지기 모델은 다음 요구 사항을 충족해야합니다.
입력 이미지 텐서 : (kTfLiteUInt8 / kTfLiteFloat32)
- 크기의 이미지 입력
[batch x height x width x channels]
. - 배치 추론은 지원되지 않습니다 (
batch
가 1이어야 함). - RGB 입력 만 지원됩니다 (
channels
은 3이어야 함). - 유형이 kTfLiteFloat32 인 경우 입력 정규화를 위해 NormalizationOptions를 메타 데이터에 연결해야합니다.
- 크기의 이미지 입력
출력 텐서는
DetectionPostProcess
연산의 4 개 출력이어야합니다. 즉,위치 텐서 (kTfLiteFloat32)
텐서 크기
[1 x num_results x 4]
, [top, left, right, bottom] 형식의 경계 상자를 나타내는 내부 배열.BoundingBoxProperties는 메타 데이터에 첨부되어야하며
type=BOUNDARIES
및`coordinate_type = RATIO를 지정해야합니다.
클래스 텐서 (kTfLiteFloat32)
텐서 크기
[1 x num_results]
, 각 값은 클래스의 정수 인덱스를 나타냅니다.선택 사항 (권장) 레이블 맵은 TENSOR_VALUE_LABELS 유형의 AssociatedFile-s로 첨부 될 수 있으며 한 줄에 하나의 레이블이 포함됩니다. 첫 번째 AssociatedFile (있는 경우)은 결과의
class_name
필드를 채우는 데 사용됩니다.display_name
필드는 로케일이 생성시 사용 된ObjectDetectorOptions
의display_names_locale
필드 (기본적으로 "en", 즉 영어)와 일치하는 AssociatedFile (있는 경우)에서 채워집니다. 이들 중 어느 것도 사용할 수없는 경우 결과의index
필드 만 채워집니다.
점수 텐서 (kTfLiteFloat32)
- 텐서 크기
[1 x num_results]
, 각 값은 감지 된 개체의 점수를 나타냅니다.
- 텐서 크기
감지 텐서 수 (kTfLiteFloat32)
- 정수 num_results (크기
[1]
텐서[1]
.
- 정수 num_results (크기