Deep Learning para visión
por computadora
Dra. María de la Paz Rico Fdz
Repaso
INTRODUCCIÓN A INTELIGENCIA ARTIFICIAL
SVM CNN
MACHINE LEARNING VS PROGRAMACIÓN CLÁSICA
Machine Learning (aprendizaje automático)
Programación clásica
Campo de estudio que da a las computadoras la
habilidad de aprender sin estar explícitamente
Se programan reglas y los datos son
programadas.
procesados de acuerdo a esas reglas,
Arthur Samuel (1959)
produciendo una salida o respuesta.
En ML, se ingresan los datos y las respuestas
esperadas, siendo la salida las reglas
Datos
Salida (respuesta)
Reglas Programación
Datos
Machine Modelo
Salida Learning
Datos
Modelo Computadora Salida
6
ALCANCE DEL APRENDIZAJE AUTOMÁTICO
VENTAJAS DESVENTAJAS
- Buen funcionamiento con bases de - Dificultad para aprender de grandes bases
datos pequeñas de datos
- Interpretación fácil de resultados - Requieren feature engineering
- Su desarrollo no requiere de - Dificultad para aprender funciones
equipos con grandes capacidades complejas
ALCANCE DEL APRENDIZAJE AUTOMÁTICO
RETOS EN TAREAS DE PERCEPCIÓN
- Reconocer Imágenes
- Lenguaje natural
- Interactuar con el mundo real (exploración, ubicación, reconocimiento)
11
Coordenadas cartesianasCoordenadas polares
Imagen tomada de Blog NVIDIA Developer
SVM CNN
SVM
Historia de Redes Neuronales
15
Biológicamente inspiradas
Evolución
Perceptrón
16
Biológicamente inspiradas
Perceptrón
[4] CS231n: Convolutional Neural Networks for Visual Recognition, Stanford University
Imagen tomada de MIT Introduction to Deep Learning | 6.S191
19
Principio de aprendizaje
Inicialización de pesos
LeCun Uniform, Glorot Uniform (or Xavier
Uniform), y He Uniform algoritmos basados
en seleccionar los valores iniciales desde
una distribución uniforme (LeCun et al.
1998; Glorot and Bengio 2010; He et al.
Feed-Forward 2015).
Networks Tambien están los de distribuciones normal
LeCun Normal, Glorot Normal (or Xavier
Normal), y He Normal initialization.
Imagen tomada de NVIDIA Course Fundamentals of DL in CV
20
Principio de aprendizaje
Función de costo
Gradiente descendente
Feed-Forward
Networks
Imagen tomada de NVIDIA Course Fundamentals of DL in CV
2. Conceptos Generales
Permite estimar una
Forward propagation
Aprendizaje Automático clase.
CNN
La función de costo
(perdida) permite
estimar la diferencia
entre la clase ground
truth y la estimada.
Gradiente descendente
Red de dos capas
Input Hidden Output
Layer Layer Layer Neuronas=5
W=[3*4]+[4*1]=16
b= 5
Los pesos son ajustados
Backward propagation Parámetros=21
durante
backpropagation
2. Conceptos Generales
Aprendizaje Automático
Imagen tomado de NVIDIA Course Fundamentals of DL in CV
Video tomado de NVIDIA Course Fundamentals of DL in CV
Fully connected Network o también conocidas como Multi Layer Perceptron
Una capa completamente conectada
(también llamada FC, capa lineal o
densa) es un conjunto de neuronas
donde cada una recibe una entrada de
cada neurona en la capa anterior.
Para ejemplo, si hay tres neuronas en
una capa densa y cuatro neuronas en la
capa anterior, entonces cada neurona
en la capa densa tiene cuatro entradas,
una de cada neurona en la capa
anterior, para un total de 3 × 4 = 12
(a) Las neuronas coloreadas forman una red totalmente conectada capa. Cada una
conexiones, cada uno con un peso
de las neuronas de esta capa recibe una entrada de cada neurona de la capa
anterior. (b) Símbolo esquemático para una capa completamente conectada. asociado. El sesgo va por neurona.
Parámetros de Fully connected Network
(28*28)*1024+1024
1024*512+512
512*10+10
w=(neuronas de la capa actual c * neuronas de la capa anterior)
b=1*c
Representación de los datos para las redes neuronales
Escalares (tensores 0D).
En general, todos los sistemas de
42 Un tensor que contiene solo un número se
aprendizaje automático actuales llama escalar (o tensor escalar, o tensor de
Vectores (Tensores 1D). Una
utilizan tensores como estructura de dimensión 0, o tensor 0D).
matriz de números se llama
datos básica. vector o tensor 1D. Se dice que
un tensor 1D tiene exactamente
un eje.
Los tensores son fundamentales para Matrices (tensores 2D). Una
el campo, tan fundamentales que matriz de vectores es una matriz o
tensor 2D. Una matriz tiene dos ejes
TensorFlow de Google recibió su
(a menudo denominados filas y
nombre. Tensores 3D y tensores de
columnas).
dimensiones superiores. Si
empaqueta tales matrices en una nueva
¿Qué es un tensor? matriz, obtiene un tensor 3D, que puede
interpretar visualmente como un cubo
En esencia, un tensor es un de números.
contenedor de datos, casi siempre
datos numéricos.
Un video es un tensor de….
Los datos de video son uno de los pocos tipos de
datos del mundo real para los que necesitará
tensores 5D.
Un vídeo puede entenderse como una secuencia
de frames o fotogramas, siendo cada frame una
imagen en color.
Debido a que cada cuadro se puede almacenar
en un tensor 3D (alto, ancho, color_profundidad),
una secuencia de cuadros se puede almacenar en
un tensor 4D (frames, alto, ancho,
color_profundidad) y, por lo tanto, se puede
almacenar un lote de videos diferentes en un
tensor 5D de forma (-muestras, frames, alto,
ancho, color_profundidad).
32
Frameworks
Google brain Universidad de
Montreal
MLP o
Fully Connected
Networks
Deep Learning
Backend
Frameworks - Keras
https://keras.io/
https://towardsdatascience.com/deep-learning-framework-power-scores-2018-23607ddf297a
https://towardsdatascience.com/deep-learning-framework-power-scores-2018-23607ddf297a
Workflow típico de Keras:
Configure
process (loss
Training (IO Define Network Iterate training
function,
Tensors) layers (or model) data by calling fit
optimizar,
metrics)
Hay dos formas de definir un modelo:
• Clase sequential ,solo para pilas lineales de capas, que es la arquitectura de red
más común
• Functional API, para arquitecturas acíclicas lo que le permite construir
arquitecturas completamente arbitrarias.
Deep Learning
Preprocesamiento
• - Vectorización: las entradas y los objetivos deben ser tensores de datos de punto
flotante (o enteros).
• - Normalización de valores: cada característica tiene una desviación estándar de 1
y una media de 0.
• Manejo de missing values.
• Feature engineering.
Frameworks - Keras
Frameworks - Keras
argument to the
first layer
units activation
functions
Deep Learning - Neural Networks
Diseño de una red
1- Definir capas y función de activación
2- Loss function:
- Clasificación: crossentropy (salida es una probabilidad)
- Regresion: mean squared error (MSE)
3- Optimizador
Métricas de evaluación
- clasificación: accuracy.
- regresión: mean absolute error (MAE)
Frameworks - Keras
Método de Rmsprop
optimización
- similar a gradient descent con momentum
- Escala el learning rate por lo que se puede
ir al saddle point más rápido.
evaluate training
and testing
Accuracy (ratio of correct predictions)
TP + TN TP: true positive TN: true negative
TP + TN + FP + FN FP: false positive FN: false negative
Frameworks - Keras
the network itera sobre la
Veces en que se
bdd en mini-batches de n
recorre toda la
samples
base de datos
Funciones de activacion
¿Por qué se necesitan?
Funciones de activacion
El propósito es introducir no linealidad
a las redes y que no colapse la red en
una sola neurona.
Imagen tomada de MIT Introduction to Deep Learning | 6.S191
Imagen tomada de MIT Introduction to Deep Learning | 6.S191
Evitan el colapso a una neurona
Si usamos operaciones no lineales, prevenimos este tipo
de colapso. A veces llamamos a una función de activación
una no linealidad.
Glassner, A. (2021). Deep learning: a visual approach. No Starch Press.
CNN
Notebooks Fully
connected Network
1-4
Convolutional Neural Networks
55
Deep learning
BIG BANG DE MACHINE LEARNING
Imagen tomada de NVIDIA Course Fundamentals of DL in CV
57
3.1 Arquitectura
[1]LeCun, Y., Bottou, L., Bengio, Y., & Haffner, P. (1998). Gradient-based learning applied to document
recognition. Proceedings of the IEEE, 86(11), 2278-2324.
58
3. CNN
Las arquitecturas
ConvNet hacen la
suposición explícita de
que las entradas son Son eficientes de
imágenes. implementar y
reducen la cantidad
de parámetros en la En particular, a diferencia
red. de una red neuronal
normal, las capas de un
ConvNet tienen neuronas
dispuestas en 3
dimensiones: ancho, alto,
profundidad.
IDENTIFICA A FIRULAIS
Deep Learning – Convolution Layers
LeCun Y et al, 4 3 6 | NAT U R E | VO L 5 2 1 | 2 8 M AY 2 0 1 5
CNN
Capa
convolucional
Escuela de Invierno de Robótica 2019-2020
63
CONVOLUTIONAL NEURAL
NETWORKS
En la figura anterior, la entrada es una imagen con canales 3 (RGB), y el filtro también corresponde a
canales 3. Después del cálculo, se obtiene un resultado bidimensional
https://vernlium.github.io/2018/10/15/coursera-deeplearning-ai-c4-week1/
.Si desea que el resultado sea multidimensional, necesita varios filtros, como se
muestra en la siguiente figura:
CNN
Capa Max Capa Fully
Pooling Connected
WWW.CIIIA.XYZ
Imagen tomada de fortune.com
Visualizando una RED CONVOLUCIONAL
68
[3] Zeiler, M. D., & Fergus, R. (2014, September). Visualizing and understanding convolutional networks.
In European conference on computer vision (pp. 818-833). Springer, Cham.
Recurso interesante:
https://distill.pub/2020/grand-tour/
Funciones de
activacion
Una vez que se calcula esto, es fácil aplicar el
descenso del gradiente durante
backpropagation. Hace que sea suave para
descender gradualmente hacia los mínimos.
Elegir la función de activación adecuada depende del problema al que
nos enfrentemos, no existe una función de activación que arroje
resultados perfectos en todos los modelos.
⦁ ReLU es una función de activación ampliamente utilizada y produce mejores
⦁ Las funciones sigmoideas y sus combinaciones generalmente resultados en comparación con Sigmoid y Tanh.
funcionan mejor para las técnicas de clasificación, ej. Clasificación
binaria 0s y 1s.
⦁ Leaky ReLU es una solución para un problema de neuronas muertas durante la
función ReLU en las capas ocultas.
Frameworks - TensorFlow
https://playground.tensorflow.org/
¿Por qué Fracois Chollet sugiere la función sigmoide en la clasificación
multiclase y multilabel?
En la clasificación multiclase y multietiqueta, cada entrada puede
pertenecer a múltiples clases o etiquetas simultáneamente. Por lo
tanto, la salida del modelo también debe poder representar la
distribución de probabilidad sobre todas las posibles clases /
etiquetas.
La función sigmoide se usa comúnmente como la función de
activación para la última capa en modelos de clasificación multiclase
y multietiqueta. La función sigmoide asigna cualquier valor de
entrada a un valor entre 0 y 1, lo que se puede interpretar como la
probabilidad de que la entrada pertenezca a una clase o etiqueta
particular.
El uso de una función sigmoide como la función de activación en la
última capa permite que el modelo produzca probabilidades
independientes para cada clase / etiqueta, lo que es adecuado para
tareas de clasificación multiclase y multietiqueta donde cada entrada
puede pertenecer a múltiples clases / etiquetas.
Por otro lado, la función softmax se utiliza comúnmente en
problemas de clasificación de una sola etiqueta donde cada entrada
solo puede pertenecer a una clase. La función softmax produce una
distribución de probabilidad sobre todas las posibles clases, con la
suma de las probabilidades igual a 1.
¿Por qué Fracois Chollet sugiere la función sigmoide en la clasificación
multiclase y multilabel?
Notebooks 5-6
Transfer Learning
Deep Learning – Pretrained Convnets
• Utilizado con pequeños conjuntos de datos
• Es una red previamente entrenada en un gran conjunto de datos
• La base convolucional se congela antes de compilar y entrenar el modelo (congelada =
evita que los pesos se actualicen durante el entrenamiento)
• Extracción de características: toma la base convolucional de una red preentrenada y
entrena un nuevo clasificador basado en datos nuevos.
• Ajuste fino: descongela algunas de las capas superiores de un modelo base
Adapted from ‘Deep Learning with Python’ by Francois Chollet.
2010
Fei Fei Li y colegas de la
The ImageNet Large Scale
Universidad de Princeton
Visual Recognition
empieza a recolectar
Challenge (ILSVRC)
imágenes para IMAGENET
2007
•
Evalúa algoritmos para detección de objetos y
clasificación de imágenes a gran escala.
• Permite a los investigadores comparar el progreso
en la detección a través de una variedad más amplia
de objetos, aprovechando el costoso esfuerzo de
etiquetado.
• Mide el progreso de la visión por computadora para
la indexación de imágenes a gran escala para su
81
GEAR
NO GEAR
⚫ Notebook 7
⚫ Teachable
https://teachablemachine.withgoogle.com/train/image/1LgoGUtUZ5kAnODINIk2TsEgHxf85reVd
85
86
[3] Canziani, A., Paszke, A., & Culurciello, E. (2016). An analysis of deep neural network models for practical
applications. arXiv preprint arXiv:1605.07678.
VGG Net (Visual Geometry Group)
- 19 layer CNN : 3x3 filters with stride and pad of 1, along with 2x2
maxpooling layers with stride 2.
- worked well on both image classification and localization.
- used ReLU layers after each conv layer and trained with batch
gradient descent.
https://gist.github.com/baraldilorenzo/07d7802847aaad0a35d3
88
RESNET50
89
INCEPTION
Szegedy, C., Liu, W., Jia, Y., Sermanet, P., Reed, S., Anguelov, D., ... & Rabinovich, A. (2015). Going deeper with
convolutions. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 1-9).
90
5.1 Arquitecturas
INCEPTION
22 capas
Szegedy, C., Liu, W., Jia, Y., Sermanet, P., Reed, S., Anguelov, D., ... & Rabinovich, A. (2015). Going deeper with
convolutions. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 1-9).
Top-1 accuracy divided by the
number of parameters. The higher is
this value and the higher is the
efficiency. The plot is reported in
Figure 2(a), where it can be seen
that the models that use their
parameters most efficiently are the
SqueezeNets, ShuffleNet, the
MobileNets and NASNet-A-Mobile.
https://paperswithcode.com/sota/image-classification-on-imagenet
⚫ Notebook 7.1