Esta presentación ha sido compuesta utilizando el motor B6+ del W3C, con scripts y estilos modificados por David Charte. Consulta el código fuente en GitHub.
Décimo Ciclo de Conferencias de Enseñanzas de Postgrado
Máster Universitario en Ingeniería Informática
27 de marzo de 2023
David Charte
<david@deivi.ch>
$$f(x)=A+Bx$$
$$f(x)=A+Bx+Cx^2+Dx^3+Ex^4$$
$$f(x)=A+Bx+Cx^2+Dx^3+Ex^4$$
\(f(x)=A+Bx\) ...ajustando \(A,B\) para mínimo error
\(f(x_1,x_2)=A+Bx_1+Cx_2\) ...ajustando \(A,B,C\) para mínimo error
¿Más variables?
\(\displaystyle f(\textbf{x})=\sum_i w_i\textbf{x}_i\) ...ajustando \(w_i\) para mínimo error
"neurona"
Funciones de activación\(f(\textbf{x})=\sigma''(W''\sigma'(W'\sigma(W\textbf{x})))\) con \(\sigma\) no lineal, p.ej:
Propagar hacia adelante: Computar la salida de la red para unos datos
Funciones de error: Comparar la salida de la red con la deseada
Propagación hacia atrás: Técnica para calcular las derivadas del error respecto de cada parámetro
Descenso del gradiente estocástico: Estrategia para optimizar los parámetros buscando el mínimo error
¿Y si tenemos datos estructurados?
\(W\) es más pequeña que en la capa densa \(\Rightarrow\) mejor rendimiento con menos parámetros
En general, 3 opciones:
Encoder
Decoder
Encoder-decoder
Extraer características a partir de imágenes
Reducir el ancho y alto de los filtros
Operación inversa de la convolución
Recuperar información de pasos previos
VGG-16 para clasificación/detección
DCGAN: deep convolutional generative adversarial network
UNet para segmentación
Python
TensorFlow
Pytorch
# Block 1
x = Conv2D(64, (3, 3), activation="relu", padding="same", name="block1_conv1")(img_input)
x = Conv2D(64, (3, 3), activation="relu", padding="same", name="block1_conv2")(x)
x = MaxPooling2D((2, 2), strides=(2, 2), name="block1_pool")(x)
# Block 2
x = Conv2D(128, (3, 3), activation="relu", padding="same", name="block2_conv1")(x)
x = Conv2D(128, (3, 3), activation="relu", padding="same", name="block2_conv2")(x)
x = MaxPooling2D((2, 2), strides=(2, 2), name="block2_pool")(x)
# Block 3
x = Conv2D(256, (3, 3), activation="relu", padding="same", name="block3_conv1")(x)
x = Conv2D(256, (3, 3), activation="relu", padding="same", name="block3_conv2")(x)
x = Conv2D(256, (3, 3), activation="relu", padding="same", name="block3_conv3")(x)
x = MaxPooling2D((2, 2), strides=(2, 2), name="block3_pool")(x)
# Block 4
x = Conv2D(512, (3, 3), activation="relu", padding="same", name="block4_conv1")(x)
x = Conv2D(512, (3, 3), activation="relu", padding="same", name="block4_conv2")(x)
x = Conv2D(512, (3, 3), activation="relu", padding="same", name="block4_conv3")(x)
x = MaxPooling2D((2, 2), strides=(2, 2), name="block4_pool")(x)
# Block 5
x = Conv2D(512, (3, 3), activation="relu", padding="same", name="block5_conv1")(x)
x = Conv2D(512, (3, 3), activation="relu", padding="same", name="block5_conv2")(x)
x = Conv2D(512, (3, 3), activation="relu", padding="same", name="block5_conv3")(x)
x = MaxPooling2D((2, 2), strides=(2, 2), name="block5_pool")(x)
# Classification block
x = Flatten(name="flatten")(x)
x = Dense(4096, activation="relu", name="fc1")(x)
x = Dense(4096, activation="relu", name="fc2")(x)
x = Dense(classes, activation=classifier_activation, name="predictions")(x)
Tu GPU gaming: Para modelos pequeños
NVIDIA A100: Stable Diffusion se entrenó en una de estas
DGX A100: Tiene 8x NVIDIA A100 (hasta 640 GB VRAM!)
Ámbito industrial
Medicina
Transporte
Redes sociales
COVIDGR Dataset and COVID-SDNet Methodology for Predicting COVID-19 Based on Chest X-Ray Images. S Tabik, A Gomez-Rios, J L Martin-Rodriguez, I Sevillano-Garcia, M Rey-Area, D Charte, E Guirado, J L Suarez, J Luengo, M A Valero-Gonzalez, P Garcia-Villanova, E Olmedo-Sanchez, F Herrera. 10.1109/jbhi.2020.3037127
A tutorial on the segmentation of metallographic images: Taxonomy, new MetalDAM dataset, deep learning-based ensemble model, experimental analysis and challenges. J Luengo, R Moreno, I Sevillano, D Charte, A Peláez-Vegas, M Fernández-Moreno, P Mesejo, F Herrera. 10.1016/j.inffus.2021.09.018
4 tipos de positivo
Recorte y transformación de clases
Usamos GradCAM para identificar regiones que activan cada clase
5 fases del material: matriz, austenita, martensita-austenita, precipitado y defectos
42 imágenes etiquetadas, 164 sin etiquetar
UNet
PixelNet
Feature Pyramid Network
Universal Semi-supervised Segmentation
Artificial Multiview Ensemble
epic photo of a sunset over a cliff, ocean, dolphins, big tree, realistic
aka DreamStudio. Paper: arxiv.org/abs/2303.01494