Tune-A-Video: Ajuste único de modelos de difusión de imágenes para la generación de texto a vídeo
pip install -r requirements.txt
[Difusión estable] La difusión estable es un modelo de difusión latente de texto a imagen capaz de generar imágenes fotorrealistas dada cualquier entrada de texto. Los modelos de Stable Diffusion previamente entrenados se pueden descargar desde Hugging Face (p. ej., Stable Diffusion v1-4, v2-1). También puede utilizar modelos de difusión estable ajustados y entrenados en diferentes estilos (por ejemplo, Modern Disney, Redshift, etc.).
[DreamBooth] DreamBooth es un método para personalizar modelos de texto a imagen como Stable Diffusion con solo unas pocas imágenes (3 ~ 5 imágenes) de un sujeto. La sintonización de un vídeo en los modelos DreamBooth permite la generación personalizada de texto a vídeo de un tema específico. Hay algunos modelos públicos de DreamBooth disponibles en Hugging Face (por ejemplo, mr-potato-head). También puedes entrenar tu propio modelo DreamBooth siguiendo este ejemplo de entrenamiento.
Para ajustar los modelos de difusión de texto a imagen para la generación de texto a video, ejecute este comando:
accelerate launch train_tuneavideo.py --config= " configs/man-skiing.yaml "
Una vez finalizado el entrenamiento, ejecute la inferencia:
from tuneavideo . pipelines . pipeline_tuneavideo import TuneAVideoPipeline
from tuneavideo . models . unet import UNet3DConditionModel
from tuneavideo . util import save_videos_grid
import torch
pretrained_model_path = "./checkpoints/stable-diffusion-v1-4"
my_model_path = "./outputs/man-skiing"
unet = UNet3DConditionModel . from_pretrained ( my_model_path , subfolder = 'unet' , torch_dtype = torch . float16 ). to ( 'cuda' )
pipe = TuneAVideoPipeline . from_pretrained ( pretrained_model_path , unet = unet , torch_dtype = torch . float16 ). to ( "cuda" )
pipe . enable_xformers_memory_efficient_attention ()
pipe . enable_vae_slicing ()
prompt = "spider man is skiing"
ddim_inv_latent = torch . load ( f" { my_model_path } /inv_latents/ddim_latent-500.pt" ). to ( torch . float16 )
video = pipe ( prompt , latents = ddim_inv_latent , video_length = 24 , height = 512 , width = 512 , num_inference_steps = 50 , guidance_scale = 12.5 ). videos
save_videos_grid ( video , f"./ { prompt } .gif" )
Vídeo de entrada | Vídeo de salida | |
"Un hombre está esquiando" | "La Mujer Maravilla, está esquiando" | "Una niña está esquiando" |
"Un conejo se come una sandía" | "Un gato está comiendo una sandía sobre la mesa" | "Un cachorro está comiendo una hamburguesa con queso sobre la mesa, al estilo cómic" |
"Un jeep se mueve por la carretera" | "Un coche se mueve por la carretera, al estilo de los dibujos animados" | "Un coche se mueve sobre la nieve" |