StatelessSampleDistortedBoundingBox

clase final pública StatelessSampleDistortedBoundingBox

Genere un cuadro delimitador distorsionado aleatoriamente para una imagen de forma determinista.

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, dada la misma "semilla", genera de manera determinista una localización distorsionada aleatoriamente de un objeto, es decir, un cuadro delimitador, dado un "tamaño_imagen", "cuadros_limitantes" 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.

Se garantiza que la salida de esta operación será la misma dada la misma "semilla" y es independiente de cuántas veces se llama a la función y de la configuración de semilla global (por ejemplo, tf.random.set_seed ).

Uso de ejemplo:

>>> imagen = np.array([[[1], [2], [3]], [[4], [5], [6]], [[7], [8], [9] ]]) >>> bbox = tf.constant( ... [0.0, 0.0, 1.0, 1.0], dtype=tf.float32, forma=[1, 1, 4]) >>> semilla = (1, 2 ) >>> # Genera un único cuadro delimitador distorsionado. >>> bbox_begin, bbox_size, bbox_draw = ( ... tf.image.stateless_sample_distorted_bounding_box( ... tf.shape(image),bounding_boxes=bbox, seed=seed)) >>> # Emplea el cuadro delimitador para distorsionar la imagen . >>> tf.slice(imagen, bbox_begin, bbox_size) >>> # Dibujar el cuadro delimitador en un resumen de imagen. >>> colores = np.array([[1.0, 0.0, 0.0], [0.0, 0.0, 1.0]]) >>> tf.image.draw_bounding_boxes( ... tf.expand_dims(tf.cast(imagen, tf .float32),0), bbox_draw, colores)

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 StatelessSampleDistortedBoundingBox.Opciones Atributos opcionales para StatelessSampleDistortedBoundingBox

Métodos públicos

estático StatelessSampleDistortedBoundingBox.Options
areaRange (Lista<Float> areaRange)
estático StatelessSampleDistortedBoundingBox.Options
aspectoRatioRange (Lista<Float> aspectoRatioRange)
Salida <Flotante>
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 el número, U extiende el número> StatelessSampleDistortedBoundingBox <T>
crear (alcance alcance , operando <T> tamaño de imagen, operando <Float> borderingBoxes, operando <Float> minObjectCovered, operando <U> semilla, opciones... opciones)
Método de fábrica para crear una clase que envuelve una nueva operación StatelessSampleDistortedBoundingBox.
estático StatelessSampleDistortedBoundingBox.Options
maxAttempts (maxAttempts largos)
Salida <T>
tamaño ()
1-D, que contiene `[altura_destino, ancho_destino, -1]`.
estático StatelessSampleDistortedBoundingBox.Options
useImageIfNoBoundingBoxes (uso booleanoImageIfNoBoundingBoxes)

Métodos heredados

Métodos públicos

público estático StatelessSampleDistortedBoundingBox.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 StatelessSampleDistortedBoundingBox.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 <Float> 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 .

public static StatelessSampleDistortedBoundingBox <T> crear ( alcance alcance , operando <T> imageSize, operando <Float> BoundingBoxes, operando <Float> minObjectCovered, operando <U> semilla, opciones... opciones)

Método de fábrica para crear una clase que envuelve una nueva operación StatelessSampleDistortedBoundingBox.

Parámetros
alcance alcance actual
tamaño de la 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.
semilla 1-D con forma `[2]`. La semilla del generador de números aleatorios. Debe tener tipo d `int32` o `int64`. (Cuando se usa XLA, solo se permite "int32".)
opciones lleva valores de atributos opcionales
Devoluciones
  • una nueva instancia de StatelessSampleDistortedBoundingBox

público estático StatelessSampleDistortedBoundingBox.Options maxAttempts (Long maxAttempts)

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 en `max_attempts`, devuelve la imagen completa.

tamaño de salida pública <T> ()

1-D, que contiene `[altura_destino, ancho_destino, -1]`. Proporcione como entrada a tf.slice .

público estático StatelessSampleDistortedBoundingBox.Options useImageIfNoBoundingBoxes (booleano useImageIfNoBoundingBoxes)

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.