TensorImage

공개 클래스 TensorImage

TensorImage는 Image 객체의 래퍼 클래스입니다. TFLite.support 라이브러리에서 이미지 처리 유틸리티를 사용할 때는 처음에 변형 유형의 이미지 객체를 TensorImage로 변환하는 것이 일반적입니다.

현재는 RGB 이미지만 지원되며 A 채널은 항상 무시됩니다.

데이터 스토리지 세부정보: TensorImage 객체에는 Bitmap 또는 TensorBuffer 등 두 가지 잠재적인 정보 소스가 있을 수 있습니다. TensorImage는 상태를 유지하고 필요할 때만 상태를 다른 상태로 변환합니다. TensorImage의 일반적인 사용 사례는 먼저 Bitmap 이미지를 로드한 다음 ImageProcessor를 사용하여 처리하고 마지막으로 TensorBuffer의 기본 ByteBuffer를 가져와 TFLite 인터프리터에 제공하는 것입니다.

중요: 최상의 성능을 달성하기 위해 TensorImage는 가능한 경우 데이터 복사를 방지합니다. 따라서 데이터를 소유하지 않습니다. 호출자는 load(Bitmap) 또는 load(TensorBuffer, ColorSpaceType)에 전달되는 데이터 객체를 수정하면 안 됩니다.

중요: 모든 메서드가 스레드로부터 안전한 것으로 입증되지는 않습니다.

공개 생성자

TensorImage()
TensorImage 객체를 초기화합니다.
TensorImage(DataType dataType)
지정된 데이터 유형으로 TensorImage 객체를 초기화합니다.

공개 메서드

정적 TensorImage
createFrom(TensorImage src, DataType dataType)
원하는 데이터 유형을 사용하여 지정된 TensorImage의 깊은 사본을 만듭니다.
정적 TensorImage
fromBitmap(비트맵 비트맵)
Bitmap를 사용하여 DataType.UINT8TensorImage 객체를 초기화합니다 .
비트맵
getBitmap()
TensorImageBitmap 표현을 반환합니다.
ByteBuffer
getBuffer()
예상된 데이터 유형과 함께 이 TensorImageByteBuffer 표현을 반환합니다.
ColorSpaceType
getColorSpaceType()을 실행합니다.
TensorImage의 색상 공간 유형을 가져옵니다.
DataType
getDataType()
TensorImage의 데이터 유형을 가져옵니다.
int
getHeight()
이미지 높이를 가져옵니다.
이미지
getMediaImage()
TensorImageImage 표현을 반환합니다.
TensorBuffer
getTensorBuffer()
필요한 데이터 유형과 함께 이 TensorImageTensorBuffer 표현을 반환합니다.
int
getWidth()
이미지 너비를 가져옵니다.
void
load(TensorBuffer 버퍼, ColorSpaceType colorSpaceType)
특정 ColorSpaceType로 픽셀 값이 포함된 TensorBuffer를 로드합니다.
void
load(비트맵 비트맵)
TensorImageBitmap 이미지 객체를 로드합니다.
void
load(int[] pixel, int[] shape)
int 배열을 이 TensorImage에 RGB 픽셀로 로드하여 내부 픽셀을 나타냅니다.
void
load(float[] 픽셀, int[] 도형)
TensorImage에 부동 소수점 배열을 RGB 픽셀로 로드하여 내부 픽셀을 나타냅니다.
void
load(ByteBuffer buffer, ImageProperties imageProperties)
특정 ImageProperties로 픽셀 값이 포함된 ByteBuffer를 로드합니다.
void
load(TensorBuffer 버퍼, ImageProperties imageProperties)
특정 ImageProperties로 픽셀 값이 포함된 TensorBuffer를 로드합니다.
void
load(이미지 이미지)
TensorImageImage 객체를 로드합니다.

상속된 메서드

공개 생성자

public TensorImage ()

TensorImage 객체를 초기화합니다.

참고: 이 TensorImage의 데이터 유형은 DataType.UINT8입니다. 다른 데이터 유형을 선호하면 TensorImage(DataType)를 사용합니다.

public TensorImage (DataType dataType)

지정된 데이터 유형으로 TensorImage 객체를 초기화합니다.

TensorImage에서 TensorBuffer 또는 ByteBuffer를 가져올 때(예: getTensorBuffer()getBuffer() 사용) 데이터 값은 지정된 데이터 유형으로 변환됩니다.

참고: TensorImage의 모양은 고정되어 있지 않습니다. 이 TensorImage에 로드되는 이미지의 모양에 맞게 조정할 수 있습니다.

매개변수
dataType 결과 TensorBuffer의 예상 데이터 유형입니다. 유형은 TensorImage의 전체 기간 동안 항상 고정됩니다. 데이터 유형을 변환하려면 createFrom(TensorImage, DataType)를 사용하여 복사본을 만들고 데이터 유형을 동시에 변환합니다.
생성 값
IllegalArgumentException dataTypeDataType.UINT8DataType.FLOAT32도 아닌 경우

공개 메서드

public static TensorImage createFrom (TensorImage src, DataType dataType)

원하는 데이터 유형을 사용하여 지정된 TensorImage의 깊은 사본을 만듭니다.

매개변수
src 복사할 TensorImage
dataType 새로 만든 TensorImage의 예상 데이터 유형
반환 값
  • 데이터가 src에서 복사되고 데이터 유형이 dataTypeTensorImage

public static TensorImage fromBitmap (비트맵 비트맵)

public Bitmap getBitmap ()

TensorImageBitmap 표현을 반환합니다.

저장된 데이터가 uint8이 아닌 경우 숫자 변환 및 고정이 적용됩니다.

ALPHA_8 비트맵에서 픽셀을 가져오는 안정적인 방법은 copyPixelsToBuffer를 사용하는 것입니다. `setPixels()` 및 `getPixels` 와 같은 비트맵 메서드가 작동하지 않습니다.

중요: 참조일 뿐입니다. 수정하지 마세요. 성능상의 이유로 여기에 사본을 만들지는 않지만 수정이 필요하면 사본을 만드세요.

반환 값
생성 값
IllegalStateException TensorImage가 데이터를 로드하지 않는 경우

공개 ByteBuffer getBuffer ()

예상된 데이터 유형과 함께 이 TensorImageByteBuffer 표현을 반환합니다.

저장된 데이터가 TensorImage의 데이터 유형과 다른 경우 숫자 변환 및 고정이 적용됩니다.

중요: 참조일 뿐입니다. 수정하지 마세요. 성능상의 이유로 여기에 사본을 만들지는 않지만 수정이 필요하면 사본을 만드세요.

기본적으로 getTensorBuffer().getBuffer()의 지름길입니다.

반환 값
  • 이미지 데이터를 보유하는 ByteBuffer에 대한 참조
생성 값
IllegalStateException TensorImage가 데이터를 로드하지 않는 경우

공개 ColorSpaceType getColorSpaceType ()

TensorImage의 색상 공간 유형을 가져옵니다.

생성 값
IllegalStateException TensorImage가 데이터를 로드하지 않는 경우

공개 DataType getDataType ()

TensorImage의 데이터 유형을 가져옵니다.

반환 값

public int getHeight ()

이미지 높이를 가져옵니다.

생성 값
IllegalStateException TensorImage가 데이터를 로드하지 않는 경우
IllegalArgumentException 기본 데이터가 손상된 경우

공개 이미지 getMediaImage ()

TensorImageImage 표현을 반환합니다.

이 메서드는 TensorImageImage에서 지원되는 경우에만 작동합니다. 즉, 먼저 load(Image)를 통해 Image를 로드해야 합니다.

중요: 참조일 뿐입니다. 수정하지 마세요. 성능상의 이유로 여기에 사본을 만들지는 않지만 수정이 필요하면 사본을 만드세요.

반환 값
생성 값
IllegalStateException TensorImage가 데이터를 로드하지 않는 경우

public TensorBuffer getTensorBuffer ()

필요한 데이터 유형과 함께 이 TensorImageTensorBuffer 표현을 반환합니다.

저장된 데이터가 TensorImage의 데이터 유형과 다른 경우 숫자 변환 및 고정이 적용됩니다.

중요: 참조일 뿐입니다. 수정하지 마세요. 성능상의 이유로 여기에 사본을 만들지는 않지만 수정이 필요하면 사본을 만드세요.

반환 값
  • 이미지 데이터를 보유하는 TensorBuffer에 대한 참조
생성 값
IllegalStateException TensorImage가 데이터를 로드하지 않는 경우

public int getWidth ()

이미지 너비를 가져옵니다.

생성 값
IllegalStateException TensorImage가 데이터를 로드하지 않는 경우
IllegalArgumentException 기본 데이터가 손상된 경우

public void 로드 (TensorBuffer 버퍼, ColorSpaceType colorSpaceType)

특정 ColorSpaceType로 픽셀 값이 포함된 TensorBuffer를 로드합니다.

ColorSpaceType.RGBColorSpaceType.GRAYSCALE만 지원합니다. 다른 색상 공간 유형에는 load(TensorBuffer, ImageProperties)를 사용합니다.

참고: buffer의 데이터 유형이 이 TensorImage의 데이터 유형과 일치하지 않으면 getTensorBuffer()getBuffer()를 호출할 때 숫자 변환 및 고정이 적용됩니다.

매개변수
buffer 로드할 TensorBuffer입니다. 모양은 RGB 이미지의 경우 (h, w, 3) 또는 (1, h, w, 3), GRAYSCALE 이미지의 경우 (h, w) 또는 (1, h, w)여야 합니다.
colorSpaceType
생성 값
IllegalArgumentException 버퍼의 모양이 색 공간 유형과 일치하지 않거나 색 공간 유형이 지원되지 않는 경우

public void 로드 (비트맵 비트맵)

TensorImageBitmap 이미지 객체를 로드합니다.

참고: TensorImageDataType.UINT8 이외의 데이터 유형이 있는 경우 getTensorBuffer()getBuffer()를 호출할 때 숫자 변환 및 고정이 적용됩니다. 여기서 BitmapTensorBuffer로 변환됩니다.

중요: 비트맵을 로드할 때 더 이상 호출자 측에서 비트맵을 수정하지 마세요. TensorImage 객체는 비트맵을 사용합니다. 그러면 비트맵도 수정될 것입니다. 이 메서드에서는 단순히 참조를 보유하기만 하면 비트맵에 관해 제로 카피 방식을 실행합니다. 필요한 경우 bitmap.copy(bitmap.getConfig(), true)를 사용하여 사본을 만듭니다.

참고: 최상의 성능을 얻으려면 메모리 재할당을 방지하기 위해 같은 형태로 이미지를 로드하세요.

매개변수
비트맵
생성 값
IllegalArgumentException bitmap가 ARGB_8888에 없는 경우

public void load (int[] pixel, int[] shape)

int 배열을 이 TensorImage에 RGB 픽셀로 로드하여 내부 픽셀을 나타냅니다.

참고: getTensorBuffer()getBuffer()를 호출할 때 값을 이 TensorImage의 데이터 유형으로 변환하기 위해 숫자 변환 및 고정이 적용됩니다.

매개변수
픽셀 이미지를 나타내는 RGB 픽셀
shape 이미지의 모양으로 (h, w, 3) 형태이거나 (1, h, w, 3) 형식이어야 합니다.
생성 값
IllegalArgumentException 도형이 (h, w, 3)도 아니고 (1, h, w, 3)도 아닌 경우

public void load (float[] pixel, int[] shape)

TensorImage에 부동 소수점 배열을 RGB 픽셀로 로드하여 내부 픽셀을 나타냅니다.

참고: TensorImage의 데이터 유형이 DataType.FLOAT32가 아닌 경우 getTensorBuffer()getBuffer()를 호출할 때 숫자 변환 및 고정이 적용됩니다.

매개변수
픽셀 이미지를 나타내는 RGB 픽셀
shape 이미지의 모양으로 (h, w, 3) 형태이거나 (1, h, w, 3) 형식이어야 합니다.
생성 값
IllegalArgumentException 도형이 (h, w, 3)도 아니고 (1, h, w, 3)도 아닌 경우

public void load (ByteBuffer buffer, ImageProperties imageProperties)

특정 ImageProperties로 픽셀 값이 포함된 ByteBuffer를 로드합니다.

참고: buffer의 데이터 유형이 이 TensorImage의 데이터 유형과 일치하지 않으면 getTensorBuffer()getBuffer()를 호출할 때 숫자 변환 및 고정이 적용됩니다.

매개변수
buffer
imageProperties
생성 값
IllegalArgumentException 버퍼 크기가 ImageProperties의 이미지 높이, 너비, 색상 공간 유형으로 표시된 이미지 크기보다 작은 경우

public void load (TensorBuffer 버퍼, ImageProperties imageProperties)

특정 ImageProperties로 픽셀 값이 포함된 TensorBuffer를 로드합니다.

TensorBuffer의 모양은 이미지 높이와 너비를 결정하는 데 사용되지 않습니다. ImageProperties를 통해 이미지 속성을 설정합니다.

참고: buffer의 데이터 유형이 이 TensorImage의 데이터 유형과 일치하지 않으면 getTensorBuffer()getBuffer()를 호출할 때 숫자 변환 및 고정이 적용됩니다.

매개변수
buffer
imageProperties
생성 값
IllegalArgumentException 버퍼 크기가 ImageProperties의 이미지 높이, 너비, 색상 공간 유형으로 표시된 이미지 크기보다 작은 경우

public void 로드 (이미지 이미지)

TensorImageImage 객체를 로드합니다.

이 메서드의 주요 용도는 Image 객체를 https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview에 모델 입력으로 로드하는 것입니다. Image에서 지원하는 TensorImage은(는) ImageProcessor에서 지원되지 않습니다.

* imageImageFormat가 YUV_420_888이 아닌 경우 @IllegalArgumentException이 발생합니다.

매개변수
이미지