tensorflow:: ops:: SampleDistortedBoundingBox

#include <image_ops.h>

Genera un único cuadro delimitador distorsionado aleatoriamente para una imagen.

Resumen

Las anotaciones de cuadros delimitadores se suelen proporcionar junto con las etiquetas de referencia en tareas de reconocimiento de imágenes o localización de objetos. Una técnica común para entrenar un sistema de este tipo consiste en distorsionar aleatoriamente una imagen conservando su contenido ( aumento de datos ). Esta operación genera una localización distorsionada aleatoriamente de un objeto (un cuadro delimitador) a partir de un image_size , un bounding_boxes y una serie de restricciones.

La salida de esta operación es un único cuadro delimitador que puede utilizarse para recortar la imagen original. El resultado se devuelve como tres tensores: begin , size y bboxes . Los dos primeros tensores pueden utilizarse directamente con tf.slice para recortar la imagen. El último puede utilizarse con tf.image.draw_bounding_boxes para visualizar el aspecto del cuadro delimitador.

Los cuadros delimitadores se proporcionan y se devuelven como [y_min, x_min, y_max, x_max] . Las coordenadas del cuadro delimitador son números flotantes en el rango [0.0, 1.0] con respecto al ancho y alto de la imagen subyacente.

Por ejemplo,

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

Tenga en cuenta que si no se dispone de información sobre el cuadro delimitador, al establecer use_image_if_no_bounding_boxes = true se asumirá que existe un único cuadro delimitador implícito que cubre toda la imagen. Si use_image_if_no_bounding_boxes es falso y no se proporcionan cuadros delimitadores, se generará un error.

Argumentos:

  • ámbito: Un objeto de ámbito
  • image_size: 1-D, que contiene [height, width, channels] .
  • bounding_boxes: 3-D con forma [batch, N, 4] que describe los N cuadros delimitadores asociados a la imagen.

Atributos opcionales (ver Attrs ):

  • semilla: Si tanto seed como seed2 tienen un valor distinto de cero, el generador de números aleatorios se inicializa con la seed proporcionada. De lo contrario, se inicializa con una semilla aleatoria.
  • seed2: Una segunda semilla para evitar colisiones de semillas.
  • min_object_covered: El área recortada de la imagen debe contener al menos esta fracción de cualquier cuadro delimitador proporcionado. El valor de este parámetro debe ser no negativo. Si es 0, el área recortada no necesita superponerse con ninguno de los cuadros delimitadores proporcionados.
  • aspect_ratio_range: El área recortada de la imagen debe tener una relación de aspecto = ancho / alto dentro de este rango.
  • area_range: El área recortada de la imagen debe contener una fracción de la imagen proporcionada dentro de este rango.
  • max_attempts: Número de intentos para generar una región recortada de la imagen con las restricciones especificadas. Tras max_attempts fallidos, se devuelve la imagen completa.
  • use_image_if_no_bounding_boxes: Controla el comportamiento si no se proporcionan cuadros delimitadores. Si es verdadero, se asume un cuadro delimitador implícito que cubre toda la entrada. Si es falso, se genera un error.

Devoluciones:

  • Output de inicio: 1-D, que contiene [offset_height, offset_width, 0] . Proporcione como entrada a tf.slice .
  • Tamaño Output : 1-D, que contiene [target_height, target_width, -1] . Proporcione como entrada a tf.slice .
  • Cajas delimitadoras Output : 3-D con forma [1, 1, 4] que contienen la caja delimitadora distorsionada. Proporcione como entrada a tf.image.draw_bounding_boxes .

Constructores y destructores

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)

Atributos públicos

bboxes
begin
operation
size

funciones estáticas públicas

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)

Estructuras

tensorflow:: ops:: SampleDistortedBoundingBox:: Attrs

Configuradores de atributos opcionales para SampleDistortedBoundingBox .

Atributos públicos

cuadros de bloques

::tensorflow::Output bboxes

comenzar

::tensorflow::Output begin

operación

Operation operation

tamaño

::tensorflow::Output size

Funciones públicas

Cuadro delimitador distorsionado de muestra

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

Cuadro delimitador distorsionado de muestra

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

funciones estáticas públicas

ÁreaRango

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

Rango de relación de aspecto

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

Intentos máximos

Attrs MaxAttempts(
  int64 x
)

Objeto mínimo cubierto

Attrs MinObjectCovered(
  float x
)

Semilla

Attrs Seed(
  int64 x
)

Semilla2

Attrs Seed2(
  int64 x
)

Usar imagen si no hay cuadros delimitadores

Attrs UseImageIfNoBoundingBoxes(
  bool x
)