Introducción al Reconocimiento de Imágenes

En esta presentación, exploraremos cómo usar redes neuronales profundas para reconocer dígitos escritos a mano utilizando el dataset MNIST.

¿Qué es el MNIST?

El MNIST (Modified National Institute of Standards and Technology) es un conjunto de datos de imágenes de dígitos escritos a mano, ampliamente utilizado en el aprendizaje automático y la visión por computadora.

Ejemplo MNIST

Estructura del Dataset

Cargar el Dataset MNIST en Python

Usamos la librería `Keras` para cargar el dataset MNIST en Python.


# Cargar el dataset MNIST
from tensorflow.keras.datasets import mnist

# Cargar los datos de entrenamiento y prueba
(x_train, y_train), (x_test, y_test) = mnist.load_data()

# Normalizar las imágenes a valores entre 0 y 1
x_train, x_test = x_train / 255.0, x_test / 255.0
                

Entrenando un Modelo de Red Neuronal

Ahora, vamos a crear y entrenar un modelo de red neuronal utilizando Keras.


# Importar las librerías necesarias
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras.optimizers import Adam

# Crear el modelo secuencial
model = Sequential([
    Flatten(input_shape=(28, 28)),  # Convertir las imágenes 28x28 a un vector
    Dense(128, activation='relu'),  # Capa densa con 128 neuronas
    Dense(10, activation='softmax')  # Capa de salida con 10 clases
])

# Compilar el modelo
model.compile(optimizer=Adam(),
                loss='sparse_categorical_crossentropy',
                metrics=['accuracy'])

# Entrenar el modelo
model.fit(x_train, y_train, epochs=5)
                

Evaluando el Modelo

Después de entrenar el modelo, podemos evaluarlo utilizando el conjunto de prueba.


# Evaluar el modelo
test_loss, test_acc = model.evaluate(x_test, y_test)

print(f"Precisión en el conjunto de prueba: {test_acc}")
                

Predicción de una Imagen

Finalmente, podemos usar el modelo para hacer predicciones sobre nuevas imágenes.


# Hacer una predicción sobre una imagen
import numpy as np
import matplotlib.pyplot as plt

# Seleccionar una imagen aleatoria del conjunto de prueba
image = x_test[0]

# Predecir el dígito
prediction = model.predict(np.expand_dims(image, axis=0))
predicted_digit = np.argmax(prediction)

# Mostrar la imagen y la predicción
plt.imshow(image, cmap='gray')
plt.title(f"Predicción: {predicted_digit}")
plt.show()
                

Precisión del Modelo

Al evaluar el modelo con el conjunto de datos de prueba, podemos calcular la precisión del modelo para medir su efectividad en la clasificación de imágenes.

Conclusiones

El dataset MNIST es una excelente herramienta para comenzar con el aprendizaje automático en reconocimiento de imágenes. Hemos cubierto desde la preparación de los datos hasta la evaluación del modelo.