tensorflow :: operaciones :: SampleDistortedBoundingBox
#include <image_ops.h>
Genere un único cuadro delimitador distorsionado aleatoriamente para una imagen.
Resumen
Las anotaciones del cuadro delimitador a menudo se proporcionan además de las etiquetas de verdad en el terreno en tareas de reconocimiento de imágenes o localización de objetos. Una técnica común para entrenar tal sistema es distorsionar aleatoriamente una imagen mientras se preserva 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
, 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 2 primeros tensores se pueden alimentar 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]
relación con el 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 hay información del cuadro delimitador disponible, la configuración de use_image_if_no_bounding_boxes = true
supondrá que hay un solo 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 use_image_if_no_bounding_boxes
un error.
Argumentos:
- alcance: un objeto de alcance
- image_size: 1-D, que contiene
[height, width, channels]
. - bounding_boxes: 3-D con forma
[batch, N, 4]
describe los N cuadros delimitadores asociados con la imagen.
Atributos opcionales (consulte Attrs
):
- semilla: si
seed
oseed2
se establecen en un valor distinto de cero, el generador de números aleatorios es sembrado por laseed
dada. De lo contrario, es sembrado por una semilla aleatoria. - seed2: Una segunda semilla para evitar la colisión 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 no debe ser negativo. En el caso de 0, el área recortada no necesita superponerse a ninguno de los cuadros delimitadores suministrados.
- 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 de generar una región recortada de la imagen de las restricciones especificadas. Después de fallas de
max_attempts
, devuelve la imagen completa. - use_image_if_no_bounding_boxes: 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.
Devoluciones:
-
[offset_height, offset_width, 0]
Output
: 1-D, que contiene[offset_height, offset_width, 0]
. Proporcionar como entrada atf.slice
. - Tamaño de
Output
: 1-D, que contiene[target_height, target_width, -1]
. Proporcionar como entrada atf.slice
. - Bboxes de
Output
: 3-D con forma[1, 1, 4]
contiene el cuadro delimitador distorsionado. Proporcionar 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 | Establecedores de atributos opcionales para SampleDistortedBoundingBox . |
Atributos públicos
bboxes
::tensorflow::Output bboxes
empezar
::tensorflow::Output begin
operación
Operation operation
Talla
::tensorflow::Output size
Funciones publicas
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 )
Funciones estáticas públicas
AreaRange
Attrs AreaRange( const gtl::ArraySlice< float > & x )
AspectRatioRange
Attrs AspectRatioRange( const gtl::ArraySlice< float > & x )
MaxAttempts
Attrs MaxAttempts( int64 x )
MinObjectCovered
Attrs MinObjectCovered( float x )
Semilla
Attrs Seed( int64 x )
Semilla2
Attrs Seed2( int64 x )
UseImageIfNoBoundingBoxes
Attrs UseImageIfNoBoundingBoxes( bool x )