이미지에서 객체 인식을 수행합니다.
이 API는 TFLite 모델 메타데이터가 포함된 TFLite 모델을 예상합니다.
이 API는 이미지 입력 텐서 1개와 출력 텐서 4개가 있는 모델을 지원합니다. 보다 구체적으로 요구사항은 다음과 같습니다.
- 입력 이미지 텐서 (
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관련 파일로 메타데이터에 연결된 경우 텐서 값을 라벨로 변환하는 데 사용됩니다.
- 크기가
- 점수 텐서 (
kTfLiteFloat32):- 텐서 크기가
[1 x num_results]이며 각 값은 감지된 객체의 점수를 나타냅니다.
- 텐서 크기가
- 감지 텐서 수 (
kTfLiteFloat32):- 정수 num_results를 크기
[1]의 텐서로 사용합니다.
- 정수 num_results를 크기
- 위치 텐서 (
이러한 모델의 예는 TensorFlow Hub에서 확인할 수 있습니다.
중첩된 클래스
| 클래스 | ObjectDetector.ObjectDetectorOptions | ObjectDetector 설정 옵션 |
|
공개 메서드
상속된 메서드
공개 메서드
public static ObjectDetector createFromBuffer (Context context, ByteBuffer modelBuffer)
모델 버퍼와 기본 ObjectDetector.ObjectDetectorOptions로부터 ObjectDetector 인스턴스를 생성합니다.
매개변수
| context | Android ERROR(/Context) |
|---|---|
| modelBuffer | 감지 모델의 직접 ByteBuffer 또는 ERROR(/MappedByteBuffer)입니다. |
생성 값
ObjectDetector 생성 중 오류가 발생하는 경우
|
public static ObjectDetector createFromFile (Context context, String modelPath)
모델 파일과 기본 ObjectDetector.ObjectDetectorOptions에서 ObjectDetector 인스턴스를 생성합니다.
매개변수
| context | Android ERROR(/Context) |
|---|---|
| modelPath | 애셋에 메타데이터가 있는 감지 모델의 경로 |
생성 값
ObjectDetector 생성 중 오류가 발생하는 경우
|
public static ObjectDetector createFromFile (Context context, File modelFile)
모델 파일과 기본 ObjectDetector.ObjectDetectorOptions에서 ObjectDetector 인스턴스를 생성합니다.
매개변수
| context | Android ERROR(/Context) |
|---|---|
| modelFile | 감지 모델 File 인스턴스 |
생성 값
| IOException | tflite 모델 파일을 열 때 I/O 오류가 발생하는지 여부 |
|---|---|
ObjectDetector 생성 중 오류가 발생하는 경우
|
public static ObjectDetector createFromOptions (Context context, ObjectDetector.ObjectDetectorOptionsDetectorOptions)
ObjectDetector.ObjectDetectorOptions에서 ObjectDetector 인스턴스를 만듭니다.
매개변수
| context | Android ERROR(/Context) |
|---|---|
| detectorOptions | ObjectDetector.ObjectDetectorOptions 인스턴스 |
생성 값
ObjectDetector 생성 중 오류가 발생하는 경우
|
공개 ObjectDetectorResult detect (MPImage 이미지)
기본 이미지 처리 옵션을 사용하여, 즉 회전 적용 없이 제공된 단일 이미지에서 객체 감지를 수행합니다. ObjectDetector가 ERROR(/RunningMode.IMAGE)로 생성된 경우에만 이 메서드를 사용합니다.
ObjectDetector는 다음 색상 공간 유형을 지원합니다.
매개변수
| 이미지 | 처리할 MediaPipe MPImage 객체입니다. |
|---|
생성 값
| 내부 오류가 있는 경우 |
공개 ObjectDetectorResult detect (MPImage 이미지, ImageProcessingOptions imageProcessingOptions)
제공된 단일 이미지에서 객체 인식을 수행합니다. ERROR(/RunningMode.IMAGE)를 사용하여 ObjectDetector를 만들 때만 이 메서드를 사용합니다.
ObjectDetector는 다음 색상 공간 유형을 지원합니다.
매개변수
| 이미지 | 처리할 MediaPipe MPImage 객체입니다. |
|---|---|
| imageProcessingOptions | 추론을 실행하기 전에 입력 이미지를 처리하는 방법을 지정하는 ImageProcessingOptions입니다. 관심 지역은 이 작업에서 지원되지 않습니다. ImageProcessingOptions.regionOfInterest()를 지정하면 이 메서드에서 IllegalArgumentException이 발생합니다. |
생성 값
| IllegalArgumentException | ImageProcessingOptions가 관심 지역을 지정하는 경우입니다. |
|---|---|
| 내부 오류가 있는 경우 |
public void detectAsync (MPImage 이미지, ImageProcessingOptions imageProcessingOptions, long timestampMs)
실시간 이미지 데이터를 전송하여 객체 인식을 수행합니다. 결과는 ObjectDetector.ObjectDetectorOptions에서 제공하는 OutputHandler.ResultListener를 통해 확인할 수 있습니다. ObjectDetector가 ERROR(/RunningMode.LIVE_STREAM)로 생성된 경우에만 이 메서드를 사용합니다.
입력 이미지가 객체 감지기로 전송되는 시점을 나타내는 타임스탬프 (밀리초)를 제공해야 합니다. 입력 타임스탬프는 단조 증가해야 합니다.
ObjectDetector는 다음 색상 공간 유형을 지원합니다.
매개변수
| 이미지 | 처리할 MediaPipe MPImage 객체입니다. |
|---|---|
| imageProcessingOptions | 추론을 실행하기 전에 입력 이미지를 처리하는 방법을 지정하는 ImageProcessingOptions입니다. 관심 지역은 이 작업에서 지원되지 않습니다. ImageProcessingOptions.regionOfInterest()를 지정하면 이 메서드에서 IllegalArgumentException이 발생합니다. |
| timestampMs | 입력 타임스탬프 (밀리초)입니다. |
생성 값
| IllegalArgumentException | ImageProcessingOptions가 관심 지역을 지정하는 경우입니다. |
|---|---|
| 내부 오류가 있는 경우 |
public void detectAsync (MPImage 이미지, long timestampMs)
실시간 이미지 데이터를 전송하여 기본 이미지 처리 옵션을 사용하여(예: 회전을 적용하지 않고) 객체 감지를 수행합니다. 결과는 ObjectDetector.ObjectDetectorOptions에서 제공하는 OutputHandler.ResultListener를 통해 확인할 수 있습니다. ERROR(/RunningMode.LIVE_STREAM)를 사용하여 ObjectDetector를 만들 때만 이 메서드를 사용합니다.
입력 이미지가 객체 감지기로 전송되는 시점을 나타내는 타임스탬프 (밀리초)를 제공해야 합니다. 입력 타임스탬프는 단조 증가해야 합니다.
ObjectDetector는 다음 색상 공간 유형을 지원합니다.
매개변수
| 이미지 | 처리할 MediaPipe MPImage 객체입니다. |
|---|---|
| timestampMs | 입력 타임스탬프 (밀리초)입니다. |
생성 값
| 내부 오류가 있는 경우 |
public ObjectDetectorResult detectForVideo (MPImage 이미지, ImageProcessingOptions imageProcessingOptions, long timestampMs)
제공된 동영상 프레임에서 객체 인식을 실행합니다. ERROR(/RunningMode.VIDEO)를 사용하여 ObjectDetector를 만들 때만 이 메서드를 사용합니다.
동영상 프레임의 타임스탬프 (밀리초)를 제공해야 합니다. 입력 타임스탬프는 단조 증가해야 합니다.
ObjectDetector는 다음 색상 공간 유형을 지원합니다.
매개변수
| 이미지 | 처리할 MediaPipe MPImage 객체입니다. |
|---|---|
| imageProcessingOptions | 추론을 실행하기 전에 입력 이미지를 처리하는 방법을 지정하는 ImageProcessingOptions입니다. 관심 지역은 이 작업에서 지원되지 않습니다. ImageProcessingOptions.regionOfInterest()를 지정하면 이 메서드에서 IllegalArgumentException이 발생합니다. |
| timestampMs | 입력 타임스탬프 (밀리초)입니다. |
생성 값
| IllegalArgumentException | ImageProcessingOptions가 관심 지역을 지정하는 경우입니다. |
|---|---|
| 내부 오류가 있는 경우 |
공개 ObjectDetectorResult detectForVideo (MPImage 이미지, 긴 timestampMs)
기본 이미지 처리 옵션을 사용하여, 즉 회전 적용 없이 제공된 동영상 프레임에서 객체 감지를 수행합니다. ObjectDetector가 ERROR(/RunningMode.VIDEO)로 생성된 경우에만 이 메서드를 사용합니다.
동영상 프레임의 타임스탬프 (밀리초)를 제공해야 합니다. 입력 타임스탬프는 단조 증가해야 합니다.
ObjectDetector는 다음 색상 공간 유형을 지원합니다.
매개변수
| 이미지 | 처리할 MediaPipe MPImage 객체입니다. |
|---|---|
| timestampMs | 입력 타임스탬프 (밀리초)입니다. |
생성 값
| 내부 오류가 있는 경우 |