tensorflow :: ops :: SampleDistortedBoundingBox

#include <image_ops.h>

Genera un unico riquadro di delimitazione distorta in modo casuale per un'immagine.

Sommario

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 . Questo Op produce una localizzazione distorta in modo casuale di un oggetto, cioè bounding box, dato un image_size , 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.

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)

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 use_image_if_no_bounding_boxes 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] descrive gli N bounding box associati all'immagine.

Attributi opzionali (vedi Attrs ):

  • seed: se seed o seed2 sono impostati su un valore diverso da zero, il generatore di numeri casuali viene sottoposto a seed dal seed . 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 dovrebbe essere non negativo. In caso di 0, non è necessario che l'area ritagliata si sovrapponga a nessuno dei rettangoli di delimitazione forniti.
  • aspect_ratio_range: l'area ritagliata dell'immagine deve avere un rapporto di aspetto = larghezza / altezza all'interno di 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 generazione di un'area ritagliata dell'immagine dei vincoli specificati. Dopo max_attempts fallimenti, restituisce l'intera immagine.
  • use_image_if_no_bounding_boxes: controlla il comportamento se non viene fornito alcun riquadro di delimitazione. Se vero, si assume un riquadro di delimitazione implicito che copra l'intero input. Se falso, genera un errore.

Ritorna:

  • Inizio Output : 1-D, contenente [offset_height, offset_width, 0] . Fornisci come input a tf.slice .
  • Dimensione Output : 1-D, contenente [target_height, target_width, -1] . Fornisci come input a tf.slice .
  • Bbox di Output : 3-D con forma [1, 1, 4] contenente il riquadro di delimitazione distorto. Fornisci come input a tf.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 statiche pubbliche

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)

Structs

tensorflow :: ops :: SampleDistortedBoundingBox :: Attrs

Setter di attributi facoltativi per SampleDistortedBoundingBox .

Attributi pubblici

bboxes

::tensorflow::Output bboxes

inizio

::tensorflow::Output begin

operazione

Operation operation

dimensione

::tensorflow::Output size

Funzioni pubbliche

SampleDistortedBoundingBox

 SampleDistortedBoundingBox(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input image_size,
  ::tensorflow::Input bounding_boxes
)

SampleDistortedBoundingBox

 SampleDistortedBoundingBox(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input image_size,
  ::tensorflow::Input bounding_boxes,
  const SampleDistortedBoundingBox::Attrs & attrs
)

Funzioni statiche pubbliche

AreaRange

Attrs AreaRange(
  const gtl::ArraySlice< float > & x
)

AspectRatioRange

Attrs AspectRatioRange(
  const gtl::ArraySlice< float > & x
)

MaxAttempts

Attrs MaxAttempts(
  int64 x
)

MinObjectCovered

Attrs MinObjectCovered(
  float x
)

Seme

Attrs Seed(
  int64 x
)

Seed2

Attrs Seed2(
  int64 x
)

UseImageIfNoBoundingBoxes

Attrs UseImageIfNoBoundingBoxes(
  bool x
)