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 | |
| 정적 TensorImage |
fromBitmap(비트맵 비트맵)
|
| 비트맵 |
getBitmap()
이
TensorImage의 Bitmap 표현을 반환합니다. |
| ByteBuffer |
getBuffer()
예상된 데이터 유형과 함께 이
TensorImage의 ByteBuffer 표현을 반환합니다. |
| ColorSpaceType |
getColorSpaceType()을 실행합니다.
이
TensorImage의 색상 공간 유형을 가져옵니다. |
| DataType |
getDataType()
이
TensorImage의 데이터 유형을 가져옵니다. |
| int |
getHeight()
이미지 높이를 가져옵니다.
|
| 이미지 |
getMediaImage()
이
TensorImage의 Image 표현을 반환합니다. |
| TensorBuffer |
getTensorBuffer()
필요한 데이터 유형과 함께 이
TensorImage의 TensorBuffer 표현을 반환합니다. |
| int |
getWidth()
이미지 너비를 가져옵니다.
|
| void |
load(TensorBuffer 버퍼, ColorSpaceType colorSpaceType)
특정
ColorSpaceType로 픽셀 값이 포함된 TensorBuffer를 로드합니다. |
| void |
load(비트맵 비트맵)
이
TensorImage에 Bitmap 이미지 객체를 로드합니다. |
| 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(이미지 이미지)
이
TensorImage에 Image 객체를 로드합니다. |
상속된 메서드
공개 생성자
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 | dataType가 DataType.UINT8도 DataType.FLOAT32도 아닌 경우
|
|---|
공개 메서드
public static TensorImage createFrom (TensorImage src, DataType dataType)
원하는 데이터 유형을 사용하여 지정된 TensorImage의 깊은 사본을 만듭니다.
매개변수
| src | 복사할 TensorImage |
|---|---|
| dataType | 새로 만든 TensorImage의 예상 데이터 유형 |
반환 값
- 데이터가
src에서 복사되고 데이터 유형이dataType인TensorImage
public static TensorImage fromBitmap (비트맵 비트맵)
public Bitmap getBitmap ()
이 TensorImage의 Bitmap 표현을 반환합니다.
저장된 데이터가 uint8이 아닌 경우 숫자 변환 및 고정이 적용됩니다.
ALPHA_8 비트맵에서 픽셀을 가져오는 안정적인 방법은 copyPixelsToBuffer를 사용하는 것입니다. `setPixels()` 및 `getPixels` 와 같은 비트맵 메서드가 작동하지 않습니다.
중요: 참조일 뿐입니다. 수정하지 마세요. 성능상의 이유로 여기에 사본을 만들지는 않지만 수정이 필요하면 사본을 만드세요.
반환 값
- 이
TensorBuffer의ColorSpaceType에 따라ARGB_8888구성 ('A' 채널은 항상 불투명함) 또는ALPHA_8의Bitmap참조
생성 값
| IllegalStateException | TensorImage가 데이터를 로드하지 않는 경우
|
|---|
공개 ByteBuffer getBuffer ()
예상된 데이터 유형과 함께 이 TensorImage의 ByteBuffer 표현을 반환합니다.
저장된 데이터가 TensorImage의 데이터 유형과 다른 경우 숫자 변환 및 고정이 적용됩니다.
중요: 참조일 뿐입니다. 수정하지 마세요. 성능상의 이유로 여기에 사본을 만들지는 않지만 수정이 필요하면 사본을 만드세요.
기본적으로 getTensorBuffer().getBuffer()의 지름길입니다.
반환 값
- 이미지 데이터를 보유하는
ByteBuffer에 대한 참조
생성 값
| IllegalStateException | TensorImage가 데이터를 로드하지 않는 경우
|
|---|
공개 ColorSpaceType getColorSpaceType ()
이 TensorImage의 색상 공간 유형을 가져옵니다.
생성 값
| IllegalStateException | TensorImage가 데이터를 로드하지 않는 경우
|
|---|
공개 DataType getDataType ()
이 TensorImage의 데이터 유형을 가져옵니다.
반환 값
- 데이터 유형을 의미합니다 현재는
DataType.UINT8및DataType.FLOAT32만 지원됩니다.
public int getHeight ()
이미지 높이를 가져옵니다.
생성 값
| IllegalStateException | TensorImage가 데이터를 로드하지 않는 경우 |
|---|---|
| IllegalArgumentException | 기본 데이터가 손상된 경우 |
공개 이미지 getMediaImage ()
이 TensorImage의 Image 표현을 반환합니다.
이 메서드는 TensorImage가 Image에서 지원되는 경우에만 작동합니다. 즉, 먼저 load(Image)를 통해 Image를 로드해야 합니다.
중요: 참조일 뿐입니다. 수정하지 마세요. 성능상의 이유로 여기에 사본을 만들지는 않지만 수정이 필요하면 사본을 만드세요.
반환 값
- 이
TensorBuffer의ColorSpaceType에 따라ARGB_8888구성 ('A' 채널은 항상 불투명함) 또는ALPHA_8의Bitmap참조
생성 값
| IllegalStateException | TensorImage가 데이터를 로드하지 않는 경우
|
|---|
public TensorBuffer getTensorBuffer ()
필요한 데이터 유형과 함께 이 TensorImage의 TensorBuffer 표현을 반환합니다.
저장된 데이터가 TensorImage의 데이터 유형과 다른 경우 숫자 변환 및 고정이 적용됩니다.
중요: 참조일 뿐입니다. 수정하지 마세요. 성능상의 이유로 여기에 사본을 만들지는 않지만 수정이 필요하면 사본을 만드세요.
반환 값
- 이미지 데이터를 보유하는
TensorBuffer에 대한 참조
생성 값
| IllegalStateException | TensorImage가 데이터를 로드하지 않는 경우
|
|---|
public int getWidth ()
이미지 너비를 가져옵니다.
생성 값
| IllegalStateException | TensorImage가 데이터를 로드하지 않는 경우 |
|---|---|
| IllegalArgumentException | 기본 데이터가 손상된 경우 |
public void 로드 (TensorBuffer 버퍼, ColorSpaceType colorSpaceType)
특정 ColorSpaceType로 픽셀 값이 포함된 TensorBuffer를 로드합니다.
ColorSpaceType.RGB 및 ColorSpaceType.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 로드 (비트맵 비트맵)
이 TensorImage에 Bitmap 이미지 객체를 로드합니다.
참고: TensorImage에 DataType.UINT8 이외의 데이터 유형이 있는 경우 getTensorBuffer() 및 getBuffer()를 호출할 때 숫자 변환 및 고정이 적용됩니다. 여기서 Bitmap는 TensorBuffer로 변환됩니다.
중요: 비트맵을 로드할 때 더 이상 호출자 측에서 비트맵을 수정하지 마세요. 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 로드 (이미지 이미지)
이 TensorImage에 Image 객체를 로드합니다.
이 메서드의 주요 용도는 Image 객체를 https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview에 모델 입력으로 로드하는 것입니다.
Image에서 지원하는 TensorImage은(는) ImageProcessor에서 지원되지 않습니다.
* image의 ImageFormat가 YUV_420_888이 아닌 경우 @IllegalArgumentException이 발생합니다.
매개변수
| 이미지 |
|---|