Python | Aumento de datos

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 –

  1. Necesidad de aumento de datos
  2. Operaciones en aumento de datos
  3. Aumento de datos en Keras
  4. 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:

  1. Rotación
  2. Cizallamiento
  3. Zoom
  4. recorte
  5. volteando
  6. 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.

Original Image

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.

Rotated Image

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í:

Shearing

Zoom
La operación de zoom nos permite acercar o alejar la imagen.
El resultado se ve así:

Zoom


Recortar Recortar nos permite recortar la imagen o seleccionar un área particular de una imagen .

Cropping

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.

Flipping

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.

Brightness

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

Image1

Image2

Image3

Image4

Image5

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

Image1

Image2

Image3

Image4

Image5

Puede consultar el repositorio de github de Augmentor para obtener más información.

Referencias –

https://keras.io/preprocesamiento/imagen/

https://github.com/mdbloice/Augmentor

Publicación traducida automáticamente

Artículo escrito por Alpha26 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *