Construyendo una WebTV de IA

Construcción WebTV IA

La AI WebTV es una demostración experimental para mostrar los últimos avances en síntesis automática de video y música.

👉 Mira la transmisión ahora yendo al Espacio de AI WebTV.

Si estás usando un dispositivo móvil, puedes ver la transmisión desde el espejo de Twitch.

La motivación de la AI WebTV es demostrar videos generados con modelos de texto a video de código abierto como Zeroscope y MusicGen, de una manera entretenida y accesible.

Puedes encontrar esos modelos de código abierto en el hub de Hugging Face:

  • Para video: zeroscope_v2_576 y zeroscope_v2_XL
  • Para música: musicgen-melody

Las secuencias de video individuales están hechas a propósito para ser cortas, lo que significa que la WebTV debe ser vista como una demostración técnica/muestra de trabajo en lugar de un programa real (con una dirección artística o programación).

La AI WebTV funciona tomando una secuencia de indicaciones de toma de video y pasándolas a un modelo de texto a video para generar una secuencia de tomas.

Además, un tema e idea base (escrito por un humano) se pasan a través de un LLM (en este caso, ChatGPT), para generar una variedad de indicaciones individuales para cada clip de video.

Aquí está un diagrama de la arquitectura actual de la AI WebTV:

La WebTV está implementada en NodeJS y TypeScript, y utiliza varios servicios alojados en Hugging Face.

El modelo de texto a video

El modelo de video central es Zeroscope V2, un modelo basado en ModelScope.

Zeroscope se compone de dos partes que se pueden encadenar juntas:

  • Un primer paso con zeroscope_v2_576, para generar un clip de video de 576×320
  • Un segundo paso opcional con zeroscope_v2_XL para aumentar la resolución del video a 1024×576

👉 Necesitarás usar la misma indicación tanto para la generación como para el aumento de resolución.

Llamando a la cadena de video

Para hacer un prototipo rápido, la WebTV ejecuta Zeroscope desde dos Espacios duplicados de Hugging Face que ejecutan Gradio, que se llaman utilizando el paquete NPM @gradio/client. Puedes encontrar los espacios originales aquí:

  • zeroscope-v2 por @hysts
  • Zeroscope XL por @fffiloni

También se pueden encontrar otros espacios desplegados por la comunidad si buscas Zeroscope en el Hub.

👉 Los Espacios públicos pueden llenarse demasiado y pausarse en cualquier momento. Si planeas implementar tu propio sistema, por favor duplica esos Espacios y ejecútalos bajo tu propia cuenta.

Usando un modelo alojado en un Espacio

Los Espacios que utilizan Gradio tienen la capacidad de exponer una API REST, que luego se puede llamar desde Node utilizando el módulo @gradio/client.

Aquí tienes un ejemplo:

import { client } from "@gradio/client"

export const generateVideo = async (prompt: string) => {
  const api = await client("*** URL DEL ESPACIO ***")

  // llamamos a la función "run()" con una matriz de parámetros
  const { data } = await api.predict("/run", [      
    prompt,
    42, // semilla 
    24, // número de cuadros
    35 // número de pasos
  ])
  
  const { orig_name } = data[0][0]

  const remoteUrl = `${instance}/file=${orig_name}`

  // el archivo se puede descargar y almacenar localmente
}

Post-procesamiento

Una vez que una toma individual (un clip de video) se aumenta de resolución, se pasa a FILM (Frame Interpolation for Large Motion), un algoritmo de interpolación de cuadros:

  • Enlaces originales: sitio web, código fuente
  • Modelo en Hugging Face: /frame-interpolation-film-style
  • Un Espacio de Hugging Face que puedes duplicar: video_frame_interpolation por @fffiloni

Durante el post-procesamiento, también agregamos música generada con MusicGen:

  • Enlaces originales: sitio web, código fuente
  • En Hugging Face Space puedes duplicar: MusicGen

Transmisión en vivo

Nota: existen varias herramientas que puedes utilizar para crear una transmisión de video. AI WebTV utiliza actualmente FFmpeg para leer una lista de reproducción compuesta por archivos de video en formato mp4 y archivos de audio en formato m4a.

Aquí tienes un ejemplo de cómo crear dicha lista de reproducción:

import { promises as fs } from "fs"
import path from "path"

const allFiles = await fs.readdir("** RUTA A LA CARPETA DE VIDEOS **")
const allVideos = allFiles
  .map(file => path.join(dir, file))
  .filter(filePath => filePath.endsWith('.mp4'))

let listaReproduccion = 'ffconcat version 1.0\n'
allFilePaths.forEach(filePath => {
  listaReproduccion += `file '${filePath}'\n`
})
await fs.promises.writeFile("playlist.txt", listaReproduccion)

Esto generará el siguiente contenido de la lista de reproducción:

ffconcat version 1.0
file 'video1.mp4'
file 'video2.mp4'
...

A continuación, FFmpeg se utiliza nuevamente para leer esta lista de reproducción y enviar una transmisión FLV a un servidor RTMP. FLV es un formato antiguo pero aún popular en el mundo de la transmisión en tiempo real debido a su baja latencia.

ffmpeg -y -nostdin \
  -re \
  -f concat \
  -safe 0 -i channel_random.txt -stream_loop -1 \
  -loglevel error \
  -c:v libx264 -preset veryfast -tune zerolatency \
  -shortest \
  -f flv rtmp://<SERVIDOR>

Existen muchas opciones de configuración diferentes para FFmpeg, para obtener más información consulta la documentación oficial.

Para el servidor RTMP, puedes encontrar implementaciones de código abierto en GitHub, como el módulo NGINX-RTMP.

AI WebTV utiliza el servidor node-media-server.

💡 También puedes transmitir directamente a uno de los puntos de entrada RTMP de Twitch. Consulta la documentación de Twitch para obtener más detalles.

A continuación se muestran algunos ejemplos del contenido generado.

Lo primero que notamos es que la aplicación del segundo paso de Zeroscope XL mejora significativamente la calidad de la imagen. También se aprecia claramente el impacto de la interpolación de fotogramas.

Personajes y composición de escenas

Indicación: Película fotorrealista de una llama actuando como programadora, usando gafas y una sudadera con capucha, mirando intensamente una pantalla con líneas de código, en una habitación acogedora y ligeramente iluminada, Canon EOS, iluminación ambiental, alta cantidad de detalles, estilo cinematográfico, popular en artstation

Indicación: Animación renderizada en 3D que muestra un grupo de personajes de comida formando una pirámide, con un plátano en la cima de manera triunfante. En una ciudad con nubes de algodón de azúcar y un camino de chocolate, estilo Pixar, CGI, iluminación ambiental, luz solar directa, paleta de colores rica, ultrarrealista, estilo cinematográfico, fotorrealista.

Indicación: Plano cercano e íntimo de un zorro rojo, mirando fijamente a la cámara con ojos penetrantes, iluminación ambiental que crea un contraste alto y una silueta, cámara IMAX, alto nivel de detalle, efecto cinematográfico, hora dorada, grano de película.

Simulación de escenas dinámicas

Algo realmente fascinante de los modelos de texto a video es su capacidad para emular fenómenos de la vida real en los que han sido entrenados.

Lo hemos visto con modelos de lenguaje grandes y su capacidad para sintetizar contenido convincente que imita las respuestas humanas, pero esto adquiere una nueva dimensión cuando se aplica a videos.

Un modelo de video predice los fotogramas siguientes de una escena, que pueden incluir objetos en movimiento como líquidos, personas, animales o vehículos. Actualmente, esta emulación no es perfecta, pero será interesante evaluar futuros modelos (entrenados en conjuntos de datos más grandes o especializados, como la locomoción animal) en cuanto a su precisión para reproducir fenómenos físicos y también su capacidad para simular el comportamiento de agentes.

Indicación: Toma cinematográfica de una película de abejas zumbando enérgicamente alrededor de una flor, rayos de sol iluminando la escena, capturada en IMAX 4k con un suave desenfoque de fondo.

Prompta: Secuencias dinámicas de un oso pardo atrapando un salmón en un río rápido, iluminación ambiental que resalta el agua salpicante, ángulo bajo, cámara IMAX, calidad de película 4K, hora dorada, grano de película.

Prompt: Secuencias aéreas de una tranquila mañana en la costa de California, con olas golpeando suavemente contra la costa rocosa. Un impresionante amanecer ilumina la costa con colores vibrantes, capturado hermosamente con un DJI Phantom 4 Pro. Los colores y texturas del paisaje cobran vida bajo la suave luz de la mañana. Grano de película, cinematográfico, IMAX, película.

💡 Será interesante ver estas capacidades exploradas más en el futuro, por ejemplo, mediante el entrenamiento de modelos de video en conjuntos de datos de video más grandes que cubran más fenómenos.

Estilo y efectos

Prompt: Video renderizado en 3D de un amigable personaje de brócoli usando un sombrero, caminando por una calle de la ciudad llena de caramelos con casas de pan de jengibre, bajo un sol brillante y cielos azules, estilo de Pixar, cinematográfico, fotorrealista, película, iluminación ambiental, iluminación natural, CGI, vista de gran angular, diurno, ultra realista.

Prompt: Película cinematográfica, toma de un astronauta y una llama al amanecer, el paisaje montañoso bañado en colores suaves y apagados, niebla matutina, rocío brillante en el pelaje, picos escarpados, traje vintage de la NASA, Canon EOS, piel detallada, composición épica, alta calidad, 4K, tendencia en Artstation, hermoso.

Prompt: Panda y gato negro navegando por un río caudaloso en un bote pequeño, estilo de Studio Ghibli > Cinematográfico, composición hermosa > Cámara IMAX siguiendo al bote en panorámica > Alta calidad, cinematográfico, película, efecto de niebla, grano de película, tendencia en Artstation.

Casos de fallo

Dirección incorrecta: a veces el modelo tiene problemas con el movimiento y la dirección. Por ejemplo, aquí el video parece reproducirse al revés. Además, la palabra clave del modificador verde no se tuvo en cuenta.

Prompt: Película que muestra una calabaza verde cayendo en una cama de clavos, explosión en cámara lenta con pedazos volando por todas partes, niebla ambiental que agrega iluminación dramática, filmado con una cámara IMAX, ultra alta definición de 8K, alta calidad, tendencia en Artstation.

Errores de renderizado en escenas realistas: a veces se pueden ver artefactos como líneas verticales o ondas en movimiento. No está claro qué causa esto, pero puede ser debido a la combinación de palabras clave utilizadas.

Prompt: Toma de película de un cautivador vuelo sobre el Gran Cañón, cornisas y mesetas grabadas en naranja y rojo. Las sombras profundas contrastan con el paisaje ardiente bajo el sol del mediodía, capturado con DJI Phantom 4 Pro. La cámara rota para capturar la inmensidad, texturas y colores, en calidad IMAX. Grano de película, cinematográfico, película.

Texto u objetos insertados en la imagen: a veces el modelo inserta palabras del texto de la descripción en la escena, como “IMAX”. Mencionar “Canon EOS” o “filmación con dron” en la descripción también puede hacer que esos objetos aparezcan en el video.

En el siguiente ejemplo, notamos que la palabra “llama” inserta una llama pero también dos apariciones de la palabra llama en llamas.

Prompt: Escena de película de una llama actuando como bombero, con uniforme de bombero, rociando dramáticamente agua sobre llamas rugientes, en medio de una escena urbana caótica, Canon EOS, iluminación ambiental, alta calidad, galardonado, pelaje altamente detallado, cinematográfico, tendencia en Artstation.

Aquí hay algunas recomendaciones iniciales que se pueden hacer a partir de las observaciones anteriores:

Uso de palabras clave específicas de video

Tal vez ya sepas que si no especificas un aspecto específico de la imagen con Stable Diffusion, cosas como el color de la ropa o la hora del día pueden volverse aleatorios o asignarse un valor genérico como una luz neutral de mediodía.

Lo mismo ocurre con los modelos de video: querrás ser específico sobre ciertos aspectos. Ejemplos incluyen el movimiento de la cámara y los personajes, su orientación, velocidad y dirección. Puedes dejarlo sin especificar con fines creativos (generación de ideas), pero esto no siempre te dará los resultados que deseas (por ejemplo, entidades animadas al revés).

Manteniendo la consistencia entre escenas

Si planeas crear secuencias de múltiples videos, querrás asegurarte de agregar tantos detalles como sea posible en cada indicación, de lo contrario, podrías perder detalles importantes de una secuencia a otra, como el color.

💡 Esto también mejorará la calidad de la imagen, ya que la indicación se utiliza para la parte de mejora de la resolución con Zeroscope XL.

Aprovecha la interpolación de fotogramas

La interpolación de fotogramas es una herramienta poderosa que puede reparar pequeños errores de renderizado y convertir muchos defectos en características, especialmente en escenas con mucha animación o donde se acepta un efecto de dibujos animados. El algoritmo FILM suavizará los elementos de un fotograma con eventos anteriores y siguientes en el videoclip.

Esto funciona muy bien para desplazar el fondo cuando la cámara está girando o moviéndose, y también te dará libertad creativa, como controlar el número de fotogramas después de la generación para crear efectos de cámara lenta.

Esperamos que hayas disfrutado viendo la transmisión de AI WebTV y que te inspire a construir más en este campo.

Dado que esta fue una primera prueba, muchas cosas no fueron el enfoque de la demostración técnica: generar secuencias más largas y variadas, agregar audio (efectos de sonido, diálogos), generar y orquestar escenarios complejos o permitir que un modelo de lenguaje tenga más control sobre la canalización.

Algunas de estas ideas podrían incluirse en futuras actualizaciones de AI WebTV, ¡pero también estamos ansiosos por ver qué ideas se les ocurren a la comunidad de investigadores, ingenieros y desarrolladores!

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

El gemelo malévolo de ChatGPT, 'WormGPT', está entrando silenciosamente en correos electrónicos y saqueando bancos.

SlashNext dice que WormGPT es un ejemplo de la amenaza que representan los modelos de IA generadores de lenguaje.

Inteligencia Artificial

Este documento de IA presenta técnicas avanzadas para explicaciones detalladas de texto y visual en modelos de alineación de imágenes y texto.

Los modelos de alineación de texto e imagen tienen como objetivo establecer una conexión significativa entre el conte...

Inteligencia Artificial

Ajuste fino de Llama 2 para generación de texto en Amazon SageMaker JumpStart

Hoy, nos complace anunciar la capacidad de ajustar finamente los modelos Llama 2 de Meta utilizando Amazon SageMaker ...

Inteligencia Artificial

Midjourney vs Diffusión Estable La Batalla de los Generadores de Imágenes de IA

Midjourney vs Stable Diffusion, ¿cuál es mejor para ti? Vamos a explorar las fortalezas y debilidades de ambos genera...

Inteligencia Artificial

Investigadores de Microsoft y ETH Zurich presentan HoloAssist un conjunto de datos multimodal para copilotos de IA de próxima generación para el mundo físico.

En el campo de la inteligencia artificial, un desafío persistente ha sido desarrollar asistentes de IA interactivos q...

Noticias de Inteligencia Artificial

Wimbledon introduce comentarios impulsados por inteligencia artificial (IA)

¡Noticias emocionantes para los entusiastas del tenis! Wimbledon, uno de los torneos de tenis más prestigiosos del mu...