Imágenes sintéticas con Flip

November 25, 2022

| Juan Felipe Montenegro Torres

Las imágenes sintéticas son todas aquellas imágenes creadas por procesos informáticos, que van desde el logo de una empresa hasta la representación de una ciudad imaginaria. Actualmente gran parte de las imágenes que se encuentran en internet son creadas de manera artificial, es decir, no son fotografías o dibujos, sino que son creadas completamente en un computador.

Estas representaciones son de gran importancia en muchos ámbitos, como los logos en el mundo empresarial, las imágenes en las redes sociales, las escenas con CGI en las películas y los datos para la visión por computador, entre otros tantos ejemplos.

En este artículo presentaremos las nuevas actualizaciones de la librería de Python Flip, la cual está diseñada para la creación de imágenes sintéticas, específicamente se mostrará un ejemplo para aumentar la cantidad de imágenes en el dataset “dogs-cats-horses-humans-dataset” presentado en Kaggle y comparar el resultado de las imágenes creadas con las imágenes originales.

Para ello, se tomarán 2 imágenes de caballos con su respectiva segmentación realizada en la plataforma de LinkedAI y se extraerán los objetos a partir del código presentado en crop_image_from_mask.ipynb como se muestra a continuación:


Imágenes de caballos con su respectiva segmentación realizada en la plataforma de LinkedAI

Posteriormente, se tomó una imagen de una pradera y una imagen de un desierto para que sean los futuros fondos de las imágenes creadas.

Imagen de una pradera y un desierto.

Dentro de las actualizaciones de la librería se encuentran múltiples transformaciones que permitirán crear bastantes imágenes a partir de los objetos obtenidos anteriormente, algunas de ellas son:

Siguiendo el ejemplo presentado en el repositorio y utilizando el archivo de data_generator.py, se le pidió al algoritmo que utilizara el color ‘gray’ para obtener los objetos en escala de grises, que realizara flip sobre el eje ‘y’, un random resize entre 0.2 y 0.7 también se tomó valores de contraste de 0.8 y de saturación de 1.4. Adicionalmente, en cada una de las transformaciones se colocó el parámetro ‘force’ en falso para permitir aleatoriedad a la librería de aplicar o no las transformaciones y se delimitó el espació de los objetos entre el 0.5 y 1 del eje ‘y’ para que los caballos quedaran cerca del suelo.

Por otra parte, se utilizó el ruido de ‘avg_blur’ en los fondos y un valor de brillo de 1.2 en la imagen creada para generar mayor variedad en las imágenes finales, como se observa en las siguientes líneas de código:

flip.transformers.data_augmentation.Noise(noise=’avg_blur’, force=False),]
transform_created = [
flip.transformers.data_augmentation.Brightness(1.2, force=False)]
transform = flip.transformers.Compose(
[
flip.transformers.ApplyToObjects(transform_objects),
flip.transformers.ApplyToBackground(transform_backgrounds),
flip.transformers.domain_randomization.ObjectsRandomPosition
(x_min=0, y_min=0.3, x_max=0.7, y_max=0.6, mode=’percentage’,
force_overlap=False),
flip.transformers.domain_randomization.Draw(),
flip.transformers.ApplyToCreatedImage(transform_created),
flip.transformers.labeler.CreateBoundingBoxes(),
flip.transformers.labeler.CreateMasks(classes_names),
flip.transformers.io.SaveImage(OUT_DIR, name),
flip.transformers.io.SaveMask(OUT_DIR, name),
flip.transformers.io.CreateJson(OUT_DIR, name)]) 

Obteniendo imágenes como las que se muestran a continuación, que a simple vista parecen caballos ubicados sobre el piso de los fondos que se escogieron, algunos más cerca que otros y de diferentes colores:

Imágenes creadas con Flip

Comparándolas con las imágenes originales del dataset se observa que Flip logra imágenes bastante cercanas a las originales y se concluye que es una herramienta muy útil para la creación de imágenes sintéticas, como se observa a continuación:

Imágenes de comparación.

Por otra parte, para este caso en específico se utilizó un solo objeto sobre el fondo y transformaciones realistas, no obstante, Flip permite crear imágenes con más de un objeto y transformaciones que permiten crear imágenes completamente aleatorias con múltiples ruidos, objetos, recortes de las imágenes y entre otras transformaciones bastante utilizadas para el proceso de “Data Augmentation” en diferentes proyectos de visión por computador como se observa en la documentación del repositorio.

Finalmente, este proceso también se puede realizar con máscaras de segmentación y bounding boxes como se muestra en “How to create your own Synthetic Data- for computer vision applications” y “Creating Synthetic Images with Flip” respectivamente.

Puede observar el código completo en el repositorio de GitHub de la librería.

Exploring Generative AI: Use Cases in Computer Vision and Beyond
Thursday, February 22, and Friday, February 23
Register Free

Follow Us

Copyright © 2024 Linked AI, Inc. All rights reserved.