Blog Personal.

Conceptos Básicos, Deep Learning, Futuro, Inteligencia Artificial

Super Resolucion via IA: Explicación Mundana.

El DLSS es un algoritmo o una serie de algoritmos de mejora de resolución, lo que se les llama algoritmos de super-resolución.

¿Como funcionan? Los algoritmos de Deep Learning lo que hacen es aprender patrones pero dichos patrones los aprenden de manera pasiva, es decir, no se les enseña a hacer algo desde un programa sino que se les da una cantidad ingente de datos y un algoritmo de búsqueda de patrones que le van a permitir luego «soñar» y por tanto imaginarse esos patrones con mayor o menor acierto.

Normalmente para ampliar la resolución se utilizaban mecanismos de interpolación basados en adivinar el valor de calor de los pixeles adyacentes a partir de los ya conocidos pero el resultado obtenido no es exacto a la misma imagen a más resolución. Pero con el Deep Learning lo que se hace es enseñarle al sistema con una ingente cantidad de imagenes/bloques para que pueda aprender al patrón e imaginarse lo que hay alrededor. Obviamente en el periodo de aprendizaje esta el periodo de descarte que compara las imágenes obtenidas en los bloques imaginados con las creadas en la resolución original y descarta las que más se alejan para que el algoritmo sepa también cuando imagina mal las cosas.

Y aquí entramos en una paradoja, la calidad del sueño va a depender de la cantidad de datos de entrada para que aprenda, por ejemplo no podemos hacer que un sistema de Super Resolución via Deep Learning sueñe un juego de 8 o 16 bits a mayor resolución porque la información de color es sumamente baja y el resultado es… ¡yuck!

Pero en cambio, cuanto más colores tenemos en la composición más información y mejor, por ejemplo los viejos fondos pre-renderizados de la era PlayStation escalan perfectamente de resolución.

Obviamente cuanto más información de entrada y mejor sea el sistema de discriminación de resultados incorrectos más eficiente será. ¿Pero que sentido tiene? Pues básicamente tiene sentido cuando el resultado es lo suficientemente satisfactorio y el tiempo de resolución es más rápido que generar la imagen a resolución nativa de manera natural pero aquí tenemos que aprender a diferenciar que hay especificaciones distintas entre escalar una película y escalar un juego.

En una película los fotogramas ya están generados y hoy en día la descodificación es tan rápida que entre fotograma y fotograma es posible con muy poca potencia llegar a generar una imagen a más resolución vía Inteligencia Artificial. El chip interno del televisor ha sido entrenado de fábrica y ha salido de la academía de instrucción con la capacidad de escalar películas pero es demasiado lento para hacerlo para juegos.

En juegos en cambio el tiempo para el reescalado es muy pequeño debido a que antes se ha de generar la imagen, por eso necesitamos compensar esa falta de tiempo con una enorme potencia en paralelo que permita hacer dicha tarea en el poco tiempo disponible. Pero esto se va a estandarizar con el tiempo y vais a ver como muchos juegos en vez de tirar de 4K nativos van a tirar del Deep Learning para el aumento de resolución y veréis como lo que son las unidades tensor/arrays sistólicos van a aumentar su presencia en próximas arquitecturas de GPU con tal de acelerar el tiempo a la hora de realizar algoritmos como el DLSS en sus diferentes variantes y disminuir los milisegundos por fotograma aumentando así la frecuencia de fotogramas.

De la misma manera que podemos hacer que imagine un búfer de imagen a más resolución también puede imaginar texturas a mayor resolución e incluso puede generar variaciones de una misma textura de manera procedural para crear una mayor variedad de texturas en un juego sin que tengan que hacerse a mano.

Esto es todo, tenéis el Discord y los comentarios de esta entrada para comentarla.

0 0 vote
Article Rating
12 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Tokra_Kree

Hola Urian:

¿El DLSS 2.0 además del propio frame final, no utiliza algún tipo de información intermedia del pipeline gráfico?

K_os

Como ves la utilización de algún tipo de AI Upscaling que ya está utilizando nvidia en la shield Pro, para una futura switch sobretodo en modo dock?

Big crunch

Además esa imagen con las caras deformes es de una IA entrenada con fotos reales

A ersgan no le va bien si es para juegos «artísticos»

Dlss 2 utiliza vectores de movimiento igual que el taa/tssaa/txaa. El txaa incluye msaa también.

El dlss 2 no coge imagen de fotogramas anteriores por lo que no tiene ghosting ni es borroso. Con los vectores da estabilidad temporal como taa sin sus inconvenientes.

Llevo unos días pensando que si se aplica también al render target con las texturas, el diffuse, podría ser como multiplicar su resolución ahorrando gigas de vram

Set

Lo de la Texturas ya lo esta probando Microsoft, hace no mucho salio una noticia sobre ello.

No sólo permitira ahorra Vram al tener una texturas de baja resolucion 1024*1024 ejem, para luego escalarla con IA a 4096*4096. Tambien podra hacer juegos mas livianos en peso, hoy que muchos juegos estan pesando mas de 100GB, seria un buen metodo de compresión.

Big crunch

No hay que confundir aplicar ERSGAN y algoritmos similares en fase de producción, con hacerlo en tiempo real como hacen los DLSS.

Hablo de una segunda etapa de DLSS que no trabaje sólo con el buffer de imagen final. O más bien sería una etapa anterior. Trabajaría con el diffuse map.

comment image?1360582676

Batlander

Esto funciona como el Tensorflow no? Yo hice un programa la para reconocer escritura. Pero la mía no había manera, ya e mi caligrafía es penosa no, lo siguiente 😭😭😭😭

Isaac

Y mi letra no solo es fea, cuando escribo 100 me sale 1o0. No es broma

N-LL-M

https://www.youtube.com/watch?v=FLF2jmWIT00 Donkey Kong Country 2 reescalado con ESRGAN a 480p Es video solo, pero parece más que decente. He visto el video a 1080p, que eso será ya un reescalado normal, y se veía de lujo. Yo quiero creer que es posible el reescalado artifical de 8 y 16 bits. Y creo que comercial o economicamente es interesante para las compañias. Para qué hacer un remake de Donkey Kong Country, que sería ya caro de por si usando polígonos, cuando puedo coger el original y doparlo. Cuando uso emuladores por norma paso de filtros salvo el upscaling 4x porque todos… Read more »

Fuminides

Hola Urian,

¿Crees que realmente se tirará de Deep Learning en vez de cosas como el checkboard? Es decir, los modelos actuales de Deep Learning tienden a tener muchas capas (mucho espacio en memoria) y tienen el problema de sobreajuste, que puede hacer que modelos genéricos no sirvan para juegos concretos y haya que volverlos a entrenar (y entrenar en bastante caro en cuanto a número de ejemplos y recursos computacionales).

Big crunch

DLSS 2 no requiere entrenamiento específico, es el mismo algoritmo para todo.

Schneider

Urian, ¿crees que haya alguna posibilidad que AMD este escondiendo hardware dedicado en RDNA2 para el escalado por IA, parecido a los tensor cores de Nvidia?¿O otro tipo de escalado tan bueno? Realmente seria una pena que las nuevas consolas y las nuevas graficas de AMD no lo implementaran, porque la diferencia de rendimiento es brutal. En caso contrario, Nvidia va a mantenerse muy delante de AMD por muchos años más. Y lo de la NVIDIA killer será un chiste.