Aprendizaje Profundo para Visión Artificial
Diagrama semanal
-
Aprendizaje Profundo para Visión Artificial
¡Bienvenidos al curso!
Descripción
En los últimos años, el aprendizaje profundo (deep learning) se ha convertido en una herramienta fundamental en el aprendizaje de máquinas para una amplia variedad de dominios y aplicaciones. Uno de sus mayores éxitos ha sido su aplicación a la visión artificial, donde el desempeño en problemas como el reconocimiento de objetos y acciones ha permitido importantes mejoras en la última década.
El aprendizaje profundo es una técnica que emplea redes neuronales para aprender representaciones a partir de una serie de datos observados, que puedan ser de utilidad para resolver problemas de alto nivel como ser predicción, restauración o clasificación de señales. Dichas representaciones se denominan profundas por estar construidas a partir de una jerarquía compuesta de sucesivas capas que representan las observaciones con un nivel creciente de abstracción. El aprendizaje profundo pretende descubrir las propiedades intrínsecas de grandes volúmenes de datos construyendo representaciones distribuidas, tanto en contextos supervisados como no supervisados.
Este curso brinda una introducción al aprendizaje profundo con un enfoque práctico en la visión artificial. El objetivo principal es presentar a los estudiantes los principales aspectos de modelado, algorítmicos y de optimización de forma de que ellos mismos puedan implementar (diseñar, entrenar y validar) sus propios modelos. Se presentarán modelos simples basados en redes convolucionales que permiten explicar matemáticamente algunas de las propiedades claves para su éxito. Todos los conceptos serán ilustrados con aplicaciones específicas en los campos de visión artificial y procesamiento de imágenes.
Comienzo
ATENCIÓN: este curso no se dictará en 2022. La próxima edición tendrá lugar en el segundo semestre de 2023. Por alternativas para el segundo semestre 2022, ver [cursos DPS]. Otro curso que puede ser de interés es el curso de Aprendizaje Automático para Datos en Grafos: https://eva.fing.edu.uy/course/view.php?name=aagrafos.Habilitación
El curso está habilitado sólo como curso de posgrado y actualización, no está habilitado para grado (por alternativas ver: [cursos DPS]).
Inscripciones
Las inscripciones están disponibles según la modalidad y sujetas a criterio:
- Criterio (Entrega de documentación en link de la siguiente sección).
- Inscripción Posgrado: pueden inscribirse gratuitamente.
- Inscripción Actualización: en esta modalidad deberán abonar la matrícula o pedir una beca.
Temario
Evaluación
La evaluación consiste en:
1) La entrega de tres obligatorios con ejercicios de máquina y preguntas teóricas.
2) Control Final: una prueba escrita al final del curso para validar conocimientos conceptuales (Vía Zoom).
3) El estudio de un trabajo publicado recientemente y presentación oral de un resumen del mismo.
Conocimientos:
Exigidos:
- Cálculo diferencial e integral
- Álgebra Lineal
- Probabilidad y estadística
- Programación (conocimientos sólidos en al menos un lenguaje de programación).
Recomendados:
- Familiaridad con conceptos básicos de reconocimiento de patrones, procesamiento de imágenes, optimización
- Programación en lenguaje Python.
Horario de clase
Martes y Jueves de 8:30 a 10:30 AM (via Zoom). Clases de consulta a definir.
https://salavirtual-udelar.zoom.us/j/2165307614?pwd=c1EvSnlUUFg0TDlKUDVRd3lKOG01Zz09
Meeting ID: 216 530 7614
Passcode: pwd-AB2021
Créditos
10 créditos.
Fichas
Materiales
- Notas de Curso - cs231n Stanford
- Python Numpy Tutorial Stanford cs231n.
- NumPy for MATLAB users.
- The Matrix Cookbook
- Notas cálculo vectorial/matricial [pdf]
- Deep Learning, Goodfellow-Bengio-Courville, An MIT Press Book
Calendario
1 Introducción al aprendizaje profundo, motivación, reseña histórica. Mar, Sep 21 2 Aprendizaje supervisado, regla del k-vecino más cercano.
Publicación Obligatorio 1.Jue, Sep 23 3 Perceptrón - SVM. Mar, Sep 28 4 Introducción a las redes neuronales. Jue, Sep 30 5 Algoritmo de backpropagation. Mar, Oct 05 6 Redes de convolución. Jue, Oct 07 7 Capacidad/sobreajuste/regularización.
Entrega Obligatorio 1 / Publicación Obligatorio 2.Mar, Oct 12 8 Entrenamiento estocástico, SGD y variantes. Jue, Oct 14 9 Entrenamiento "tips", batchnorm, hiperparámetros, Transfer Learning. Mar, Oct 19 10 Bibliotecas / Hardware. Jue, Oct 21 11 Arquitecturas. Mar, Oct 26 12 Detección de objetos / segmentación. Jue, Oct 28 13 Visualización / Análisis de redes / Deepdream / Ataques adversarios. Jue, Nov 04 14 Redes recurrentes (RNN - LSTM).
Entrega Obligatorio 2 / Publicación Obligatorio 3.Mar, Nov 09 15 Transformers. Jue, Nov 11 16 Modelos Generativos - Pixel CNN, Pixel RNN, Normalizing Flows, autoencoders. Variational autoencoders - GAN (I). Mar, Nov 16 17 Modelos Generativos - Pixel CNN, Pixel RNN, Normalizing Flows, autoencoders. Variational autoencoders - GAN (II). Jue, Nov 18 18 Generalización / Aprendizaje profundo Bayesiano. Mar, Nov 23 19 Deep reinforcement learning. Jue, Nov 25 20 Charla invitada. Mar, Nov 30 E Entrega Obligatorio 3. Jue, Dic 02 P Control Final (sin material, conceptual). Mar, Dic 07 P Presentación del Trabajo Final (15 min x estudiante) Mar, Dic 14
-
Foro
-
Cuestionario
-
Enviar retroalimentación
-
Recurso
-
-
Clase 1
- Introducción a la visión artificial y reseña histórica
- Aprendizaje automático (dataset, aproximar funciones, curse of dim)
- Intro. al aprendizaje profundo, motivación y reseña histórica
- Presentación curso, evaluación, docentes
-
Clase 2
- Introducción al problema de clasificación
- Un ejemplo: clasificador por k− vecinos más cercanos
- Clasificador óptimo (Bayes)
- (Breve) tutorial de imágenes
- Presentación Entregable 1
-
Entregable
-
Tarea
-
-
-
Clase 3
- Clasificación Lineal - Perceptrón
- Support Vector Machine (SVM)
- Regresión Logística
- Optimización - Descenso por gradiente
-
Clase 4
- Modelos lineales, generalización
- Redes Neuronales
- Neuronas artificiales
- Teorema aproximación universal
- Desafíos en Aprendizaje Profundo
- Modelos lineales, generalización
-
Recurso
-
-
-
Clase 5
- Algoritmo de Backpropagation
- Algoritmo de Backpropagation
-
Recurso
-
Clase 6
- Redes Fully Connected (Repaso)
- Filtrado - Convolución - (Repaso)
- Capa Convolución
- Capa Pooling
- Ejemplos de CNNs
- Aplicaciones
-
-
-
Clase 7
- Redes Neuronales: Regularización
-
Recurso
-
Entregable
-
Tarea
-
Clase 8
- Descenso por Gradiente Estocástico (SGD)
- SGD+Momentum / SGD Nesterov
- AdaGrad / RMSProp / ADAM
- Learning rate decay
- Optimización por métodos de segundo orden
-
-
-
Clase 9
- Funciones de Activación: Entrenamiento
- Preprocesamiento de datos
- Inicialización de parámetros de red (pesos)
- Batch Normalization y variantes
- Hiperparámetros: ¿cómo fijarlos?
- Monitoreo del proceso de aprendizaje
-
Recurso
-
Clase 10
- Hardware: CPU vs GPU vs TPU
- Librerías
- PyTorch
- TensorFlow
-
Recurso
-
-
-
Clase 11
- LeNet
- AlexNet
- VGG
- GoogLeNet
- ResNet
- DenseNet
- Otras Redes (WideNets, ResNeXt, Stochastic Depth, ...)
- Neural Architecture Search
-
Recurso
-
Clase 12
- Clasificación de objetos
- Segmentación Semántica
- Clasificación + Localización
- Detección de Objetos
- Segmentación de Instancias
- Presentación del Trabajo Final
-
-
-
Clase 13
- ¿Qué aprenden las redes neuronales de convolución?
- Saliency Maps, visualización de clases/features
- Ataques Adversarios
-
Recurso
-
-
-
Clase 14
- Redes Neuronales Recurrentes
- Backpropagation Through Time
- Image Captioning
- Redes LSTM
-
Recurso
-
Entregable
-
Tarea
-
Clase 15
- Modelado de secuencias
- Mecanismo de Attention
- Arquitectura Transformer para PLN
- Otros modelos de lenguaje
-
Recurso
-
URL
-
-
-
Clase 16
- Modelos Generativos
- Modelos Autoregresivos (PixelRNN/PixelCNN)
- Normalizing Flows
- Variational Autoencoders
-
Recurso
-
Clase 17
- Modelos generativos
- GANs
- Wasserstein GAN
- Aplicaciones
-
Recurso
-
-
-
Clase 18
- Síntesis de Textura / Transferencia de Estilo
- Transfer Learning
- Aprendizaje Profundo Bayesiano
-
Recurso
-
Clase 19
- Aprendizaje Profundo por Refuerzo
- Deep Q-Learning
- Deep Policy Gradient
-
Recurso
-
-
El trabajo final de la asignatura consistirá en la profundización de un tema dado. La evaluación será en base a una presentación oral del tema elegido.
Fecha: 14/12/21.
La hora a la que le tocará presentar a cada estudiante se definirá la semana previa.
El tema deberá ser seleccionado de la lista de artículos que aparece más abajo.
El trabajo final individual consistirá en un estudio detallado del artículo elegido. El estudiante deberá realizar una presentación oral de 10 minutos + 2 a 5 minutos de preguntas.
A modo de guía puede ser útil intentar responder las siguientes preguntas:
1. ¿Qué problema pretende resolver?
2. ¿Qué solución se propone?
3. ¿Qué es lo novedoso de la solución propuesta?
4. ¿Qué hipótesis de funcionamiento asume el método/modelo?
5. ¿Cómo se implementa la solución (conjunto de datos, entrenamiento)?
6. ¿Le encuentra algún aspecto negativo a la solución propuesta?
7. ¿Cómo continuaría el trabajo?
Sugerencias:
- Buscar material más allá del artículo: material suplementario, código, implementaciones disponibles en la web (github).
- Familiarizarse con el problema y con otras técnicas que lo tratan de resolver.
- Intentar hacer un análisis crítico y riguroso. Si tuviera que defender a este artículo ¿cómo lo haría? Idem, si lo tuviera que atacar.
-
Página
-
Módulo de encuesta
Instancia para seleccionar el artículo en el cual se basará su trabajo final.
Fecha límite: 07/12/21
Aquellos que quieran proponer un artículo fuera de la lista, deberán enviar un mail a todos los docentes indicando el nombre o directamente mandando el artículo antes del 30/11/21.