Generando imágenes a partir de texto usando AttnGAN

Hola Habr! Les presento la traducción del artículo " AttnGAN: texto fino a generación de imágenes con redes adversas generativas atencionales " por Tao Xu, Pengchuan Zhang, Qiuyuan Huang, Han Zhang, Zhe Gan, Xiaolei Huang, Xiaodong He.

En esta publicación, quiero hablar sobre mis experimentos con la arquitectura AttnGAN para generar imágenes a partir de una descripción de texto. Esta arquitectura ya se mencionó en Habré después del lanzamiento del artículo original a principios de 2018, y me interesó la pregunta: ¿qué tan difícil será entrenar a un modelo así?

Descripción de la arquitectura


Para aquellos que no están familiarizados con AttnGAN y el clásico GAN, describiré brevemente la esencia. Classic GAN consta de al menos 2 redes neuronales: un generador y un discriminador. La tarea del generador es generar algunos datos (imágenes, texto, audio, video, etc.) que son "similares" a los datos reales del conjunto de datos. La tarea del discriminador es evaluar los datos generados, un intento de compararlos con los reales y rechazarlos. El resultado rechazado del trabajo del generador lo estimula a generar el mejor resultado para "engañar" al discriminador, que, a su vez, está aprendiendo a reconocer mejor las falsificaciones.

Hay una gran cantidad de modificaciones de GAN, y los autores de AttnGAN abordaron la cuestión de la arquitectura de manera bastante inventiva. El modelo consta de 9 redes neuronales que están finamente sintonizadas para la interacción. Se parece a esto:



Los codificadores de texto e imagen (codificador de texto / imagen) convierten la descripción del texto original y las imágenes reales en algún tipo de representación interna. Característicamente, en este caso, el texto se considera como una secuencia de palabras individuales, cuya presentación se procesa junto con la representación de la imagen, lo que le permite comparar palabras individuales con partes individuales de la imagen. De esta manera, se implementa el mecanismo de atención llamado por los autores del artículo DAMSM.

Fca: crea una representación concisa de la escena general en la imagen, basada en la descripción del texto completo. El valor de C en la salida se concatena con un vector de la distribución normal de Z, que determina la variabilidad de la escena. Esta información es la base para el funcionamiento del generador.

El generador es la red más grande que consta de tres niveles. Cada nivel produce imágenes de resolución creciente, de 64 * 64 a 256 * 256 píxeles, y el resultado del trabajo en cada nivel se ajusta utilizando las redes de atención Fattn, que transportan información sobre la ubicación correcta de los objetos individuales en la escena. Además, los resultados en cada nivel son verificados por tres discriminadores que trabajan por separado que evalúan el realismo de la imagen y su coherencia con la idea general de la escena.

Entrenamiento


Para probar la arquitectura, utilicé el conjunto de datos CUB estándar con fotos y descripciones textuales de aves.

Todo el modelo está entrenado en dos etapas. La primera etapa es la capacitación previa de las redes DAMSM, que consta de un codificador de texto e imagen. Durante esta etapa, como se describió anteriormente, se crea un "mapa de atención" que se ve así:



Como se puede ver en la figura, DAMSM logra capturar con mucha precisión la relación entre las palabras individuales de la descripción del texto y los elementos de la imagen, es especialmente fácil para el modelo reconocer los colores. Debo decir que el sistema no tiene ninguna información adicional sobre qué es "rojo", "amarillo" o "alas", "pico". Solo hay un conjunto de textos e imágenes.

El entrenamiento DAMSM se lleva a cabo sin ningún problema, el tiempo de entrenamiento en este conjunto de datos es de 150-200 eras, lo que corresponde a varias horas en una GPU de alta potencia.

La segunda y principal etapa es entrenar al generador utilizando el modelo DAMSM.
El generador en cada nivel genera una imagen de mayor resolución: se ve así:



El entrenamiento del generador lleva mucho más tiempo y no siempre es tan estable, el tiempo de entrenamiento recomendado en este conjunto de datos es de 300-600 épocas, lo que corresponde a aproximadamente 4-8 días en una GPU de alta potencia.

El problema principal en la capacitación del generador, en mi opinión, es la falta de métricas suficientemente buenas que nos permitan evaluar la calidad de la capacitación de una manera más formal. Estudié varias implementaciones del puntaje Inception, que, en teoría, se posiciona como una métrica universal para tales tareas, pero no me parecieron lo suficientemente convincentes. Si decide entrenar un generador de este tipo, deberá monitorear constantemente el progreso del entrenamiento visualmente, de acuerdo con los resultados intermedios. Sin embargo, esta regla es cierta para tales tareas, el control visual siempre es necesario.

Resultados


Ahora la parte divertida. Usando el modelo entrenado, intentaremos generar imágenes, comenzaremos con oraciones simples:



Probemos con descripciones más complejas:



Todas las descripciones de texto son inventadas, intencionalmente no utilicé frases del conjunto de datos para las pruebas. Por supuesto, no todas estas imágenes se obtuvieron en el primer intento. El modelo está equivocado, los propios autores están hablando de esto. A medida que aumenta el texto descriptivo y los elementos que se mostrarán, se hace cada vez más difícil mantener el realismo de toda la escena. Sin embargo, si desea utilizar algo similar en la producción, por ejemplo, generar imágenes de ciertos objetos para un diseñador, puede entrenar y personalizar el sistema según sus requisitos, lo que puede ser bastante estricto.

Para cada descripción de texto, puede generar muchas opciones de imagen (incluidas las poco realistas), por lo que siempre habrá mucho para elegir.

Detalles técnicos


En este trabajo, utilicé una GPU de baja potencia para la creación de prototipos y un servidor Google Cloud con Tesla K80 instalado durante la fase de entrenamiento.

El código fuente se tomó del repositorio de los autores del artículo y se sometió a una refactorización grave. El sistema fue probado en Python 3.6 con Pytorch 0.4.1

Gracias por su atencion!

Artículo original: AttnGAN: Generación de texto a imagen de grano fino con redes adversas generativas atencionales , 2018 - Tao Xu, Pengchuan Zhang, Qiuyuan Huang, Han Zhang, Zhe Gan, Xiaolei Huang, Xiaodong He.

Source: https://habr.com/ru/post/es424957/


All Articles