tensoreflusso:: ops:: Esempio DistortedBoundingBox
#include <image_ops.h>
Genera un singolo riquadro di delimitazione distorto in modo casuale per un'immagine.
Riepilogo
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 . Questa operazione produce una localizzazione distorta in modo casuale di un oggetto, ovvero un riquadro di delimitazione, 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 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.
Per esempio,
# Generate a single distorted bounding box. begin, size, bbox_for_draw = tf.image.sample_distorted_bounding_box( tf.shape(image), bounding_boxes=bounding_boxes)
# Draw the bounding box in an image summary. image_with_box = tf.image.draw_bounding_boxes(tf.expand_dims(image, 0), bbox_for_draw) tf.summary.image('images_with_box', image_with_box)
# Employ the bounding box to distort the image. distorted_image = tf.slice(image, begin, 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.
Argomenti:
- scope: un oggetto Scope
- image_size: 1-D, contenente
[height, width, channels]
. - bounding_boxes: 3-D con forma
[batch, N, 4]
che descrive gli N riquadri di delimitazione associati all'immagine.
Attributi facoltativi (vedi Attrs
):
- seed: se
seed
oseed2
sono impostati su un valore diverso da zero, il generatore di numeri casuali viene seminato dalseed
specificato. Altrimenti, viene seminato da un seme casuale. - seed2: un secondo seme per evitare la collisione del seme.
- min_object_covered: 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.
- spect_ratio_range: l'area ritagliata dell'immagine deve avere proporzioni = larghezza/altezza comprese in questo intervallo.
- area_range: l'area ritagliata dell'immagine deve contenere una frazione dell'immagine fornita all'interno di questo intervallo.
- max_attempts: numero di tentativi di generare una regione ritagliata dell'immagine dei vincoli specificati. Dopo gli errori
max_attempts
, restituisce l'intera immagine. - use_image_if_no_bounding_boxes: controlla il comportamento se non viene fornito alcun riquadro di delimitazione. Se vero, presupponi un riquadro di delimitazione implicito che copra l'intero input. Se falso, genera un errore.
Resi:
- Inizio
Output
: 1-D, contenente[offset_height, offset_width, 0]
. Fornire come input atf.slice
. - Dimensioni
Output
: 1-D, contenente[target_height, target_width, -1]
. Fornire come input atf.slice
. - Bbox
Output
: 3-D con forma[1, 1, 4]
contenente il riquadro di delimitazione distorto. Fornire come input atf.image.draw_bounding_boxes
.
Costruttori e distruttori | |
---|---|
SampleDistortedBoundingBox (const :: tensorflow::Scope & scope, :: tensorflow::Input image_size, :: tensorflow::Input bounding_boxes) | |
SampleDistortedBoundingBox (const :: tensorflow::Scope & scope, :: tensorflow::Input image_size, :: tensorflow::Input bounding_boxes, const SampleDistortedBoundingBox::Attrs & attrs) |
Attributi pubblici | |
---|---|
bboxes | |
begin | |
operation | |
size |
Funzioni pubbliche statiche | |
---|---|
AreaRange (const gtl::ArraySlice< float > & x) | |
AspectRatioRange (const gtl::ArraySlice< float > & x) | |
MaxAttempts (int64 x) | |
MinObjectCovered (float x) | |
Seed (int64 x) | |
Seed2 (int64 x) | |
UseImageIfNoBoundingBoxes (bool x) |
Strutture | |
---|---|
tensorflow:: ops:: SampleDistortedBoundingBox:: Attrs | Setter di attributi facoltativi per SampleDistortedBoundingBox . |
Attributi pubblici
bbox
::tensorflow::Output bboxes
inizio
::tensorflow::Output begin
operazione
Operation operation
misurare
::tensorflow::Output size
Funzioni pubbliche
Esempio DistortedBoundingBox
SampleDistortedBoundingBox( const ::tensorflow::Scope & scope, ::tensorflow::Input image_size, ::tensorflow::Input bounding_boxes )
Esempio DistortedBoundingBox
SampleDistortedBoundingBox( const ::tensorflow::Scope & scope, ::tensorflow::Input image_size, ::tensorflow::Input bounding_boxes, const SampleDistortedBoundingBox::Attrs & attrs )
Funzioni pubbliche statiche
AreaRange
Attrs AreaRange( const gtl::ArraySlice< float > & x )
Intervallo proporzioni
Attrs AspectRatioRange( const gtl::ArraySlice< float > & x )
Tentativi massimi
Attrs MaxAttempts( int64 x )
MinObjectCovered
Attrs MinObjectCovered( float x )
Seme
Attrs Seed( int64 x )
Seme2
Attrs Seed2( int64 x )
UsaImageIfNoBoundingBoxes
Attrs UseImageIfNoBoundingBoxes( bool x )