Diffusers documentation
Wan-Animate-2
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
< source >( 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
< source >( 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
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
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.