Archivo del Autor: Daniel Gómez, Alejandro Blas y Daniel Tijeras

Acerca de Daniel Gómez, Alejandro Blas y Daniel Tijeras

Equipo formado por Daniel Gómez, Alejandro Blas y Daniel Tijeras

Uso de GANs para la generación de terrenos realistas

Introducción

En el campo del procesamiento de datos tridimensionales, las Redes Adversarias Generativas (GANs) se han posicionado como una de las tecnologías más prometedoras y transformadoras de los últimos años. Estas redes están marcando un cambio significativo en la forma en que se crea contenido en 3D, especialmente en campos como el desarrollo de juegos y simulaciones realistas.

En este blog, nos sumergiremos en el mundo de la generación de terrenos tridimensionales utilizando GANs, explorando los avances más recientes, las técnicas aplicadas y los desafíos que enfrentamos. Nos enfocaremos en la generación procedimental de terrenos 3D, desde la creación de mapas de altura hasta la síntesis de imágenes de satélite, aprovechando arquitecturas avanzadas como ProGAN, CGAN y StyleGAN para alcanzar resultados de alta calidad y realismo visual.

Además, examinaremos de cerca cómo estas técnicas están siendo aplicadas en diferentes contextos, desde la industria del entretenimiento hasta la planificación urbana y la simulación ambiental. Al hacerlo, esperamos proporcionar una visión general de las posibilidades y los límites actuales en la generación de terrenos 3D mediante el uso de GANs.

Estado del Arte

Como hemos dicho en la introducción, vamos a adentrarnos en las Generative Adversarial Networks (GANs), y para ello, es fundamental entender el contexto y los avances recientes en el campo junto con sus operaciones y las diversas aplicaciones que ofrecen. El punto de inicio del uso de GANs para la generación de terrenos realistas se remonta a los primeros experimentos con GANs en el campo de la informática gráfica. Investigadores como Tero Karras, Samuli Laine y Timo Aila exploraron el potencial de las GANs para sintetizar paisajes naturales y urbanos con una alta fidelidad visual tras la introducción de estas por Ian GoodFellow en 2014. (Karras et al., 2017)

Uno de los desarrollos más notables en este ámbito es la arquitectura ProGAN, la cual ha demostrado una notable eficacia en la generación de terrenos realistas en entornos virtuales. Esta arquitectura, con su enfoque de entrenamiento progresivo, ofrece ventajas significativas sobre otras GANs para la generación de terrenos realistas. Al comenzar con imágenes de baja resolución y aumentar gradualmente la resolución, ProGAN logra un entrenamiento más estable, una mejor calidad de imagen, y una mayor capacidad para capturar detalles finos y texturas complejas. Además, su eficiencia computacional y técnicas de regularización mejoradas permiten generar imágenes de alta resolución de manera más efectiva, lo que es fundamental para aplicaciones prácticas en videojuegos, simulaciones de realidad virtual y visualizaciones geográficas.

Además, la comunidad investigadora ha explorado técnicas de regularización y entrenamiento adversarial más avanzadas para mejorar la calidad y la diversidad de los terrenos generados. La incorporación de mecanismos de atención ha permitido a las GANs enfocarse en características geográficas específicas, generando terrenos más realistas y coherentes, como puede llegar a ser BigGAN. Esta, es una versión escalable y eficiente de las GANs capaz de generar terrenos de alta calidad en una amplia variedad de escenarios geográficos. BigGAN utiliza un enfoque de atención ampliada para capturar detalles finos en los terrenos generados, lo que resulta en una mejora significativa en la calidad visual y la diversidad de los resultados.

Desarrollo

Las GANs, emplean una dinámica dual entre dos redes neuronales: el generador y el discriminador. El generador se encarga de producir datos ficticios que se asemejen a los datos reales, mientras que el discriminador se encarga de distinguir entre las muestras generadas y las auténticas. Ambas redes se entrenan a la vez en un juego competitivo, donde el generador intenta mejorar su capacidad para engañar al discriminador, mientras que este último busca mejorar su habilidad para detectar la falsedad. Este, es un proceso de constante confrontación y evolución, que nos lleva al siguiente nivel en la generación de datos realistas mediante la inteligencia artificial.

En el desarrollo de terrenos tridimensionales para entornos virtuales mediante el uso de GANs, el generador transforma vectores de un espacio latente aleatorio en representaciones realistas de paisajes en 3D. Por otro lado, el discriminador se entrena para diferenciar entre los modelos de terreno sintéticos y los obtenidos a partir de imágenes satelitales reales.

Estas técnicas facilitan la creación de entornos más ricos y variados, adecuados para simulaciones realistas y videojuegos de mundo abierto.

Materiales Usando ProGAN

Para comprender cómo funcionan las GANs y mejorar su entrenamiento, es esencial entender algunos conceptos matemáticos clave. Estos incluyen la optimización de una función de pérdida, como la divergencia de Kullback-Leibler o la pérdida de Wasserstein, que guía la interacción entre el generador y el discriminador.

En la implementación de las GANs, se establecen las arquitecturas de las redes, se elige la función de pérdida y se configuran los hiperparámetros. El objetivo principal es generar imágenes realistas, lo que se logra minimizando la función de pérdida adversarial.

Esta función de pérdida tiene en cuenta la estimación del discriminador sobre la probabilidad de que una instancia de datos real sea real (D(x)), así como la probabilidad de que una instancia falsa generada por el generador sea considerada real (D(G(z))). Se busca maximizar esta función de pérdida por parte del generador, mientras que el discriminador trata de minimizarla, lo que genera una competencia adversarial entre ambos.

En resumen, las GANs se basan en un juego competitivo entre dos redes neuronales, donde el generador intenta engañar al discriminador generando imágenes realistas, y el discriminador intenta distinguir entre imágenes reales y generadas. Este proceso de competencia y aprendizaje mutuo es fundamental para lograr la generación de imágenes de alta calidad.

Ahora presentamos una posible estructura para la implementación de una GAN usando ProGAN para la generación de terrenos realistas:

En esta imagen vemos una implementación básica de las funciones para construir el generador y el discriminador en una Progressive GAN (ProGAN) utilizando TensorFlow y Keras.

La función “build_generator_progan” construye el generador de la ProGAN. Para cada etapa de ProGAN (en este caso solamente para la etapa 4), se agregan las capas necesarias al modelo. En la etapa 4, se utiliza una capa densa seguida de capas de convolución transpuesta para generar una imagen de salida de tamaño 4x4x3 (para imágenes RGB). Luego, se devuelve el modelo construido.

La función “build_discriminator_progan” construye el discriminador de la ProGAN. Al igual que con el generador, se definen las capas del discriminador para cada etapa de ProGAN. En la etapa 4, se utilizan capas convolucionales seguidas de capas de activación LeakyReLU y de Dropout para clasificar la autenticidad de la imagen. Finalmente, se devuelve el modelo construido.

En esta imagen vemos otra parte del codigo de ProGAN en donde primero se definen las dimensiones del espacio latente y la etapa inicial. Luego, se define la función de pérdida adversarial y se compila el discriminador inicial. Posteriormente, se construye el generador y el discriminador iniciales para la etapa inicial de ProGAN. Después, se compila el discriminador ProGAN y se congela durante el entrenamiento del generador. Finalmente, se arma la GAN conectando el generador y el discriminador ProGAN, y se compila la GAN ProGAN.

Pruebas realizadas con ProGAN

Comenzamos generando imágenes con un conjunto de entrenamiento muy reducido (diez imágenes descargadas de distintos terrenos). Como es lógico, al ser una muestra tan reducida, en las imágenes generadas no se observan terrenos como tal, pero nos sirvió para confirmar que nuestro modelo era capaz de generar imágenes dadas unas muestras de entrenamiento. Se muestra el código con el que se cargaron las imágenes y dos salidas, cuyas diferencias se deben a pequeñas modificaciones en el generador y la función de entrenamiento.

Tras esto, decidimos probar con muestras mucho más grandes y representativas. Para la primera, creamos un proyecto en Google Earth Engine y tratamos de acceder a sus muestras.

Concretamente, probamos con la colección LANDSTAT, como se muestra en la imagen.

No obstante, las imágenes generadas aparecían en blanco. Tras investigar y probar con otra colección (Sentinel 2), vimos que el problema ocurría al cargar las imágenes, no en el entrenamiento, pues nos salían en blanco desde el principio. Se muestra la representación matricial.

Por ello, decidimos probar con EuroSAT.

Y, a diferencia de lo que sucedía con Google Earth, sí conseguimos cargar las imágenes.

No obstante, tras pasar las muestras al modelo, las imágenes generadas eran todas grises, lo que sugería un problema en el generador.

Realizando algunos cambios, lo máximo que conseguimos fue que se observara una ligera textura sobre el gris.

La última prueba, consistió en descargar un dataset de un repositorio GitHub.

Y, esta vez sí, logramos que el modelo generase algunas imágenes con cierta similitud con los terrenos. Es cierto que no se observan de forma clara y que en algunas el modelo se observa sobreajustado, pero creemos que si tuviéramos la capacidad de entrenar con un número mayor de muestras y ajustando el número de épocas y el tamaño del batch, podríamos lograr la generación de imágenes de terrenos. Además, vemos que algunas imágenes tienen una apariencia más detallada y definida, mientras que otras parecen más abstractas o ruidosas, lo que también es indicativo de que la consistencia del modelo tiene margen de mejora.

Por otro lado, como aspectos positivos, destacamos la variedad de patrones y colores, que indicaría que el modelo es capaz de producir diversidad en sus salidas, así como de texturas y formas, que indican que el modelo está capturando distintos tipos de características. Concluimos con que para la generación de terrenos realistas necesitamos varios miles de muestras para alcanzar los resultados que se esperarían, en vez de obtener imágenes abstractas de poca resolución.

Materiales Usando BigGAN

Para finalizar, hemos probado a implementar las BigGans, siguiendo el mismo patrón inicial que con las ProGANS.

La primera función construye un generador de imágenes para un modelo GAN utilizando Keras. Por otro lado, la segunda función construye un discriminador que evalúa si una imagen es real o generada. Utiliza Keras para definir un modelo secuencial que empieza con capas convolucionales, las cuales extraen características de la imagen de entrada. Este discriminador, por lo tanto, es responsable de distinguir entre imágenes reales y falsas y es entrenado en conjunto con el generador en un marco de aprendizaje adversarial.
Realizando algunas pruebas con este modelo con las mismas muestras que para ProGAN, no hemos obtenido mejores resultados. Esto puede deberse a la falta de muestras de entrenamiento o a que ProGAN se ajusta mejor a los parámetros de las muestras dadas.

Bibliografía

Anónimo. (2020, 1 junio). Redes Neuronales Generativas Adversarias (GANs). Brain4AI. Recuperado 12 de mayo de 2024, de

Karras, T., Aila, T., Laine, S., & Lehtinen, J. (2017, 27 octubre). Progressive Growing of GANs for Improved Quality, Stability, and Variation. ArXiv.org. Recuperado el 12 de mayo de 2024, de https://arxiv.org/abs/1710.10196

Ward, J. (2021). This Landscape Does not Exist: Generating Realistic Landscape Imagery with StyleGAN2. Medium. Recuperado 27 de abril de 2024, de https://medium.com/geekculture/train-a-gan-and-keep-both-your-kidneys-bcf672e94e81

About

Equipo formado por Daniel Gómez, Alejandro Blas y Daniel Tijeras

Avances en la Generación de Caras Realistas mediante GANs: Mejoras en la Diversidad y el Control de Atributos

Introducción

En el campo del procesamiento avanzado de señales y datos, una de las tecnologías más innovadoras y prometedoras que ha surgido en los últimos años son las Redes Adversarias Generativas, comúnmente conocidas como GANs. Estas redes neuronales han revolucionado la manera en que generamos y procesamos información, abriendo un abanico de posibilidades en campos como la visión por computadora, la generación de contenido creativo y la simulación de datos realistas.

La generación de imágenes realistas de rostros humanos ha sido durante mucho tiempo un desafío en el campo del aprendizaje automático. Sin embargo, gracias a los avances en las GANs, ha surgido una técnica revolucionaria que ha permitido la creación de imágenes faciales sorprendentemente realistas a partir de datos aleatorios. En esta entrada de blog, exploraremos el enfoque específico de la generación de caras mediante GANs, examinando los avances más destacados, las técnicas utilizadas y los desafíos pendientes. Nos centraremos en aspectos clave, como el uso de arquitecturas específicas como StyleGAN, la mejora de la calidad de las imágenes generadas y la manipulación de atributos faciales.

Generación de Caras Realistas mediante GANs

Estado del arte

Antes de sumergirnos en el funcionamiento y las aplicaciones de las GANs, es importante realizar una breve revisión del estado del arte en este campo. Desde su introducción por Ian Goodfellow en 2014, las GANs han captado rápidamente la atención de la comunidad científica y tecnológica. Diversos avances han permitido mejorar la estabilidad y la calidad de las generaciones, así como la capacidad de aprender y representar distribuciones complejas de datos. Estos avances han dado lugar a aplicaciones sorprendentes en áreas como la síntesis de imágenes, el procesamiento de voz y el diseño de fármacos, entre otros. [1]

Una arquitectura que ha destacado es StyleGAN, que permite el control y la manipulación fina de los atributos faciales en las imágenes generadas. Además, la incorporación de técnicas como la normalización por lotes estilizada (Style-based Batch Normalization) y el uso de redes generadoras y discriminadoras de múltiples escalas ha mejorado aún más la calidad y la diversidad de las imágenes generadas. [2]

Desarrollo

Las GANs se basan en un enfoque novedoso que involucra la interacción entre dos redes neuronales: el generador y el discriminador. El generador tiene como objetivo crear muestras sintéticas que se asemejen a las muestras reales, mientras que el discriminador busca distinguir entre las muestras generadas y las reales. Ambas redes se entrenan de manera simultánea, en un proceso de competencia adversarial, donde el generador busca engañar al discriminador y, este último, trata de mejorar su capacidad de discriminación.

Esquema de una GAN básica [12]

En el proceso de generación de caras mediante GANs, el generador mapea un espacio latente de datos aleatorios a imágenes de caras realistas. El discriminador, por su parte, se entrena para distinguir entre imágenes generadas y reales.

El enfoque de StyleGAN ha permitido avances notables en la generación de caras realistas. Al introducir una descomposición de estilo en el generador, se puede controlar de manera más precisa el aspecto de las imágenes generadas, como la edad, el género, la expresión facial y otros atributos específicos. Además, la incorporación de técnicas de normalización por lotes estilizada y la generación en múltiples escalas ha llevado a una mejora significativa en la calidad visual y la diversidad de las imágenes generadas.

Materiales

El uso de derivaciones matemáticas es fundamental para comprender el funcionamiento de las GANs y optimizar su entrenamiento. La minimización de una función de pérdida, como la divergencia de Kullback-Leibler o la pérdida de Wasserstein, permite establecer una dinámica de aprendizaje entre el generador y el discriminador. Estos conceptos matemáticos fundamentales se ven reflejados en el código de implementación de las GANs, que consta de la definición de las arquitecturas de las redes, la elección de la función de pérdida y la configuración de los hiperparámetros.

La generación de imágenes realistas se logra mediante la minimización de la función de pérdida adversarial. La función objetivo se define como:

Función de pérdida adversarial

Donde D(x) es la estimación del discriminador de la probabilidad de que la instancia de datos reales x sea real, Ex es el valor esperado sobre todas las instancias de datos reales, G(z) es la salida del generador cuando se da ruido z, D(G(z)) es la estimación del discriminador de la probabilidad de que una instancia falsa sea real, Ez es el valor esperado sobre todas las entradas aleatorias al generador (en efecto, el valor esperado sobre todas las instancias falsas generadas G(z)). pdata es la distribución real de los datos y p(z) es la distribución de ruido latente. [11]

El generador intenta maximizar esta función de pérdida mientras que el discriminador intenta minimizarla, creando la competencia adversarial.

A continuación, se presenta un ejemplo de estructura de una implementación básica de una GAN para la generación de caras utilizando la biblioteca de Python TensorFlow:

Y, usando la arquitectura StyleGAN:

Discusión de los resultados

La potencia de las GANs se hace evidente al observar los resultados obtenidos en diversos experimentos. Mediante la aplicación de GANs, se ha logrado generar imágenes hiperrealistas, imitar el estilo de artistas famosos, completar imágenes dañadas o faltantes, e incluso simular la evolución de enfermedades en datos médicos.

Se han logrado imágenes faciales altamente realistas, con detalles finos y una calidad visual sorprendente. Además, la capacidad de controlar los atributos faciales ha permitido la creación de imágenes personalizadas y la manipulación de características específicas.

Sin embargo, a pesar de estos avances, aún existen desafíos importantes que deben abordarse en la generación de caras mediante GANs. Uno de estos es lograr una mayor estabilidad en el entrenamiento de los modelos. A veces, las GANs pueden ser difíciles de entrenar y pueden sufrir de problemas como el colapso del modo, donde el generador produce imágenes similares y de baja diversidad. También es fundamental mejorar la interpretabilidad de los modelos y garantizar la ética en la generación de caras, evitando posibles sesgos y discriminación involuntaria. [6]

A continuación, se muestran algunos ejemplos de imágenes generadas utilizando una GAN entrenada para la generación de caras. Estas imágenes demuestran la capacidad de las GANs para producir resultados visualmente atractivos. Además, se pueden proporcionar métricas de evaluación, como el puntaje de Inception (Inception Score), para cuantificar la calidad y la diversidad de las imágenes generadas.

Visualización de la salida del programa de SAYAK en Kaggle [11]

Conclusiones

Las Redes Adversarias Generativas han revolucionado el procesamiento de señales y datos, ofreciendo una poderosa herramienta para la generación y simulación de información compleja. Su capacidad de aprender y representar distribuciones de datos complejas ha permitido avances significativos en campos como la visión por computadora, la creatividad computacional y la generación de contenido realista.

La generación de caras mediante GANs ha alcanzado niveles sorprendentes de realismo y control de atributos faciales. La arquitectura StyleGAN ha sido un avance significativo en este campo, permitiendo una generación más precisa y diversa. Sin embargo, aún existen desafíos a superar, como la estabilidad del entrenamiento y la ética en la generación de imágenes faciales. La investigación continua se centra en mejorar estos aspectos y abrir nuevas posibilidades en la generación de caras.

Los avances en esta área de investigación continúan abriendo nuevas posibilidades en el campo del procesamiento avanzado de señales y datos. A medida que se superan los desafíos restantes, se espera que las GANs sigan evolucionando y proporcionando resultados aún más impresionantes.

Referencias

[1] Goodfellow, I., Pouget-Abadie, J., Mirza, M., Xu, B., Warde-Farley, D., Ozair, S., … & Bengio, Y. (2014). Generative adversarial nets. In Advances in neural information processing systems (pp. 2672-2680). [Enlace]

[2] Karras, T., Laine, S., & Aila, T. (2019). A style-based generator architecture for generative adversarial networks. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 4401-4410). [Enlace]

[3] Karras, T., Aila, T., Laine, S., & Lehtinen, J. (2020). Training generative adversarial networks with limited data. In Proceedings of the IEEE/CVF conference on computer vision and pattern recognition (pp. 5937-5947). [Enlace]

[4] Zhao, S., Liu, Z., & Shen, X. (2021). Learning to Generate Faces: A Survey. arXiv preprint arXiv:2103.01763. [Enlace]

[5] Brock, A., Donahue, J., & Simonyan, K. (2018). Large scale GAN training for high fidelity natural image synthesis. arXiv preprint arXiv:1809.11096. [Enlace]

[6] Brock, A., Donahue, J., & Simonyan, K. (2019). Large scale GAN training for high fidelity natural image synthesis. In International Conference on Learning Representations. [Enlace]

[7] Arjovsky, M., & Bottou, L. (2017). Towards principled methods for training generative adversarial networks. arXiv preprint arXiv:1701.04862. [Enlace]

[8] Zhang, H., Xu, T., Li, H., Zhang, S., Wang, X., Huang, X., & Metaxas, D. N. (2018). Self-attention generative adversarial networks. In International Conference on Machine Learning (pp. 7354-7363). [Enlace]

[9] Huang, X., Li, Y., Poursaeed, O., Hopcroft, J., & Belongie, S. (2017). Stacked generative adversarial networks. In IEEE Conference on Computer Vision and Pattern Recognition (pp. 6487-6495). [Enlace]

[10] Arjovsky, M., Chintala, S., & Bottou, L. (2017). Wasserstein generative adversarial networks. In International conference on machine learning (pp. 214-223). [Enlace]

[11] Kaggle – Fake Faces with DCGANs. [Enlace]

[12] Moodle – Signals and Data Advanced Processing. Part1, Chapter 3: Deep Generative Models. 3.4. Generative Adversarial Networks. [Enlace]

About

Equipo formado por Daniel Gómez, Alejandro Blas y Daniel Tijeras