Style Generative Adversarial Network , o StyleGAN para abreviar, es una extensión de la arquitectura GAN presentada por los investigadores de Nvidia en diciembre de 2018, [ 1] y cuyo código fuente está disponible en febrero de 2019. [2] [3]
StyleGAN depende del software CUDA de Nvidia , las GPU y TensorFlow de Google , [4] o PyTorch de Meta AI , que reemplaza a TensorFlow como la biblioteca de implementación oficial en versiones posteriores de StyleGAN. [5] La segunda versión de StyleGAN, llamada StyleGAN2, se publicó el 5 de febrero de 2020. Elimina algunos de los artefactos característicos y mejora la calidad de la imagen. [6] [7] Nvidia presentó StyleGAN3, descrita como una versión "sin alias", el 23 de junio de 2021 y puso el código fuente a disposición el 12 de octubre de 2021. [8]
Un predecesor directo de la serie StyleGAN es el Progressive GAN, publicado en 2017. [9]
En diciembre de 2018, los investigadores de Nvidia distribuyeron una versión preliminar con el software correspondiente que presentaba StyleGAN, una GAN para producir una cantidad ilimitada de retratos (a menudo convincentes) de rostros humanos falsos . StyleGAN podía ejecutarse en los procesadores GPU básicos de Nvidia.
En febrero de 2019, el ingeniero de Uber Phillip Wang utilizó el software para crear el sitio web This Person Does Not Exist , que mostraba una nueva cara en cada recarga de la página web. [10] [11] El propio Wang ha expresado su asombro, dado que los humanos han evolucionado para comprender específicamente los rostros humanos, de que, sin embargo, StyleGAN pueda competitivamente "desmenuzar todas las características relevantes (de los rostros humanos) y recomponerlas de una manera coherente". [12]
En septiembre de 2019, un sitio web llamado Generated Photos publicó 100.000 imágenes como una colección de fotografías de archivo . [13] La colección se realizó utilizando un conjunto de datos privados tomados en un entorno controlado con luz y ángulos similares. [14]
De manera similar, dos profesores de la Escuela de Información de la Universidad de Washington utilizaron StyleGAN para crear ¿Cuál es el rostro real?, que desafiaba a los visitantes a diferenciar entre un rostro falso y uno real uno al lado del otro. [11] El profesorado afirmó que la intención era "educar al público" sobre la existencia de esta tecnología para que pudieran desconfiar de ella, "al igual que finalmente la mayoría de las personas se dieron cuenta de que se puede retocar una imagen con Photoshop". [15]
La segunda versión de StyleGAN, llamada StyleGAN2, se publicó el 5 de febrero de 2020. Elimina algunos de los artefactos característicos y mejora la calidad de la imagen. [6] [7]
En 2021, se lanzó una tercera versión que mejoró la coherencia entre los detalles finos y gruesos del generador. Esta versión, denominada "sin alias", se implementó con pytorch . [16]
En diciembre de 2019, Facebook eliminó una red de cuentas con identidades falsas y mencionó que algunas de ellas habían utilizado fotos de perfil creadas con técnicas de aprendizaje automático. [17]
Progressive GAN [9] es un método para entrenar GAN para la generación de imágenes a gran escala de manera estable, haciendo crecer un generador GAN de pequeña a gran escala de manera piramidal. Al igual que SinGAN, descompone el generador como , y el discriminador como .
Durante el entrenamiento, al principio solo se utilizan en un juego GAN para generar imágenes de 4x4. Luego se van añadiendo hasta llegar a la segunda etapa del juego GAN, para generar imágenes de 8x8, y así sucesivamente, hasta llegar a un juego GAN para generar imágenes de 1024x1024.
Para evitar la discontinuidad entre las etapas del juego GAN, cada nueva capa se "mezcla" (Figura 2 del artículo [9] ). Por ejemplo, así es como comienza el juego GAN de la segunda etapa:
StyleGAN está diseñado como una combinación de GAN progresivo con transferencia de estilo neuronal . [18]
La elección arquitectónica clave de StyleGAN-1 es un mecanismo de crecimiento progresivo, similar a Progressive GAN. Cada imagen generada comienza como una matriz constante [nota 1] y pasa repetidamente por bloques de estilo. Cada bloque de estilo aplica un "vector latente de estilo" a través de una transformación afín ("normalización de instancia adaptativa"), similar a cómo la transferencia de estilo neuronal utiliza la matriz Gramian . Luego agrega ruido y normaliza (resta la media y luego divide por la varianza).
En el momento del entrenamiento, generalmente solo se utiliza un vector latente de estilo por imagen generada, pero a veces se utilizan dos ("regularización de mezcla") para alentar a cada bloque de estilo a realizar su estilización de forma independiente sin esperar ayuda de otros bloques de estilo (ya que podrían recibir un vector latente de estilo completamente diferente).
Después del entrenamiento, se pueden introducir varios vectores latentes de estilo en cada bloque de estilo. Los que se introducen en las capas inferiores controlan los estilos a gran escala y los que se introducen en las capas superiores controlan los estilos de detalle fino.
También se puede realizar una mezcla de estilos entre dos imágenes . Primero, se ejecuta un descenso de gradiente para encontrar tal que . Esto se llama "proyectar una imagen de vuelta al espacio latente de estilo". Luego, se puede alimentar a los bloques de estilo inferiores y a los bloques de estilo superiores para generar una imagen compuesta que tenga el estilo a gran escala de y el estilo de detalle fino de . También se pueden componer varias imágenes de esta manera.
StyleGAN2 mejora StyleGAN de dos maneras.
En primer lugar, aplica el vector latente de estilo para transformar los pesos de la capa de convolución, solucionando así el problema de la "mancha". [19] El problema de la "mancha" en términos generales se debe a que el uso del vector latente de estilo para normalizar la imagen generada destruye información útil. En consecuencia, el generador aprendió a crear una "distracción" mediante una gran mancha, que absorbe la mayor parte del efecto de la normalización (de forma similar a usar bengalas para distraer un misil que busca calor ).
En segundo lugar, utiliza conexiones residuales, lo que ayuda a evitar el fenómeno en el que ciertas características se atascan en intervalos de píxeles. Por ejemplo, la unión entre dos dientes puede atascarse en píxeles divisibles por 32, porque el generador aprendió a generar dientes durante la etapa N-5 y, en consecuencia, solo pudo generar dientes primitivos en esa etapa, antes de aumentar la escala 5 veces (es decir, intervalos de 32).
Esto fue actualizado por StyleGAN2-ADA ("ADA" significa "adaptativo"), [20] que utiliza aumento de datos invertible . También ajusta la cantidad de aumento de datos aplicado comenzando en cero y aumentándolo gradualmente hasta que una "heurística de sobreajuste" alcanza un nivel objetivo, de ahí el nombre "adaptativo".
StyleGAN3 [21] mejora StyleGAN2 al resolver el problema de "pegado de textura", que se puede ver en los videos oficiales. [22] Analizaron el problema mediante el teorema de muestreo de Nyquist-Shannon y argumentaron que las capas en el generador aprendieron a explotar la señal de alta frecuencia en los píxeles sobre los que operan.
Para solucionar esto, propusieron imponer filtros paso bajo estrictos entre las capas de cada generador, de modo que el generador se vea obligado a operar sobre los píxeles de una manera fiel a las señales continuas que representan, en lugar de operar sobre ellos como señales meramente discretas. Además, impusieron invariancia rotacional y traslacional mediante el uso de más filtros de señal . El StyleGAN-3 resultante es capaz de generar imágenes que rotan y se trasladan suavemente y sin que se peguen las texturas.