Diffusers documentation

Wan-Animate-2

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Wan-Animate-2

Wan-Animate-2 de l’équipe Alibaba Wan anime une image de personnage de référence avec le mouvement d’une vidéo pilote. La vidéo pilote est traitée par segments de longueur fixe : chaque segment exécute un passage d’extraction de référence qui met en cache les K/V du segment pilote dans chaque couche du transformer, effectue le débruitage par rapport à ce cache et est décodé dans la boucle, car le segment suivant est conditionné par les trames de fin décodées du segment précédent.

Deux préréglages sont disponibles : le point de contrôle de base effectue l'échantillonnage avec un guidage sans classifieur, tandis que le point de contrôle distillé effectue l'échantillonnage en quelques étapes sans celui-ci (son guideur est fixé à guidance_scale=1.0).

import torch
from diffusers import ModularPipeline
from diffusers.utils import export_to_video, load_image, load_video

pipe = ModularPipeline.from_pretrained("Wan-AI/Wan2.2-Animate-2-14B-Diffusers")
pipe.load_components(dtype=torch.bfloat16)

# The transformer weights and the per-segment reference KV cache do not co-reside on one 80 GB
# card at the default resolution, so stream the transformer's blocks. Compiling the blocks is
# required as the in-context attention runs on the flex backend
pipe.transformer.enable_group_offload(
    onload_device=torch.device("cuda"),
    offload_device=torch.device("cpu"),
    offload_type="block_level",
    use_stream=True,
)
pipe.text_encoder.to("cuda")  # or "mps", "xpu", "cpu"
pipe.image_encoder.to("cuda")
pipe.vae.to("cuda")
pipe.transformer.compile_repeated_blocks(fullgraph=False)

# The first demo from the official repository: https://github.com/Wan-Video/Wan-Animate-2
demo = "https://raw.githubusercontent.com/Wan-Video/Wan-Animate-2/main/examples/demo1"
image = load_image(f"{demo}/reference.png")
driving_video, driving_video_fps = load_video(f"{demo}/template.mp4", return_fps=True)
prompt = "人物外观描述:一只银灰色虎斑纹的小猫,拥有圆润的脸庞、竖立的耳朵和巨大的圆形眼睛。它身穿一套深蓝色的制服套装,包括一件带有金色纽扣的西装外套和一条百褶裙。外套里面搭配着白色衬衫,领口处系着一个红色的蝴蝶结,袖口露出白色的衬衫边缘。背景描述:背景为纯白色,光线均匀明亮,无其他杂物或装饰。"

videos = pipe(
    image=image,
    driving_video=driving_video,
    driving_video_fps=driving_video_fps,
    prompt=prompt,
    output="videos",
)
export_to_video(videos[0], "output.mp4", fps=24)

Pour le point de contrôle distillé, chargez Wan-AI/Wan2.2-Animate-2-14B-Distilled-Diffusers de la même manière — rien d’autre ne change. Chaque préréglage porte ses propres valeurs par défaut d’échantillonnage (40 étapes pour le point de contrôle de base, 10 pour le distillé), et aucun argument guidance_scale n’existe nulle part : le guidage est géré par le composant guider du pipeline (guidage sans classifieur à 3.0 pour le préréglage de base, désactivé pour le distillé).

height et width (valeurs par défaut 800 et 640) définissent la surface cible de la vidéo générée ; la taille réelle des images conserve le ratio d’aspect de l’image de référence, et les images de pilotage sont encadrées (letterbox) en conséquence. Les entrées qui correspondent déjà à la taille de letterbox cible passent à travers la prétraitement sans modification, ce qui permet également d’effectuer la prétraitement entièrement en dehors du pipeline.

WanAnimate2ModularPipeline

classe diffusers.WanAnimate2ModularPipeline

< >

( blocks: diffusers.modular_pipelines.modular_pipeline.ModularPipelineBlocks | None = Nonepretrained_model_name_or_path: str | os.PathLike | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = Noneworkflow: str | None = Nonemodular_config_dict: dict[str, typing.Any] | None = Noneconfig_dict: dict[str, typing.Any] | None = None**kwargs )

Un ModularPipeline pour l'animation de personnages Wan-Animate-2.

WanAnimate2DistilledModularPipeline

classe diffusers.WanAnimate2DistilledModularPipeline

< >

( blocks: diffusers.modular_pipelines.modular_pipeline.ModularPipelineBlocks | None = Nonepretrained_model_name_or_path: str | os.PathLike | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = Noneworkflow: str | None = Nonemodular_config_dict: dict[str, typing.Any] | None = Noneconfig_dict: dict[str, typing.Any] | None = None**kwargs )

Un ModularPipeline pour le modèle distillé Wan-Animate-2, qui effectue l'échantillonnage en peu d'étapes sans guidage sans classifieur.

WanAnimate2Blocks

classe diffusers.WanAnimate2Blocks

< >

( )

Blocs de pipeline modulaires pour l'animation de personnages Wan-Animate-2 : une image de référence du personnage et une vidéo de pilotage produisent une vidéo du personnage suivant le mouvement de pilotage.

Composants : text_encoder (UMT5EncoderModel) tokenizer (AutoTokenizer) image_processor (WanAnimate2VideoProcessor) image_encoder (CLIPVisionModel) video_processor (WanAnimate2VideoProcessor) vae (AutoencoderKLWan) transformer (WanAnimate2Transformer3DModel) scheduler (SchedulerMixin) guider (ClassifierFreeGuidance)

Entrées : prompt (str) : Le prompt ou les prompts pour guider la génération d'image. negative_prompt (str, facultatif) : Le prompt ou les prompts à ne pas utiliser pour guider la génération d'image. prompt_ref (str, facultatif, par défaut 人物动作的参考视频) : Le prompt de référence pour le contexte de la vidéo de pilotage max_sequence_length (int, facultatif, par défaut 512) : Longueur de séquence maximale pour l'encodage du prompt. image (Image | list) : L'image de référence contenant le personnage à animer. height (int, facultatif, par défaut 800) : Avec width, la surface cible de la vidéo générée ; le ratio d'aspect provient de image. Remplacée par la hauteur de frame résolue. width (int, facultatif, par défaut 640) : Voir height. Remplacée par la largeur de frame résolue. driving_video (list) : La vidéo de pilotage qui fournit le mouvement, dans n'importe quel format accepté par VideoProcessor.preprocess_video. driving_video_fps (float, facultatif) : Le taux de frames auquel driving_video a été capturé — load_video(..., return_fps=True) le signale. Lorsqu'il est défini, les frames de pilotage sont rééchantillonnées à partir de celui-ci vers fps ; lorsqu'il est None, elles sont utilisées telles quelles. fps (int, facultatif, par défaut 24) : Le taux de frames auquel le modèle génère segment_frame_length (int, facultatif, par défaut 81) : Le nombre de frames dans chaque segment d'inférence prev_segment_conditioning_frames (int, facultatif, par défaut 1) : Le nombre de frames de conditionnement repris du segment précédent generator (Generator, facultatif) : Générateur Torch pour une génération déterministe. num_inference_steps (int, facultatif, par défaut 40) : Le nombre d'étapes de débruitage. *denoiser_input_fields (None,facultatif) : entrées conditionnelles du modèle pour le débruiteur : par exemple prompt_embeds, negative_prompt_embeds, etc. output_type (str,facultatif*, par défaut np) : Le type de sortie des vidéos décodées

Sorties : vidéos (list) : Les vidéos générées.

WanAnimate2DistilledBlocks

classe diffusers.WanAnimate2DistilledBlocks

< >

( )

Blocs de pipeline modulaires pour l'animation de personnages Wan-Animate-2 distillés, avec un échantillonnage en peu d'étapes sans guidage sans classifieur.

Composants : text_encoder (UMT5EncoderModel) tokenizer (AutoTokenizer) image_processor (WanAnimate2VideoProcessor) image_encoder (CLIPVisionModel) video_processor (WanAnimate2VideoProcessor) vae (AutoencoderKLWan) transformer (WanAnimate2Transformer3DModel) scheduler (SchedulerMixin) guider (ClassifierFreeGuidance)

Entrées : prompt (str) : Le prompt ou les prompts pour guider la génération d'image. negative_prompt (str, facultatif) : Le prompt ou les prompts à ne pas utiliser pour guider la génération d'image. prompt_ref (str, facultatif, par défaut 人物动作的参考视频) : Le prompt de référence pour le contexte de la vidéo de pilotage max_sequence_length (int, facultatif, par défaut 512) : Longueur de séquence maximale pour l'encodage du prompt. image (Image | list) : L'image de référence contenant le personnage à animer. height (int, facultatif, par défaut 800) : Avec width, la surface cible de la vidéo générée ; le ratio d'aspect provient de image. Remplacée par la hauteur de frame résolue. width (int, facultatif, par défaut 640) : Voir height. Remplacée par la largeur de frame résolue. driving_video (list) : La vidéo de pilotage qui fournit le mouvement, dans n'importe quel format accepté par VideoProcessor.preprocess_video. driving_video_fps (float, facultatif) : Le taux de frames auquel driving_video a été capturé — load_video(..., return_fps=True) le signale. Lorsqu'il est défini, les frames de pilotage sont rééchantillonnées à partir de celui-ci vers fps ; lorsqu'il est None, elles sont utilisées telles quelles. fps (int, facultatif, par défaut 24) : Le taux de frames auquel le modèle génère segment_frame_length (int, facultatif, par défaut 81) : Le nombre de frames dans chaque segment d'inférence prev_segment_conditioning_frames (int, facultatif, par défaut 1) : Le nombre de frames de conditionnement repris du segment précédent generator (Generator, facultatif) : Générateur Torch pour une génération déterministe. num_inference_steps (int, facultatif, par défaut 10) : Le nombre d'étapes de débruitage. *denoiser_input_fields (None,facultatif) : entrées conditionnelles du modèle pour le débruiteur : par exemple prompt_embeds, negative_prompt_embeds, etc. output_type (str,facultatif*, par défaut np) : Le type de sortie des vidéos décodées

Sorties : vidéos (list) : Les vidéos générées.

Update on GitHub