
Proyecto Fei-Fei — Sesión 5: viendo al modelo predecir, imagen a imagen
Llevamos cuatro sesiones mirando números — porcentajes de exactitud, matrices de confusión, tamaños de archivo. Hoy cerramos Proyecto Fei-Fei de la forma más satisfactoria posible: cargando el modelo que guardamos en la Sesión 4 y viéndolo predecir sobre imágenes reales, una a una, con sus aciertos y también con sus fallos a la vista.
Cargando el modelo guardado
Como aprendimos en la Sesión 4, no hace falta entrenar nada de nuevo:
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt
modelo_cargado = keras.models.load_model("modelo_feifei.keras")
nombres_clases = ["Camiseta/top", "Pantalón", "Jersey", "Vestido", "Abrigo",
"Sandalia", "Camisa", "Zapatilla", "Bolso", "Botín"]
Eligiendo imágenes para probar — incluyendo alguna difícil a propósito
En vez de coger 10 imágenes cualquiera, vamos a incluir a propósito un par de la categoría que sabemos que le cuesta al modelo (Camisa, según la Sesión 3), para verlo fallar en directo y no solo en una tabla de números:
# Índices concretos del conjunto de examen (x_prueba, y_prueba de la Sesión 1)
indices_a_probar = [4, 40, 44, 2, 8, 18, 19, 1, 6, 9]
imagenes = x_prueba[indices_a_probar]
etiquetas_reales = y_prueba[indices_a_probar]
imagenes_cnn = imagenes[..., np.newaxis]
probabilidades = modelo_cargado.predict(imagenes_cnn, verbose=0)
predicciones = np.argmax(probabilidades, axis=1)
Viendo las imágenes junto a la predicción
fig, ejes = plt.subplots(2, 5, figsize=(15, 6))
for ax, imagen, real, predicho in zip(ejes.flat, imagenes, etiquetas_reales, predicciones):
ax.imshow(imagen, cmap="gray")
acierto = real == predicho
color = "green" if acierto else "red"
simbolo = "✅" if acierto else "❌"
ax.set_title(f"real: {nombres_clases[real]}\npredicho: {nombres_clases[predicho]} {simbolo}",
fontsize=9, color=color)
ax.axis("off")
plt.tight_layout()
plt.show()
Lo que se ve de verdad
Lo probé con nuestro modelo real: de las 10 imágenes, acertó 8 y falló exactamente en las 2 de Camisa que colamos a propósito — una la confundió con Camiseta/top y la otra con Abrigo. Ahora mismo, con la imagen delante, podéis juzgar vosotros mismos: mirad esas dos imágenes de Camisa que ha fallado el modelo y preguntaos si vosotros, a simple vista y en 28×28 píxeles en blanco y negro, la habríais clasificado mejor. Es muy probable que a alguna persona también le costara — lo cual no disculpa al modelo, pero sí confirma que lo que vimos como números en la Sesión 3 (71-73% de recall en Camisa) tiene una explicación visual real y no es un capricho del algoritmo.

Cerrando Proyecto Fei-Fei
Con esta sesión completamos el recorrido: cargar datos sin líos (1), entrenar una CNN multiclase (2), diagnosticarla con la matriz de confusión (3), guardarla para no repetir el entrenamiento (4) y, por fin, verla predecir imagen a imagen, con sus aciertos y sus fallos genuinos delante (5). Si en algún momento queréis retomarlo, ahí quedan dos caminos abiertos: intentar mejorar la arquitectura para que Camisa deje de ser el punto débil, o probar el modelo con una foto de ropa vuestra, hecha con el móvil y redimensionada a 28×28 en blanco y negro.

Etiqueta:AIDARAC, cnn, fashion mnist, keras, montesteam, predicciones, proyecto fei-fei, visualizacion



