De imágenes a vídeo: ¿qué cambia?
Un vídeo es solo una secuencia de imágenes — cuadros — reproducidos lo suficientemente rápido para crear la ilusión de movimiento. A 24 cuadros por segundo, un clip de 5 segundos son 120 cuadros. Si ya tenemos modelos que generan excelentes imágenes individuales, ¿por qué no simplemente generar 120 imágenes una tras otra y unirlas?
Inténtalo y el resultado es inservible. Cada cuadro se genera independientemente, así que el modelo no tiene memoria de lo que produjo un cuadro atrás. El rostro de una persona deriva en forma, las ventanas de un edificio se reorganizan, los colores cambian aleatoriamente entre cuadros. Este es el problema de consistencia temporal : los objetos deberían preservar su identidad a través del tiempo, la iluminación debería permanecer estable a menos que algo la cambie, y el movimiento debería seguir física plausible. Nada de esto sucede cuando los cuadros se generan aislados.
El modelo debe entender el tiempo . Necesita saber que una pelota lanzada hacia arriba debería desacelerar, que una cabeza que gira revela un perfil, que una sombra se mueve cuando el sol cambia. El salto de generación de imágenes a generación de vídeo es análogo al salto de predecir un solo token a generar un párrafo coherente en modelos de lenguaje: el modelo debe mantener estado, planificar adelante y respetar restricciones que abarcan toda la secuencia.
Entonces, ¿qué cambia arquitectónicamente? Tres cosas. Primero, el VAE debe comprimir no solo las dimensiones espaciales sino la dimensión temporal también. Segundo, el DiT (o cualquier backbone eliminador de ruido usado) debe procesar tokens que abarcan espacio y tiempo, lo que cambia los patrones de atención dramáticamente. Tercero, las longitudes de secuencia explotan, demandando nuevas técnicas de eficiencia. Veamos cada una en turno.
Parches espaciotemporales y el VAE 3D
Para generación de imágenes, un DiT parchifica un latente 2D en una secuencia de tokens planos. Para vídeo, necesitamos extender esta idea a tres dimensiones: alto, ancho y tiempo.
El VAE 3D. Un VAE de imagen estándar toma un solo cuadro de forma $H \times W \times 3$ y lo comprime a $h \times w \times c$. Un VAE 3D extiende esto a un vídeo completo. La entrada es $F \times H \times W \times 3$ (cuadros $\times$ alto $\times$ ancho $\times$ canales RGB), y la salida es un latente de forma:
Aquí $t_f$ es el factor de compresión temporal y $s$ es el factor de compresión espacial por dimensión. Valores típicos son $t_f = 4$ y $s = 8$. ¿Por qué comprimir temporalmente? Porque los cuadros adyacentes de vídeo son extremadamente redundantes — la mayoría de los píxeles apenas cambian de un cuadro al siguiente. La compresión temporal explota esta redundancia.
Veamos lo que esto nos ahorra. Para un clip de 5 segundos a 24fps con resolución $512 \times 512$:
# 3D VAE compression for a 5-second, 24fps, 512x512 video
F, H, W, C_in = 120, 512, 512, 3 # 5s * 24fps = 120 frames
t_f, s, c = 4, 8, 16 # temporal 4x, spatial 8x, 16 latent channels
f = F // t_f # compressed frames
h = H // s # compressed height
w = W // s # compressed width
pixel_elements = F * H * W * C_in
latent_elements = f * h * w * c
print(f"Input (pixel space): {F} x {H} x {W} x {C_in} = {pixel_elements:,} values")
print(f"Latent (3D VAE): {f} x {h} x {w} x {c} = {latent_elements:,} values")
print(f"Compression ratio: {pixel_elements / latent_elements:.0f}x")
Parches espaciotemporales. Una vez que tenemos el latente 3D, lo parchificamos igual que DiT parchifica latentes 2D, pero ahora los parches abarcan el tiempo también. Cada parche es un pequeño cubo 3D de tamaño $p_t \times p_h \times p_w$ (temporal $\times$ alto $\times$ ancho). El número total de tokens es:
Verifiquemos los casos límite. Si $p_t = p_h = p_w = 1$, cada posición latente se convierte en su propio token: $T = f \cdot h \cdot w$, la longitud máxima de secuencia posible. En la práctica, tamaños de parche como $1 \times 2 \times 2$ o $2 \times 2 \times 2$ son comunes, equilibrando el número de tokens contra la resolución espacial-temporal.
import json, js
# Token counts for different patch sizes on our 30x64x64 latent
f, h, w = 30, 64, 64
configs = [
("1 x 2 x 2", 1, 2, 2),
("2 x 2 x 2", 2, 2, 2),
("1 x 4 x 4", 1, 4, 4),
("2 x 4 x 4", 2, 4, 4),
]
rows = []
for name, pt, ph, pw in configs:
T = (f // pt) * (h // ph) * (w // pw)
rows.append([name, f"{f//pt} x {h//ph} x {w//pw}", f"{T:,}"])
# Compare with a single 1024x1024 image (latent 128x128, patch 2x2)
img_T = (128 // 2) * (128 // 2)
rows.append(["Image: 2 x 2 (1024x1024)", "64 x 64", f"{img_T:,}"])
js.window.py_table_data = json.dumps({
"headers": ["Patch size (t x h x w)", "Token grid", "Token count"],
"rows": rows
})
print("A 5-second video produces 5-30x more tokens than a high-res image.")
print("This is why video generation is so computationally demanding.")
Incluso con compresión agresiva, los conteos de tokens de vídeo fácilmente alcanzan 30,000+. Compara eso con aproximadamente 4,000 tokens para una imagen de alta resolución. Como la auto-atención escala como $O(T^2)$, pasar de 4,000 a 30,000 tokens aumenta el costo de atención en aproximadamente $(30{,}000/4{,}000)^2 \approx 56\times$. Este es el desafío computacional central de la generación de vídeo.
El reporte técnico de OpenAI Sora (Brooks et al., 2024) fue la primera publicación importante en describir este enfoque de parches espaciotemporales en un DiT de vídeo, tratando los cuadros de vídeo como un volumen espaciotemporal unificado en lugar de una secuencia de imágenes independientes.
Atención temporal: conectando cuadros
Una vez que el vídeo se parchifica en tokens espaciotemporales, el DiT debe capturar relaciones a través tanto del espacio como del tiempo. ¿Cómo diseñamos el mecanismo de atención para manejar esto?
Atención 3D completa. El enfoque más simple: cada token espaciotemporal atiende a todos los demás tokens espaciotemporales. Un token en el cuadro 5, posición (10, 20) puede atender directamente a un token en el cuadro 80, posición (50, 30). El costo es:
Esto es teóricamente ideal porque cada relación espacial y temporal se puede capturar directamente, pero el costo computacional lo hace impráctico para la mayoría de las duraciones y resoluciones de vídeo.
Atención factorizada (descompuesta). La solución que la mayoría de los modelos de vídeo adoptan es factorizar la atención en dos operaciones separadas que se alternan dentro de cada bloque transformer:
- Atención espacial: los tokens dentro del mismo cuadro atienden entre sí, pero no a tokens de otros cuadros. Cada cuadro se procesa como una imagen independiente. Costo: $O(f' \times (h' \cdot w')^2)$.
- Atención temporal: los tokens en la misma posición espacial a través de todos los cuadros atienden entre sí, creando un "tubo" a través del tiempo. Un parche en la posición (10, 20) en el cuadro 1 atiende a la posición (10, 20) en los cuadros 2, 3, ..., $f'$. Costo: $O(h' \cdot w' \times f'^2)$.
El costo total de la atención factorizada por bloque es:
Verifiquemos los casos límite. Cuando $f' = 1$ (un solo cuadro), no hay atención temporal, y el costo se reduce a $O((h' \cdot w')^2)$, que es solo atención de imagen estándar. En el caso típico de vídeo donde $f' = 30$, $h' = w' = 32$ (parche $1 \times 2 \times 2$), la atención 3D completa cuesta $O((30 \cdot 1024)^2) = O(9.4 \times 10^8)$, mientras la factorizada cuesta $O(30 \cdot 1024^2 + 1024 \cdot 900) = O(32.4 \times 10^6)$ — aproximadamente 29 veces más barata .
# Compare full 3D vs factored attention cost
fp, hp, wp = 30, 32, 32 # token grid after patchifying 30x64x64 with patch 1x2x2
T = fp * hp * wp
full_3d = T ** 2
spatial = fp * (hp * wp) ** 2
temporal = hp * wp * fp ** 2
factored = spatial + temporal
print(f"Token count T = {T:,}")
print(f"Full 3D attention: {full_3d:,.0f} pairwise scores")
print(f"Factored (spatial): {spatial:,.0f}")
print(f"Factored (temporal): {temporal:,.0f}")
print(f"Factored (total): {factored:,.0f}")
print(f"Speedup: {full_3d / factored:.1f}x")
El compromiso es que la atención factorizada no puede capturar patrones espaciotemporales diagonales directamente — un objeto que se mueve a una posición espacial diferente con el tiempo requiere que la información fluya primero a través de la atención espacial, luego la temporal, tomando al menos dos capas para conectarse. En la práctica, apilar muchos bloques de atención factorizada proporciona suficientes capas para que la información se propague.
Sora y la visión del simulador del mundo
En febrero de 2024, OpenAI reveló Sora (Brooks et al., 2024) , un modelo de generación de vídeo que cambió fundamentalmente lo que el campo consideraba posible. Los clips generados mostraban escenas coherentes de varios segundos con movimiento de cámara realista, personajes consistentes y física plausible (aunque imperfecta). Más importante, el reporte técnico enmarcó la generación de vídeo no como una herramienta de creación de contenido sino como un camino hacia construir simuladores del mundo — modelos que aprenden cómo funciona el mundo físico solo a partir de datos de vídeo.
Arquitectura. Basado en el reporte técnico, Sora usa:
- Parches espaciotemporales en latentes de vídeo comprimidos, como se describió en las secciones anteriores.
- Un backbone DiT con atención espaciotemporal (probablemente factorizada, dadas las longitudes de secuencia involucradas).
- Condicionamiento por texto vía un codificador de lenguaje, dirigiendo el proceso de eliminación de ruido con prompts de texto.
- Resolución y duración variables : en lugar de entrenar en un solo tamaño fijo, Sora maneja diferentes dimensiones de vídeo nativamente. El enfoque de parches espaciotemporales hace esto natural — un vídeo más largo simplemente produce más tokens.
El enmarcado de "simulador del mundo". El reporte técnico destaca capacidades emergentes que no fueron explícitamente entrenadas. Sora puede generar escenas 3D consistentes (rotar alrededor de un objeto mantiene su geometría), simular interacciones simples (una pelota rebotando, agua salpicando), e incluso realizar edición básica de imagen condicionando en un cuadro inicial. El argumento es que al entrenar en suficientes datos de vídeo a escala suficiente, el modelo se ve forzado a construir representaciones internas de geometría 3D, física y permanencia de objetos.
Limitaciones. A pesar de las demos impresionantes, Sora regularmente produce resultados físicamente imposibles: objetos que pasan a través de otros, líquidos que desafían la gravedad, manos con conteos incorrectos de dedos, y escenas donde las relaciones causa-efecto se rompen. La coherencia temporal se degrada notablemente para vídeos más largos (más de 10 segundos). Estas fallas muestran que el modelo ha aprendido regularidades estadísticas del vídeo, no física real.
El panorama de generación de vídeo de código abierto
Sora demostró lo que era posible pero permaneció de código cerrado. A lo largo de 2024 y 2025, apareció una ola de modelos de generación de vídeo de pesos abiertos y comerciales, muchos de ellos igualando o acercándose a la calidad de Sora. Aquí está el panorama actual.
Wan 2.1 (Alibaba, 2025). Un modelo completamente de código abierto que combina flow matching con un VAE 3D y un backbone DiT . Disponible en variantes de 1.3B y 14B parámetros, genera vídeo de 480p a 720p de hasta 5 segundos. Wan es notable por su fuerte adherencia al prompt y por ser uno de los modelos completamente abiertos más capaces (Wan-Video, 2025) .
HunyuanVideo (Tencent, 2024). Un marco unificado de generación de imagen y vídeo usando una arquitectura DiT de flujo doble — flujos transformer separados para tokens de texto y vídeo que interactúan a través de capas de atención cruzada. Genera vídeo de 720p a 5+ segundos con pesos abiertos (Kong et al., 2024) .
CogVideoX (Zhipu AI, 2024). Usa una arquitectura de transformer experto con un VAE 3D y una estrategia de entrenamiento progresivo : el modelo primero se entrena en imágenes, luego clips de vídeo cortos, luego vídeos más largos. Este enfoque de currículum le permite aprender calidad espacial primero, luego coherencia temporal. Disponible en variantes de 2B y 5B parámetros (Yang et al., 2024) .
LTX Video (Lightricks, 2024). Diseñado específicamente para generación de vídeo capaz de tiempo real . Usa un VAE de vídeo con un backbone transformer, optimizado para latencia sobre calidad máxima. El objetivo son aplicaciones interactivas (Lightricks, 2024) .
Veo 2 (Google DeepMind, 2024-2025). Un modelo de alta calidad que produce vídeo de 1080p de hasta un minuto de duración. Veo 2 es notable por generar algunos de los clips coherentes más largos del campo (Google DeepMind, 2024) .
Runway Gen-3 Alpha (Runway, 2024). Un modelo comercial con alta calidad visual y fuerte coherencia de movimiento. Los detalles de arquitectura no están divulgados.
Kling 1.6 (Kuaishou, 2024-2025). Un modelo comercial competitivo con Sora en benchmarks de calidad. Accesible a través de una API y ha ganado adopción significativa.
La tabla a continuación compara las propiedades clave de estos modelos.
import json, js
rows = [
["Sora (OpenAI)", "Closed", "DiT + 3D VAE", "Up to 1080p", "Up to 60s", "2024"],
["Wan 2.1 (Alibaba)", "Open", "DiT + Flow Matching + 3D VAE", "480p-720p", "Up to 5s", "2025"],
["HunyuanVideo (Tencent)", "Open", "Dual-stream DiT + 3D VAE", "720p", "5+ s", "2024"],
["CogVideoX (Zhipu AI)", "Open", "Expert Transformer + 3D VAE", "720p", "Up to 6s", "2024"],
["LTX Video (Lightricks)", "Open", "Transformer + Video VAE", "720p", "Up to 5s", "2024"],
["Veo 2 (Google DeepMind)", "Closed", "Likely cascaded DiT", "1080p", "Up to 60s+", "2024-25"],
["Gen-3 Alpha (Runway)", "Closed", "Undisclosed", "1080p", "Up to 10s", "2024"],
["Kling 1.6 (Kuaishou)", "Closed", "Undisclosed", "1080p", "Up to 10s", "2024-25"],
]
js.window.py_table_data = json.dumps({
"headers": ["Model", "Weights", "Architecture", "Resolution", "Duration", "Year"],
"rows": rows
})
print("Open models (Wan, HunyuanVideo, CogVideoX, LTX) now cover the 480p-720p range.")
print("Closed models (Sora, Veo 2) push higher resolution and longer duration.")
print("The gap is closing rapidly — 2024 open models rival 2023 closed ones.")
Los desafíos por delante
La generación de vídeo en 2025 está aproximadamente donde estaba la generación de imágenes en 2022: los resultados son impresionantes en demos cortas, pero la tecnología está lejos de ser un problema resuelto. Quedan varios desafíos fundamentales.
Consistencia temporal en duraciones largas. Mantener la identidad de un personaje, el estilo de una escena y las reglas de la física a través de muchos cuadros es difícil. La mayoría de los modelos producen salida visualmente coherente durante 2-5 segundos, pero la calidad se degrada notablemente más allá de 10 segundos. Los personajes cambian sutilmente de apariencia, los objetos aparecen y desaparecen, y el movimiento se vuelve antinatural.
Costo computacional. La generación de vídeo es 10-100$\times$ más costosa que la generación de imágenes, dependiendo de la duración y resolución. Un clip de 5 segundos a 720p puede tomar minutos en generar en hardware de gama alta. Los costos de entrenamiento son proporcionalmente enormes.
Duración. Generar vídeo coherente de un minuto sigue siendo en gran medida un problema sin resolver. La mayoría de los modelos abiertos llegan hasta 5-10 segundos. Enfoques como la generación autorregressiva por trozos (generar 5 segundos, condicionar en el último cuadro, generar los siguientes 5 segundos) pueden extender la duración pero introducen costuras visibles y deriva.
Controlabilidad. Los prompts de texto solos son un mecanismo de control burdo para vídeo. Los usuarios frecuentemente necesitan especificar movimiento de cámara ("dolly lento hacia adelante"), acciones de personajes ("ella se gira y camina hacia la puerta"), transiciones de escena ("cortar a un primer plano"), o timing ("la explosión sucede en la marca de 3 segundos"). Los modelos actuales ofrecen soporte limitado para estos controles de grano fino.
Generación en tiempo real. La generación de vídeo interactiva — donde un usuario puede dirigir la salida en tiempo real — requiere generar cuadros más rápido que la tasa de reproducción (24+ fps). Los modelos actuales toman minutos para producir segundos de vídeo, colocándonos órdenes de magnitud lejos del tiempo real.
El rápido progreso de 2023 a 2025 sugiere que muchos de estos desafíos serán parcialmente abordados a corto plazo. Pero la generación de vídeo verdaderamente controlable, de larga duración, en tiempo real y de alta calidad sigue siendo uno de los problemas abiertos más difíciles en IA generativa.
Quiz
Pon a prueba tu comprensión de las arquitecturas y desafíos de la generación de vídeo.
¿Por qué generar cada cuadro de vídeo independientemente con un modelo de imagen produce malos resultados?
En la atención espaciotemporal factorizada, ¿cuál es el compromiso clave comparado con la atención 3D completa?
Un VAE 3D con compresión temporal $t_f = 4$ y compresión espacial $s = 8$ recibe un vídeo de 80 cuadros a $256 \times 256$. ¿Cuál es la forma del latente (ignorando canales)?
¿Qué patrón arquitectónico ha convergido en la mayoría de los modelos de generación de vídeo de vanguardia (Sora, Wan, HunyuanVideo, CogVideoX)?