Después de pasar decenas de noches sin dormir trabajando con formatos de codificación de color YUV , me di cuenta de la poca información disponible sobre este extraordinario formato. Sin embargo, puede ser increíblemente útil para quienes se dedican a la transmisión de video P2P o al procesamiento de transmisiones de video con IA.
A primera vista, RGB y YUV pueden parecer simplemente formas diferentes de representar el color, pero detrás de esta distinción se esconde una batalla continua: conveniencia versus eficiencia, precisión versus rendimiento, percepción perfecta versus compresión sin pérdida visible. Se podría suponer que RGB es el rey indiscutible de los espacios de color; después de todo, las cámaras, las pantallas y la mayoría de las redes neuronales operan en él. Sin embargo, en el mundo de la transmisión y codificación de vídeo, YUV lleva la delantera, escondiendo bajo el capó una serie de complejas compensaciones que nos permiten ver vídeos sin retrasos, ahorrar gigabytes de datos y acelerar el procesamiento en tiempo real.
Pero, ¿qué ocurre si se desea unir estos dos mundos? ¿Cómo gestionan los modelos de IA entrenados en RGB las transmisiones de vídeo en YUV? ¿Por qué los códecs son tan reacios a trabajar con RGB? ¿Y es posible lograr el equilibrio perfecto entre estos formatos? En este artículo, te ayudaré a comprender por qué RGB y YUV son como dos boxeadores de diferentes categorías de peso, obligados a encontrarse en el mismo ring de transmisión de vídeo y tecnología de IA.
Los formatos RGB y RGBA son bastante sencillos y se utilizan ampliamente en gráficos por ordenador, por lo que no profundizaremos demasiado en los conceptos básicos. En resumen, cuando el ordenador reproduce una imagen, funciona con tres canales: rojo (R) , verde (G) y azul (B) . Así es como funcionan la mayoría de las pantallas.
RGBA agrega un canal adicional, Alfa (A) , que controla la transparencia, lo que lo hace particularmente útil para gráficos web y diseño digital. RGB representa los colores con precisión y sin distorsión, pero tiene un inconveniente crítico: ocupa demasiado espacio. Por ejemplo, una imagen con una resolución de 1920 × 1080
en formato RGBA (usando 1 byte por canal) ocupa: 1920×1080×4 = 8294400 bytes ≈ 8.2 MB
Los formatos comprimidos como JPEG reducen el tamaño de los archivos, pero en el mundo de la transmisión de video P2P y el procesamiento en tiempo real con IA en las máquinas de los clientes (como el reconocimiento de objetos, la detección de puntos clave y la segmentación), esta no es una opción viable. Necesitamos transmitir y analizar cada fotograma en tiempo real, sin introducir artefactos de compresión ni perder detalles críticos. Ahí es donde entra en juego YUV , que ofrece un enfoque más inteligente para equilibrar la calidad, la eficiencia y el rendimiento.
A diferencia del RGB, que almacena la información de color directamente, el YUV separa una imagen en componentes de luminancia (Y) y croma (U y V) . Este enfoque permite una compresión de datos eficiente sin una pérdida significativa de calidad.
Y (Luma, brillo) : representa el brillo del píxel y determina qué tan claro u oscuro se ve. Básicamente, es la versión en escala de grises (blanco y negro) de la imagen, que conserva todas las formas y los detalles.
U y V (croma, color) : almacenan información de color, pero con menor precisión, ya que el ojo humano percibe el brillo con mayor nitidez que la precisión del color. En pocas palabras, estos canales actúan como un “cambio” bidimensional del brillo hacia diferentes tonos de color.
Esta separación es la clave que explica por qué YUV es tan efectivo para la compresión de video, la transmisión y el procesamiento de video basado en IA.
Una de las ventajas menos obvias pero muy efectivas de YUV es que uno de sus canales (Y) no está diseñado para almacenar color en absoluto. En cambio, describe con precisión el color.
El ojo humano percibe imágenes utilizando dos tipos de fotorreceptores en la retina:
Células tipo bastón (unos 120 millones) : sensibles al brillo y al contraste, pero incapaces de detectar el color. Nos permiten ver formas y detalles incluso con poca luz.
Células cónicas (aproximadamente 6 millones) : responsables de la percepción del color, pero su número es 20 veces menor. Funcionan solo en buenas condiciones de iluminación y se dividen en tres tipos: rojo, verde y azul ( RGB , como era de esperar).
Debido a este desequilibrio de receptores, nuestro cerebro prioriza la forma sobre el color. Si el brillo o el contraste están distorsionados, lo notamos de inmediato. Sin embargo, los cambios leves de color a menudo pasan desapercibidos.
Este es el principio fundamental de YUV
Esto significa que, a diferencia del RGB (donde los tres canales son igualmente importantes), el YUV trata sus canales de manera diferente según la percepción humana. Como los datos de color (U y V) son menos críticos, podemos reducir la cantidad de datos transmitidos sin perder calidad perceptible.
Así es exactamente cómo funciona el mecanismo de submuestreo de croma: optimizando la codificación de video comprimiendo selectivamente la información de color mientras se mantiene intacto el brillo.
El submuestreo de croma es una técnica para reducir la cantidad de datos de color en una imagen. En lugar de almacenar el color para cada píxel (como en RGB ), YUV reduce la resolución de los canales de color mientras mantiene intacto el brillo (forma).
Existen varios estándares industriales para el submuestreo de croma:
Submuestreo 4:2:2 : cada par de píxeles comparte información de color. El ojo apenas percibe la diferencia, pero el tamaño del archivo se reduce en un 33 %. Este método rara vez se utiliza.
Submuestreo 4:2:0 : el color se almacena solo para un píxel de cada cuatro, lo que logra la máxima compresión.
¿Por qué 4:2:0 es el estándar principal?
Este formato reduce el tamaño de los datos a la mitad sin degradar de forma notable la calidad de la imagen. Por eso es el estándar de referencia para casi todos los servicios de streaming y plataformas de vídeo. Por ejemplo, Microsoft Teams transmite vídeo en 4:2:0 porque ofrece el mejor equilibrio entre calidad y eficiencia del ancho de banda.
En esta configuración, un único valor de color representa cuatro píxeles y el ojo humano no detecta la diferencia, incluso cuando se amplía la imagen, ya que el brillo (Y) permanece sin cambios.
1920×1080×1.5 = 3110400 bytes ≈ 3.1 MB
en un solo cuadro, esto da como resultado una reducción de más del doble en el tamaño de los datos en comparación con RGBA , ¡sin ninguna pérdida visible de calidad!
La imagen de abajo muestra cómo se ve el cuadro/imagen final con submuestreo de croma 4:2:0 . Observe cómo una U describe cuatro Y , ¡es 4 veces la memoria ganada!
En el mundo actual, las aplicaciones de IA para el procesamiento de video en tiempo real se están expandiendo rápidamente. Las redes neuronales se utilizan no solo para el análisis de cámaras de vigilancia y la mejora de la calidad de la transmisión, sino también para tareas más complejas, como efectos generativos, modificación de la apariencia en tiempo real, reconocimiento de objetos y seguimiento del movimiento.
Por ejemplo, desarrollamos un sistema de maquillaje virtual que aplica lápiz labial y sombra de ojos en el rostro de una persona en un chat de video, de la manera más realista posible. En estas tareas, la precisión en la forma y el movimiento es de vital importancia, mientras que la información del color es secundaria. También puedes entrenar a tu modelo para que comprenda las imágenes en escala de grises y así mejorar su rendimiento; al mismo tiempo, obtener imágenes en escala de grises en la GPU es mucho más eficiente si tomas YUV 4:2:0 como entrada, ya que solo necesitas cortar la primera parte de la imagen para obtener el canal de escala de grises resultante.
La forma importa más que el color
Los modelos de IA, como muchos otros sistemas de visión artificial, se centran principalmente en la estructura, la forma y los bordes de los objetos, en lugar de en la reproducción precisa del color. Esto es así en el caso del reconocimiento facial, el seguimiento de la pose, la detección de anomalías y los efectos de realidad aumentada. Por ejemplo, en un sistema de reconocimiento de movimiento, el contorno de píxeles de un cuerpo es mucho más importante que el tono de la piel.
El rendimiento es fundamental
Para la IA en tiempo real, cada cuadro debe procesarse en menos de 20 ms
para mantener una velocidad de cuadros uniforme ( 50–60 FPS
). Cuanto más rápido reciba y procese una red neuronal los cuadros, más natural y fluida será la ejecución de la aplicación.
1920×1080
pesa 8.2 MB
, lo que supone una enorme presión sobre la memoria y la potencia de procesamiento.O(1)
al transmitir color a una resolución más baja, lo que ahorra recursos computacionales sin pérdida de calidad visible.
Procesamiento de GPU optimizado
Las GPU modernas están altamente optimizadas para el procesamiento YUV, lo que significa que podemos trabajar con imágenes sin convertirlas a RGB. Esto elimina cálculos innecesarios y aumenta la velocidad de procesamiento.
Ahorro de ancho de banda y memoria
Reducir el tamaño de los datos es fundamental para la transmisión y el procesamiento de vídeo en tiempo real:
Seamos honestos: RGB parece la opción obvia. Es el estándar en cámaras, pantallas y gráficos de computadora. Pero cuando se trata de transmisión de video en el mundo real e integración de IA, RGB se convierte en un dinosaurio lento . Entonces entra en escena YUV , que ofrece el equilibrio perfecto entre calidad, velocidad y eficiencia de datos. Su inteligente sistema de almacenamiento (que separa el brillo del color comprimido) permite cosas que serían una pesadilla computacional en RGB .
El RGB es genial, pero no cuando se trata de rendimiento en tiempo real e inteligencia artificial. En la transmisión de video, YUV es el verdadero caballo de batalla y ha impulsado soluciones importantes durante años.
Por lo tanto, si todavía crees que el RGB es el rey, es hora de reconsiderarlo. Los formatos de video han jugado con sus propias reglas durante mucho tiempo.