Una CNN en animaciones: perros y gatos

Cuaderno de Jupyter docente, en español, que abre una red neuronal convolucional (CNN) por dentro y la explica con animaciones, siguiendo a una sola foto de un perro de principio a fin.

🌐 Versión web para clase (sin instalar nada): huggingface.co/spaces/OncomIA01/cnn-perros-gatos-clase

Esto no es un modelo entrenado para usar: es material de clase. La red se construye y se entrena dentro del propio cuaderno, en menos de un minuto en CPU.

Qué se ve

Parte Animación
1. Los datos la foto que seguimos y las 400 fotos de la clase
2. La arquitectura la red construyéndose bloque a bloque
3. Qué es una convolución una ventana 3×3 que multiplica y suma
4. Un perro, muchos filtros el filtro se transforma y cambia lo que resalta (bordes, difuminar, realzar…)
5. El pooling MaxPool frente a AvgPool sobre la foto, de 64 a 4 píxeles; tolerancia a desplazamientos
6. Entrenar 20 épocas guardando filtros y mapas en cada una
7. Mapas de características cómo aprende la red sus filtros y mapas, época a época
8. La foto atraviesa la red dentro de un bloque; los 4 bloques; promedio global, Flatten, Dropout, Linear y sigmoide con los números reales; la red entera en una simulación
9. ¿Acierta? matriz de confusión y 16 fotos nuevas

Cómo usarlo

  1. Descarga CNN_resumen_perros_gatos_autonomo.ipynb: no necesitas nada más.
  2. Ábrelo en Jupyter, VS Code o Google Colab (en Colab: Archivo → Subir cuaderno).
  3. Ejecuta las celdas en orden (o Ejecutar todo). En las animaciones, pulsa ▶ o avanza fotograma a fotograma.

La sección 0 crea junto al cuaderno los ficheros de código que usa (modelo.py, animaciones.py, datos_perros_gatos.py…). La primera vez descarga 400 fotos (unos 10 MB), así que hace falta internet; después funciona sin conexión.

Requisitos: Python 3.10+ con numpy, pandas, matplotlib, pillow, scikit-learn, requests y torch. En Google Colab ya están instalados.

La red y el resultado

CNNMama: 4 bloques Conv 3×3 → BatchNorm → ReLU → MaxPool (16, 32, 64 y 128 filtros), promedio global, Dropout(0,3) y Linear(128 → 1). 97.809 pesos.

Entrenada con 300 fotos de 64×64 durante 20 épocas (AdamW, lr = 5·10⁻⁴, volteo horizontal), acierta alrededor del 75 % en 100 fotos que no ha visto. Con tan pocas fotos de prueba, ±5 puntos son ruido normal. El resultado es reproducible con la semilla fija en la misma máquina.

Datos

Las fotos no están en este repositorio: el cuaderno las descarga del dataset público microsoft/cats_vs_dogs. Se usa una selección docente fija de 400 imágenes (200 gatos y 200 perros), no una muestra aleatoria del corpus ni un benchmark. Consulta las condiciones de uso de ese dataset.

Uso previsto

Material para enseñar cómo funciona una CNN (convolución, filtros, pooling, mapas de características, Flatten, entrenamiento). No es un clasificador para usar en producción.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Dataset used to train OncomIA01/cnn-perros-gatos-clase