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
seedcomoseed2tienen un valor distinto de cero, el generador de números aleatorios se inicializa con laseedproporcionada. 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_attemptsfallidos, 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:
-
Outputde inicio: 1-D, que contiene[offset_height, offset_width, 0]. Proporcione como entrada atf.slice. - Tamaño
Output: 1-D, que contiene[target_height, target_width, -1]. Proporcione como entrada atf.slice. - Cajas delimitadoras
Output: 3-D con forma[1, 1, 4]que contienen la caja delimitadora distorsionada. Proporcione como entrada atf.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 )