객체 감지기로 알려진 객체 집합 중 어떤 것이 있을 수 있는지 식별할 수 있습니다. 주어진 이미지나 동영상 내에서의 위치에 관한 정보를 제공합니다. 있습니다. 객체 감지기는 특정 물건의 존재와 위치를 객체를 생성할 수 있습니다. 예를 들어 모델은 이미지로 학습될 수 있습니다. 여러 과일을 포함하는 라벨과 함께 나타내는 과일 분류 (예: 사과, 바나나, 딸기) 이미지에서 각 객체가 나타나는 위치를 지정하는 데이터입니다. 자세한 내용은 객체 감지 예시 참조하세요.
Task Library ObjectDetector
API를 사용하여 커스텀 객체 감지기 배포
모바일 앱에 적용할 수 있습니다
ObjectDetector API의 주요 특징
회전, 크기 조절, 색상 공간을 포함한 입력 이미지 처리 알 수 있습니다.
라벨 지도 언어
결과를 필터링하기 위한 점수 기준
Top-k 감지 결과입니다.
라벨 허용 목록 및 차단 목록
지원되는 객체 감지기 모델
다음 모델은 ObjectDetector
과(와) 호환됩니다.
API에 액세스할 수 있습니다.
모델 작성자: AutoML Vision 에지 객체 감지.
특정 기준을 충족하는 모델 호환성 요구사항을 충족해야 합니다.
Java에서 추론 실행
자세한 내용은
객체 감지 참조 앱
Android 앱에서 ObjectDetector
를 사용하는 방법의 예를 확인하세요.
1단계: Gradle 종속 항목 및 기타 설정 가져오기
.tflite
모델 파일을 Android 모듈의 assets 디렉터리에 복사합니다.
지정할 수도 있습니다 파일을 압축하지 않도록 지정합니다.
모듈의 build.gradle
파일에 TensorFlow Lite 라이브러리를 추가합니다.
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'
// Import the GPU delegate plugin Library for GPU inference
implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin'
}
2단계: 모델 사용
// Initialization
ObjectDetectorOptions options =
ObjectDetectorOptions.builder()
.setBaseOptions(BaseOptions.builder().useGpu().build())
.setMaxResults(1)
.build();
ObjectDetector objectDetector =
ObjectDetector.createFromFileAndOptions(
context, modelFile, options);
// Run inference
List<Detection> results = objectDetector.detect(image);
자세한 내용은
소스 코드와 javadoc을
ObjectDetector
구성 옵션을 참조하세요.
iOS에서 추론 실행
1단계: 종속 항목 설치
작업 라이브러리는 CocoaPods를 사용한 설치를 지원합니다. CocoaPods가 이(가) 시스템에 설치되어 있습니다. 자세한 내용은 CocoaPods 설치 가이드 를 참조하세요.
자세한 내용은 CocoaPods 가이드 Xcode 프로젝트에 포드를 추가하는 방법을 자세히 알아보세요.
Podfile에 TensorFlowLiteTaskVision
포드를 추가합니다.
target 'MyAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskVision'
end
추론에 사용할 .tflite
모델이 있는지 확인합니다.
App Bundle을 개발합니다
2단계: 모델 사용
Swift
// Imports
import TensorFlowLiteTaskVision
// Initialization
guard let modelPath = Bundle.main.path(forResource: "ssd_mobilenet_v1",
ofType: "tflite") else { return }
let options = ObjectDetectorOptions(modelPath: modelPath)
// Configure any additional options:
// options.classificationOptions.maxResults = 3
let detector = try ObjectDetector.detector(options: options)
// Convert the input image to MLImage.
// There are other sources for MLImage. For more details, please see:
// https://developers.google.com/ml-kit/reference/ios/mlimage/api/reference/Classes/GMLImage
guard let image = UIImage (named: "cats_and_dogs.jpg"), let mlImage = MLImage(image: image) else { return }
// Run inference
let detectionResult = try detector.detect(mlImage: mlImage)
Objective-C
// Imports
#import <TensorFlowLiteTaskVision/TensorFlowLiteTaskVision.h>
// Initialization
NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"ssd_mobilenet_v1" ofType:@"tflite"];
TFLObjectDetectorOptions *options = [[TFLObjectDetectorOptions alloc] initWithModelPath:modelPath];
// Configure any additional options:
// options.classificationOptions.maxResults = 3;
TFLObjectDetector *detector = [TFLObjectDetector objectDetectorWithOptions:options
error:nil];
// Convert the input image to MLImage.
UIImage *image = [UIImage imageNamed:@"dogs.jpg"];
// There are other sources for GMLImage. For more details, please see:
// https://developers.google.com/ml-kit/reference/ios/mlimage/api/reference/Classes/GMLImage
GMLImage *gmlImage = [[GMLImage alloc] initWithImage:image];
// Run inference
TFLDetectionResult *detectionResult = [detector detectWithGMLImage:gmlImage error:nil];
자세한 내용은
소스 코드
TFLObjectDetector
구성 옵션을 참조하세요.
Python에서 추론 실행
1단계: pip 패키지 설치
pip install tflite-support
2단계: 모델 사용
# Imports
from tflite_support.task import vision
from tflite_support.task import core
from tflite_support.task import processor
# Initialization
base_options = core.BaseOptions(file_name=model_path)
detection_options = processor.DetectionOptions(max_results=2)
options = vision.ObjectDetectorOptions(base_options=base_options, detection_options=detection_options)
detector = vision.ObjectDetector.create_from_options(options)
# Alternatively, you can create an object detector in the following manner:
# detector = vision.ObjectDetector.create_from_file(model_path)
# Run inference
image = vision.TensorImage.create_from_file(image_path)
detection_result = detector.detect(image)
자세한 내용은
소스 코드
ObjectDetector
구성 옵션을 참조하세요.
C++에서 추론 실행
// Initialization
ObjectDetectorOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<ObjectDetector> object_detector = ObjectDetector::CreateFromOptions(options).value();
// Create input frame_buffer from your inputs, `image_data` and `image_dimension`.
// See more information here: tensorflow_lite_support/cc/task/vision/utils/frame_buffer_common_utils.h
std::unique_ptr<FrameBuffer> frame_buffer = CreateFromRgbRawBuffer(
image_data, image_dimension);
// Run inference
const DetectionResult result = object_detector->Detect(*frame_buffer).value();
자세한 내용은
소스 코드
ObjectDetector
구성 옵션을 참조하세요.
결과 예시
이것은 다음 예와 같이 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 모델 메타데이터. 생성 예시 보기
다음 객체를 사용하는 객체 감지기의 메타데이터입니다.
TensorFlow Lite Metadata Writer API.
호환되는 객체 감지기 모델은 다음 요구사항을 충족해야 합니다.
입력 이미지 텐서: (kTfLiteUInt8/kTfLiteFloat32)
- 크기가
[batch x height x width x channels]
인 이미지 입력 - 일괄 추론은 지원되지 않습니다 (
batch
는 1이어야 함). - RGB 입력만 지원됩니다 (
channels
는 3이어야 함). - 유형이 kTfLiteFloat32인 경우 NormalizationOptions가 입력 정규화를 위해 메타데이터에 첨부됩니다.
- 크기가
출력 텐서는
DetectionPostProcess
작업의 출력 4개여야 합니다. 예:- 위치 텐서 (kTfLiteFloat32)
<ph type="x-smartling-placeholder">
- </ph>
- 크기가
[1 x num_results x 4]
인 텐서로, 다음을 나타내는 내부 배열입니다. [상단, 왼쪽, 오른쪽, 하단] 형식으로 입력합니다. - 메타데이터에 BoundingBoxProperties를 연결해야 합니다.
type=BOUNDARIES
및 `Coordinate_type=RATIO를 지정해야 합니다.
- 크기가
클래스 텐서 (kTfLiteFloat32)
- 크기가
[1 x num_results]
인 텐서로, 각 값은 클래스의 정수 색인입니다. - 선택사항이지만 권장되는 라벨 맵은
TENSOR_VALUE_LABELS 유형의 AssociatedFile-s, 라벨 1개가 포함되어 있음
한 줄에 하나씩 입력합니다. 자세한 내용은
라벨 파일 예를 참고하세요.
이러한 첫 번째 AssociatedFile (있는 경우)은
결과의
class_name
필드입니다.display_name
필드는 다음과 같습니다. 언어가 다음에서 사용되는ObjectDetectorOptions
의display_names_locale
필드: 생성 시간(기본값: en, 예: 영어) 다음 사항이 모두 충족되지 않는 경우 결과의index
필드만 채워집니다.
- 크기가
점수 텐서 (kTfLiteFloat32)
- 크기가
[1 x num_results]
인 텐서로, 각 값은 인코더-디코더입니다.
- 크기가
감지 텐서 수 (kTfLiteFloat32)
- 정수 num_results를 크기가
[1]
인 텐서로 표현합니다.
- 정수 num_results를 크기가
- 위치 텐서 (kTfLiteFloat32)
<ph type="x-smartling-placeholder">