Redes convolucionales y su importancia

1

La importancia del computer vision

2

驴Qu茅 herramientas usaremos para redes neuronales convolucionales?

3

驴Qu茅 son las redes convolucionales?

Mi primera red neuronal convolucional

4

Creando nuestra primera red convolucional

5

Entrenando nuestra primera red convolucional

Manejo de im谩genes

6

Consejos para el manejo de im谩genes

7

Manejo de im谩genes con Python

Fundamentos de redes neuronales convolucionales

8

Kernel en redes neuronales

9

El kernel en acci贸n

10

Padding y Strides

11

Capa de pooling

12

Arquitectura de redes convolucionales

Quiz: Fundamentos de redes neuronales convolucionales

Resolviendo un problema de clasificaci贸n

13

Clasificaci贸n con redes neuronales convolucionales

14

Creaci贸n de red convolucional para clasificaci贸n

15

Entrenamiento de un modelo de clasificaci贸n con redes convolucionales

Optimizaci贸n de red neuronal convolucional

16

Data augmentation

17

Aplicando data augmentation

18

Callbacks: early stopping y checkpoints

19

Batch normalization

20

Optimizaci贸n de modelo de clasificaci贸n

21

Entrenamiento de nuestro modelo de clasificaci贸n optimizado

Quiz: Optimizaci贸n de red neuronal convolucional

Resolviendo una competencia de Kaggle

22

Clasificando entre perros y gatos

23

Entrenamiento del modelo de clasificaci贸n de perros y gatos

Resumen y siguientes pasos

24

Siguientes pasos con redes neuronales convolucionales

25

Comparte tu proyecto de clasificaci贸n con redes convolucionales y certif铆cate

You don't have access to this class

Keep learning! Join and start boosting your career

Aprovecha el precio especial y haz tu profesi贸n a prueba de IA

Antes: $249

Currency
$209
Suscr铆bete

Termina en:

0 D铆as
10 Hrs
38 Min
37 Seg

Aplicando data augmentation

17/25
Resources

Contributions 8

Questions 6

Sort by:

Want to see more contributions, questions and answers from the community?

Algunos resultados de Nhaga con la siguiente configuraci贸n:

datagen = ImageDataGenerator(rotation_range=60,
                            width_shift_range=0.4,
                            height_shift_range=0.4,
                            zoom_range=0.3,
                            horizontal_flip=True,
                            fill_mode='reflect',
                            brightness_range=[0.3,1.4]                   
) 

Omi, la gata, viendo el vac铆o


Este m贸dulo contiene utilidades para el preprocesamento y ampliaci贸n de im谩genes. ImageDataGenerator: Es una clase que permite generar lotes de datos de im谩genes con transformaciones en tiempo real, como rotaci贸n, cambio de tama帽o, recorte, etc. Se puede usar para aumentar el conjunto de datos y evitar el sobreajuste. array_to_img: Es una funci贸n que convierte un arreglo de Numpy a una imagen de PIL (Python Imaging Library). Se puede usar para visualizar o guardar una imagen a partir de un arreglo. img_to_array: Es

Ya tengo nuevo wallpaper

Para aplicar `data augmentation` en tus modelos de clasificaci贸n de im谩genes, puedes utilizar bibliotecas como TensorFlow y Keras, que proporcionan herramientas f谩ciles de usar para generar im谩genes aumentadas durante el entrenamiento del modelo. \### Pasos para aplicar `data augmentation` en un flujo de trabajo de clasificaci贸n de im谩genes: 1\. \*\*Cargar y preprocesar los datos\*\*: Primero, necesitas un conjunto de datos de im谩genes. En este ejemplo usaremos CIFAR-10 como conjunto de datos. 2\. \*\*Definir el generador de im谩genes con augmentaci贸n\*\*: El generador de datos ser谩 el que aplique las transformaciones aleatorias a las im谩genes. 3\. \*\*Entrenar el modelo con datos aumentados\*\*: Usar el generador para alimentar el modelo durante el entrenamiento. \### Ejemplo pr谩ctico en Keras con `ImageDataGenerator` ```python import tensorflow as tf from tensorflow.keras.preprocessing.image import ImageDataGenerator from tensorflow.keras.datasets import cifar10 import matplotlib.pyplot as plt \# Cargar el conjunto de datos CIFAR-10 (x\_train, y\_train), (x\_test, y\_test) = cifar10.load\_data() \# Normalizar los datos a un rango entre 0 y 1 x\_train = x\_train.astype('float32') / 255.0 x\_test = x\_test.astype('float32') / 255.0 \# Definir el generador de im谩genes con augmentaci贸n datagen = ImageDataGenerator( rotation\_range=20, # Rotaci贸n de hasta 20 grados width\_shift\_range=0.2, # Desplazamiento horizontal del 20% height\_shift\_range=0.2, # Desplazamiento vertical del 20% horizontal\_flip=True, # Voltear la imagen horizontalmente zoom\_range=0.2 # Aplicar zoom hasta un 20% ) \# Previsualizaci贸n de augmentaci贸n en algunas im谩genes sample\_images = x\_train\[:5] fig, axes = plt.subplots(1, 5, figsize=(15, 15)) for i, img in enumerate(sample\_images): augmented\_image = datagen.random\_transform(img) axes\[i].imshow(augmented\_image) axes\[i].axis('off') plt.show() \# Crear 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((2, 2)), tf.keras.layers.Conv2D(64, (3, 3), activation='relu'), tf.keras.layers.MaxPooling2D((2, 2)), tf.keras.layers.Flatten(), tf.keras.layers.Dense(64, activation='relu'), tf.keras.layers.Dense(10, activation='softmax') ]) \# Compilar el modelo model.compile(optimizer='adam', loss='sparse\_categorical\_crossentropy', metrics=\['accuracy']) \# Entrenar el modelo usando el generador de datos con augmentaci贸n history = model.fit(datagen.flow(x\_train, y\_train, batch\_size=32), epochs=10, validation\_data=(x\_test, y\_test)) \# Evaluar el modelo test\_loss, test\_acc = model.evaluate(x\_test, y\_test) print(f'Test accuracy: {test\_acc:.4f}') ``` \### Explicaci贸n del c贸digo: 1\. \*\*Cargar y normalizar los datos\*\*: \- Cargamos el conjunto de datos CIFAR-10 y normalizamos los valores de los p铆xeles a un rango de 0 a 1. 2\. \*\*`ImageDataGenerator`\*\*: \- Definimos el generador de im谩genes, especificando las transformaciones que queremos aplicar. En este caso, incluimos rotaci贸n, traslaci贸n horizontal/vertical, zoom y flip horizontal. 3\. \*\*Visualizaci贸n de augmentaci贸n\*\*: \- Se muestra c贸mo algunas im谩genes del conjunto de datos original son transformadas aleatoriamente con `data augmentation` para darle m谩s diversidad al conjunto de datos de entrenamiento. 4\. \*\*Modelo de red neuronal\*\*: \- Creamos un modelo simple de CNN (red neuronal convolucional) con dos capas convolucionales seguidas de capas de pooling y una capa densa para la clasificaci贸n. 5\. \*\*Entrenamiento con augmentaci贸n\*\*: \- Durante el entrenamiento, las im谩genes de entrenamiento se pasan por el generador de datos, el cual aplica `data augmentation` en tiempo real. 6\. \*\*Evaluaci贸n\*\*: \- Finalmente, se eval煤a el modelo en el conjunto de pruebas (sin `data augmentation`). \### 驴Por qu茅 usar `data augmentation`? \- \*\*Evita el sobreajuste\*\*: El modelo no memoriza los datos de entrenamiento, ya que cada imagen se transforma de manera aleatoria en cada 茅poca. \- \*\*Mejora la generalizaci贸n\*\*: Al exponer al modelo a m煤ltiples variaciones de las im谩genes, se entrena para detectar caracter铆sticas importantes de las im谩genes y no solo sus caracter铆sticas espec铆ficas. \### 驴Qu茅 transformaciones aplicar? Las transformaciones dependen del tipo de datos con los que est茅s trabajando. Si tienes im谩genes de objetos que pueden estar en diferentes orientaciones, como en CIFAR-10, las transformaciones como rotaci贸n, flips y desplazamientos son 煤tiles. Si trabajas con im谩genes donde el contexto espacial es importante, como en medicina, deber铆as ser m谩s cuidadoso con qu茅 transformaciones aplicas. Este flujo de trabajo es aplicable para muchos otros problemas de visi贸n por computadora y mejora el rendimiento del modelo con conjuntos de datos limitados.
img = load_img('/kaggle/input/projfreddy/DL.png')
x = img_to_array(img)
x = np.expand_dims(x, axis=0)
datagen = ImageDataGenerator(
    rotation_range=40,
    width_shift_range=0.2,
    height_shift_range=0.2,
    shear_range=0.2,
    zoom_range=0.4,
    horizontal_flip=True,
    fill_mode='nearest'
)



i = 0
for batch in datagen.flow(x, batch_size=10):
    plt.figure(i)
    imgplot = plt.imshow(array_to_img(batch[0]))
    i += 1
    if i % 4 == 0:  # Mostrar solo 4 im谩genes aumentadas
        break

plt.show()

Mis perritas ![](https://static.platzi.com/media/user_upload/image-6ccd70b7-1f6b-4721-afd8-62bcdbf627fb.jpg) Incluso en ciertas iteraciones, el target puede quedar por fuera de la imagen generada ![](https://static.platzi.com/media/user_upload/image-bf1e423c-ac07-481c-92fc-35821baa7bcc.jpg)