Tune-A-Video - Modern Disney

Tune-A-Video-library
Texto a video

Este es un punto de control compatible con diffusers. Cuando se usa con DiffusionPipeline, devuelve una instancia de TuneAVideoPipeline. df-cpt se usa para indicar que es un equivalente compatible con diffusers de Tune-A-Video-library/mo-di-bear-guitar. Modelo base: nitrosocke/mo-di-diffusion. Prompt de entrenamiento: un oso está tocando la guitarra.

Como usar

Cargando con un checkpoint preexistente de Text2Image

import torch
from diffusers import TuneAVideoPipeline, DDIMScheduler, UNet3DConditionModel
from diffusers.utils import export_to_video
from PIL import Image

# Use cualquier checkpoint preentrenado de Text2Image basado en stable diffusion
pretrained_model_path = "nitrosocke/mo-di-diffusion"
unet = UNet3DConditionModel.from_pretrained(
"Tune-A-Video-library/df-cpt-mo-di-bear-guitar", subfolder="unet", torch_dtype=torch.float16
).to("cuda")

pipe = TuneAVideoPipeline.from_pretrained(pretrained_model_path, unet=unet, torch_dtype=torch.float16).to("cuda")

prompt = "A princess playing a guitar, modern disney style"
generator = torch.Generator(device="cuda").manual_seed(42)

video_frames = pipe(prompt, video_length=3, generator=generator, num_inference_steps=50, output_type="np").frames

# Guardando como gif.
pil_frames = [Image.fromarray(frame) for frame in video_frames]
duration = len(pil_frames) / 8
pil_frames[0].save(
"animation.gif",
save_all=True,
append_images=pil_frames[1:], # apendiza el resto de las imágenes
duration=duration * 1000, # en milisegundos
loop=0,
)

# Guardando como video
video_path = export_to_video(video_frames)

Cargando un checkpoint guardado de Tune-A-Video

import torch
from diffusers import DiffusionPipeline, DDIMScheduler
from diffusers.utils import export_to_video
from PIL import Image

pipe = DiffusionPipeline.from_pretrained(
"Tune-A-Video-library/df-cpt-mo-di-bear-guitar", torch_dtype=torch.float16
).to("cuda")

prompt = "A princess playing a guitar, modern disney style"
generator = torch.Generator(device="cuda").manual_seed(42)

video_frames = pipe(prompt, video_length=3, generator=generator, num_inference_steps=50, output_type="np").frames

# Guardando como gif.
pil_frames = [Image.fromarray(frame) for frame in video_frames]
duration = len(pil_frames) / 8
pil_frames[0].save(
"animation.gif",
save_all=True,
append_images=pil_frames[1:], # apendiza el resto de las imágenes
duration=duration * 1000, # en milisegundos
loop=0,
)

# Guardando como video
video_path = export_to_video(video_frames)

Funcionalidades

Compatible con Diffusers
Devuelve una instancia de TuneAVideoPipeline
Basado en el modelo nitrosocke/mo-di-diffusion
Prompt de entrenamiento: un oso está tocando la guitarra

Casos de uso

Generación de videos a partir de prompts de texto
Creación de contenido artístico en estilo moderno de Disney
Desarrollo de animaciones a partir de descripciones textuales