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
seedoseed2sono impostati su un valore diverso da zero, il generatore di numeri casuali viene seminato dalseedspecificato. 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 )