CNN para visión
Objetivo
Entrenar una CNN y analizar errores sobre fotografías reales de diez clases.
Dataset real
- Dataset:
cifar10 - Fuente: Torchvision / University of Toronto
- Referencia: https://www.cs.toronto.edu/~kriz/cifar.html
- Licencia/condiciones: Consultar términos CIFAR-10
- Uso: los datos se descargan desde la fuente; no hay ejemplos sintéticos ni archivos inventados.
CIFAR-10 contiene 60.000 imágenes reales de 32×32.
Fundamento matemático
Convolución, pooling, normalización y clasificación.
Protocolo experimental
- Descargar y verificar la procedencia.
- Conservar o crear una partición reproducible.
- Ajustar transformaciones únicamente con
train. - Seleccionar modelo e hiperparámetros usando
validation. - Evaluar
testuna sola vez tras congelar la decisión. - Comparar con la línea base: Clasificador lineal sobre píxeles.
- Guardar configuración, entorno, métricas, predicciones, gráficos y modelo.
Ejecución
python labs/03_cnn_vision/train.py --quick
python labs/03_cnn_vision/train.py --config improved
Preparar únicamente el dataset:
python -m neural_labs.cli dataset --lab 03_cnn_vision
Inferencia y exportación:
neural-labs predict --lab 03_cnn_vision --run latest --input sample.json
neural-labs export --lab 03_cnn_vision --run latest --format onnx --verify
Métricas
accuracy, balanced_accuracy, macro_precision, macro_recall, macro_f1.
Archivos
notebook.ipynb: recorrido completo y ejecutable.notebook_student.ipynb: actividades evaluables sin soluciones.notebook_solution.ipynb: resolución docente y pruebas de referencia.train.py: interfaz de terminal que usa el mismo código del cuaderno.configs/baseline.yaml: configuración base.configs/improved.yaml: configuración ampliada.data/dataset.yaml: procedencia, licencia y política de partición.
Ejercicios
- Cambiar una decisión experimental y justificarla.
- Analizar errores por clase o segmento.
- Comparar costo, precisión y latencia.
- Documentar sesgos, limitaciones y usos no recomendados.
Material formativo v3
theory.md: fundamento, protocolo y riesgos de interpretación.experiments.md: hipótesis, variables controladas y tabla multi-semilla.assessment.md: preguntas y rúbrica de evaluación.lesson.yaml: resultados de aprendizaje, prerrequisitos y entregables.
Comandos profesionales
neural-labs quality --lab 03_cnn_vision --quick
neural-labs benchmark --lab 03_cnn_vision --quick --split-seed 42 --training-seeds 41 42 43
neural-labs leaderboard
Sellado del experimento
La partición se controla con split_seed; la inicialización y el entrenamiento con training_seed. El conjunto test se abre solamente después de seleccionar el checkpoint mediante validación y escribir experiment.lock.json.
🧠 Teoría
Teoría — CNN para visión
Propósito
Entrenar una CNN y analizar errores sobre fotografías reales de diez clases.
Idea central
Este laboratorio estudia convoluciones para patrones espaciales usando cifar10, un dataset público real procedente de Torchvision / University of Toronto.
Aplanar una imagen de 32×32×3 y pasarla por un MLP funciona, pero desperdicia la estructura del problema: ignora que los píxeles vecinos están correlacionados y que un objeto es el mismo aunque se desplace unos píxeles. La red convolucional (CNN) incorpora dos sesgos inductivos que encajan con las imágenes: localidad (cada neurona mira solo una región pequeña) e invariancia por traslación (el mismo filtro se aplica en toda la imagen, compartiendo parámetros). Esto reduce drásticamente el número de pesos y obliga al modelo a aprender detectores de patrones reutilizables.
La consecuencia es una jerarquía de representaciones: las primeras capas aprenden bordes y colores, las intermedias combinan esos bordes en texturas y partes, y las profundas responden a objetos completos. El laboratorio entrena esta jerarquía sobre CIFAR-10 (60.000 fotografías reales de 10 clases) y contrasta contra un clasificador lineal sobre píxeles para hacer patente cuánto aporta explotar la estructura espacial.
Fundamento matemático
La operación central es la convolución: un filtro (kernel) de pesos K de tamaño pequeño se desliza sobre la imagen de entrada X y, en cada posición, calcula un producto punto local. Para un filtro de tamaño F×F sobre un mapa de entrada:
Y(i, j) = Σₘ Σₙ X(i+m, j+n)·K(m, n) + b
El mismo K se reutiliza en todas las posiciones (i, j): eso es el peso compartido que da la invariancia por traslación y reduce los parámetros de millones (como en una capa densa) a apenas F×F por canal de filtro. Cada filtro produce un mapa de activación que señala dónde aparece el patrón que ese filtro detecta. Tras la convolución se aplica una no linealidad (ReLU), sin la cual toda la pila colapsaría a una única convolución lineal.
El tamaño del mapa de salida depende del stride s (paso del deslizamiento) y del padding p (relleno de bordes): dimensión_salida = ⌊(dimensión_entrada − F + 2p)/s⌋ + 1. El pooling (típicamente max-pooling) submuestrea cada región tomando su máximo, lo que reduce la resolución espacial, aporta cierta invariancia a pequeñas traslaciones y amplía el campo receptivo de las capas posteriores sin añadir parámetros.
Un ingrediente decisivo para entrenar redes profundas es la normalización por lotes (batch normalization), que estandariza las activaciones de cada canal dentro del minilote:
x̂ = (x − μ_B) / √(σ²_B + ε), y = γ·x̂ + β
donde μ_B y σ²_B son la media y varianza del lote, ε evita la división por cero, y γ, β son parámetros aprendibles que restauran la capacidad expresiva. Esto estabiliza y acelera el entrenamiento al mantener las activaciones en un rango controlado, reduciendo la sensibilidad a la inicialización.
Tras varias etapas de convolución + ReLU + pooling, los mapas finales se aplanan (o se promedian con global average pooling) y pasan a una cabeza densa que produce los 10 logits, entrenados con entropía cruzada categórica y softmax igual que en el MLP. Una idea arquitectónica que el laboratorio deja como horizonte es la conexión residual (ResNet): sumar la entrada de un bloque a su salida, y = F(x) + x, lo que crea un atajo por el que el gradiente fluye sin atenuarse y permite entrenar redes de cientos de capas.
La formulación debe conectarse con cuatro elementos: representación de entrada, función del modelo, función de pérdida y regla de actualización. El notebook muestra las dimensiones de los tensores y conserva la misma implementación que el script de terminal.
Protocolo científico
- Ajustar transformaciones, vocabulario, normalización y selección de variables solo con
train. - Usar
validationpara arquitectura, hiperparámetros, checkpoint y umbrales. - Evaluar
testuna vez, después de congelar las decisiones. - Comparar contra Clasificador lineal sobre píxeles.
- Reportar variación entre semillas e intervalos de confianza; una métrica puntual no expresa toda la incertidumbre.
Riesgos de interpretación
CIFAR-10 contiene 60.000 imágenes reales de 32×32.
El dataset refleja su proceso de recolección y no representa automáticamente otros períodos, países o poblaciones. Una asociación predictiva no demuestra causalidad.
Pregunta crítica
¿Qué clases concentran errores visualmente plausibles?
🔗 Referencias
Las referencias apuntan a las obras; no se reproduce su contenido, la redacción es original.
- Goodfellow, Bengio & Courville — Deep Learning (MIT Press 2016), cap. 9 — redes convolucionales, peso compartido y pooling.
- Géron — Hands-On Machine Learning (3.ª ed., O'Reilly 2022), cap. 14 — CNN modernas y visión por computador con frameworks.
- Zhang et al. — Dive into Deep Learning (d2l.ai, 2023), cap. 7–8 — convoluciones, arquitecturas clásicas y batch normalization.
- LeCun et al. (1998), Gradient-based learning applied to document recognition (LeNet), Proc. IEEE — primera CNN entrenada de extremo a extremo.
- Krizhevsky, Sutskever & Hinton (2012), ImageNet Classification with Deep Convolutional Neural Networks (AlexNet), NeurIPS — hito que popularizó el aprendizaje profundo en visión.
- He et al. (2016), Deep Residual Learning for Image Recognition (ResNet), CVPR — conexiones residuales para redes muy profundas.
- Fuente del dataset: https://www.cs.toronto.edu/~kriz/cifar.html
- Consulte
docs/experiment-protocol.md,docs/reproducibility.mdydocs/ethics-and-licenses.md.
🔬 Experimentos
Plan de experimentos — CNN para visión
Hipótesis principal
Entrenar una CNN y analizar errores sobre fotografías reales de diez clases. La hipótesis debe aceptarse o rechazarse comparando el modelo con Clasificador lineal sobre píxeles y no solo observando que la pérdida disminuye.
Experimento mínimo
- Ejecutar
baseline.yamlcon tres semillas. - Ejecutar
improved.yamlcon las mismas semillas. - Mantener fija la partición de datos dentro de cada semilla.
- Elegir la variante con
validation. - Comparar la variante elegida contra la línea base en
test. - Revisar intervalos de confianza, errores y costo computacional.
Experimento específico
Comparar kernel, normalización y aumento.
Variables controladas
- Dataset y política de partición.
- Semillas declaradas.
- Presupuesto de épocas y criterio de parada.
- Métrica de selección:
accuracyo la especificada en la configuración. - Hardware y versiones registradas en
environment.json.
Tabla que debe completarse
| Variante | Semilla | Métrica validation | Métrica test | Tiempo | Parámetros | Observación |
|---|---|---|---|---|---|---|
| baseline | 41 | |||||
| baseline | 42 | |||||
| baseline | 43 | |||||
| improved | 41 | |||||
| improved | 42 | |||||
| improved | 43 |
Criterio de conclusión
La conclusión debe declarar magnitud de la mejora, incertidumbre, costo adicional, errores relevantes y condiciones bajo las cuales el resultado podría no repetirse.
📝 Evaluación
Evaluación — CNN para visión
Evidencias obligatorias
- Dataset preparado y auditoría sin solapamientos.
- Notebook ejecutado sin celdas omitidas.
- Línea base y modelo neuronal comparados.
- Resultados de al menos tres semillas o justificación del costo.
- Análisis de errores y limitaciones.
- Model card actualizada.
Preguntas
- Explique con sus palabras: Convolución, pooling, normalización y clasificación.
- ¿Qué información del dataset solo puede utilizarse durante entrenamiento?
- ¿Por qué la línea base Clasificador lineal sobre píxeles es una comparación razonable?
- ¿Qué clases concentran errores visualmente plausibles?
- ¿Qué cambiaría antes de usar este modelo fuera del laboratorio?
Rúbrica
| Criterio | Insuficiente | Adecuado | Excelente | Peso |
|---|---|---|---|---|
| Integridad de datos | mezcla particiones | separación correcta | auditoría, hashes y justificación | 20% |
| Implementación | no ejecuta | entrena y evalúa | código claro, reusable y probado | 20% |
| Diseño experimental | resultado aislado | comparación controlada | multi-semilla e incertidumbre | 20% |
| Análisis | repite métricas | interpreta errores | identifica sesgos, límites y costo | 25% |
| Comunicación | incompleta | reporte entendible | model card y conclusiones verificables | 15% |
La aprobación exige al menos 70% y cero errores críticos de fuga de datos.