# M4 · Deep Learning y Visión Artificial **Máster en Inteligencia Artificial, Automatización y Agentes Digitales** · Next Educación · Próxima edición **6 ECTS · 12 sesiones de una hora · Responsable de producción y coordinación: Sami Halawa Ribas** ## Descripción Construcción y entrenamiento de redes neuronales profundas aplicadas a imagen y audio: del perceptrón multicapa a las redes convolucionales, el transfer learning, la detección y segmentación, los Vision Transformers y los modelos multimodales, con control explícito del coste computacional. ## Competencias del módulo 1. Comprender la arquitectura de redes neuronales. 2. Aplicar CNNs a problemas de visión. 3. Utilizar transfer learning con modelos pre entrenados. 4. Preparar datos de imagen/audio. 5. Valorar costes y recursos de DL. ## Evaluación | Instrumento | Peso | |---|---:| | Prácticas de sesión (cuadernos entregados) | 35% | | Proyecto de visión artificial entrenado y evaluado | 45% | | Memoria técnica y defensa | 20% | ## Mapa de sesiones | # | Sesión | Entregable | |---:|---|---| | 1 | Del perceptrón a la red multicapa | Cuaderno con la red entrenada y la comparación documentada. | | 2 | Retropropagación y optimización del entrenamiento | Cuaderno con las tres correcciones y el registro de curvas. | | 3 | Regularización y entrenamiento práctico de redes profundas | Plantilla de entrenamiento verificada y reanudada correctamente. | | 4 | Redes convolucionales: fundamentos y primer clasificador | Modelo entrenado con informe de errores por clase. | | 5 | Arquitecturas de referencia y transfer learning | Cuaderno comparativo con la estrategia recomendada y su justificación. | | 6 | Preparación y aumentación de datos de imagen | Informe con la política elegida y el rendimiento del flujo de datos. | | 7 | Detección de objetos y segmentación | Detector entrenado con informe de evaluación y análisis de fallos. | | 8 | Vision Transformers y modelos multimodales | Cuaderno con el buscador funcional y la comparación de coste y exactitud. | | 9 | Audio y series temporales con redes profundas | Cuaderno con transcripciones evaluadas, clasificador entrenado y estimación de coste. | | 10 | Coste, recursos y optimización de la inferencia | Informe de optimización con latencia, precisión y coste comparados. | | 11 | Taller integrador: sistema de visión artificial completo | Sistema de visión reproducido y validado por un tercero. | | 12 | Evaluación del módulo y defensa | Prueba resuelta y defensa realizada. | --- ## Programación sesión a sesión ### Sesión 01 — Del perceptrón a la red multicapa **Objetivos** - Describir la unidad neuronal y su composición en capas. - Relacionar profundidad, anchura y capacidad de representación. - Implementar una red multicapa desde cero sobre datos tabulares. **Contenidos** - **La unidad de cómputo** - Combinación lineal, sesgo y función de activación - Sigmoide, tangente hiperbólica, ReLU y sus variantes - Por qué una red sin activaciones es un modelo lineal - Inicialización de pesos: Xavier y He - **Composición en capas** - Capas densas, dimensiones y número de parámetros - Profundidad frente a anchura: efecto sobre la capacidad - Teorema de aproximación universal y su alcance real - Salida y función de pérdida según la tarea - **Comparación con el aprendizaje clásico** - Cuándo una red supera al gradient boosting y cuándo no - Coste de entrenamiento frente a ganancia esperada - Necesidad de volumen de datos - Representaciones aprendidas frente a variables construidas a mano **Práctica — Red multicapa implementada paso a paso** Construcción de un perceptrón multicapa con PyTorch sobre el dataset tabular del proyecto y comparación contra la línea base del Módulo 3. 1. Preparar tensores, normalización y particiones. 2. Definir la red densa y la función de pérdida adecuada. 3. Entrenar y trazar la curva de pérdida por época. 4. Comparar el resultado con el modelo de boosting del Módulo 3. - *Stack:* Python 3.11, PyTorch, scikit-learn - *Entregable:* Cuaderno con la red entrenada y la comparación documentada. **Lecturas** - Goodfellow, Bengio & Courville, Deep Learning, cap. 6 - Documentación de PyTorch: guía de tensores y autograd *Materiales:* `teoria/M4_S01_Del_perceptron_a_la_red_multicapa.html` · `code/M4_S01_Del_perceptron_a_la_red_multicapa.ipynb` --- ### Sesión 02 — Retropropagación y optimización del entrenamiento **Objetivos** - Explicar el cálculo del gradiente mediante retropropagación. - Seleccionar optimizador y tasa de aprendizaje con criterio. - Diagnosticar un entrenamiento que no converge. **Contenidos** - **Gradientes y grafo de cómputo** - Regla de la cadena y diferenciación automática - Grafo dinámico y acumulación de gradientes - Gradientes que se desvanecen y que explotan - Recorte de gradiente y normalización - **Optimizadores** - Descenso de gradiente estocástico y momento - Adam y AdamW: diferencias prácticas - Tasa de aprendizaje, calentamiento y planificadores - Tamaño de lote y su relación con la tasa de aprendizaje - **Diagnóstico del entrenamiento** - Lectura conjunta de las curvas de entrenamiento y validación - Pérdida estancada, oscilante o divergente - Sobreajuste de un lote como prueba de sanidad - Registro de métricas por época **Práctica — Diagnóstico de tres entrenamientos averiados** Identificación y corrección de tres configuraciones de entrenamiento con fallos deliberados de tasa de aprendizaje, inicialización y normalización. 1. Ejecutar las tres configuraciones y registrar las curvas. 2. Diagnosticar la causa de cada fallo. 3. Aplicar la corrección mínima en cada caso. 4. Documentar la relación entre síntoma y causa. - *Stack:* PyTorch, TensorBoard - *Entregable:* Cuaderno con las tres correcciones y el registro de curvas. **Lecturas** - Goodfellow, Bengio & Courville, Deep Learning, cap. 8 *Materiales:* `teoria/M4_S02_Retropropagacion_y_optimizacion_del_entrenamient.html` · `code/M4_S02_Retropropagacion_y_optimizacion_del_entrenamient.ipynb` --- ### Sesión 03 — Regularización y entrenamiento práctico de redes profundas **Objetivos** - Aplicar las técnicas de regularización propias del deep learning. - Organizar un bucle de entrenamiento reproducible y reanudable. - Fijar el protocolo experimental del módulo. **Contenidos** - **Regularización** - Dropout: dónde colocarlo y con qué tasa - Decaimiento de pesos frente a penalización explícita - Normalización por lotes, por capa y por grupo - Parada temprana y selección del mejor punto de control - **Bucle de entrenamiento profesional** - Separación de modelo, datos y configuración - Puntos de control, reanudación y semillas - Entrenamiento en precisión mixta - Registro de experimentos y comparabilidad - **Protocolo experimental** - Un cambio por experimento - Validación fija y conjunto de prueba intacto - Presupuesto de cómputo por experimento - Criterio de parada de la exploración **Práctica — Plantilla de entrenamiento reutilizable** Construcción del bucle de entrenamiento que se empleará durante todo el módulo, con puntos de control, precisión mixta y registro de experimentos. 1. Implementar el bucle con validación por época y puntos de control. 2. Añadir precisión mixta y medir el efecto en tiempo y memoria. 3. Integrar el registro de experimentos. 4. Verificar la reanudación tras interrupción. - *Stack:* PyTorch, MLflow, CUDA - *Entregable:* Plantilla de entrenamiento verificada y reanudada correctamente. **Lecturas** - Srivastava et al., Dropout (paper) *Materiales:* `teoria/M4_S03_Regularizacion_y_entrenamiento_practico_de_redes.html` · `code/M4_S03_Regularizacion_y_entrenamiento_practico_de_redes.ipynb` --- ### Sesión 04 — Redes convolucionales: fundamentos y primer clasificador **Objetivos** - Explicar la operación de convolución y su ventaja inductiva en imagen. - Dimensionar una arquitectura convolucional completa. - Entrenar y evaluar un clasificador de imágenes desde cero. **Contenidos** - **La operación de convolución** - Filtros, canales, paso y relleno - Campo receptivo y jerarquía de características - Compartición de pesos e invarianza a la traslación - Agrupamiento y reducción de resolución - **Diseño de una CNN** - Bloques convolucionales y profundidad progresiva - Normalización y activación dentro del bloque - Cabezal de clasificación y agrupamiento global - Cálculo de parámetros y de memoria de activaciones - **Evaluación en visión** - Exactitud, matriz de confusión por clase y clases difíciles - Desbalanceo de clases en conjuntos de imágenes - Inspección visual de errores - Fuga por imágenes casi duplicadas entre particiones **Práctica — Clasificador convolucional entrenado desde cero** Entrenamiento completo de una CNN sobre un conjunto de imágenes de dominio industrial, con análisis de errores por clase. 1. Preparar el conjunto y verificar la ausencia de duplicados entre particiones. 2. Definir la arquitectura y calcular parámetros y memoria. 3. Entrenar y evaluar con matriz de confusión. 4. Revisar visualmente veinte errores y clasificar sus causas. - *Stack:* PyTorch, torchvision - *Entregable:* Modelo entrenado con informe de errores por clase. **Lecturas** - LeCun et al., Gradient-Based Learning Applied to Document Recognition (paper) *Materiales:* `teoria/M4_S04_Redes_convolucionales_fundamentos_y_primer_clasi.html` · `code/M4_S04_Redes_convolucionales_fundamentos_y_primer_clasi.ipynb` --- ### Sesión 05 — Arquitecturas de referencia y transfer learning **Objetivos** - Comparar las familias de arquitecturas convolucionales de referencia. - Aplicar transfer learning con modelos preentrenados. - Decidir entre extracción de características y ajuste fino. **Contenidos** - **Familias de arquitecturas** - ResNet y las conexiones residuales - EfficientNet y el escalado compuesto - ConvNeXt y la convolución modernizada - Criterios de elección según latencia y precisión - **Transfer learning** - Congelar el extractor y entrenar solo el cabezal - Ajuste fino por capas y tasas de aprendizaje diferenciadas - Cuántos datos hacen falta en cada estrategia - Discrepancia de dominio entre el preentrenamiento y la tarea - **Buenas prácticas** - Normalización coherente con el modelo preentrenado - Tamaño de entrada y su efecto en el rendimiento - Licencias y procedencia de los pesos - Trampa de comparar contra una línea base mal entrenada **Práctica — Ajuste fino frente a extractor congelado** Comparación cuantitativa de tres estrategias de transfer learning sobre el mismo conjunto y presupuesto de cómputo. 1. Entrenar solo el cabezal sobre un modelo preentrenado. 2. Aplicar ajuste fino completo con tasas diferenciadas. 3. Comparar ambas con el modelo entrenado desde cero de la sesión anterior. 4. Medir precisión, tiempo de entrenamiento y coste. - *Stack:* PyTorch, torchvision, timm - *Entregable:* Cuaderno comparativo con la estrategia recomendada y su justificación. **Lecturas** - He et al., Deep Residual Learning for Image Recognition (paper) *Materiales:* `teoria/M4_S05_Arquitecturas_de_referencia_y_transfer_learning.html` · `code/M4_S05_Arquitecturas_de_referencia_y_transfer_learning.ipynb` --- ### Sesión 06 — Preparación y aumentación de datos de imagen **Objetivos** - Construir un flujo de datos eficiente para entrenamiento en GPU. - Diseñar una política de aumentación adecuada al dominio. - Medir el efecto real de la aumentación sobre la generalización. **Contenidos** - **Flujo de datos** - Conjuntos, cargadores y trabajadores paralelos - Decodificación, redimensionado y normalización - Formatos eficientes y lectura desde disco o memoria - Detección del cuello de botella entre CPU y GPU - **Aumentación** - Transformaciones geométricas y fotométricas - Recorte aleatorio, borrado aleatorio y ruido - Mixup y CutMix: cuándo aportan - Aumentación coherente con la física del dominio - **Calidad del conjunto** - Etiquetado: protocolo, acuerdo entre anotadores y revisión - Detección de etiquetas erróneas - Duplicados y casi duplicados - Balanceo y muestreo ponderado **Práctica — Política de aumentación medida** Diseño y evaluación de tres políticas de aumentación sobre el mismo modelo, con medición del rendimiento del cargador de datos. 1. Perfilar el cargador e identificar el cuello de botella. 2. Definir tres políticas de aumentación de intensidad creciente. 3. Entrenar con presupuesto idéntico y comparar en validación. 4. Recomendar la política y justificarla por el dominio. - *Stack:* PyTorch, torchvision, albumentations - *Entregable:* Informe con la política elegida y el rendimiento del flujo de datos. **Lecturas** - Shorten & Khoshgoftaar, A Survey on Image Data Augmentation (paper) *Materiales:* `teoria/M4_S06_Preparacion_y_aumentacion_de_datos_de_imagen.html` · `code/M4_S06_Preparacion_y_aumentacion_de_datos_de_imagen.ipynb` --- ### Sesión 07 — Detección de objetos y segmentación **Objetivos** - Distinguir clasificación, detección y segmentación y su coste de etiquetado. - Entrenar un detector sobre un conjunto propio. - Evaluar correctamente con métricas específicas de detección. **Contenidos** - **Formulación de las tareas** - Detección: cajas, clases y confianza - Segmentación semántica, de instancias y panóptica - Formatos de anotación COCO, YOLO y máscaras - Coste de etiquetado por tipo de tarea - **Familias de modelos** - Detectores de una etapa y de dos etapas - Familia YOLO y su ciclo de versiones - Detectores basados en transformadores - Modelos de segmentación promptable y anotación asistida - **Evaluación** - Intersección sobre unión y umbrales - Precisión media y precisión media promediada - Supresión de no máximos y su efecto - Errores típicos: objetos pequeños, oclusión y solapamiento **Práctica — Detector entrenado sobre un conjunto propio** Ciclo completo de anotación asistida, entrenamiento y evaluación de un detector sobre imágenes de un caso real. 1. Anotar un lote reducido con asistencia de un modelo de segmentación. 2. Convertir las anotaciones al formato requerido y verificarlas. 3. Entrenar el detector con pesos preentrenados. 4. Evaluar con precisión media promediada y analizar los fallos por tamaño de objeto. - *Stack:* Ultralytics, PyTorch, COCO tools - *Entregable:* Detector entrenado con informe de evaluación y análisis de fallos. **Lecturas** - Redmon et al., You Only Look Once (paper) *Materiales:* `teoria/M4_S07_Deteccion_de_objetos_y_segmentacion.html` · `code/M4_S07_Deteccion_de_objetos_y_segmentacion.ipynb` --- ### Sesión 08 — Vision Transformers y modelos multimodales **Objetivos** - Explicar la aplicación de la atención a imágenes. - Comparar transformadores de visión con redes convolucionales. - Aplicar modelos multimodales de imagen y texto a tareas de negocio. **Contenidos** - **Transformadores de visión** - División en parches y codificación posicional - Atención propia y coste cuadrático con la resolución - Necesidad de datos y preentrenamiento a gran escala - Arquitecturas híbridas de convolución y atención - **Aprendizaje contrastivo imagen-texto** - Espacio compartido de representaciones - Clasificación sin ejemplos mediante descripciones textuales - Búsqueda de imágenes por consulta en lenguaje natural - Limitaciones y sesgos heredados del preentrenamiento - **Modelos multimodales generativos** - Modelos de lenguaje con entrada visual - Extracción de información de documentos y facturas - Descripción de imagen y respuesta a preguntas visuales - Coste por imagen y latencia frente a un modelo especializado **Práctica — Buscador visual y extracción documental** Construcción de un buscador de imágenes por texto con representaciones contrastivas y comparación con un modelo multimodal generativo en extracción de campos. 1. Calcular representaciones del catálogo de imágenes. 2. Implementar la búsqueda por consulta en lenguaje natural. 3. Extraer campos de veinte documentos con un modelo multimodal. 4. Comparar exactitud, latencia y coste frente a la alternativa especializada. - *Stack:* PyTorch, transformers, CLIP, API multimodal - *Entregable:* Cuaderno con el buscador funcional y la comparación de coste y exactitud. **Lecturas** - Dosovitskiy et al., An Image is Worth 16x16 Words (paper) - Radford et al., Learning Transferable Visual Models from Natural Language Supervision (paper) *Materiales:* `teoria/M4_S08_Vision_Transformers_y_modelos_multimodales.html` · `code/M4_S08_Vision_Transformers_y_modelos_multimodales.ipynb` --- ### Sesión 09 — Audio y series temporales con redes profundas **Objetivos** - Preparar señales de audio para su tratamiento con redes neuronales. - Aplicar arquitecturas convolucionales y de atención a audio. - Evaluar sistemas de transcripción y clasificación acústica. **Contenidos** - **Representación de la señal** - Muestreo, cuantización y duración de ventana - Espectrograma y espectrograma de mel - Normalización y tratamiento del ruido de fondo - Aumentación específica de audio y enmascaramiento espectral - **Modelos para audio** - Clasificación acústica con redes convolucionales sobre espectrogramas - Modelos de transcripción automática y su ajuste - Detección de eventos y segmentación temporal - Representaciones autosupervisadas de voz - **Evaluación** - Tasa de error de palabra y sus limitaciones - Métricas de clasificación por evento y por segmento - Robustez ante ruido, acento y canal - Coste de inferencia por hora de audio **Práctica — Transcripción y clasificación de audio de atención al cliente** Transcripción de un lote de llamadas y clasificación acústica de eventos, con medición de la tasa de error y del coste por hora procesada. 1. Convertir el audio y generar espectrogramas de mel. 2. Transcribir el lote con un modelo preentrenado y medir la tasa de error de palabra. 3. Entrenar un clasificador de eventos sobre los espectrogramas. 4. Estimar el coste por hora de audio en dos configuraciones de hardware. - *Stack:* PyTorch, torchaudio, librosa, Whisper - *Entregable:* Cuaderno con transcripciones evaluadas, clasificador entrenado y estimación de coste. **Lecturas** - Radford et al., Robust Speech Recognition via Large-Scale Weak Supervision (paper) *Materiales:* `teoria/M4_S09_Audio_y_series_temporales_con_redes_profundas.html` · `code/M4_S09_Audio_y_series_temporales_con_redes_profundas.ipynb` --- ### Sesión 10 — Coste, recursos y optimización de la inferencia **Objetivos** - Estimar el coste de entrenamiento e inferencia de un modelo profundo. - Aplicar técnicas de optimización que reduzcan latencia y memoria. - Decidir el hardware adecuado para un requisito de servicio dado. **Contenidos** - **Recursos de cómputo** - Memoria de GPU: parámetros, activaciones y estados del optimizador - Acumulación de gradientes y puntos de control de activaciones - Entrenamiento distribuido en varios dispositivos - Coste por hora de GPU y alternativas de mercado - **Optimización del modelo** - Cuantización a ocho y a cuatro bits - Poda y destilación de conocimiento - Exportación a ONNX y motores de inferencia optimizados - Compilación y fusión de operaciones - **Servicio eficiente** - Agrupación de peticiones y latencia frente a rendimiento - Inferencia en CPU, en GPU y en el dispositivo - Presupuesto de latencia extremo a extremo - Punto de equilibrio entre precisión perdida y coste ahorrado **Práctica — Optimización del modelo del proyecto** Reducción de la latencia y la memoria del modelo entrenado mediante cuantización y exportación, midiendo la pérdida de precisión asociada. 1. Medir la latencia y la memoria de la línea base. 2. Exportar el modelo y aplicar cuantización. 3. Medir la precisión perdida y la ganancia obtenida. 4. Recomendar la configuración de despliegue con su coste mensual. - *Stack:* PyTorch, ONNX Runtime, TensorRT - *Entregable:* Informe de optimización con latencia, precisión y coste comparados. **Lecturas** - Documentación de ONNX Runtime: cuantización y optimización de grafos *Materiales:* `teoria/M4_S10_Coste_recursos_y_optimizacion_de_la_inferencia.html` · `code/M4_S10_Coste_recursos_y_optimizacion_de_la_inferencia.ipynb` --- ### Sesión 11 — Taller integrador: sistema de visión artificial completo **Objetivos** - Integrar preparación de datos, entrenamiento, evaluación y optimización en un entregable único. - Someter el sistema a crítica estructurada entre pares. - Dejar el modelo listo para su despliegue en el Módulo 6. **Contenidos** - **Contenido del entregable** - Conjunto documentado con su protocolo de etiquetado - Modelo entrenado con su historial de experimentos - Evaluación por clase y análisis de errores - Configuración de inferencia optimizada y su coste - **Revisión entre pares** - Verificación de la ausencia de fuga entre particiones - Comprobación de la reproducibilidad del entrenamiento - Cuestionamiento de la métrica elegida - Registro de las objeciones recibidas - **Cierre** - Empaquetado del modelo para el Módulo 6 - Limitaciones conocidas y condiciones de uso - Plan de mejora con dato adicional **Práctica — Revisión cruzada del sistema de visión** Cada alumno presenta su sistema completo y otro compañero intenta reproducir el entrenamiento y refutar la evaluación. 1. Entregar código, conjunto y memoria técnica. 2. Reproducir el entrenamiento de un compañero. 3. Auditar la evaluación en busca de fuga o sobreestimación. 4. Corregir los dos puntos más débiles y volver a entregar. - *Stack:* Entorno del máster con GPU - *Entregable:* Sistema de visión reproducido y validado por un tercero. *Materiales:* `teoria/M4_S11_Taller_integrador_sistema_de_vision_artificial_c.html` · `code/M4_S11_Taller_integrador_sistema_de_vision_artificial_c.ipynb` --- ### Sesión 12 — Evaluación del módulo y defensa **Objetivos** - Defender oralmente las decisiones de arquitectura y entrenamiento. - Demostrar competencia práctica en deep learning aplicado. - Cerrar el módulo con el modelo listo para el siguiente. **Contenidos** - **Prueba práctica** - Diagnóstico de un entrenamiento que no converge - Elección justificada de una estrategia de transfer learning - Lectura de una matriz de confusión y de una curva de precisión media - **Defensa** - Presentación de siete minutos - Preguntas del tribunal docente sobre coste y evaluación - Criterios de la rúbrica - **Cierre y transición** - Devolución individual - Errores comunes detectados en el grupo - Preparación del Módulo 5 **Práctica — Prueba práctica y defensa** Evaluación sumativa del módulo. 1. Resolver la prueba práctica. 2. Defender el sistema de visión artificial. 3. Recibir devolución. - *Stack:* Entorno del máster - *Entregable:* Prueba resuelta y defensa realizada. *Materiales:* `teoria/M4_S12_Evaluacion_del_modulo_y_defensa.html` · `code/M4_S12_Evaluacion_del_modulo_y_defensa.ipynb` ---