benjamin-paine/vidxtend
VidXTend es una canalización Diffusers aislada para la etapa 2 de StreamingT2V. Está diseñada para extender animaciones de 16 fotogramas a 256 x 256 píxeles añadiendo 8 fotogramas por iteración, equivalente a un segundo a 8 fps.
Como usar
Instalación del paquete VidXTend:
pip install git+https://github.com/painebenjamin/vidxtend.git
Uso con Diffusers:
pip install -U diffusers transformers accelerate
import torch
from diffusers import DiffusionPipeline
# switch to "mps" for apple devices
pipe = DiffusionPipeline.from_pretrained("benjamin-paine/vidxtend", dtype=torch.bfloat16, device_map="cuda")
prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
image = pipe(prompt).images[0]
Uso por línea de comandos:
vidxtend [OPTIONS] VIDEO PROMPT
La herramienta vidxtend ejecuta VidXTend sobre un archivo de video y concatena los fotogramas generados al final. Entre las opciones principales están --frame-rate, --seconds, --negative-prompt, --guidance-scale, --num-inference-steps, --seed, --model, --gpu-id, --output, --fit y --anchor.
Creación de la canalización en Python desde el repositorio:
from vidxtend import VidXTendPipeline
pipeline = VidXTendPipeline.from_pretrained(
"benjamin-paine/vidxtend",
torch_dtype=torch.float16,
variant="fp16",
)
O desde un único archivo:
from vidxtend import VidXTendPipeline
pipeline = VidXTendPipeline.from_single_file(
"benjamin-paine/vidxtend",
torch_dtype=torch.float16,
variant="fp16",
)
Métodos recomendados para mejorar rendimiento y uso de memoria:
pipeline.enable_model_cpu_offload()
pipeline.enable_vae_slicing()
pipeline.set_use_memory_efficient_attention_xformers()
Ejemplo de inferencia para añadir nuevos fotogramas usando los últimos 8 fotogramas del video como guía:
# Assume images is a list of PIL Images
new_frames = pipeline(
prompt=prompt,
negative_prompt=None, # Optionally use negative prompt
image=images[-8:], # Use final 8 frames of video
input_frames_conditioning=images[:1], # Use first frame of video
eta=1.0,
guidance_scale=7.5,
output_type="pil"
).frames[8:] # Remove the first 8 frames from the output as they were used as guide for final 8
Funcionalidades
- Extensión de video generativo a partir de texto para añadir continuidad temporal a clips existentes.
- Basado en la etapa 2 de StreamingT2V, enfocada en generación de video larga, consistente y extensible.
- Soporta pesos en formato Safetensors y uso mediante Diffusers o el paquete VidXTend.
- Incluye utilidad de línea de comandos para extender un archivo de video y concatenar los nuevos fotogramas al final.
- Permite ajustar prompt negativo, guidance scale, pasos de inferencia, semilla, FPS, duración añadida y salida MP4.
- Ofrece optimizaciones de memoria como CPU offload, VAE slicing y atención eficiente con xFormers.
Casos de uso
- Extender clips animados cortos generados por IA manteniendo coherencia visual entre fotogramas.
- Añadir aproximadamente un segundo de video a 8 fps por pasada a una animación de 16 fotogramas.
- Experimentar con generación de video larga basada en texto usando la arquitectura StreamingT2V.
- Crear flujos locales de extensión de video desde Python o desde una interfaz de línea de comandos.