Tópicos de Ingeniería Mecatrónica: 2020-2
- Tema 12a -
Redes Neuronales
Convolucionales (CNN)
Prof. Oscar E. Ramos, Ph.D.
Contenido
1. Introducción
2. Convoluciones
3. Capas de una Red Neuronal Convolucional
4. Ejemplos de Redes Neuronales Convolucionales
5. Algunas Arquitecturas de CNN
6. Transferencia de Aprendizaje
2
Introducción
• Redes Neuronales Convolucionales
- En inglés: “Convolutional Neural Networks” (CNN)
• Se utilizan en Visión Computacional
gato
gato
Clasificación de Objetos Detección de objetos
(en imágenes) (en imágenes)
3
Introducción
• Visión computacional “tradicional”
- Se basa en extracción manual de atributos (features)
- Los atributos se usan para el entrenamiento
extracción de atributos
Entrenamiento
basado en atributos
• Visión computacional “moderna”
- Toda la imagen se usa para el entrenamiento
Entrenamiento
4
Introducción
• Se puede aplicar la imagen directamente como entrada a redes
neuronales densas
=
Neurona
de salida
Imagen de 1M
(1000x1000x3)
3000000x1
5000
(conversión a
neuronas
vector)
• Problemas:
- Tamaño de 𝑊 [1] : 5 000 x 3 000 000 = 15 000 M parámetros
- Demasiados parámetros
- Se pierde la estructura espacial
5
Contenido
1. Introducción
2. Convoluciones
3. Capas de una Red Neuronal Convolucional
4. Ejemplos de Redes Neuronales Convolucionales
5. Algunas Arquitecturas de CNN
6. Transferencia de Aprendizaje
6
Convoluciones
En 2 Dimensiones
• Convolución consiste en:
- Sobreponer un filtro a la imagen, realizar las multiplicaciones término a
término, y sumar el resultado
Pixel de
origen
filtro
(kernel) Pixel
destino
- El filtro “recorre” toda la imagen
7
Convoluciones
En 2 Dimensiones
• Ejemplo de convolución:
Imagen de entrada Imagen de salida
(nH - f +1) x (nW - f +1)
nH x nW
filtro
(kernel)
fxf
Imagen de entrada Imagen de salida
(nH - f +1) x (nW - f +1)
nH x nW
filtro
(kernel)
fxf
https://indoml.com/2018/03/07/student-notes-convolutional-neural-networks-cnn-introduction/ 8
Convoluciones
Efectos
• La convolución genera diferentes “efectos” en la imagen original
• Algunos efectos: suavizado (smoothing), detección de bordes, etc.
• Ejemplo de filtro para detección de bordes
Imagen de salida
filtro
=
*
Imagen de salida
* filtro
Imagen de entrada
=
9
Convoluciones
Convoluciones y Redes Neuronales
• Problema
- Los efectos de los filtros dependen de sus pesos
- Los pesos normalmente son diseñados “a mano” (analíticamente, requiere
experiencia, ingenio)
• Alternativa
- Aprender automáticamente los “pesos” de los filtros usando redes neuronales
w1 w2 w3
w4 w5 w6
w7 w8 w9
10
Convoluciones
Parámetros al Aplicar la Convolución
• Padding
- Consiste en añadir p líneas (con valor cero) a cada borde de la imagen de
entrada (arriba, abajo, derecha, izquierda)
- Busca evitar que el resultado (de la convolución) sea más pequeño (que la
imagen de entrada)
padding de 1
píxel (p = 1)
Imagen de entrada sin
Imagen de entrada con
padding padding de p=1
- Tamaños cuando hay convolución con padding
• Imagen de entrada: nH x nW con p líneas de padding (en cada borde)
• Filtro: f x f
• Imagen de salida: (nH + 2p - f +1) x (nW + 2p - f +1)
11
Convoluciones
Parámetros al Aplicar la Convolución
• Padding
Según el padding que se realiza a la imagen de entrada, se tiene las
siguientes convoluciones:
- Convoluciones válidas (“valid”)
• Se utiliza solamente los datos de la imagen de entrada (datos “válidos”)
• No se aplica padding a la imagen de entrada
• El tamaño se reduce luego de la convolución
- Convoluciones similares (“same”)
• Se busca que la imagen de salida tenga similar tamaño (“same”) que la imagen de
entrada
• Se aplica padding a la imagen de entrada
• El tamaño del padding depende solamente del tamaño del filtro (no de la entrada)
– Filtro de tamaño f x f
– Padding necesario:
12
Convoluciones
Parámetros al Aplicar la Convolución
• Paso (stride)
- Consisten en aplicar el filtro con saltos (strides) de s píxeles
- Ejemplo:
• Convolución con filtro de 3x3 (f = 3) y paso de 2 (s = 2)
- Tamaño del resultado
• Imagen de entrada: nH x nW
• Filtro: f x f, salto s, padding p
• Imagen de salida:
: función “floor” 13
Convoluciones
Convoluciones en Volúmenes
• La convolución se aplica a cada volumen (no canal por canal sino a todos los
canales a la vez)
• La entrada y el filtro deben tener el mismo número de canales (nc)
- Entrada: nH x nW x nc
- Filtro: f x f x nc asumiendo s = 1, p = 0
- Resultado: (nH - f +1) x (nW - f +1)
14
Convoluciones
Convoluciones en Volúmenes
• Filtros múltiples
- Permiten detectar múltiples características (features)
- Las salidas de cada filtro se “apilan” en profundidad: el resultado tiene tantos
canales como filtros
- Tamaños:
• Entrada: nH x nW x nc
• Filtros: f x f , cantidad: nf asumiendo s = 1, p = 0
• Salida: (nH - f + 1) x (nW - f + 1) x nf
Entrada
Salida
15
Convoluciones
Convoluciones en Volúmenes
• Filtros múltiples
- Caso especial: convolución 1 x 1
• El efecto es reducir (mezclar) canales
• Puede reducir cálculos en la red
16
Contenido
1. Introducción
2. Convoluciones
3. Capas de una Red Neuronal Convolucional
4. Ejemplos de Redes Neuronales Convolucionales
5. Algunas Arquitecturas de CNN
6. Transferencia de Aprendizaje
17
Capas de una CNN
1. Capa de Convolución
• Componentes:
- Mapa de activación z (convolución de la entrada con los filtros + bias)
- Funciones de activación g (aplicadas a los mapas de activación)
• Usualmente ReLU (eventualmente tanh)
• Ejemplo
18
Capas de una CNN
1. Capa de Convolución
• Notación para la capa l:
- Entrada: 𝒂[𝑙−1] de tamaño 𝑛𝐻[𝑙−1] × 𝑛𝑊
[𝑙−1] [𝑙−1]
× 𝑛𝑐
- Filtros: tamaño 𝑓 𝑙 × 𝑓 𝑙 × 𝑛𝑐[𝑙−1]
• Padding: p[l], salto (stride): s[l]
[𝑙]
• Cantidad de filtros: 𝑛𝑐
[𝑙] [𝑙] [𝑙]
- Salida (activación): 𝒂[𝑙] de tamaño 𝑛𝐻 × 𝑛𝑊 × 𝑛𝑐
- Parámetros
𝑙 𝑙 [𝑙−1] [𝑙]
• Pesos W[l] de tamaño 𝑓 ×𝑓 × 𝑛𝑐 × 𝑛𝑐
[𝑙]
• Sesgo (bias) b[l] de tamaño 𝑛𝑐
19
Capas de una CNN
1. Capa de Convolución
• Simplificación de la representación:
- De manera simplificada (cuando hay varias capas):
2 filtros
f[1] = 4
s[1] = 1
p[1] = 0 3x3x2
6x6x3
20
Capas de una CNN
2. Capa de Pooling
• Reduce el tamaño de las representaciones (“downsampling”)
- Opera en cada canal de manera independiente
- No introduce ningún nuevo parámetro (no hay que “aprender” nada)
• Tipos más utilizados
- Max Pooling: utiliza el valor máximo de cada conjunto de píxeles
- Average Pooling: utiliza el valor promedio de cada conjunto de píxeles
21
Capas de una CNN
2. Capa de Pooling
• Ejemplo
f=2 f=2
s=2 s=2
Max Pooling Average Pooling
• Tamaños
- Entrada: nH x nW x nc
- Filtro de tamaño f , con salto s (usualmente no hay padding)
- Salida:
• Usualmente: f = 2, s = 2 o f = 3, s = 2
22
Capas de una CNN
3. Capa “Fully Connected”
• Es una capa que se encuentra completamente conectada (como en
redes neuronales ordinarias)
• Se le suele abreviar como FC
23
Contenido
1. Introducción
2. Convoluciones
3. Capas de una Red Neuronal Convolucional
4. Ejemplos de Redes Neuronales Convolucionales
5. Algunas Arquitecturas de CNN
6. Transferencia de Aprendizaje
24
Ejemplos de CNN
• Ejemplo de una red con 3 capas convolucionales
Capa Capa Capa Capa 4:
convolucional 1 convolucional 2 convolucional 3 Salida
Capa de
entrada
25
Ejemplos de CNN
• Red “similar” a LeNet – 5
POOL 1 POOL 2
16 Max 16 Max
filtros Pool filtros Pool
• A medida que se va más adentro en la red:
- El tamaño tiende a decrecer
- La profundidad tiende a incrementarse
• Patrón común: Conv-Pool-Conv-Pool-FC-FC-FC-Softmax
LeCun, Yann, et al. "Gradient-based learning applied to document recognition." (1998) 26
Ejemplos de CNN
• Efectos de la arquitectura de la red
27
Ejemplos de CNN
• Efectos de la arquitectura de la red
R. Gonzalez, Deep Convolutional Neural Networks, IEEE Signal Processing Magazine, 2018 28
Ejemplos de CNN
• AlexNet
Alex Krizhevsky et al. “ImageNet Classification with Deep Convolutional Neural Networks” (2012) 29
Ejemplos de CNN
• VGG-16
K.Simonyan and A.Zisserman. "Very deep convolutional networks for large-scale image recognition." (2014). 30
Frameworks para Deep Learning
31
Contenido
1. Introducción
2. Convoluciones
3. Capas de una Red Neuronal Convolucional
4. Ejemplos de Redes Neuronales Convolucionales
5. Algunas Arquitecturas de CNNs
6. Transferencia del aprendizaje
32
Algunas Arquitecturas de CNNs
ResNets
• Se puede utilizar arquitecturas con varias capas convolucionales
• Problema
- Al incrementar el número de capas convolucionales (“planas”), se llega a un
punto donde en lugar de mejorar, se empeora
- El motivo no es overfitting
33
Algunas Arquitecturas de CNNs
ResNets
• Hipótesis:
- Se trata de un problema de optimización
- Modelos más profundos son más difíciles de optimizar (entrenar)
• Observación:
- Un modelo más profundo debe ser al menos tan bueno como un modelo
menos profundo
- Idea:
“Difícil” “Fácil” hacer F(x)=0 y
aprender y=x aprender y=x
34
Algunas Arquitecturas de CNNs
ResNets
• ResNet: Residual Network (red residual)
• Bloque residual:
- Utiliza la salida (activación) de una capa “inicial” como entrada a una capa
“profunda”
Bloque “residual”
Bloque “plano”
He, K., Zhang, X., Ren, S., & Sun, J. (2016). Deep residual learning for image recognition. In IEEE CCVP 35
Algunas Arquitecturas de CNNs
ResNets
• Arquitectura ResNet
- Usa principalmente filtros de 3x3
- Cada cierto número de capas se reduce el tamaño a la mitad
- Se tiene una capa “fully connected” (usualmente softmax) al final
• Ventajas
- Permite tener redes muy profundas sin empeorar el desempeño
36
Algunas Arquitecturas de CNNs
GoogLeNet: Inception
• Motivación:
- En una red profunda hay varios parámetros para escoger: tamaño de filtro
- En lugar de escoger manualmente el tamaño del filtro, dejar que la red escoja
el tamaño
- Se da varias alternativas y se “espera” que la red escoja la mejor
• Problema:
- Es computacionalmente muy costoso (ejm. filtro 5x5 requiere aprox. 120M operaciones)
37
Algunas Arquitecturas de CNNs
GoogLeNet: Inception
• Solución
- Utilizar convoluciones 1x1 que reducen los cálculos (ejm. filtro 5x5 requiere aprox.
12M de operaciones)
• Estructura de un bloque de “Inception”
- A veces llamado “red en una red”
https://youtu.be/l_dDXhzgsx4?t=34 38
Algunas Arquitecturas de CNNs
GoogLeNet: Inception
• Red Inception
- También llamada GoogLeNet
- Contiene varios bloques “inception” y salidas “auxiliares” (de capas ocultas)
- En total usa 22 capas (evita el uso de varias capas FC)
Bloques inception
Szegedy,C, Liu,W, Jia,Y, Sermanet,P, Reed,S, Anguelov, D & Rabinovich,A. (2014). “Going deeper with convolutions” In IEEE CCVPR 39
Algunas Arquitecturas de CNNs
GoogLeNet: Inception
• Detalle de las capas y los parámetros
40
Algunas Arquitecturas de CNNs
• Comparación
- Inception-v4: Inception+Resnet
- GoogLeNet es una de las más eficientes computacionalmente
Canziani, A., Paszke, A., & Culurciello, E. (2017). An analysis of deep neural network models for practical applications. 41
Algunas Arquitecturas de CNNs
• Otras arquitecturas
- SENet (Squeeze-and-Excitation Network, 2017)
- NiN (Network in Network)
- Wide ResNet (Wide Residual Networks, 2016)
- ResNeXT (Aggregated Residual Transformations for Deep Neura Networks, 2016)
- DenseNet (Densely Connected Convolutional Networks, 2017)
- FractalNet (Ultra-Deep Neural Networks without Residuals, 2017)
- MobileNets (Efficient Convolutional Neural Networks for Mobile Applications, 2017)
• Meta-learning: aprendizaje de arquitecturas de redes
- NASNet (Neural Architecture Search with Reinforcement Learning, 2016)
- AmoebaNet (Regularized Evolution for Image Classifier Architecture Search, 2019)
- ENAS (Efficient Neural Architecture Search, 2018)
• Muchos aspectos de las arquitecturas son actualmente temas de
investigación y mejora
42
Contenido
1. Introducción
2. Convoluciones
3. Capas de una Red Neuronal Convolucional
4. Ejemplos de Redes Neuronales Convolucionales
5. Algunas Arquitecturas de CNNs
6. Transferencia del aprendizaje
43
Transferencia del Aprendizaje
• Problema en CNNs:
- Se requiere muchos datos para entrenar/usar CNNs
- Requiere mucho tiempo de entrenamiento
• Alternativa
- Aprovechar parte de alguna red ya entrenada (es común en la práctica)
- Se conoce como “Transfer Learning”
• Idea
Parte más Parte más
genérica específica
44
Transferencia del Aprendizaje
Red entrenada en Conjunto de Conjunto de
ImageNet entrenamiento pequeño entrenamiento más grande
entrenar
entrenar
mantener fijo (el original, no entrenar)
mantener fijo (el original, no entrenar)
45
Transferencia del Aprendizaje
• Métodos de transferencia de aprendizaje
- Transferencia de atributos
• Remover la última capa “fully connected” y entrenarla
• Usar el resto de la red para extraer atributos de la imagen
- “Fine-tuning”
• Remover la última capa y entrenarla
• Utilizar el resto de la red entrenada como una inicialización y seguir entrenando
toda la red (“fine tuning”)
Transferencia de atributos Fine-tuning
https://developer.ibm.com/articles/transfer-learning-for-deep-learning/ 46