WAN 2.2 Animate ya es abierto: animación y “character replacement” de alta fidelidad desde tu propio PC

Lo que hace no tanto parecía ciencia ficción hoy cabe en el escritorio. Wan2.2-Animate —la nueva pieza de la familia Wan2.2— llega en abierto (pesos + código de inferencia) y permite animar un personaje a partir de un vídeo de referencia o reemplazarlo dentro de la escena original con integración de luz y color. Para el ecosistema open source de vídeo generativo, es un salto tangible: más calidad de movimiento, mejor expresividad y una ruta de despliegue realista en GPUs de consumo.


Qué es Wan2.2 (y qué añade Animate)

Wan2.2 es una familia de modelos generativos de vídeo con varias piezas:

  • A14B / 14B (MoE) para text-to-video (T2V) e image-to-video (I2V) a 720p@24 fps.
  • TI2V-5B (denso) con VAE de alta compresión (4×16×16): unifica T2V e I2V en un solo marco y apunta a tiempos sub-9 min para 5 s a 720p en una GPU de consumo (por ejemplo, RTX 4090).
  • S2V-14B (speech-to-video) con soporte de text-to-speech (CosyVoice).
  • Animate-14B: animación y reemplazo de personaje desde una imagen + un vídeo de referencia, replicando poses, expresiones y sincronizando iluminación/tono para integrarlo en la toma original.

Bajo el capó, Wan2.2 introduce una arquitectura Mixture-of-Experts (MoE) aplicada al proceso de difusión temporal: un experto de alto ruido se ocupa de la estructura y el layout en fases tempranas, y un experto de bajo ruido refina detalles al final. El cambio se gobierna con una regla por SNR (señal-ruido) y mantiene coste de inferencia similar al de un modelo denso de 14 B params al activar un solo experto por paso. El resultado práctico: mejor convergencia y movimientos más complejos con el mismo presupuesto de GPU.


Dos modos clave en Animate

  • Animation mode: genera un vídeo del personaje (a partir de su imagen) imitando la coreografía del vídeo humano de entrada.
  • Replacement mode: sustituye al personaje en la escena original del vídeo, casando luz y color para que la integración sea lo más natural posible.

Pista práctica: si tu caso de uso es VTubing o shorts con mascota/brand character, el modo animation basta; si haces previs o storyboards con planos reales, replacement ahorra mucha postproducción.


Rendimiento y hardware

  • A14B (T2V/I2V) a 1280×720 puede requerir ≈ 80 GB VRAM en single-GPU; hay banderas de offload y dtype conversion para reducir memoria.
  • TI2V-5B cubre 720p@24 fps con ≈ 24 GB VRAM (una RTX 4090 encaja).
  • Multigpu: soporte de FSDP y DeepSpeed Ulysses para acelerar la inferencia (y ajustar memoria pico).
  • FlashAttention-3 en Hopper saca partido en escenarios multi-GPU.

Si vas justo de VRAM, usa --offload_model True, --convert_model_dtype y, en TI2V-5B, --t5_cpu. En multi-GPU, activa --dit_fsdp --t5_fsdp --ulysses_size N.


“Prompt extension”: más detalle sin reescribir el prompt

Wan2.2 puede ampliar prompts para enriquecer tomas:

  • Vía API externa (Dashscope): usa Qwen-plus (T2V) o Qwen-VL-max (I2V).
  • Vía modelo local: Qwen 2.5 (3B–14B) según tu VRAM.

Se activa con --use_prompt_extend y --prompt_extend_method (dashscope o local_qwen). En I2V también puedes generar el prompt a partir de la imagen.


De texto/imagen/audio a vídeo: qué soporta hoy

  • T2V / I2V (A14B): 480p y 720p en single o multi-GPU.
  • TI2V-5B: modo híbrido text-image-to-video a 720p, pensado para GPU de consumo.
  • S2V-14B: audio-driven (con imagen de referencia y prompt opcional) y pose+audio (sincroniza pose del vídeo y la pista de voz o TTS).
  • Animate-14B: animación y reemplazo de personaje desde vídeo + imagen tras una fase de preprocesado.

Primeros pasos (paso a paso realista)

1) Instalar dependencias

git clone https://github.com/Wan-Video/Wan2.2.git
cd Wan2.2
pip install -r requirements.txt
# (Opcional S2V)
pip install -r requirements_s2v.txt

2) Bajar los modelos

Con Hugging Face:

pip install "huggingface_hub[cli]"
huggingface-cli download Wan-AI/Wan2.2-T2V-A14B --local-dir ./Wan2.2-T2V-A14B

O con ModelScope:

pip install modelscope
modelscope download Wan-AI/Wan2.2-T2V-A14B --local_dir ./Wan2.2-T2V-A14B

(El catálogo incluye T2V-A14B, I2V-A14B, TI2V-5B, S2V-14B y Animate-14B).

3) Inferencia básica

T2V 720p @ A14B (single-GPU):

python generate.py --task t2v-A14B --size 1280*720 \
  --ckpt_dir ./Wan2.2-T2V-A14B \
  --offload_model True --convert_model_dtype \
  --prompt "Two anthropomorphic cats in comfy boxing gear and bright gloves fight intensely on a spotlighted stage."

TI2V-5B 720p (4090 / 24 GB):

python generate.py --task ti2v-5B --size 1280*704 \
  --ckpt_dir ./Wan2.2-TI2V-5B \
  --offload_model True --convert_model_dtype --t5_cpu \
  --prompt "Two anthropomorphic cats in comfy boxing gear and bright gloves fight intensely on a spotlighted stage."

Nota: 720p en TI2V usa 1280×704 (o 704×1280).

I2V 720p @ A14B (single-GPU):

python generate.py --task i2v-A14B --size 1280*720 \
  --ckpt_dir ./Wan2.2-I2V-A14B \
  --offload_model True --convert_model_dtype \
  --image examples/i2v_input.JPG \
  --prompt "Summer beach vacation style, a white cat wearing sunglasses sits on a surfboard..."

S2V (audio→vídeo con imagen de referencia):

python generate.py --task s2v-14B --size 1024*704 \
  --ckpt_dir ./Wan2.2-S2V-14B \
  --offload_model True --convert_model_dtype \
  --image "examples/i2v_input.JPG" \
  --audio "examples/talk.wav" \
  --prompt "Summer beach vacation style..."

Pose + audio (S2V):

torchrun --nproc_per_node=8 generate.py --task s2v-14B --size 1024*704 \
  --ckpt_dir ./Wan2.2-S2V-14B --dit_fsdp --t5_fsdp --ulysses_size 8 \
  --image "examples/pose.png" --audio "examples/sing.MP3" \
  --pose_video "./examples/pose.mp4" --prompt "a person is singing"

4) Wan-Animate (pipeline típico)

Preprocesado (genera materiales de entrada a partir del vídeo y la imagen del personaje):

python ./wan/modules/animate/preprocess/preprocess_data.py \
  --ckpt_path ./Wan2.2-Animate-14B/process_checkpoint \
  --video_path ./examples/wan_animate/animate/video.mp4 \
  --refer_path ./examples/wan_animate/animate/image.jpeg \
  --save_path  ./examples/wan_animate/animate/process_results \
  --resolution_area 1280 720 \
  --retarget_flag --use_flux

Animación (single-GPU):

python generate.py --task animate-14B \
  --ckpt_dir ./Wan2.2-Animate-14B/ \
  --src_root_path ./examples/wan_animate/animate/process_results/ \
  --refert_num 1

Reemplazo (single-GPU, con relighting LoRA):

python generate.py --task animate-14B \
  --ckpt_dir ./Wan2.2-Animate-14B/ \
  --src_root_path ./examples/wan_animate/replace/process_results/ \
  --refert_num 1 --replace_flag --use_relighting_lora

Consejo: el equipo de Wan no recomienda reutilizar LoRAs entrenadas sobre Wan2.2 directamente en Wan-Animate (los cambios de pesos pueden degradar el comportamiento).


Integraciones y comunidad

  • Diffusers: T2V/I2V/TI2V integrados para flujos Python.
  • ComfyUI: nodos compatibles para construir pipelines visuales.
  • Spaces (Hugging Face) y ModelScope Studio: demos listos para probar en navegador.
  • Herramientas de terceros: wrappers para ComfyUI, offload por capas, cuantización FP8, sequence parallelism, LoRA y training completo.

Licencia y uso responsable

Los modelos se publican bajo Apache-2.0. Los autores no reclaman derechos sobre el contenido generado, pero recuerdan que eres responsable de cumplir la licencia y la ley: nada de doxxing, desinformación, daño a individuos o colectivos, ni usos que vulneren normas aplicables.


Buenas prácticas (si es tu primera vez)

  • Empieza con TI2V-5B para validar equipo y pipeline.
  • Bloquea VRAM con offload/dtype si vas justo; si no, quítalos para mayor velocidad.
  • Usa prompt extension en proyectos creativos: mejora sorprendentemente el detalle en planos largos.
  • Cuida el preprocess en Animate: limpieza de poses y materiales mejora mucho la estabilidad cuadro a cuadro.
  • Versiona prompts (y semillas) para reproducibilidad en equipo.

Preguntas frecuentes

¿Puedo usar una sola GPU “doméstica”?
Sí. TI2V-5B apunta a ≈ 24 GB VRAM (por ejemplo, RTX 4090). Para A14B y tareas exigentes, necesitarás ≈ 80 GB o ir a multi-GPU con FSDP/Ulysses.

¿Se puede correr sin conexión?
Sí, descargando previamente pesos y requisitos. Solo el prompt-extension por API externa requiere red; con modelos locales (Qwen) puedes mantener todo on-prem.

¿Qué formato de salida obtengo?
Vídeos a 720p@24 fps (según tarea/ajustes), con clips concatenables (--num_clip controla la longitud en S2V).

¿Sirve para post profesional?
Para previsualización (previz), storyboards animados y prototipos creativos, sí. Para plano final, combina con tu pipeline de compositing y control de arte (luces, grading).


Fuentes

Scroll al inicio