La revista profesional sobre tecnología y transformación digital
inteligencia-artificial-videojuegos
Inteligencia Artificial para la generación de gráficos en videojuegos

Mario Alfonso Arsuaga

Ingeniero de Telecomunicación con especialidad en imagen y sonido. Investigador en Deep learning en Arquimea Research Center.

Inteligencia Artificial para la generación de gráficos en videojuegos

¿Crear al futuro protagonista de tu videojuego con tan solo describirlo? ¿Cambiar el estilo de algunos de tus escenarios antiguos para que encajen en un nuevo proyecto? ¿Ganar unos cuantos FPS (frames-per-second) mientras sigues jugando en 4K? Pues sí. Para todas estas cosas, la Inteligencia Artificial tiene una solución.

Habitualmente llamamos Inteligencia Artificial (IA) a muchas cosas que poco tienen que ver entre sí. Cuando nos referimos a ‘Inteligencia Artificial’ según la RAE estamos hablando de lo siguiente: “Disciplina científica que se ocupa de crear programas informáticos que ejecutan operaciones comparables a las que realiza la mente humana, como el aprendizaje o el razonamiento lógico”.

En esta definición se refleja claramente el empeño existente por establecer paralelismos entre nuestros propios procesos mentales y los que se desarrollan en la Inteligencia Artificial. Centrándonos en el campo más usual de estudio, cuando hablamos de IA casi siempre nos referimos a aprendizaje máquina o machine learning. Aquí se pretende entrenar a una Inteligencia Artificial para que sea capaz de replicar alguna tarea típicamente humana o para que sea capaz de hacer tareas que escapan a nuestras capacidades.

La mayoría de las noticias relacionadas con Inteligencia Artificial realmente se centran en un subtipo aún más concreto, el aprendizaje profundo o Deep learning, donde el trabajo de aprendizaje se lleva a cabo usando unas herramientas matemáticas conocidas como redes neuronales. Explicar el Deep learning queda fuera del alcance de este artículo, pero la definición de ‘Oxford Languages’ (uno de los diccionarios usados por Google en inglés) me parece sencilla y acertada: “El Deep learning es un tipo de aprendizaje máquina basado en redes neuronales con múltiples capas (profundas) que procesan los datos para extraer características de nivel más alto cuanto más se profundiza”.

GauGAN2 es una herramienta que nos permite crear imágenes fotorrealistas de escenarios naturales en base a diversas entradas

En el caso de este artículo, todos los ejemplos presentados se centran en el aprendizaje profundo, ya que es el campo de estudio que más domino. Particularmente hablaremos de dos ejemplos concretos:

– Generación de escenarios fotorrealistas con GauGAN2
– Superresolución con Nvidia DLSS

Generación de imágenes fotorrealistas
Una parte importante en cualquier videojuego son los escenarios, fondos y, en general, los entornos en los cuales se mueven los personajes. Aunque existen trabajos enfocados en la generación de modelos 3D, por simplicidad, utilizaremos el ejemplo de GauGAN2, una herramienta que nos permite crear imágenes fotorrealistas de escenarios naturales en base a diversas entradas: descripción textual, mapa de segmentación, generación aleatoria…

Pero antes de nada, ¿qué es esto de GauGAN2? Pues bien, se trata de una red neuronal que sigue el esquema tradicionalmente conocido como GAN por sus siglas en inglés Generative Adversarial Network. Lo de ‘red generativa’ seguramente no te extrañe, porque es una red neuronal usada para generar imágenes, pero ¿qué es esto de ‘adversario’?

Dos redes se enfrentan entre sí, una tratando de generar imágenes fotorrealistas y otra que intenta detectar si estas imágenes son reales o falsas

El término adversario se introduce en referencia a la manera en la que estas redes se entrenan de una manera particular: dos redes se enfrentan entre sí, una tratando de generar imágenes fotorrealistas y otra que intenta detectar si estas imágenes son reales o falsas. El proceso de entrenamiento es, en realidad, más complejo que esto, pero es una aproximación suficientemente buena.

GauGAN, en concreto, es un trabajo de Nvidia al que cualquiera de vosotros puede acceder desde el portal http://gaugan.org/gaugan2/. En él podemos utilizar los medios de entrada anteriormente mencionados para crear nuevas imágenes fotorrealistas para nuestro próximo videojuego.

Los ejemplos mostrados se han obtenido jugando con el mapa de segmentación que se muestra al principio y cambiando los estilos de referencia para crear imágenes con una estructura similar pero un contenido diferente. Me gustaría invitaros a todos a jugar con esta herramienta gratuita, ya que es posible generar algunas imágenes realmente increíbles.

Además de generar escenarios, existen un montón de alternativas para generar personajes o assets de videojuegos en diferentes estilos. A mí me gusta particularmente el Pixel Art, así que os dejo una página donde podéis hacer algunas pruebas: https://pixel-me.tokyo/en/

Superresolución
Si sois aficionados a los videojuegos sabréis que, muchas veces, la resolución a la que se muestran las imágenes es uno de los factores que más limitan el rendimiento. Jugar a 4K seguramente se vea increíble, pero la fluidez obtenida seguramente sea inferior a la que tendríamos jugando en 1080P. Dependiendo del juego puede que prefiramos tener más fotogramas por segundo o más resolución, pero ¿y si pudieras generar imágenes a baja resolución y luego reescalarlas usando Deep learning?

Ilustración 1: Diagrama de Venn que ilustra la relación entre Inteligencia Artificial, aprendizaje máquina, aprendizaje profundo y ciencia de datos. Fuente: https://gist.github.com/krajiv26/839ea54316a257c1fef797deb4d13a8b

 

Esta tarea específica es conocida como superresolución, y suele atacarse utilizando redes generativas adversarias, igual que en el caso anterior. ¿Cómo funciona esto? Pues es más sencillo de lo que parece: la red se ha entrenado para aprender a inventar detalles que parecen reales. Esto significa que el famoso ‘zoom mágico’ de CSI, donde utilizaban ‘Inteligencia Artificial’ para ampliar una imagen borrosa y, por arte de magia, obtener los dígitos de una matrícula o la cara de una persona, no funcionaría.

En el caso típico, una red se ha entrenado con imágenes de alta resolución a las que se les reduce la resolución y se les introduce ruido. La red aprenderá a reconstruir la imagen original a partir de su copia de baja calidad creando nuevos píxeles y eliminando el ruido.

No solo la imagen de salida tiene más resolución, sino que también tiene menos ruido y se han eliminado algunos artefactos típicos de los formatos de compresión con pérdidas como JPEG. Si queréis probar por vosotros mismos la superresolución, esta web me ha sido de utilidad en el pasado: https://bigjpg.com/

El papel de los TPU cores
Y ¿por qué funciona esto? Es decir, ¿no se supone que ejecutar una red neuronal es un proceso muy costoso computacionalmente? Pues sí, sí que lo es, pero gracias a una parte específica de las GPUs de Nvidia, los TPU cores, esta tarea es mucho más rápida. Básicamente, algunas de las GPUs de Nvidia se han diseñado específicamente con el objetivo de ejecutar algoritmos como los de superresolución en tiempo real, por lo que estas TPU o Tensor Processing Unit son especialmente rápidas en ejecutar este tipo de algoritmos. Podéis leer más sobre esta tecnología, llamada DLSS por sus siglas en inglés Deep Learning Super Sampling en https://www.nvidia.com/es-es/geforce/technologies/dlss/

Ilustración 2: Arquitectura típica de una GAN. Fuente: https://developers.google.com/machine-learning/gan/gan_structure

 

Gracias a estos tensor cores, podemos renderizar el juego a una resolución más baja, por ejemplo, 1080, lo cual nos daría (para este ejemplo) 60 FPS. Usando DLSS podríamos reescalar estos 1080P a 1440P, conservando esos 60 FPS pero con un nivel de detalle muy superior al que obtendríamos con un reescalado tradicional.

Conclusiones
La Inteligencia Artificial está, claramente, avanzando a pasos agigantados. En el campo de los videojuegos, en concreto, están apareciendo muchos trabajos que, sin estar específicamente pensados para este campo, encajan a la perfección. Hemos visto cómo generar escenarios fotorrealistas para los fondos de un videojuego o avatares Pixel Art a partir de imágenes de referencia. Has aprendido que la superresolución no nos permite reconstruir detalles que no están en la imagen, sino inventar nuevos detalles que ‘den el pego’, y cómo esto te puede ayudar a ganar unos cuantos FPS sin que tu imagen pierda calidad.

Todo esto es muy interesante, pero existen multitud de campos que no hemos cubierto: creación de nuevas vistas de objetos, generación de modelos 3D a partir de imágenes, animaciones creadas a partir de una sola imagen… Las posibilidades son infinitas, y este campo avanza muy deprisa. ¿Quién sabe lo que veremos en los próximos años?

 

 

Comparte