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) 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> | |
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. |
---|