¿Qué es y como funciona el AMD FidelityFX Super Resolution en tu GPU?

El AMD FidelityFX Super Resolution está planteado como un rival del DLSS que parte con dos ventajas. En primer lugar requiere un hardware más modesto para funcionar y es compatible con una mayor cantidad de juegos y tarjetas gráficas al no depender de algoritmos de inferencia. Pero, ¿cómo funciona el AMD FidelityFX Super Resolution?

El AMD FSR ha revolucionado el panorama de las GPU en las últimas semanas, no solo por ser rival del DLSS de NVIDIA a la hora de obtener imágenes a mayor resolución utilizando menos recursos. Si no también por su naturaleza abierta, lo que le permite ser implementado en cualquier GPU independientemente a su arquitectura.

¿Qué son los algoritmos de Super Resolución?

Fidelity FX

Los algoritmos de super resolución se han hecho muy famosos en los últimos tiempos, especialmente los que utilizan las redes neuronales convolucionales como el DLSS de NVIDIA. ¿La particularidad de la solución de AMD? El hecho que no se basa en la inteligencia artificial y por tanto no requiere ser entrenada con un conjunto de imágenes previas de ese mismo juego. Ya que una red neural convolucional para la visión por computador lo que hace es aprender una serie de patrones comunes para realizar una reconstrucción.

La ventaja que tiene el método utilizado por el AMD FidelityFX Super Resolution sobre el DLSS a la hora de implementarse en cualquier juego es que la IA no tiene una tendencia a la hora de generar las nuevas imágenes. Para entender el concepto dicho concepto lo que hemos de hacer es imaginarnos que entrenamos a una IA con un conjunto de imágenes con un artefacto o error de imagen en común. Luego hacemos que la IA reproduzca dichas imágenes o variantes de las mismas. Cómo existe la tendencia aprendida durante la fase de aprendizaje de la IA a aprender esos errores de imagen las reproducirá con dicho error de imagen.

Esto provoca que en un sistema de super resolución basado en la IA pueda llegar a sacar conclusiones que no sean exactas. Es por eso que los juegos bajo el DLSS de NVIDIA salen de manera controlada y con cuentagotas, mientras que el FidelityFX Super Resolution es un algoritmo que se puede aplicar en cualquier juego.

El FidelityFX Super Resolution es un algoritmo espacial y no temporal

AMD FidelityFX Super Resolution

El método escogido por AMD se basa en tomar la información del fotograma actual y solo del fotograma actual, por lo que difiere de otros métodos del escalado de resolución de imagen como es por ejemplo el Checkerboard rendering, Cuando hablamos de temporalidad, estamos haciendo referencia a que para generar la versión a más resolución del fotograma actual procede en parte del fotograma anterior. Por lo que carece de lo que llamamos temporalidad y toma la información del fotograma a menos resolución que la GPU acaba de generar para crear la versión a más resolución de la imagen.

¿Pero qué entendemos por resolución? Pues a la cantidad de píxeles que la componen, por lo que cuando aumentamos la resolución de una imagen lo que se hace es aumentar la cantidad de estos, con ello se generan nuevos píxeles que ocupan el espacio, pero cuyo valor en color desconocemos. ¿La solución más simple? Utilizar algoritmos de interpolación, que se basan en pintar los pixeles faltantes con colores que se encuentren a medio camino de los píxeles colindantes. Cuantos más píxeles colindantes coja como información de origen entonces más precisa será la información.

El problema es que la interpolación pura y dura no es lo suficientemente buena y no se utiliza, la calidad de las imágenes resultantes es muy baja y muchas veces difiere de la realidad. A día de hoy la mayoría de aplicaciones de edición de imagen hacen uso de algoritmos de inteligencia artificial para generar las versiones a más resoluciones. Si ya nos centramos en exclusiva en el FidelityFX Super Resolution, su método para conseguir la información de los pixeles faltantes no se basa en una interpolación directa, sino que es más compleja.

Así aumenta la resolución del AMD FidelityFX Super Resolution

FidelityFX SuperResolution

Nos vamos a ceñir a la explicación oficial que ha dado AMD, la cual vamos a citar a continuación:

El FidelityFX Super Resolution se compone de dos pasos principales.

Lo que se traduce en que son dos algoritmos consecutivos, los cuales se ejecutan uno detrás del otro o más bien, donde el segundo toma la información generada por el primero. Veamos cuáles son cada uno de estos pasos.

Un pase de escalado llamado EASU (Muestreo ascendente espacial adaptable a los bordes), el cual también realiza la reconstrucción de los bordes. En este paso, se analiza el fotograma de entrada y la parte principal del algoritmo detecta las inversiones de gradiente, esencialmente observando cómo difieren los gradientes vecinos, de un conjunto de píxeles de entrada. La intensidad de las inversiones de gradiente define los pesos que se aplicarán a los píxeles reconstruidos a la resolución de la pantalla.

Para entender la cita lo primero que hemos de saber es a que se refiere la explicación con detección de bordes en una imagen. Para estar esta tarea lo que se hace es una versión en blanco y negro del fotograma final, el cual está en formato RGB. Por lo que se hace es sumar los valores de cada uno de los canales y se dividen entre 3 para obtener el valor en una imagen en blanco y negro. Si dejamos en la imagen en escala de grises solo las valores puramente blancos, FFFFFF, o puramente negros 00000, entonces obtendremos una imagen que delimitará los bordes.

Detección bordes

En el AMD FidelityFX Super Resolution, realiza la imagen generada a través de la detección de bordes a una resolución de salida mucho mayor que a la que se ha renderizado originalmente, pero que corresponde a la resolución de salida que se quiere conseguir. Todo ello se combinará con un búfer de imagen que almacena los cambios de gradiente de cada uno de los píxeles. El cual mide los cambios de intensidad del color entre los píxeles. Dicha información se combina con la clásica interpolación para obtener la imagen a más resolución.

Un paso de nitidez llamada RCAS (nitidez adaptable al contraste robusta) que extrae el detalle de los píxeles en la imagen mejorada.

La imagen generada en el primer paso se ve mejorada por una versión modificada del Contrast Adaptative Sharpening, el resultado final es una imagen a medio camino entre la interpolación pura y dura y el de la inteligencia artificial.

¡Sé el primero en comentar!