El aumento de datos es el proceso de aumentar la cantidad y diversidad de datos. No recopilamos datos nuevos, sino que transformamos los datos ya presentes. Hablaré específicamente sobre el aumento de datos de imágenes en este artículo.
Así que veremos varias formas de transformar y aumentar los datos de la imagen.
Este artículo cubre los siguientes artículos –
- Necesidad de aumento de datos
- Operaciones en aumento de datos
- Aumento de datos en Keras
- Aumento de datos usando Augmentor
1. Necesidad de aumento de datos El aumento de
datos es un proceso integral en el aprendizaje profundo, ya que en el aprendizaje profundo necesitamos grandes cantidades de datos y, en algunos casos, no es factible recopilar miles o millones de imágenes, por lo que el aumento de datos viene al rescate.
Nos ayuda a aumentar el tamaño del conjunto de datos e introducir variabilidad en el conjunto de datos.
2. Operaciones en el aumento de datos
Las operaciones más utilizadas son:
- Rotación
- Cizallamiento
- Zoom
- recorte
- volteando
- Cambiar el nivel de brillo
Ahora veremos todas estas operaciones en detalle. También proporcionaré el código para el aumento de datos más adelante en el artículo.
La imagen original que usaré para ilustración.
Rotación
La operación de rotación, como sugiere el nombre, simplemente gira la imagen en un cierto grado especificado.
En el siguiente ejemplo, especifiqué el grado de rotación como 40.
Shearing
Shearing también se utiliza para transformar la orientación de la imagen.
El resultado de la operación de corte se ve así:
Zoom
La operación de zoom nos permite acercar o alejar la imagen.
El resultado se ve así:
Recortar Recortar nos permite recortar la imagen o seleccionar un área particular de una imagen .
Flipping
Flipping nos permite cambiar la orientación de la imagen. Podemos usar flip horizontal o vertical.
Debe usar esta función con cuidado, ya que habrá escenarios en los que esta operación podría no tener mucho sentido, por ejemplo, suponga que está diseñando un sistema de reconocimiento facial, entonces es muy poco probable que una persona se pare boca abajo frente a una cámara, por lo que puede evite utilizar la operación de volteo vertical.
Cambiar el nivel de brillo
Esta característica nos ayuda a combatir los cambios de iluminación. Puede encontrar un escenario en el que la mayoría de su conjunto de datos se compone de imágenes que tienen un nivel de brillo similar, por ejemplo, recopilar las imágenes de los empleados que ingresan a la oficina, al aumentar las imágenes nos aseguramos de que nuestro El modelo es robusto y es capaz de detectar a la persona incluso en diferentes entornos.
3. Aumento de datos en Keras
Keras es un marco de aprendizaje automático de alto nivel construido sobre TensorFlow. No entraré en los detalles del funcionamiento de Keras, sino que solo quiero presentar el concepto de aumento de datos en Keras.
Podemos realizar un aumento de datos utilizando la clase ImageDataGenerator.
Toma varios argumentos como: rango de rotación, rango de brillo, rango de corte, rango de zoom, etc.
Código: código Python que implementa el aumento de datos
# Importing necessary functions from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img # Initialising the ImageDataGenerator class. # We will pass in the augmentation parameters in the constructor. datagen = ImageDataGenerator( rotation_range = 40, shear_range = 0.2, zoom_range = 0.2, horizontal_flip = True, brightness_range = (0.5, 1.5)) # Loading a sample image img = load_img('image.jpg') # Converting the input sample image to an array x = img_to_array(img) # Reshaping the input image x = x.reshape((1, ) + x.shape) # Generating and saving 5 augmented samples # using the above defined parameters. i = 0 for batch in datagen.flow(x, batch_size = 1, save_to_dir ='preview', save_prefix ='image', save_format ='jpeg'): i += 1 if i > 5: break
El fragmento de código anterior le permite generar 5 imágenes aumentadas con diferente zoom, rotación, brillo, etc.
Imágenes aumentadas
4. Aumento de datos usando Augmentor
# Importing necessary library import Augmentor # Passing the path of the image directory p = Augmentor.Pipeline("image_folder") # Defining augmentation parameters and generating 5 samples p.flip_left_right(0.5) p.black_and_white(0.1) p.rotate(0.3, 10, 10) p.skew(0.4, 0.5) p.zoom(probability = 0.2, min_factor = 1.1, max_factor = 1.5) p.sample(5)
El fragmento de código anterior le permite generar 5 imágenes aumentadas basadas en las funciones definidas anteriormente.
Imágenes aumentadas
Puede consultar el repositorio de github de Augmentor para obtener más información.
Referencias –