Redes Neuronales Generativas Adversarias (GANs)

Las Redes Neuronales Generativas Adversarias son una forma nueva de usar deep learning para generar imágenes que parecen reales. También pueden generar otro tipo de datos tales como música. En este artículo vamos a ver qué son los modelos generativos, cómo funcionan y algunos ejemplos recientes.

Las Redes Neuronales Generativas Adversarias también se denominan GANs por sus siglas en inglés (Generative Adversarial Networks). También lo he visto traducido al español como Redes Antagónicas.

¿Cómo funcionan las Redes Generativas Adversarias?

Los modelos generativos están basados en redes neuronales profundas. En los diagramas vamos a utilizar la notación «DL» para indicar Deep Learning, que significa red neuronal profunda. Las redes neuronales reciben datos de entrada y produce resultados como salida.

Las redes neuronales reciben datos de entrada y produce resultados como salida.
Las redes neuronales reciben datos de entrada y produce resultados como salida. «DL» significa Deep Learning.

Los modelos generativos usan 2 redes neuronales profundas. Estas dos redes son adversarias, es decir, «juegan» un juego de suma cero donde lo que una red gana, la otra pierde. Me explico. Voy a explicarlo con el ejemplo de la generación de fotos. Imagínate que queremos generar fotos de caras de personas.

  • La tarea del Discriminador será decir si una cara es auténtica o falsa
  • La tarea del Generador será la de crear fotos de caras que parezcan auténticas
¿Cómo funcionan las Redes Generativas Adversarias?

Para entrenar esta arquitectura de redes neuronales necesitamos tener un conjunto de datos reales. En el ejemplo de las caras de personas, deberemos tener muchas fotos de personas reales. De esta forma, cuando le demos una foto real al discriminador, sabremos que la respuesta correcta es «real». Y cuando le demos una foto creada por el generador, la respuesta correcta es «falso».

Al principio, es muy fácil para el discriminador acertar cuando dice cuáles fotos son reales. Esto es así porque al principio, las fotos creadas por la red neuronal generadora parecen aleatorias. Sin embargo, a medida que el generador mejora, la tarea de la red neuronal discriminadora se vuelve más difícil. Así pues, tanto el generador como el discriminador van mejorando simultáneamente.

El generador crea caras distintas. Las caras son distintas porque la entrada es distinta. Como entrada utilizamos un vector aleatorio (que llamamos Z). Usando otro vector aleatorio, tendremos otra cara … o lo que quiera que estemos generando.

Ejemplo: generando dormitorios

Uno de los primeros ejemplos del uso de modelos generativos es el de la generación de imágenes de dormitorios. Por aquellos entonces (año 2016), las imágenes que se podían generar con GANs tenían poca resolución. Si queréis leer más, la referencia del artículo está aquí.

Imágenes de dormitorios creadas con redes neuronales generativas adversarias

Mejorando la calidad de los modelos generativos

Para mejorar la calidad de los modelos generativos, se usan redes neuronales generativas adversarias progresivas. La clave está en progresivamente ir aumentando la resolución de las imágenes. Al principio, tenemos una arquitectura generador / discriminador que funcionan con imágenes de 4×4 píxeles. Cuando los resultados son lo suficientemente buenos, vamos a por 8×8, luego a 16×16 … y así sucesivamente hasta la calidad de necesitemos. Puedes leer más acerca de los GANs progresivos aquí.

Modelos Generativos Progresivos

Redes Generativas Adversarias Condicionadas

También podemos influenciar el resultado de las imágenes que el generador crea. Para ello, le damos la misma condición tanto al generador como al discriminador. Por ejemplo, le podemos pedir al generador que cree la foto de un bolso a partir de un boceto de un bolso. Esto necesita que tengamos ejemplos de imágenes reales que también vayan bien con estos bocetos.

¿Cómo funcionan las Redes Generativas Adversarias Condicionadas?

Fotos a partir de bocetos

Por ejemplo, la siguiente imagen, sacada de este trabajo, muestra cómo se generan, a partir de bocetos, fotos de carreteras, de edificios y de bolsos. Además se genera un mapa a partir de la imagen de satélite, se convierte una foto de día a de noche y se genera una foto en color a partir de una en blanco y negro.

Ejemplo de Redes Neuronales Adversarias condicionadas

10 Years Challenge

Para los que habéis participado en el 10 years challenge, a lo mejor habéis ayudado con vuestras fotos a mejorar este otro trabajo. En la siguiente imagen puedes ver cómo el modelos generativo crea diferentes versiones de caras condicionadas a la edad que queramos.

caras 10anos

Generación de imágenes a partir de texto

También es posible condicionar a las redes generativas adversarias para que generen imágenes a partir de un texto. Así podremos escribir la descripción de una imágen y el generador creará una imagen compatible con esa descripción. Puedes obtener más información aquí.

redes generativas adversarias condicionadas crean imágenes a partir de textos

Lo último en redes neuronales generativas adversarias

thispersondoesnotexist.com

thispersondoesnotexist.com es una web creada por nvidia que crea caras en alta definición de personas que no existen. Aquí tienes un ejemplo de 3 caras que he obtenido. Te animo a que lo pruebes tú también.

caras en alta definición de thispersondoesnotexist.com

Style GAN

Style GAN permite cambiar estilos tales como la pose, color de pelo, texturas, etc. Pueden elegir cómo lo cambian porque usan una forma muy novedosa de controlar el ruido que usa el generador como entrada. Puedes mirar cómo funciona en detalle en este artículo.

redes generativas adversarias para cambiar el estilo de las caras

Generación de paisajes realistas a partir de bocetos

nvidia nos sorprende una vez más con un prototipo basado en redes neuronales generativas adversarias. Con este prototipo, cualquiera se puede convertir en un pintor profesional, ya que permite generar escenas realistas a partir de bocetos muy simples. Haz click en la imagen para ver el vídeo.

generando paisajes realistas a partir de bocetos simples con GANs

Compresión de caras para video conferencias

Nvidia ha desarrollado una técnica nueva de compresión de vídeo que permite ahorrar ancho de banda al mismo tiempo que mejora la calidad de imagen en videoconferencias.

Compresión de vídeo con IA

Funciona tan bien porque sólo envía alguna que otra foto de la persona que aparece en la imagen. Los cambios faciales al hablar, sonreir, moverse, etc. no se transmiten como imágenes (frames) sino que se transmiten como puntos de referencia (landmarks) de la cara.

Cuando reciben estos puntos de referencia, una red neuronal generativa adversaria los aplica a la imagen de la foto original. El resultado es muy convincente, mejorando la calidad de las videoconferencias y reduciendo los requisitos de ancho de banda.

Compresión de caras para videoconferencias con GANs

Todavía no he tenido oportunidad de probarlo, ya nos contaréis si alguno lo ha probado ya.

No sólo para imágenes

Hasta ahora, todos los ejemplos que hemos vistos de modelos generativos estaban enfocados a imágenes. Pero no tiene por qué ser así. También pueden aplicarse a otros tipos de datos tales como las series temporales o incluso la música. En este trabajo, han usado modelos generativos para generar partituras.

música generada con modelos generativos adversariosResumen

Las redes neuronales generativas adversarias son una forma nueva de combinar dos redes neuronales. El discriminador ayuda al generador a crear cada vez mejores imágenes. Tanto el generador como el discriminador van mejorando simultáneamente hasta que llega un punto que para nosotros, los humanos, las imágenes creadas por el generador nos parecen tan realistas que no podemos distinguirlas de imágenes reales.

Los modelos generativos son muy nuevos en el mundo del aprendizaje profundo. Sin embargo, la velocidad de la investigación en este campo está siendo asombrosa y sus aplicaciones son fascinantes.

Deja un comentario