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 o seed2 sono impostati su un valore diverso da zero, il generatore di numeri casuali viene seminato dal seed 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 a tf.slice .
  • Dimensioni Output : 1-D, contenente [target_height, target_width, -1] . Fornire come input a tf.slice .
  • Bbox Output : 3-D con forma [1, 1, 4] contenente il riquadro di delimitazione distorto. Fornire 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 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
)