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 ( DataTypeデータタイプ)
指定されたデータ型でTensorImageオブジェクトを初期化します。

パブリックメソッド

静的TensorImage
createFrom ( TensorImage src, DataType dataType)
指定されたTensorImageのディープコピーを、必要なデータ型で作成します。
静的TensorImage
fromBitmap (ビットマップ ビットマップ)
DataType.UINT8TensorImageオブジェクトをBitmapで初期化します。
ビットマップ
getBitmap ()
このTensorImageBitmap表現を返します。
バイトバッファ
getBuffer ()
期待されるデータ型を持つこのTensorImageByteBuffer表現を返します。
カラースペースタイプ
getColorSpaceType ()
このTensorImageの色空間タイプを取得します。
データ・タイプ
getDataType ()
このTensorImageのデータ型を取得します。
整数
getHeight ()
画像の高さを取得します。
画像
getメディアイメージ()
このTensorImageImage表現を返します。
テンソルバッファ
getTensorBuffer ()
期待されるデータ型を持つこのTensorImageTensorBuffer表現を返します。
整数
getWidth ()
画像の幅を取得します。
空所
ロード( TensorBufferバッファー、 ColorSpaceType colorSpaceType)
特定のColorSpaceTypeを持つピクセル値を含むTensorBufferを読み込みます。
空所
ロード(ビットマップ ビットマップ)
Bitmap画像オブジェクトをこのTensorImageにロードします。
空所
ロード(int[] ピクセル、int[] 形状)
int 配列を RGB ピクセルとしてこのTensorImageにロードし、内部のピクセルを表します。
空所
ロード(float[] ピクセル、int[] 形状)
float 配列を RGB ピクセルとしてこのTensorImageにロードし、内部のピクセルを表します。
空所
ロード( ByteBufferバッファー、 ImageProperties imageProperties)
特定のImagePropertiesを持つピクセル値を含むByteBufferをロードします。
空所
ロード( TensorBufferバッファー、 ImageProperties imageProperties)
特定のImagePropertiesを持つピクセル値を含むTensorBufferをロードします。
空所
ロード(イメージ画像)
ImageオブジェクトをこのTensorImageにロードします。

継承されたメソッド

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

パブリックTensorImage ()

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

注: このTensorImageのデータ型はDataType.UINT8です。他のデータ型が優先される場合は、 TensorImage(DataType)を使用してください。

public TensorImage ( DataType dataType)

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

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

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

パラメーター
データ・タイプ結果として得られるTensorBufferの予期されるデータ型。型はTensorImageの存続期間中常に固定されます。データ型を変換するには、 createFrom(TensorImage, DataType)を使用してコピーを作成し、同時にデータ型を変換します。
投げる
IllegalArgumentException dataTypeDataType.UINT8でもDataType.FLOAT32でもない場合

パブリックメソッド

public static TensorImage createFrom ( TensorImage src, DataType dataType)

指定されたTensorImageのディープコピーを、必要なデータ型で作成します。

パラメーター
送信元コピー元のTensorImage
データ・タイプ新しく作成されたTensorImageの予期されるデータ型
戻り値
  • データがsrcからコピーされ、データ型がdataTypeであるTensorImage

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

パブリック ビットマップ getBitmap ()

このTensorImageBitmap表現を返します。

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

ALPHA_8ビットマップからピクセルを取得する確実な方法は、 copyPixelsToBufferを使用することです。 `setPixels()` や `getPixels` などのビットマップ メソッドは機能しません。

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

戻り値
投げる
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基礎となるデータが破損している場合

パブリックイメージgetMediaImage ()

このTensorImageImage表現を返します。

このメソッドは、 TensorImageImageによってサポートされている場合にのみ機能します。つまり、最初にload(Image)を通じてImageをロードする必要があります。

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

戻り値
投げる
IllegalStateException TensorImageデータをロードしない場合

public TensorBuffer getTensorBuffer ()

期待されるデータ型を持つこのTensorImageTensorBuffer表現を返します。

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

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

戻り値
投げる
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()を呼び出すときに数値キャストとクランプが適用されます。

パラメーター
バッファロードされるTensorBuffer 。その形状は、RGB 画像の場合は (h, w, 3) または (1, h, w, 3) のいずれか、GRAYSCALE 画像の場合は (h, w) または (1, h, w) のいずれかでなければなりません。
カラースペースタイプ
投げる
IllegalArgumentExceptionバッファの形状が色空間タイプと一致しない場合、または色空間タイプがサポートされていない場合

public voidロード(ビットマップ ビットマップ)

Bitmap画像オブジェクトをこのTensorImageにロードします。

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

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

注: 最高のパフォーマンスを得るには、メモリの再割り当てを避けるために、同じ形状でイメージをロードしてください。

パラメーター
ビットマップ
投げる
IllegalArgumentException bitmapが ARGB_8888 にない場合

public voidロード(int[] ピクセル、int[] 形状)

int 配列を RGB ピクセルとしてこのTensorImageにロードし、内部のピクセルを表します。

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

パラメーター
ピクセル画像を表す RGB ピクセル
画像の形状は、形式 (h, w, 3) または形式 (1, h, w, 3) のいずれかである必要があります。
投げる
IllegalArgumentException形状が (h, w, 3) でも (1, h, w, 3) でもない場合

public voidロード(float[] ピクセル、int[] 形状)

float 配列を 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ロード( ByteBufferバッファー、 ImageProperties imageProperties)

特定のImagePropertiesを持つピクセル値を含むByteBufferをロードします。

注: bufferのデータ型がこのTensorImageのデータ型と一致しない場合、 getTensorBuffer()およびgetBuffer()を呼び出すときに数値キャストとクランプが適用されます。

パラメーター
バッファ
画像プロパティ
投げる
IllegalArgumentExceptionバッファ サイズが、 ImagePropertiesの画像の高さ、幅、色空間タイプで示される画像サイズより小さい場合

public voidロード( TensorBufferバッファー、 ImageProperties imageProperties)

特定のImagePropertiesを持つピクセル値を含むTensorBufferをロードします。

TensorBufferの形状は、画像の高さと幅を決定するために使用されません。 ImagePropertiesを通じて画像プロパティを設定します。

注: bufferのデータ型がこのTensorImageのデータ型と一致しない場合、 getTensorBuffer()およびgetBuffer()を呼び出すときに数値キャストとクランプが適用されます。

パラメーター
バッファ
画像プロパティ
投げる
IllegalArgumentExceptionバッファ サイズが、 ImagePropertiesの画像の高さ、幅、色空間タイプで示される画像サイズより小さい場合

public voidロード(イメージ画像)

ImageオブジェクトをこのTensorImageにロードします。

このメソッドの主な使用法は、 Imageオブジェクトをモデル入力としてhttps://www.tensorflow.org/lite/inference_with_metadata/task_library/overviewにロードすることです。 ImageによってサポートされるTensorImageImageProcessorではサポートされていません。

* imageImageFormat YUV_420_888 でない場合は @throws IllegalArgumentException

パラメーター
画像