Genere un único cuadro delimitador distorsionado aleatoriamente para una imagen.
Las anotaciones del cuadro delimitador a menudo se proporcionan además de las etiquetas de verdad sobre el terreno en tareas de reconocimiento de imágenes o localización de objetos. Una técnica común para entrenar un sistema de este tipo es distorsionar aleatoriamente una imagen preservando su contenido, es decir, aumento de datos . Esta operación genera una localización distorsionada aleatoriamente de un objeto, es decir, un cuadro delimitador, dado un `image_size`, `bounding_boxes` y una serie de restricciones.
El resultado de esta operación es un cuadro delimitador único que se puede utilizar para recortar la imagen original. La salida se devuelve como 3 tensores: `begin`, `size` y `bboxes`. Los primeros 2 tensores se pueden introducir directamente en tf.slice
para recortar la imagen. Este último se puede proporcionar a tf.image.draw_bounding_boxes
para visualizar cómo se ve el cuadro delimitador.
Los cuadros delimitadores se proporcionan y devuelven como `[y_min, x_min, y_max, x_max]`. Las coordenadas del cuadro delimitador son flotantes en `[0.0, 1.0]` en relación con el ancho y el 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 hay información del cuadro delimitador disponible, configurar `use_image_if_no_bounding_boxes = true` asumirá que hay 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 genera un error. Clases anidadas
clase | SampleDistortedBoundingBox.Opciones | Atributos opcionales para SampleDistortedBoundingBox |
Constantes
Cadena | OP_NOMBRE | El nombre de esta operación, como lo conoce el motor central de TensorFlow. |
Métodos públicos
SampleDistortedBoundingBox.Options estático | areaRange (Lista<Float> areaRange) |
SampleDistortedBoundingBox.Options estático | aspectoRatioRange (Lista<Float> aspectoRatioRange) |
Salida <TFloat32> | cajas b () 3-D con forma `[1, 1, 4]` que contiene el cuadro delimitador distorsionado. |
Salida <T> | comenzar () 1-D, que contiene `[offset_height, offset_width, 0]`. |
estático <T extiende TNumber > SampleDistortedBoundingBox <T> | crear (alcance alcance , operando <T> tamaño de imagen, operando <TFloat32> borderingBoxes, operando <TFloat32> minObjectCovered, opciones... opciones) Método de fábrica para crear una clase que envuelve una nueva operación SampleDistortedBoundingBox. |
SampleDistortedBoundingBox.Options estático | maxAttempts (maxAttempts largos) |
SampleDistortedBoundingBox.Options estático | semilla (semilla larga) |
SampleDistortedBoundingBox.Options estático | semilla2 (semilla larga2) |
Salida <T> | tamaño () 1-D, que contiene `[altura_destino, ancho_destino, -1]`. |
SampleDistortedBoundingBox.Options estático | useImageIfNoBoundingBoxes (uso booleanoImageIfNoBoundingBoxes) |
Métodos heredados
Constantes
Cadena final estática pública OP_NAME
El nombre de esta operación, como lo conoce el motor central de TensorFlow.
Métodos públicos
pública estática SampleDistortedBoundingBox.Options areaRange (List<Float> areaRange)
Parámetros
áreaRango | El área recortada de la imagen debe contener una fracción de la imagen proporcionada dentro de este rango. |
---|
público estático SampleDistortedBoundingBox.Options aspectoRatioRange (Lista<Float> aspectoRatioRange)
Parámetros
aspectoRelaciónRango | El área recortada de la imagen debe tener una relación de aspecto = ancho/alto dentro de este rango. |
---|
Salida pública <TFloat32> bboxes ()
3-D con forma `[1, 1, 4]` que contiene el cuadro delimitador distorsionado. Proporcione como entrada a tf.image.draw_bounding_boxes
.
Salida pública <T> comenzar ()
1-D, que contiene `[offset_height, offset_width, 0]`. Proporcione como entrada a tf.slice
.
pública estática SampleDistortedBoundingBox <T> crear (alcance alcance , operando <T> tamaño de imagen, operando <TFloat32> BoundingBoxes, operando <TFloat32> minObjectCovered, opciones... opciones)
Método de fábrica para crear una clase que envuelve una nueva operación SampleDistortedBoundingBox.
Parámetros
alcance | alcance actual |
---|---|
tamaño de imagen | 1-D, que contiene `[alto, ancho, canales]`. |
cajas delimitadoras | 3-D con forma `[lote, N, 4]` que describe los N cuadros delimitadores asociados con la imagen. |
minObjetoCubierto | El área recortada de la imagen debe contener al menos esta fracción de cualquier cuadro delimitador proporcionado. El valor de este parámetro no debe ser negativo. En el caso de 0, no es necesario que el área recortada se superponga a ninguno de los cuadros delimitadores suministrados. |
opciones | lleva valores de atributos opcionales |
Devoluciones
- una nueva instancia de SampleDistortedBoundingBox
SampleDistortedBoundingBox.Options estático público maxAttempts (MaxAttempts largos)
Parámetros
intentos máximos | Número de intentos de generar una región recortada de la imagen de las restricciones especificadas. Después de fallas de `max_attempts`, devuelve la imagen completa. |
---|
Semilla pública estática SampleDistortedBoundingBox.Options (semilla larga)
Parámetros
semilla | Si "seed" o "seed2" se establecen en un valor distinto de cero, el generador de números aleatorios se inicia con la "seed" dada. De lo contrario, se siembra con una semilla aleatoria. |
---|
pública estática SampleDistortedBoundingBox.Options semilla2 (semilla larga2)
Parámetros
semilla2 | Una segunda semilla para evitar la colisión de semillas. |
---|
tamaño de salida pública <T> ()
1-D, que contiene `[altura_destino, ancho_destino, -1]`. Proporcione como entrada a tf.slice
.
SampleDistortedBoundingBox.Options estático público useImageIfNoBoundingBoxes (uso booleanoImageIfNoBoundingBoxes)
Parámetros
utilizarImageIfNoBoundingBoxes | Controla el comportamiento si no se proporcionan cuadros delimitadores. Si es verdadero, suponga un cuadro delimitador implícito que cubre toda la entrada. Si es falso, genera un error. |
---|