tensorflow::ops::SampleDistortedBoundingBox

#include <image_ops.h>

Genera un singolo riquadro di delimitazione distorto in modo casuale per un'immagine.

Riepilogo

Le annotazioni dei riquadri di delimitazione vengono spesso fornite in aggiunta alle etichette di riferimento nei compiti di riconoscimento di immagini o localizzazione di oggetti. Una tecnica comune per addestrare un sistema di questo tipo consiste nel distorcere casualmente un'immagine preservandone il contenuto, ovvero tramite l'aumento dei dati . Questa operazione produce una localizzazione di un oggetto distorta in modo casuale, ovvero un riquadro di delimitazione, dati un 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 due tensori possono essere passati direttamente a tf.slice per ritagliare l'immagine. L'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 numeri in virgola mobile compresi tra [0.0, 1.0] relativi 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)

Si noti che se non sono disponibili informazioni sul riquadro di delimitazione, impostando use_image_if_no_bounding_boxes = true si presume che esista un singolo riquadro di delimitazione implicito che copre l'intera immagine. Se use_image_if_no_bounding_boxes è impostato su false e non vengono forniti riquadri di delimitazione, viene generato un errore.

Argomentazioni:

  • ambito: 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 opzionali (vedere Attrs ):

  • seed: Se seed o seed2 sono impostati su un valore diverso da zero, il generatore di numeri casuali viene inizializzato con il seed specificato. Altrimenti, viene inizializzato con un seed casuale.
  • seed2: Un secondo seme per evitare collisioni tra i semi.
  • 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, l'area ritagliata non deve sovrapporsi a nessuno dei riquadri di delimitazione forniti.
  • aspect_ratio_range: L'area ritagliata dell'immagine deve avere un rapporto d'aspetto pari a larghezza / altezza compreso 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 per generare una regione ritagliata dell'immagine secondo i vincoli specificati. Dopo max_attempts falliti, viene restituita l'immagine completa.
  • use_image_if_no_bounding_boxes: Controlla il comportamento se non vengono forniti riquadri di delimitazione. Se true, si assume un riquadro di delimitazione implicito che copre l'intero input. Se false, viene generato un errore.

Resi:

  • Inizio Output : 1-D, contenente [offset_height, offset_width, 0] . Fornire come input a tf.slice .
  • Dimensione Output : 1-D, contenente [target_height, target_width, -1] . Fornire come input a tf.slice .
  • Bbox Output : 3D con forma [1, 1, 4] contenente il bounding box 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 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)

Strutture

tensorflow::ops::SampleDistortedBoundingBox::Attrs

Impostatori di attributi opzionali per SampleDistortedBoundingBox .

attributi pubblici

caselle di posta

::tensorflow::Output bboxes

inizio

::tensorflow::Output begin

operazione

Operation operation

misurare

::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
)

Intervallo di proporzioni

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
)