GauGAN y la síntesis de imágenes
Rubén Rodríguez Abril
Las capacidades de las que hace gala la IA moderna son cada vez más fascinantes. Puede que uno de los logros más llamativos haya sido la generación de imágenes cuyo realismo rivaliza con el de una fotografía. Veremos en este artículo dos modelos de síntesis de imágenes: pix2pix y GauGAN.
Aunque la creación de figuras por ordenador se remonta prácticamente a los orígenes de la informática, la síntesis de imágenes realistas por medio de redes neuronales artificiales se generalizó tras la creación de las Redes Generativas Adversarias (generative adversarial networks, GANs). Recomendamos echar un vistazo a nuestro trabajo sobre el tema, puesto que lo referenciaremos varias veces en este artículo.
En este tipo de sistemas existen dos redes, la red generadora y la red discriminadora, que compiten entre sí. La primera de ellas crea imágenes a partir de ruido mientras que la segunda debe de distinguir estas imágenes de otras reales. El acierto de una de las redes supone el error (y el incremento de la función de pérdida) de la otra. Las dos redes se entrenan de este modo mutuamente y, si están parametrizadas adecuadamente, terminan por desempeñar su función (en el caso del generador, la creación de imágenes realistas) de una manera bastante efectiva.
En este artículo, vamos a analizar someramente el funcionamiento de dos sistemas relativamente populares: el software pix2pix, que crea gráficos a partir de elementos básicos como bordes dibujados por el usuario, y GauGAN, que genera imágenes realistas a partir de mapas de segmentación.
GAN condicionada
Ambos sistemas reposan sobre el modelo de la una GAN condicionada: la red generadora (o generador) se encarga de crear imágenes a partir de entropía y ruido de fondo, y otra red discriminadora (o discriminador), determina cuál es la posibilidad de que una imagen sea real y además pertenezca a un conjunto de referencia (por ejemplo un conjunto de imágenes de árboles). Ambas redes son adversarias en el sentido de que comparten la misma función de pérdida, que trata de ser minimizada por el generador, pero maximizada por el discriminador.
En el caso de una GAN condicionada, la labor del generador es construir una nueva imagen a partir de ruido, pero con arreglo a los patrones señalados por una imagen auxiliar, del modo señalado en las imágenes de abajo. El discriminador, a su vez, debe de determinar, no sólo si la imagen es real, sino también si la misma se corresponde con la estructura marcada por la imagen auxiliar. La labor de ambas redes está condicionada, pues, por la presencia de estos datos auxiliares.
En cada ronda de entrenamiento la GAN condicionada realiza dos operaciones de forma simultánea: En la primera de ellas, el generador crea una imagen, que es sometida al examen del discriminador. En la segunda, el discriminador es sometido a una imagen real. La función de pérdida en ambos casos es retropropagada.
Operación con la imagen generada
El generador de una GAN condicionada crea una imagen de un delfín G(z,x) a partir de ruido z y una imagen auxiliar x consistente en los bordes deseados. Su objetivo es engañar al discriminador D haciéndole creer que la imagen generada G(z,x) es una imagen real. El discriminador, debe determinar si dicha imagen es real o no, y si se corresponde con la imagen auxiliar. Si ambas condiciones se cumplen, arrojará una salida «verdadero».
Operación con la imagen real
En la segunda de la operaciones el discriminador se ve expuesto a una imagen real del conjunto de referencia y, junto a su imagen auxiliar x. El discriminador deberá calificar como verdadero dicho par de imágenes y, en caso contrario será penalizado.
Esta dinámica de entrenamiento recíproco entre las redes tiene como resultado un generador que elabora imágenes cada vez más realistas, y un discriminador que detecta con una precisión cada vez mayor si las imágenes a las que se exponen son reales o no (más precisamente, si dichas imágenes pertenecen a un conjunto de referencia).
GAN ordinaria
D(G(z)) ó D(y)
GAN condicionada
D(G(z, x),x) ó D(y,x)
Como puede comprobarse en este esquema, en una GAN condicional los datos del conjunto de referencia vienen estructurados en parejas: el primer miembro (x) es la imagen auxiliar y el segundo miembro (y) la imagen real. La imagen auxiliar también se suministra al generador, que a partir de ella y del ruido de fondo z debe generar la nueva imagen G(z,x).
La función de pérdida de la red es modificada, añadiéndole un término L_{1}, que suma las diferencias entre cada píxel de la imagen generada G(x) y el correspondiente de la imagen real y:
Los dos primeros términos de la primera ecuación probablemente sean familiares para el lector que haya leído el artículo de Redes Generativas Adversarias. Representan el valor de la función de pérdida en una GAN ordinaria. El tercer término (L_{1}), que computa lo que divergen los píxeles creados por el generador de su objetivo y, sólo influye en el cálculo del gradiente del generador, por lo que su inclusión no influye en el proceso de entrenamiento del discriminador.
Para calcular la media de la función de pérdida es necesario realizar la suma a lo largo de todo el lote y tras ello dividir el resultado entre el número de lotes m. Tras ello, se calcula el gradiente de esta función de pérdida media en ambas redes, que se retropropaga.
Sistema pix2pix
Generador de pix2pix
Desde el punto de vista de la estructura de la red, el generador del sistema pix2pix tiene una arquitectura en forma de U, a la que ya habíamos hecho referencia en el artículo sobre Segmentación Semántica. En pix2pix, la imagen auxiliar se hace pasar a través de varias capas de convolución, en las que los mapas de características van perdiendo cada vez más resolución hasta llegar al fondo de la red. A partir de entonces, la información vuelve a ascender, y los mapas de convolución van progresivamente acercándose de nuevo en resolución a la imagen original. Cada una de las capas ascendentes está conectada directamente (conexión atajo) con otra capa descendente de su mismo nivel.
Discriminador de pix2pix
Por lo que se refiere al discriminador, con el objetivo de conseguir una mayor precisión gráfica a pequeña escala, los diseñadores del software pix2pix introdujeron un nuevo modelo de red convolucional, patchGAN: en él, la imagen a discriminar es dividida en varias parcelas del mismo tamaño, que son consideradas funcionalmente como independientes entre sí, y sobre cada una de las cuales actúa el discriminador. La función de pérdida total se calcula haciendo la media del resultado (suma total entre el número de parcelas) obtenido en cada una de las parcelas.
Síntesis semántica de imágenes: GauGAN
La Síntesis de Imágenes es el procedimiento exactamente inverso al de Segmentación Semántica: consiste en crear una imagen realista a partir de un mapa ya segmentado. Probablemente, uno de los ejemplos más famosos de síntesis semántica de imágenes es GauGAN, una arquitectura de Red Generativa Adversaria propuesta por un equipo de investigadores del MIT, de NVIDIA y de la Universidad de Berkeley, que es capaz de sintetizar complejas y sugerentes (oníricas incluso) imágenes a partir de simples bocetos creados por el usuario de una app. Estos bocetos son los mapas de segmentación que toma la red para crear imágenes realistas.
Las imágenes de ejemplo han sido realizadas expresamente para este artículo haciendo uso de la herramienta que ofrece la web de NVIDIA. Invitamos al lector ha realizar sus propios intentos visitado este enlace.
Las imágenes de la izquierda corresponden a los mapas de segmentación elaborados por el propio usuario, mientras que las de la derecha son las imágenes generadas por la red GauGAN.
Normalización en GauGAN
Con el objetivo de impedir que los valores de activación de las neuronas, es decir, los valores de los píxeles, oscilen demasiado, en pix2pix las salidas de las capas convolucionales son sometidas a un proceso de normalización por lotes (batch normalization). Este proceso garantiza que la media de los valores de activación sea cero y la varianza de su distribución uno.
En GauGAN, se aplica el sistema SPADE (normalización condicionada), en cuya virtud los valores ya normalizados se hacen pasar además a través de una matriz cuyos coeficientes son funciones del mapa de segmentación.
Los autores del trabajo se percataron de que en las redes convolucionales la normalización a menudo provocaba la pérdida de información semántica. Por ese motivo, en el nuevo sistema SPADE la información procedente del mapa de segmentación semántica se agregaba justo después del procedimiento de normalización por lotes.
En el sistema SPADE, los valores de activación de las neuronas de una capa de convolución son sometidos a un proceso de normalización por lotes. Después son multiplicados, elemento a elemento (producto de Hadamard), por la matriz γ, y tras ello se les suma la matriz β. Estas dos matrices son obtenidas a su vez, mediante dos procesos de convolución, del mapa de segmentación semántica elaborado por el usuario.
Estructura de la GauGAN
En GauGAN no se utiliza una arquitectura en forma de U, sino un generador estándar, que a partir de un espacio latente de ruido crea una imagen por medio de la aplicación sucesiva de procesos de convolución, incrementos de resolución (upsampling) y normalización condicionada.
En una arquitectura con forma de U (por ejemplo, en pix2pix), la información procedente del mapa de segmentación entraría en la red en el inicio de la rama descendiente, avanzaría hasta el fondo de la red, allí se combinaría con el ruido de fondo (espacio latente), y de nuevo subiría hacia la salida, incorporando rasgos gráficos de cada vez más bajo nivel a cada capa de convolución. GauGAN no tiene una arquitectura en forma de U, sino que es un generador clásico que transforma ruido en una imagen, y en el que la información semántica se va incorporando lateralmente por medio de un proceso de normalización, justo tras el fin de cada capa de convolución.
Los experimentos realizados por Taesung Park et al. sobre imágenes procedentes de gigantescas bases de datos como COCO-Stuff, ADE20K o Cityscapes superaron a los de otros métodos del actual estado de la técnica (julio de 2019), y en la actualidad puede decirse que GauGAN constituye uno de los métodos más avanzados .
Lecturas recomendadas
– Isola, P. et al. (2018) Image-to-Image Translation with Conditional Adversarial Networks.
– Park, T. et al. (2019) GauGAN: semantic image synthesis with spatially adaptive normalization.