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
- Proyecto y guía de usuario: https://github.com/Wan-Video/Wan2.2
- Web de prueba: http://wan.video
- ModelScope (modelos): https://modelscope.cn/models/Wan-AI/Wan2.2-Animate-14B
- Hugging Face Space (demo): https://huggingface.co/spaces/Wan-AI/Wan2.2-Animate
- Repos Wan2.2 (T2V/I2V/TI2V/S2V/Animate): https://github.com/Wan-Video/Wan2.2