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 "seme", produce in modo deterministico una localizzazione distorta in modo casuale di un oggetto, ovvero un riquadro di delimitazione, data una "dimensione_immagine", "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 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 essere lo stesso dato lo stesso `seed` ed è indipendente dal numero di volte in cui viene chiamata la funzione 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 |
Costanti
Corda | OP_NAME | Il nome di questa operazione, come noto al motore principale di TensorFlow |
Metodi pubblici
statico StatelessSampleDistortedBoundingBox.Options | areaRange (Lista<Float> areaRange) |
statico StatelessSampleDistortedBoundingBox.Options | aspettoRatioRange (Lista<Float> aspettoRatioRange) |
Uscita < TFloat32 > | 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 TNumber > 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
Costanti
Stringa finale statica pubblica OP_NAME
Il nome di questa operazione, come noto al motore principale di TensorFlow
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 < TFloat32 > bboxes ()
3D con forma "[1, 1, 4]" contenente il riquadro di delimitazione distorto. Fornire come input a tf.image.draw_bounding_boxes
.
Uscita pubblica <T> inizio ()
1-D, contenente "[offset_height, offset_width, 0]". Fornire come input a tf.slice
.
public static StatelessSampleDistortedBoundingBox <T> create ( Scope scope, Operando <T> imageSize, Operando < TFloat32 > boundingBoxes, Operando < TFloat32 > minObjectCovered, Operando <? extends TNumber > 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]". Fornire 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. |
---|