guoyww/animatediff-motion-adapter-v1-4
AnimateDiff es un método que te permite crear videos utilizando modelos de texto a imagen de Stable Diffusion preexistentes. Lo logra insertando capas de módulos de movimiento en un modelo de texto a imagen congelado y entrenándolo en clips de video para extraer un movimiento previo. Estos módulos de movimiento se aplican después de los bloques de ResNet y Atención en el UNet de Stable Diffusion. Su propósito es introducir un movimiento coherente entre los fotogramas de las imágenes. Para apoyar estos módulos, introducimos los conceptos de MotionAdapter y UNetMotionModel. Estos sirven como una forma conveniente de usar estos módulos de movimiento con los modelos de Stable Diffusion existentes.
Como usar
El siguiente ejemplo demuestra cómo puedes utilizar los módulos de movimiento con un modelo de texto a imagen de Stable Diffusion existente.
import torch
from diffusers import MotionAdapter, AnimateDiffPipeline, DDIMScheduler
from diffusers.utils import export_to_gif
# Cargar el adaptador de movimiento
adapter = MotionAdapter.from_pretrained("guoyww/animatediff-motion-adapter-v1-4")
model_id = "SG161222/Realistic_Vision_V5.1_noVAE"
pipe = AnimateDiffPipeline.from_pretrained(model_id, motion_adapter=adapter)
scheduler = DDIMScheduler.from_pretrained(
model_id, subfolder="scheduler", clip_sample=False, timestep_spacing="linspace", steps_offset=1
)
pipe.scheduler = scheduler
# habilitar ahorro de memoria
pipe.enable_vae_slicing()
pipe.enable_model_cpu_offload()
output = pipe(
prompt=(
"masterpiece, bestquality, highlydetailed, ultradetailed, sunset, "
"orange sky, warm lighting, fishing boats, ocean waves seagulls, "
"rippling water, wharf, silhouette, serene atmosphere, dusk, evening glow, "
"golden hour, coastal landscape, seaside scenery"),
negative_prompt="bad quality, worse quality",
num_frames=16,
guidance_scale=7.5,
num_inference_steps=25,
generator=torch.Generator("cpu").manual_seed(42),
)
frames = output.frames[0]
export_to_gif(frames, "animation.gif")
AnimateDiff tiende a funcionar mejor con modelos de Stable Diffusion afinados. Si planeas usar un scheduler que pueda recortar muestras, asegúrate de desactivarlo configurando clip_sample=False en el scheduler, ya que esto también puede tener un efecto adverso en las muestras generadas.
Funcionalidades
- Creación de videos utilizando modelos de texto a imagen de Stable Diffusion
- Inserción de capas de módulos de movimiento en el modelo de texto a imagen
- Entrenamiento en clips de video para extraer un movimiento previo
- Aplicación de módulos de movimiento después de los bloques de ResNet y Atención
- Introducción de MotionAdapter y UNetMotionModel para usar módulos de movimiento
Casos de uso
- Creación de videos a partir de texto
- Generación de videos con movimiento coherente
- Aplicación en proyectos artísticos digitales
- Desarrollo de contenido multimedia para marketing