No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

19 Días
5 Hrs
30 Min
56 Seg

Data augmentation

16/25
Recursos

Aportes 8

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Data Augmentation

Data augmentation: busca mejorar el rendimiento, la precisión de nuestro modelo aumentando la cantidad y estilo de datos.

Es difícil obtener y clasificar las imágenes para entrenar el modelo?

Tiende a serlo ya que se usan ambientes especiales para tomar una fotografía, sea de manera o no profesional. Luz, escenario, etc.

Data augmentation toma una imagen y le hace ciertas modificaciones como:

  • Hacerle zoom **

  • Desplazar la imagen de sus ejes X, & Y

  • Aumentar el brillo

  • Rotar la imagen: Esto no es más que un relleno en los espacios de la imagen que inicialmente no pertenecían a esta. Tiende a rotar la imagen sobre su eje. _ Keras_ tiene facultades que permiten hacer fill_mode del tipo:

  • Nearest

  • ** Reflect:** muestra una imagen tipo espejo

  • ** Wrap:** crea una tira consecutiva de la imagen para completar los espacios.

  • Width & Height_shift_range: se desplaza sobre el ancho y el alto de la imagen.

A modo de sumario, Data Augmentation lo que hace es mantener la foto con sus características principales pero creando imágenes distintas.

La máquina observa dos fotos “** parecidas**” pero con características similar. Esto es lo buscado y deseado al llevar a cabo un entrenamiento que pueda encontrar estas características

El aumento de datos (data augmentation) es una técnica ampliamente utilizada en el aprendizaje profundo, especialmente en tareas de visión por computadora como la clasificación de imágenes. Consiste en aplicar transformaciones aleatorias a las imágenes de entrenamiento, lo que aumenta la diversidad y la cantidad de datos disponibles para el modelo. Esto ayuda a mejorar la generalización del modelo y a reducir el sobreajuste.

Link de ejemplos y documentación respecto a esto https://keras.io/guides/transfer_learning/

Resumen 📝 ![](https://static.platzi.com/media/user_upload/Clase16v4-31a7c4a3-2b55-4a26-84c4-70746e0b9ef5.jpg)
Estamos optimizando la data para poder entrenar mejor al modelo.
\*\*Data augmentation\*\* (aumento de datos) es una técnica comúnmente utilizada en el entrenamiento de redes neuronales para aumentar el tamaño del conjunto de datos de entrenamiento. Se basa en aplicar transformaciones aleatorias a las imágenes de entrenamiento, como rotaciones, cambios de escala, traslaciones, flips, entre otros, para generar nuevas muestras sin necesidad de recolectar más datos. Esto ayuda a reducir el sobreajuste (`overfitting`), mejorando la capacidad de generalización del modelo. \### ¿Por qué es importante? En tareas como la clasificación de imágenes, a menudo no se dispone de suficientes datos de entrenamiento, lo que puede llevar a que un modelo aprenda patrones específicos del conjunto de datos en lugar de generalizar bien a nuevas imágenes. Al aumentar artificialmente el tamaño del conjunto de datos con `data augmentation`, se fuerza al modelo a aprender características más robustas. \### Ejemplo de transformaciones comunes en `data augmentation`: \- \*\*Rotación\*\*: Girar la imagen dentro de un rango de grados. \- \*\*Escalado\*\*: Aumentar o reducir el tamaño de la imagen. \- \*\*Traslación\*\*: Desplazar la imagen a lo largo del eje X o Y. \- \*\*Flip\*\*: Voltear la imagen horizontal o verticalmente. \- \*\*Zoom\*\*: Acercar o alejar ciertas áreas de la imagen. \### Ejemplo usando TensorFlow/Keras En TensorFlow y Keras, se puede implementar `data augmentation` de manera muy sencilla usando las capas predefinidas de `keras.layers`. Aquí te dejo un ejemplo práctico: ```python import tensorflow as tf from tensorflow.keras.preprocessing.image import ImageDataGenerator import matplotlib.pyplot as plt from tensorflow.keras.datasets import cifar10 \# Cargar el conjunto de datos CIFAR-10 (x\_train, y\_train), (x\_test, y\_test) = cifar10.load\_data() \# Normalizar las imágenes x\_train = x\_train.astype('float32') / 255.0 x\_test = x\_test.astype('float32') / 255.0 \# Crear el generador de datos con aumentación datagen = ImageDataGenerator( rotation\_range=30, # Rotar hasta 30 grados width\_shift\_range=0.2, # Desplazar horizontalmente hasta un 20% height\_shift\_range=0.2, # Desplazar verticalmente hasta un 20% zoom\_range=0.2, # Aplicar zoom de hasta un 20% horizontal\_flip=True, # Voltear horizontalmente fill\_mode='nearest' # Rellenar los bordes de la imagen al aplicar transformaciones ) \# Tomar una muestra de imágenes para demostrar la augmentación sample\_images = x\_train\[:5] \# Generar y mostrar las imágenes aumentadas fig, ax = plt.subplots(1, 5, figsize=(15, 15)) for i in range(5): augmented\_image = datagen.random\_transform(sample\_images\[i]) ax\[i].imshow(augmented\_image) ax\[i].axis('off') plt.show() ``` \### Explicación del código: 1\. \*\*Cargar los datos\*\*: En este caso, se usa el conjunto de datos CIFAR-10, que contiene imágenes de 32x32 píxeles en 10 categorías. 2\. \*\*Normalización\*\*: Las imágenes se escalan a un rango \[0, 1] para que el entrenamiento sea más eficiente. 3\. \*\*ImageDataGenerator\*\*: Define las transformaciones para el aumento de datos, como rotación, desplazamiento, zoom y flip horizontal. 4\. \*\*Visualización\*\*: Se aplican las transformaciones aleatorias a algunas imágenes y se muestran para ver el efecto de `data augmentation`. \### Ejemplo de entrenamiento con Data Augmentation: ```python \# Definir el generador de datos de entrenamiento con augmentación train\_datagen = ImageDataGenerator( rotation\_range=30, width\_shift\_range=0.2, height\_shift\_range=0.2, zoom\_range=0.2, horizontal\_flip=True, fill\_mode='nearest' ) \# Crear el flujo de datos de entrenamiento train\_generator = train\_datagen.flow(x\_train, y\_train, batch\_size=32) \# Definir un modelo simple model = tf.keras.models.Sequential(\[ tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input\_shape=(32, 32, 3)), tf.keras.layers.MaxPooling2D(pool\_size=(2, 2)), tf.keras.layers.Flatten(), tf.keras.layers.Dense(128, activation='relu'), tf.keras.layers.Dense(10, activation='softmax') ]) model.compile(optimizer='adam', loss='sparse\_categorical\_crossentropy', metrics=\['accuracy']) \# Entrenar el modelo usando el generador de datos con augmentación history = model.fit(train\_generator, epochs=10, validation\_data=(x\_test, y\_test)) ``` \### Ventajas del Data Augmentation: \- \*\*Mejora la generalización\*\*: Al presentar variaciones de las imágenes originales, el modelo aprende a identificar características más robustas. \- \*\*Aumenta el tamaño del conjunto de datos\*\*: Sin necesidad de recopilar más datos reales. \- \*\*Reduce el sobreajuste\*\*: El modelo evita memorizar los datos exactos de entrenamiento. \### Conclusión El `data augmentation` es una herramienta poderosa para mejorar el rendimiento y la capacidad de generalización de los modelos, especialmente cuando se cuenta con conjuntos de datos pequeños o medianos.
**La tecnica de aumento de datos (data augmentation)** es utilizada para **ampliar artificialmente un conjunto de datos de entrenamiento**. Esto se logra mediante la creación de nuevas muestras de datos a partir de datos existentes, aplicando diversas transformaciones aleatorias a los datos originales. Las transformaciones utilizadas en el aumento de datos pueden ser simples, como **rotar, escalar o recortar imágenes**, o más complejas, como **agregar ruido, cambiar el brillo o aplicar filtros**. El objetivo de estas transformaciones es **crear variaciones realistas de los datos originales**, para que el modelo de aprendizaje automático pueda aprender a generalizar mejor y evitar el **sobreajuste**. El aumento de datos es especialmente útil en tareas de **visión por computador**, donde los conjuntos de datos pueden ser grandes y costosos de recopilar. Al aumentar el conjunto de datos, podemos entrenar modelos más robustos y precisos con menos datos.

Data augmentation

  • Data augmentation busca mejorar el rendimiento y precisión de nuestro modelo.

  • Aumentando la cantidad y estilo de datos.

Es difícil obtener y clasificar las imágenes para entrenar el modelo?

Tiende a serlo ya que se usan ambientes especiales para tomar una fotografía, sea de manera o no profesional. Luz, escenario, etc.

Data augmentation toma una imagen y le hace ciertas modificaciones. Esto no es más que un relleno en los espacios de la imagen que inicialmente no pertenecían a esta, pot ejemplo:

  • Hacerle zoom
  • Rotar la imagen: sobre su eje, Keras tiene facultades que permiten hacer un “fill_mode del tipo:
  1. “nearest”
  2. “reflect” que muestra una imagen tipo espejo.
  3. “wrap” crea una tira consecutiva de la imagen para completar los espacios.
  4. “width & height_shift_range” se desplaza sobre el ancho y el alto de la imagen
  • Desplazar la imagen de sus ejes X, & Y
  • Aumentar el brillo

Lo que hace es mantener la foto con sus características principales pero creando imágenes distintas. La máquina observa dos fotos “parecidas” pero con características similar. Esto es lo buscado y deseado al llevar a cabo un entrenamiento que pueda encontrar estas características