StatelessSampleDistortedBoundingBox

public final class StatelessSampleDistortedBoundingBox

Genera un riquadro di delimitazione distorta in modo casuale per un'immagine in modo deterministico.

Le annotazioni del riquadro di delimitazione vengono spesso fornite in aggiunta alle etichette di verità fondamentale nel riconoscimento delle immagini o nelle attività di localizzazione degli oggetti. Una tecnica comune per addestrare un tale sistema consiste nel distorcere casualmente un'immagine preservandone il contenuto, ovvero l'aumento dei dati . Questa operazione, data la stessa "seed", produce in modo deterministico una localizzazione distorta in modo casuale di un oggetto, cioè il bounding box, data una "dimensione_immagine", "bounding_boxes" e una serie di vincoli.

L'output di questo Op è un singolo riquadro di delimitazione che può essere utilizzato per ritagliare l'immagine originale. L'output viene restituito come 3 tensori: `begin`,` size` e `bboxes`. I primi 2 tensori possono essere inseriti direttamente in `tf.slice` per ritagliare l'immagine. Quest'ultimo può essere fornito a `tf.image.draw_bounding_boxes` per visualizzare l'aspetto del riquadro di delimitazione.

I riquadri di delimitazione vengono forniti e restituiti come "[y_min, x_min, y_max, x_max]". Le coordinate del riquadro di delimitazione sono float in "[0.0, 1.0]" rispetto alla larghezza e all'altezza dell'immagine sottostante.

L'output di questo Op è garantito per essere lo stesso dato lo stesso `seed` ed è indipendente da quante volte viene chiamata la funzione, e indipendente dalle impostazioni seed globali (ad esempio` tf.random.set_seed`).

Utilizzo di esempio:

>>> immagine = 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]) >>> seed = (1, 2 ) >>> # Genera un singolo riquadro di delimitazione distorto. >>> bbox_begin, bbox_size, bbox_draw = (... tf.image.stateless_sample_distorted_bounding_box (... tf.shape (image), bounding_boxes = bbox, seed = seed)) >>> # Usa il bounding box per distorcere l'immagine . >>> tf.slice (immagine, bbox_begin, bbox_size) >>> # Disegna il riquadro di delimitazione in un riepilogo dell'immagine. >>> colori = np.array ([[1.0, 0.0, 0.0], [0.0, 0.0, 1.0]]) >>> tf.image.draw_bounding_boxes (... tf.expand_dims (tf.cast (image, tf .float32), 0), bbox_draw, colors)

Nota che se non sono disponibili informazioni sul riquadro di delimitazione, l'impostazione di `use_image_if_no_bounding_boxes = true` presupporrà che ci sia un singolo riquadro di delimitazione implicito che copre l'intera immagine. Se "use_image_if_no_bounding_boxes" è falso e non viene fornito alcun riquadro di delimitazione, viene sollevato un errore.

Classi annidate

classe StatelessSampleDistortedBoundingBox.Options Attributi facoltativi per StatelessSampleDistortedBoundingBox

Metodi pubblici

static StatelessSampleDistortedBoundingBox.Options
areaRange (List <Float> areaRange)
static StatelessSampleDistortedBoundingBox.Options
aspectRatioRange (List <Float> aspectRatioRange)
Uscita <Float>
bboxes ()
3-D con forma "[1, 1, 4]" contenente il riquadro di delimitazione distorto.
Uscita <T>
inizio ()
1-D, contenente "[offset_height, offset_width, 0]".
static <T estende Number, U extends Number> StatelessSampleDistortedBoundingBox <T>
create ( ambito ambito, operando <T> imageSize, operando <Float> boundingBoxes, operando <Float> minObjectCovered, operando <U> seed, opzioni ...
Metodo Factory per creare una classe che racchiude una nuova operazione StatelessSampleDistortedBoundingBox.
static StatelessSampleDistortedBoundingBox.Options
maxAttempts (Long maxAttempts)
Uscita <T>
dimensione ()
1-D, contenente "[target_height, target_width, -1]".
static StatelessSampleDistortedBoundingBox.Options
useImageIfNoBoundingBoxes (booleano useImageIfNoBoundingBoxes)

Metodi ereditati

Metodi pubblici

public static StatelessSampleDistortedBoundingBox.Options areaRange (List <Float> areaRange)

Parametri
areaRange L'area ritagliata dell'immagine deve contenere una frazione dell'immagine fornita all'interno di questo intervallo.

public static StatelessSampleDistortedBoundingBox.Options aspectRatioRange (List <Float> aspectRatioRange)

Parametri
aspectRatioRange L'area ritagliata dell'immagine deve avere un rapporto di aspetto = larghezza / altezza entro questo intervallo.

output pubblico <Float> bboxes ()

3-D con forma "[1, 1, 4]" contenente il riquadro di delimitazione distorto. Fornisci come input a `tf.image.draw_bounding_boxes`.

output pubblico <T> begin ()

1-D, contenente "[offset_height, offset_width, 0]". Fornisci come input a `tf.slice`.

public static StatelessSampleDistortedBoundingBox <T> create ( ambito ambito, operando <T> imageSize, operando <Float> boundingBoxes, operando <Float> minObjectCovered, operando <U> seed, opzioni ...

Metodo Factory per creare una classe che racchiude una nuova operazione StatelessSampleDistortedBoundingBox.

Parametri
scopo ambito attuale
dimensione dell'immagine 1-D, contenente "[altezza, larghezza, canali]".
boundingBoxes 3-D con forma "[batch, N, 4]" che descrive gli N riquadri di delimitazione associati all'immagine.
minObjectCovered L'area ritagliata dell'immagine deve contenere almeno questa frazione di qualsiasi riquadro di delimitazione fornito. Il valore di questo parametro dovrebbe essere non negativo. In caso di 0, non è necessario che l'area ritagliata si sovrapponga a nessuno dei rettangoli di delimitazione forniti.
seme 1-D con forma "[2]". Il seme del generatore di numeri casuali. Deve avere dtype "int32" o "int64". (Quando si utilizza XLA, è consentito solo "int32".)
opzioni trasporta valori di attributi opzionali
ritorna
  • una nuova istanza di StatelessSampleDistortedBoundingBox

public static StatelessSampleDistortedBoundingBox.Options maxAttempts (Long maxAttempts)

Parametri
maxAttempts Numero di tentativi di generazione di un'area ritagliata dell'immagine dei vincoli specificati. Dopo gli errori di "max_attempts", restituisce l'intera immagine.

public Output <T> size ()

1-D, contenente "[target_height, target_width, -1]". Fornisci come input a `tf.slice`.

public static StatelessSampleDistortedBoundingBox.Options useImageIfNoBoundingBoxes (Boolean useImageIfNoBoundingBoxes)

Parametri
useImageIfNoBoundingBoxes Controlla il comportamento se non viene fornito alcun riquadro di delimitazione. Se è vero, si supponga che un riquadro di delimitazione implicito copra l'intero input. Se falso, genera un errore.