<<

Generación de artes de tapa de discos de metal con StyleGAN2

Benjamín Machín Twitter: @BenjaminMachin UruIT AI Talks 13.5.2021 Modelos generativos Modelos Generativos

● Se intenta aprender una distribución “objetivo” a partir de un conjunto de muestras. ● Ejemplo: ○ Aprender a generar imágenes de gatos a partir de un conjunto de imágenes de gatos. ● Es importante que los resultados sean de buena calidad ○ Que sea “difícil” distinguir entre un ejemplo generado y un ejemplo real ● Es importante que los resultados sean diversos ○ No sirve de nada si nuestro modelo genera un único (o unos pocos) ejemplo de buena calidad Tipos de Modelos Generativos

● Modelos autoregresivos ○ Modelan la probabilidad conjunta de los features de las muestras (los pixeles de una imagen, por ejemplo) ● Normalizing Flows ○ Se intenta modelar distribuciones complejas transformando distribuciones simples. ● Variational Autoencoders (VAEs) ○ Un encoder reduce la entrada a un espacio dimensional pequeño, que luego es transformado por el decoder. ● Generative Adversarial Networks (GANs) ○ Se entrenan dos modelos simultáneamente, que compiten entre sí ● Hay más! This Person Does Not Exist

Fuente: https://thispersondoesnotexist.com/ text2image

Fuente: Generative Adversarial Text to Image Synthesis, Reed et. al. OpenAI Jukebox

Capturas tomadas de https://jukebox.openai.com/ pix2pix

Capturas tomadas de https://affinelayer.com/pixsrv/

Capturas tomadas de https://affinelayer.com/pixsrv/ Edmond de Belamy

● Nuevas formas de hacer arte. ● El retrato de “Edmond de Belamy” fue vendido por USD 432.500.

Fuente: Wikipedia Generative Adversarial Networks Generative Adversarial Networks (GANs)

● Propuestas en 2014 por Ian Goodfellow ● Dos modelos que compiten entre sí: ○ Generador: trata de generar imágenes que parezcan reales ○ Discriminador: trata de distinguir entre las imágenes reales y las generadas ● Es clave que haya un equilibrio durante el entrenamiento.

Fuente: https://developers.google.com/machine-learning/gan/gan_structure Generative Adversarial Networks (GANs)

Fuente: https://developers.google.com/machine-learning/gan/gan_structure Generative Adversarial Networks (GANs)

Fuente: Generative Adversarial Nets, Goodellow et al. StyleGAN

2018: Progressive growing of GANs for 2020: Analyzing and improved quality, Improving the Image stability and variation Quality of StyleGAN

2014: Generative 2019: A Style-Based 2020: Training Adversarial Networks Generator Generative Adversarial Architecture for Networks with Limited Generative Data Adversarial Networks Progressive growing of GANs

Método/arquitectura que mejora el proceso de entrenamiento de GANs, que permite aumentar la resolución, calidad y diversidad de las imágenes generadas.

● CelebA-HQ dataset ○ Mejora de calidad del dataset CelebA ○ 30k imágenes de 1024x1024 ● Progressive growing: ○ Se va aumentando el tamaño de las imágenes generadas durante el entrenamiento: ■ Ayuda con el problema de mode collapse ■ Tiempos de entrenamiento acelerado (6x)

Figura tomada de la presentación del paper “Progressive Growing of GANs for Improved Quality, Stability, and Variation” Karras et al., 2018 - en ICLR2018 StyleGAN

Arquitectura de GAN inspirada en Style Transfer, que permite controlar atributos de alto nivel de las imágenes generadas.

● FFHQ ○ Imagenes descargadas de Flickr ○ 70k imágenes de 1024x1024 con mayor diversidad que CelebA-HQ ● Style based: ○ Se introduce un espacio latente intermedio, que permite controlar características de la imagen generada (los estilos) en diferentes niveles

Figura tomada de “A Style-Based Generator Architecture for Generative Adversarial Networks” Karras et al., 2019 StyleGAN

Figuras tomadas de “A Style-Based Generator Architecture for Generative Adversarial Networks” Karras et al., 2019 StyleGAN2

● Método/arquitectura que mejora aún más la calidad de las imágenes generadas, eliminando artefactos característicos de trabajos anteriores. ● Se mejora el “suavizado” del espacio latente (pequeños movimientos en el espacio latente corresponden a pequeñas variaciones en las imágenes generadas)

Figura tomada de “Analyzing and Improving the Image Quality of StyleGAN” Karras et al., 2020 StyleGAN2

Droplet artifacts

● Introducidos por AdaIN ○ Se rediseña la normalización, moviéndola a los pesos de las convoluciones de manera de que el valor esperado de la salida de cada bloque tenga desviación estándar de 1. ○ Se logra remover los artefactos, y mantener el control de atributos mediante style mixing.

Figura tomada de “Analyzing and Improving the Image Quality of StyleGAN” Karras et al., 2020 StyleGAN2

Proyección de imágenes al espacio latente

● StyleGAN2 permite proyectar imágenes al espacio latente casi a la perfección (mejor que con StyleGAN) ● Se atribuye a la “suavidad” del espacio latente lograda con las nuevas contribuciones

Figura tomada de “Analyzing and Improving the Image Quality of StyleGAN” Karras et al., 2020 StyleGAN2-ADA

● Se propone una estrategia para evitar el overfitting al entrenar con pocas imágenes. ● Logran entrenar modelos con unos pocos miles de imágenes - un orden de magnitud menos que antes! ● Se mejora considerablemente el tiempo de entrenamiento ● Nuevo dataset: MetFaces, con caras de pinturas del Museo Metropolitano de Arte de NY.

Figura tomada de “Analyzing and Improving the Image Quality of StyleGAN” Karras et al., 2020 Artes de tapa en el metal Eliran Kantor - Helloween, Helloween. Maria Sandell - Oceanborn, Nightwish. Eric Philippe - Legendary Tales, Rhapsody. Stan W Decker - Wings of Rage, Rage JP Fournier - The Metal Opera, Avantasia. Stu Williamson - Cruelty And The Beast, . Dimmu Borgir - Melvyn Grant - Fear of the Dark, . Ed Repka -Scream Bloody Gore, Death. Entrenando StyleGAN2-ADA Construcción del dataset

● Listado de bandas y títulos ○ Extracción del sitio DarkLyrics.com utilizando metalparser ● Extracción de tapas: ○ Utilizando coverpy ● Enriquecimiento: ○ Información de subgéneros obtenida en Encyclopaedia Metallum ● Resultado: ○ 16k tapas ○ 5.8k artistas ○ 512px*512px ● Disponible en Kaggle: Metal Albums Artworks Transfer Learning en Google Colab

1. Colab nos brinda acceso a GPU gratuito. 2. Hay scripts de entrenamiento de StyleGAN2 ya disponibles. 3. Transfer Learning utilizando alguno de los modelos pre-entrenados por el equipo de NVIDIA. 4. Tres simples pasos: a. Subir dataset a Google Drive b. Conversión de dataset a TF records c. Entrenar! 5. Métricas costosas. 6. Colab Pro ayuda mucho - ya no está disponible :/ Resultados - Primeras etapas Resultados - Dos días de entrenamiento

Muchas gracias!

Twitter: @BenjaminMachin