TensorImage

パブリック クラス TensorImage

TensorImage は、Image オブジェクトのラッパークラスです。TFLite.support ライブラリの画像処理ユーティリティを使用する場合、最初にバリアント型の画像オブジェクトを TensorImage に変換するのが一般的です。

現時点では RGB 画像のみがサポートされ、A チャンネルは常に無視されます。

データ ストレージの詳細: TensorImage オブジェクトには、Bitmap または TensorBuffer という 2 つの信頼できる情報源が存在する場合があります。TensorImage は状態を維持し、必要な場合にのみ一方を他方に変換します。TensorImage の一般的な使用例は、最初に Bitmap 画像を読み込み、ImageProcessor を使用して処理し、最後に TensorBuffer の基盤となる ByteBuffer を取得して TFLite インタープリタにフィードすることです。

重要: 最高のパフォーマンスを実現するため、TensorImage では可能な限りデータのコピーを回避します。データを所有していません。呼び出し元は、load(Bitmap) または load(TensorBuffer, ColorSpaceType) に渡されるデータ オブジェクトを変更しないでください。

重要: すべてのメソッドがスレッドセーフであるとは証明されていません。

パブリック コンストラクタ

TensorImage()
TensorImage オブジェクトを初期化します。
TensorImageDataType dataType)
指定されたデータ型で TensorImage オブジェクトを初期化します。

パブリック メソッド

static TensorImage
createFromTensorImage src、DataType dataType)
目的のデータ型で指定された TensorImage のディープコピーを作成します。
static TensorImage
fromBitmap(ビットマップ ビットマップ)
BitmapDataType.UINT8TensorImage オブジェクトを初期化します。
ビットマップ
getBitmap()
この TensorImageBitmap 表現を返します。
ByteBuffer
getBuffer()
想定されるデータ型でこの TensorImageByteBuffer 表現を返します。
ColorSpaceType
getColorSpaceType()
この TensorImage の色空間タイプを取得します。
DataType
getDataType()
この TensorImage のデータ型を取得します。
整数
getHeight()
画像の高さを取得します。
画像
getMediaImage()
この TensorImageImage 表現を返します。
TensorBuffer
getTensorBuffer()
想定されるデータ型を含むこの TensorImageTensorBuffer 表現を返します。
整数
getWidth()
画像の幅を取得します。
void
loadTensorBuffer バッファ、ColorSpaceType colorSpaceType)
特定の ColorSpaceType でピクセル値を含む TensorBuffer を読み込みます。
void
load(ビットマップ ビットマップ)
Bitmap 画像オブジェクトをこの TensorImage に読み込みます。
void
load(int[] ピクセル, int[] shape)
内部のピクセルを表す int 配列を RGB ピクセルとしてこの TensorImage に読み込みます。
void
load(float[] pixel, int[] shape)
内部のピクセルを表す浮動小数点配列を RGB ピクセルとしてこの TensorImage に読み込みます。
void
loadByteBuffer バッファ、ImageProperties imageProperties)
特定の ImageProperties でピクセル値を含む ByteBuffer を読み込みます。
void
loadTensorBuffer バッファ、ImageProperties imageProperties)
特定の ImageProperties でピクセル値を含む TensorBuffer を読み込みます。
void
load(画像画像)
この TensorImageImage オブジェクトを読み込みます。

継承されるメソッド

パブリック コンストラクタ

public TensorImage ()

TensorImage オブジェクトを初期化します。

注: この TensorImage のデータ型は DataType.UINT8 です。他のデータ型が好まれる場合は、TensorImage(DataType) を使用します。

public TensorImage (DataType dataType)

指定されたデータ型で TensorImage オブジェクトを初期化します。

getTensorBuffer()getBuffer() を使用するなどして、この TensorImage から TensorBuffer または ByteBuffer を取得すると、データ値は指定されたデータ型に変換されます。

注: TensorImage の形状は固定されていません。この TensorImage に読み込まれる画像の形状に合わせて調整できます。

パラメータ
dataType 結果の TensorBuffer の想定されるデータ型。この型は、TensorImage の存続期間中は常に固定されます。データ型を変換するには、createFrom(TensorImage, DataType) を使用してコピーを作成し、データ型を変換します。
例外
IllegalArgumentException dataTypeDataType.UINT8 でも DataType.FLOAT32 でもない場合

パブリック メソッド

public static TensorImage createFrom (TensorImage src, DataType dataType)

目的のデータ型で指定された TensorImage のディープコピーを作成します。

パラメータ
src コピー元の TensorImage
dataType 新しく作成された TensorImage の想定されるデータ型
戻り値
  • データが src からコピーされ、データ型が dataTypeTensorImage

public static TensorImage fromBitmap (ビットマップ ビットマップ)

public ビットマップ getBitmap ()

この TensorImageBitmap 表現を返します。

保存されたデータが uint8 でない場合は、数値のキャストとクランプが適用されます。

ALPHA_8 ビットマップからピクセルを取得する信頼性の高い方法は、copyPixelsToBuffer を使用することです。「setPixels()」や「getPixels」などのビットマップ メソッドは動作しません。

重要: これは単なる参照です。変更しないでください。パフォーマンス上の理由からコピーは作成されませんが、変更が必要な場合はコピーを作成してください。

戻り値
  • この TensorBufferColorSpaceType に応じて、ARGB_8888 構成(「A」チャネルは常に不透明)または ALPHA_8 内の Bitmap への参照。
例外
IllegalStateException TensorImage がデータを読み込まない場合

public ByteBuffer getBuffer ()

想定されるデータ型を含むこの TensorImageByteBuffer 表現を返します。

保存されたデータが TensorImage のデータ型と異なる場合は、数値のキャストとクランプが適用されます。

重要: これは単なる参照です。変更しないでください。パフォーマンス上の理由からコピーは作成されませんが、変更が必要な場合はコピーを作成してください。

これは基本的に getTensorBuffer().getBuffer() のショートカットです。

戻り値
  • 画像データを保持する ByteBuffer への参照。
例外
IllegalStateException TensorImage がデータを読み込まない場合

public ColorSpaceType getColorSpaceType ()

この TensorImage の色空間タイプを取得します。

例外
IllegalStateException TensorImage がデータを読み込まない場合

public DataType getDataType ()

この TensorImage のデータ型を取得します。

戻り値

public int getHeight ()

画像の高さを取得します。

例外
IllegalStateException TensorImage がデータを読み込まない場合
IllegalArgumentException 基になるデータが破損している場合

public Image getMediaImage ()

この TensorImageImage 表現を返します。

このメソッドは、TensorImageImage を基盤としている場合にのみ機能します。つまり、最初に load(Image) を介して Image を読み込む必要があります。

重要: これは単なる参照です。変更しないでください。パフォーマンス上の理由からコピーは作成されませんが、変更が必要な場合はコピーを作成してください。

戻り値
  • この TensorBufferColorSpaceType に応じて、ARGB_8888 構成(「A」チャネルは常に不透明)または ALPHA_8 内の Bitmap への参照。
例外
IllegalStateException TensorImage がデータを読み込まない場合

public TensorBuffer getTensorBuffer ()

想定されるデータ型を含むこの TensorImageTensorBuffer 表現を返します。

保存されたデータが TensorImage のデータ型と異なる場合は、数値のキャストとクランプが適用されます。

重要: これは単なる参照です。変更しないでください。パフォーマンス上の理由からコピーは作成されませんが、変更が必要な場合はコピーを作成してください。

戻り値
例外
IllegalStateException TensorImage がデータを読み込まない場合

public int getWidth ()

画像の幅を取得します。

例外
IllegalStateException TensorImage がデータを読み込まない場合
IllegalArgumentException 基になるデータが破損している場合

public void load 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 load (ビットマップ ビットマップ)

Bitmap 画像オブジェクトをこの TensorImage に読み込みます。

注: TensorImage のデータ型が DataType.UINT8 以外の場合、getTensorBuffer()getBuffer() を呼び出すときに数値のキャストとクランプが適用され、BitmapTensorBuffer に変換されます。

重要: ビットマップを読み込むときは、呼び出し元側からビットマップを変更しないでください。TensorImage オブジェクトはビットマップに依存します。おそらくビットマップも変更されます。この方法では、単に参照を保持することで、そのビットマップに対してゼロコピー アプローチを実行します。必要に応じて、bitmap.copy(bitmap.getConfig(), true) を使用してコピーを作成します。

注: 最高のパフォーマンスを得るには、メモリの再割り当てを避けるため、同じ形状で画像を読み込んでください。

パラメータ
ビットマップ
例外
IllegalArgumentException bitmap が ARGB_8888 にない場合

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

内部のピクセルを表す int 配列を RGB ピクセルとしてこの TensorImage に読み込みます。

注: getTensorBuffer()getBuffer() を呼び出すときに、数値のキャストとクランプを適用して、値をこの TensorImage のデータ型に変換します。

パラメータ
ピクセル 画像を表す RGB ピクセル
シェイプ 画像の形状。形式は (h, w, 3) または (1, h, w, 3) のいずれかです。
例外
IllegalArgumentException 形状が (h, w, 3) でも (1, h, w, 3) でもない場合

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

内部のピクセルを表す浮動小数点配列を RGB ピクセルとしてこの TensorImage に読み込みます。

注: TensorImage のデータ型が DataType.FLOAT32 以外の場合、getTensorBuffer()getBuffer() を呼び出すときに数値のキャストとクランプが適用されます。

パラメータ
ピクセル 画像を表す RGB ピクセル
シェイプ 画像の形状。形式は (h, w, 3) または (1, h, w, 3) のいずれかです。
例外
IllegalArgumentException 形状が (h, w, 3) でも (1, h, w, 3) でもない場合

public void load ByteBuffer バッファ、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 load (画像画像)

Image オブジェクトをこの TensorImage に読み込みます。

このメソッドの主な用途は、Image オブジェクトをモデル入力として https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview に読み込むことです。Image に基づく TensorImage は、ImageProcessor ではサポートされていません。

* @imageImageFormat が YUV_420_888 でない場合、IllegalArgumentException をスローします。

パラメータ
イメージ