Perdón por no comentar esto, sé que tiene ya dos semanas, tampoco le di mucha importancia en su día, ya que la patente realmente está relacionada con el PlayStation VR de PS5, el cual por el momento no es más que vaporware. En realidad el algoritmo tiene que ver con el Checkerboard Rendering que ya vimos en PS4 Pro, pero aplicado haciendo uso de algoritmos de aprendizaje profundo.

En todo caso, vayamos por la patente:

La presente invención relata un método implementado por ordenador para completar una imagen, el cual comprende los pasos de dividir los datos de la imagen a ser completada en una pluralidad de porciones de la imagen. El método implica aplicar un primer proceso de llenado para llenar una primera porción de imagen que comprende un primer agujero, el primer orificio asociado con una primera cantidad y / o una primera calidad; y aplicar un segundo proceso de llenado para llenar una segunda porción de imagen que comprende un segundo orificio, el segundo agujero asociado con una segunda cantidad diferente a la primera cantidad y / o una segunda calidad diferente a la primera calidad, siendo el segundo proceso diferente al primer proceso. El método incluye entonces combina la primera y segunda porción de imagen rellenas para completar la imagen.

Mirando la introducción lo primero que tenemos no es un algoritmo sobre subir la resolución, sino de rellenar la información faltante en una imagen, ya que con agujeros se refiere a píxeles sin información de color. Claro esta que cuando escalamos de resolución una imagen se añaden píxeles adicionales sin valor de color, cuyo valor es rellenado a través del algoritmo correspondiente.

¿En qué otras técnicas también vemos imágenes con agujeros en alguna parte del pipeline? Pues en el Checkerboard Rendering.

Donde recordemos que la GPU renderiza la escena con la mitad de píxeles en patrón de ajedrez y rellena la información con información del fotograma anterior.

Sigamos con la patente.

Las imágenes digitales pueden contener regiones en la que los datos se hayan perdido o sean incorrectos, los cuales son referidos como «agujeros» y estos no son deseados. Los métodos de inferir la información que se ha perdido o de corregir la incorrecta se utiliza para llenar los agujeros, lo cual es referido como completar la imagen o inpainting.

Para ello existen una variedad de procesos para llenar los agujeros en las imágenes. Las técnicas de inferencia a través de Machine Learning, los cuales se basan en un proceso de entrenamiento, pueden llenar los agujeros en las imágenes con resultados de alta calidad. Sin embargo, las técnicas de Machine Learning son intensivas en cuanto a rendimiento, requieren un hardware potente y una gran cantidad de tiempo.

Los agujeros en las imágenes surgen en los sistemas de renderizado. Por ejemplo, cuando hay dos o más imágenes que representan perspectivas del mismo entorno, es posible que no haya datos de imagen correspondientes a una perspectiva intermedia que a un usuario le gustaría ver. Alternativamente, puede que falten algunos datos de imagen de una de las perspectivas. Los procesos de aprendizaje automático se pueden utilizar para inferir la perspectiva intermedia e inferir los datos de la imagen que faltan. Dichos procesos de ejecución para obtener los datos faltantes es computacionalmente costosa y requieren mucho tiempo.

No entiendo por qué la gente habla de que la patente es un método tipo DLSS para el escalado de imagen, cuando no habla de subir de resolución y más bien dan una serie de motivos por el cual el Machine Learning es contraproducente. Y alto que sabemos que PS5 carece de unidades tensoriales, pero no sabemos si AMD ha añadido una serie de instrucciones que existen en RDNA 2 para trabajar en BFLOAT16, Int8 e Int4.

Sabemos que el FSR requiere FP16 y que por compatibilidad hacia atrás con PS4 Pro SONY lo soporta, pero no sabemos si la consola soporta SIMD sobre registro para operaciones de 8 y 4 bits. Es más, por no saber, no sabemos si soporta BFLOAT16. Lo que daría sentido a que SONY no mencione nada de Aprendizaje Profundo y habla de «Se necesita mucho tiempo y potencia».

Más adelante la patente habla de los motivos por los cuales utilizar un algoritmo de aprendizaje profundo para rellenar la información de los agujeros.

El método implementado por computación se basa en determinar el promedio (de color de cada píxel) usando los píxeles circundantes al mismo que tienen una identificación de color que es la misma que el píxel a rellenar.

Esto permite, de manera ventajosa, que el agujero se llene de forma rápida y eficiente, al tiempo que aumenta la probabilidad de lograr un resultado de alta calidad. Es más probable que los píxeles cercanos que tienen valores en el ID búfer diferentes al píxel del agujero se vean diferentes a los datos de píxeles faltantes que aquellos con un valor en el ID búfer coincidentes. Por lo tanto, el uso de píxeles con el mismo ID reduce ventajosamente la carga computacional en un procesador.

Esto es directamente el método utilizado en el Checkerboard Rendering ni más ni menos, pero existe otro método del que habla la patente, el cual se basa en algoritmos de inferencia a través de la IA.

Los procesos de inferencia de aprendizaje automático proporcionan resultados de llenado de imágenes de alta calidad. Al proporcionar un proceso de inferencia de aprendizaje automático como segundo proceso de llenado, se logra ventajosamente un equilibrio mejorado entre la velocidad y la calidad del procesamiento de imágenes.

Aunque todo esto no nos aclara realmente que problema en concreto pretende solucionar la patente, por lo que mejor ir a ello rápidamente.

Un ejemplo de un sistema de renderizado de imágenes es un dispositivo de realidad virtual desplegando un entorno de realidad virtual. Al usuario que lleva el dispositivo se le presentan dos monitores en el caso, con una representación de la escena en tres dimensiones. Cuando el usuario mueve la cabeza, se genera una nueva escena de acuerdo a la nueva posición y orientación del casco. De esta manera, un usuario puede ver alrededor del casco. Las áreas de la escena inicial que se vuelven visibles en la nueva escena debido al movimiento se describen como previamente «ocultas». Las imágenes mostradas pueden ser generadas por un ordenador, una consola conectada al casco o un servicio remoto en la nube.

Ya tenemos el contexto de la patente, tiene que ver con el PlayStation VR, por lo que no tiene relación con un algoritmo de aumentar la resolución.

La tasa en la que los datos de la imagen son suministradas al caso se ve limitada por el ancho de banda de la conexión entre el ordenador, la consola o el sistema de renderizado en la nube. En consecuencia, algunas veces, no todos los datos requeridos para construir y mostrar la escena se encuentran disponibles por limitaciones en el ancho de banda o interrupciones. Agujeros en los datos de la imagen son un producto indeseable y tienen un impacto negativo en la inmersión experimentada por el usuario.

Y he aquí el problema que pretende solucionar, sabemos que el PlayStation VR de PS5 hace uso del puerto USB-C que es donde se conectará la unidad HMD. ¿Está insinuando SONY con la patente que dicho puerto no da el suficiente ancho de banda?

Recordad, una patente es siempre sobre solucionar un problema y el método de hacerlo. Tenemos el problema que no es otro que la falta de ancho de banda provoca que falte información en cada fotograma que se transmite al HMD.

Mirando las imágenes de la patente, la que describe la solución es la FIG. 3.

Como se puede tenemos tres búfers de imagen finales:

  • El búfer RGBA, el cual contiene los datos de color y el canal alfa de cada píxel. Que no sea RGB nos indica que estamos en el búfer trasero y no el búfer frontal.
  • El mapa de normales de cada píxel.
  • El ID Buffer, el cual le da una identificación a cada píxel respecto a cada objeto en pantalla, de esta manera si es necesario rescatar la información de un objeto la podamos rescatar independientemente de la posición del objeto en cada fotograma, lo cual es crucial para el Checkerboard.

Lo siguiente que hace el proceso es dividir la imagen en tiles, para luego determinar cuáles tiles están activos o inactivos. Lo cual significa identificar esas partes de la imagen con agujeros, por lo que en esta parte del proceso se descartan para el rellenado de los huecos.

Y con ello llegamos al punto 316, donde se aplica el algoritmo de Machine Learning, lo cual es la parte interesante de todo el proceso y es la que infiere la información faltante.

El proceso de inferencia del aprendizaje automático 316 procesa los datos de cada tile en cada turno para rellenar los agujeros y genera una salida en búfer de salida de N procesos de datos de imagen. A base de proveer la información de la imagen se puede procesar cada uno de estos en paralelo. 

El proceso por lo visto es bastante sencillo, pero hay una cosa que por lógica no me cuadra y os la explicaré a continuación.

La contradicción de la patente

La patente nos habla de la información faltante que se transmite a través del cable por falta de ancho de banda de este, por lo que de entrada no tiene sentido completar la imagen en la consola si no vamos a poder transmitir toda la información.

Por otro lado a la pantalla se envía el búfer frontal, el cual contiene la información final en formato RGB de la imagen, no se envían otros búfers de imagen que corresponden al búfer trasero de la imagen, ya que se requeriría mucho ancho de banda.

Por lo que el problema no estaría en el ancho de banda del USB-C, el cual recordemos es de 40 Gbps y más que suficiente para transmitir imágenes a 4K a 120 Hz al menos. Más bien parece que esto tiene que ver con renderizar la imágenes con menos píxeles y esto nos lleva a trucos de renderizado como el Checkerboard Rendering, la diferencia es que aquí el algoritmo utiliza inferencia vía inteligencia artificial para rellenar esos huecos.