画像に対してランダムに歪んだ境界ボックスを決定論的に生成します。
多くの場合、境界ボックスの注釈は、画像認識タスクやオブジェクト位置特定タスクでグラウンドトゥルース ラベルに加えて提供されます。このようなシステムをトレーニングするための一般的な手法は、コンテンツを維持しながら画像をランダムに歪ませる、つまりデータ拡張です。この Op は、同じ `seed` を与えられ、`image_size`、`bounding_boxes` および一連の制約を与えられたオブジェクト、つまりバウンディング ボックスのランダムに歪んだ位置を決定的に出力します。
この Op の出力は、元の画像をトリミングするために使用できる単一の境界ボックスです。出力は、`begin`、`size`、および `bboxes` の 3 つのテンソルとして返されます。最初の 2 つのテンソルをtf.slice
に直接入力して画像をトリミングできます。後者は、境界ボックスがどのように見えるかを視覚化するためにtf.image.draw_bounding_boxes
に指定できます。
境界ボックスは `[y_min, x_min, y_max, x_max]` として指定され、返されます。境界ボックスの座標は、下にある画像の幅と高さを基準とした `[0.0, 1.0]` の浮動小数点数です。
この Op の出力は、同じ `seed` が与えられた場合には同じであることが保証されており、関数の呼び出し回数やグローバル シード設定 (例: tf.random.set_seed
) には依存しません。
使用例:
>>> image = np.array([[[1], [2], [3]], [[4], [5], [6]], [[7], [8], [9] ]]) >>> bbox = tf.constant( ... [0.0, 0.0, 1.0, 1.0], dtype=tf.float32,shape=[1, 1, 4]) >>> シード = (1, 2) ) >>> # 単一の歪んだ境界ボックスを生成します。 >>> bbox_begin, bbox_size, bbox_draw = ( ... tf.image.stateless_sample_distorted_bounding_box( ... tf.shape(image),bounding_boxes=bbox, seed=seed)) >>> # バウンディングボックスを使用して画像を歪ませる。 >>> tf.slice(image, bbox_begin, bbox_size) 境界ボックス情報が利用できない場合、「use_image_if_no_bounding_boxes = true」を設定すると、画像全体をカバーする単一の暗黙的な境界ボックスがあると想定されることに注意してください。 `use_image_if_no_bounding_boxes` が false で、境界ボックスが指定されていない場合、エラーが発生します。
ネストされたクラス
クラス | StatelessSampleDistortedBoundingBox.Options | StatelessSampleDistortedBoundingBox のオプションの属性 |
パブリックメソッド
静的StatelessSampleDistortedBoundingBox.Options | areaRange (List<Float> areaRange) |
静的StatelessSampleDistortedBoundingBox.Options | アスペクト比範囲(List<Float> アスペクト比範囲) |
出力<浮動小数点> | bbox () 歪んだ境界ボックスを含む形状 `[1, 1, 4]` の 3-D。 |
出力<T> | 始める() 1-D、`[offset_height, offset_width, 0]` を含みます。 |
static <T extends Number, U extends Number> StatelessSampleDistortedBoundingBox <T> | |
静的StatelessSampleDistortedBoundingBox.Options | maxAttempts (長い maxAttempts) |
出力<T> | サイズ() 1-D、`[target_height, target_width, -1]` を含みます。 |
静的StatelessSampleDistortedBoundingBox.Options | useImageIfNoBoundingBoxes (ブール型 useImageIfNoBoundingBoxes) |
継承されたメソッド
パブリックメソッド
public static StatelessSampleDistortedBoundingBox.Options areaRange (List<Float> areaRange)
パラメーター
エリア範囲 | 画像のトリミングされた領域には、この範囲内の指定された画像の一部が含まれている必要があります。 |
---|
public static StatelessSampleDistortedBoundingBox.Options のアスペクト比範囲(List<Float> アスペクト比範囲)
パラメーター
アスペクト比範囲 | 画像のトリミングされた領域のアスペクト比 = 幅 / 高さがこの範囲内である必要があります。 |
---|
public Output <Float> bboxes ()
歪んだ境界ボックスを含む形状 `[1, 1, 4]` の 3-D。 tf.image.draw_bounding_boxes
への入力として提供します。
public static StatelessSampleDistortedBoundingBox <T> create (スコープscope、オペランド<T>imageSize、オペランド<Float>boundingBoxes、オペランド<Float>minObjectCovered、オペランド<U>シード、オプション...オプション)
新しい StatelessSampleDistortedBoundingBox オペレーションをラップするクラスを作成するファクトリ メソッド。
パラメーター
範囲 | 現在のスコープ |
---|---|
画像サイズ | 1-D、`[高さ、幅、チャネル]` を含みます。 |
境界ボックス | 画像に関連付けられた N 個の境界ボックスを表す形状 `[batch, N, 4]` を持つ 3-D。 |
minObjectCovered | 画像のトリミングされた領域には、指定された境界ボックスの少なくともこの部分が含まれている必要があります。このパラメータの値は負ではない必要があります。 0 の場合、トリミングされた領域は、指定された境界ボックスのいずれとも重なる必要はありません。 |
シード | 形状 `[2]` の 1-D。乱数発生器のシード。 dtype `int32` または `int64` が必要です。 (XLA を使用する場合、`int32` のみが許可されます。) |
オプション | オプションの属性値を持ちます |
戻り値
- StatelessSampleDistortedBoundingBox の新しいインスタンス
public static StatelessSampleDistortedBoundingBox.Options maxAttempts (Long maxAttempts)
パラメーター
最大試行数 | 指定された制約のイメージのトリミングされた領域の生成を試行する回数。 `max_attempts` が失敗した後、画像全体を返します。 |
---|
public static StatelessSampleDistortedBoundingBox.Options useImageIfNoBoundingBoxes (ブール型 useImageIfNoBoundingBoxes)
パラメーター
useImageIfNoBoundingBoxes | 境界ボックスが指定されていない場合の動作を制御します。 true の場合、入力全体をカバーする暗黙的な境界ボックスがあると見なされます。 false の場合、エラーが発生します。 |
---|