guoyww/animatediff-motion-adapter-v1-5-2

guoyww
Texto a video

AnimateDiff es un método que permite crear videos utilizando modelos preexistentes de Stable Diffusion de Texto a Imagen. Logra esto 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 previo de movimiento. Estos módulos de movimiento se aplican después de los bloques ResNet y de Atención en el U-Net de Stable Diffusion. Su propósito es introducir un movimiento coherente a través de los cuadros de imagen. Para apoyar estos módulos, introducimos los conceptos de un MotionAdapter y UNetMotionModel. Estos sirven como una forma conveniente de usar estos módulos de movimiento con modelos de Stable Diffusion existentes.

Como usar

El siguiente ejemplo demuestra cómo puedes utilizar los módulos de movimiento con un modelo de Stable Diffusion de texto a imagen 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-5-2")
# cargar modelo afinado basado en SD 1.5
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")

Funcionalidades

Permite la creación de videos a partir de modelos de Stable Diffusion de Texto a Imagen
Inserción de módulos de movimiento
Entrenamiento en clips de video para extraer un previo de movimiento
Aplicación de módulos de movimiento después de los bloques ResNet y de Atención
Introducción del concepto de MotionAdapter y UNetMotionModel

Casos de uso

Creación de videos a partir de descripciones textuales detalladas
Mejora de la calidad del movimiento en los videos generados
Adaptación y uso con modelos existentes de Stable Diffusion