Genera in modo deterministico un riquadro di delimitazione distorto in modo casuale per un'immagine.
Le annotazioni del riquadro di delimitazione vengono spesso fornite in aggiunta alle etichette vere e proprie nelle attività di riconoscimento delle immagini o di localizzazione degli oggetti. Una tecnica comune per addestrare un tale sistema è quella di distorcere casualmente un'immagine preservandone il contenuto, ovvero l'aumento dei dati . Questo Op, dato lo stesso `seed`, produce in modo deterministico una localizzazione distorta casualmente di un oggetto, ovvero un bounding box, data una `image_size`, `bounding_boxes` e una serie di vincoli.
L'output di questa operazione è 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 come appare il 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 essere lo stesso dato lo stesso `seed` ed è indipendente da quante volte la funzione viene chiamata e dalle impostazioni del seed globale (ad esempio `tf.random.set_seed`).
Utilizzo di esempio:
>>> immagine = np.array([[[1], [2], [3]], [[4], [5], [6]], [[7], [8], [9] ]]) >>> bbox = tf.costante( ... [0.0, 0.0, 1.0, 1.0], dtype=tf.float32, forma=[1, 1, 4]) >>> seme = (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)) >>> # Utilizza il riquadro di delimitazione per distorcere l'immagine . >>> tf.slice(immagine, bbox_begin, bbox_size) Tieni presente che se non sono disponibili informazioni sul riquadro di delimitazione, l'impostazione `use_image_if_no_bounding_boxes = true` presuppone che esista un singolo riquadro di delimitazione implicito che copre l'intera immagine. Se `use_image_if_no_bounding_boxes` è false e non vengono forniti riquadri di delimitazione, viene generato un errore.
Classi nidificate
classe | StatelessSampleDistortedBoundingBox.Options | Attributi facoltativi per StatelessSampleDistortedBoundingBox |
Metodi pubblici
statico StatelessSampleDistortedBoundingBox.Options | areaRange (Lista<Float> areaRange) |
statico StatelessSampleDistortedBoundingBox.Options | aspettoRatioRange (Lista<Float> aspettoRatioRange) |
Uscita <Mobile> | bbox () 3D 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 il numero, U estende il numero> StatelessSampleDistortedBoundingBox <T> | |
statico StatelessSampleDistortedBoundingBox.Options | maxAttempts (max tentativi lunghi) |
Uscita <T> | misurare () 1-D, contenente "[altezza_destinazione, larghezza_destinazione, -1]". |
statico StatelessSampleDistortedBoundingBox.Options | useImageIfNoBoundingBoxes (uso booleanoImageIfNoBoundingBoxes) |
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. |
---|
pubblico statico StatelessSampleDistortedBoundingBox.Options aspettoRatioRange (List<Float> aspettoRatioRange)
Parametri
aspettoRatioRange | L'area ritagliata dell'immagine deve avere proporzioni = larghezza/altezza comprese in questo intervallo. |
---|
output pubblico <Float> bboxes ()
3D con forma "[1, 1, 4]" contenente il riquadro di delimitazione distorto. Fornisci come input a `tf.image.draw_bounding_boxes`.
Uscita pubblica <T> inizio ()
1-D, contenente "[offset_height, offset_width, 0]". Fornisci come input a "tf.slice".
public static StatelessSampleDistortedBoundingBox <T> crea ( scope scope, Operando <T> imageSize, Operando <Float> boundingBoxes, Operando <Float> minObjectCovered, Operando <U> seed, Opzioni... 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 deve essere non negativo. Nel caso di 0, non è necessario che l'area ritagliata si sovrapponga a nessuno dei riquadri di delimitazione forniti. |
seme | 1-D con forma "[2]". Il seme del generatore di numeri casuali. Deve avere il 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
maxTentativi | Numero di tentativi di generazione di una regione ritagliata dell'immagine dei vincoli specificati. Dopo gli errori "max_attempts", restituisce l'intera immagine. |
---|
dimensione pubblica dell'output <T> ()
1-D, contenente "[altezza_destinazione, larghezza_destinazione, -1]". Fornisci come input a "tf.slice".
pubblico statico StatelessSampleDistortedBoundingBox.Options useImageIfNoBoundingBoxes (uso booleanoImageIfNoBoundingBoxes)
Parametri
useImageIfNoBoundingBoxes | Controlla il comportamento se non vengono forniti riquadri di delimitazione. Se vero, presupponi un riquadro di delimitazione implicito che copra l'intero input. Se falso, genera un errore. |
---|