Diffusers documentation

Wan-Animate-2

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 dari Alibaba Wan Team menganimasikan gambar karakter referensi dengan gerakan dari video penggerak. Video penggerak diproses dalam segmen berpanjang tetap: setiap segmen menjalankan jalur ekstraksi referensi yang meng-cache K/V segmen penggerak di setiap lapisan transformer, melakukan denoising terhadap cache tersebut, dan didekode di dalam loop karena segmen berikutnya dikondisikan oleh frame ekor terdekode dari segmen sebelumnya.

Dua preset tersedia: checkpoint dasar melakukan sampling dengan classifier-free guidance, dan checkpoint distilled melakukan sampling dalam beberapa langkah tanpa guidance (guider-nya dikunci pada 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)

Untuk checkpoint yang telah di-distil, muat Wan-AI/Wan2.2-Animate-2-14B-Distilled-Diffusers dengan cara yang sama — tidak ada perubahan lain. Setiap preset membawa nilai default sampling-nya sendiri (40 langkah untuk checkpoint dasar, 10 untuk yang di-distil), dan tidak ada argumen guidance_scale di mana pun: guidance dimiliki oleh komponen guider dari pipeline (classifier-free guidance pada 3.0 untuk preset dasar, dinonaktifkan untuk yang di-distil).

height dan width (default 800 dan 640) mengatur area target dari video yang dihasilkan; ukuran frame aktual mempertahankan rasio aspek gambar referensi, dan frame penggerak di-letterbox ke ukuran tersebut. Input yang sudah berada pada ukuran letterbox target akan melewati pra-pemrosesan tanpa perubahan, sehingga pra-pemrosesan juga dapat dilakukan sepenuhnya di luar pipeline.

WanAnimate2ModularPipeline

kelas 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 )

ModularPipeline untuk animasi karakter Wan-Animate-2.

WanAnimate2DistilledModularPipeline

kelas 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 )

ModularPipeline untuk model Wan-Animate-2 yang telah di-distil, yang melakukan sampling dalam beberapa langkah tanpa classifier-free guidance.

WanAnimate2Blocks

kelas diffusers.WanAnimate2Blocks

< >

( )

Blok pipeline modular untuk animasi karakter Wan-Animate-2: gambar karakter referensi dan video penggerak menghasilkan video karakter yang mengikuti gerakan penggerak.

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

Inputs: prompt (str): The prompt or prompts to guide image generation. negative_prompt (str, optional): The prompt or prompts not to guide the image generation. prompt_ref (str, optional, defaults to 人物动作的参考视频): The reference prompt for the driving video context max_sequence_length (int, optional, defaults to 512): Maximum sequence length for prompt encoding. image (Image | list): The reference image holding the character to animate. height (int, optional, defaults to 800): Together with width, the target area of the generated video; the aspect ratio comes from image. Overwritten with the resolved frame height. width (int, optional, defaults to 640): See height. Overwritten with the resolved frame width. driving_video (list): The driving video that provides the motion, in any format accepted by VideoProcessor.preprocess_video. driving_video_fps (float, optional): The frame rate driving_video was captured at — load_video(..., return_fps=True) reports it. When set, the driving frames are resampled from it to fps; when None they are used as-is. fps (int, optional, defaults to 24): The frame rate the model generates at segment_frame_length (int, optional, defaults to 81): The number of frames in each inference segment prev_segment_conditioning_frames (int, optional, defaults to 1): The number of conditioning frames carried over from the previous segment generator (Generator, optional): Torch generator for deterministic generation. num_inference_steps (int, optional, defaults to 40): The number of denoising steps. *denoiser_input_fields (None,optional): conditional model inputs for the denoiser: e.g. prompt_embeds, negative_prompt_embeds, etc. output_type (str,optional*, defaults to np): The output type of the decoded videos

Output: video (list): Video yang dihasilkan.

WanAnimate2DistilledBlocks

kelas diffusers.WanAnimate2DistilledBlocks

< >

( )

Blok pipeline modular untuk animasi karakter Wan-Animate-2 yang telah di-distil, dengan sampling dalam beberapa langkah tanpa classifier-free guidance.

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

Input: prompt (str): Prompt atau prompt-prompt untuk mengarahkan generasi gambar. negative_prompt (str, opsional): Prompt atau prompt-prompt yang tidak digunakan untuk mengarahkan generasi gambar. prompt_ref (str, opsional, defaultnya 人物动作的参考视频): Prompt referensi untuk konteks video penggerak max_sequence_length (int, opsional, defaultnya 512): Panjang urutan maksimum untuk enkoding prompt. image (Image | list): Gambar referensi yang berisi karakter yang akan dianimasikan. height (int, opsional, defaultnya 800): Bersama dengan width, area target dari video yang dihasilkan; rasio aspek berasal dari image. Ditulis ulang dengan tinggi frame yang telah diselesaikan. width (int, opsional, defaultnya 640): Lihat height. Ditulis ulang dengan lebar frame yang telah diselesaikan. driving_video (list): Video penggerak yang menyediakan gerakan, dalam format apa pun yang diterima oleh VideoProcessor.preprocess_video. driving_video_fps (float, opsional): Laju frame driving_video saat direkam — load_video(..., return_fps=True) melaporkannya. Jika disetel, frame penggerak disampel ulang darinya ke fps; jika None, frame digunakan apa adanya. fps (int, opsional, defaultnya 24): Laju frame yang dihasilkan oleh model segment_frame_length (int, opsional, defaultnya 81): Jumlah frame dalam setiap segmen inferensi prev_segment_conditioning_frames (int, opsional, defaultnya 1): Jumlah frame kondisioning yang dibawa dari segmen sebelumnya generator (Generator, opsional): Generator Torch untuk generasi deterministik. num_inference_steps (int, opsional, defaultnya 10): Jumlah langkah denoising. *denoiser_input_fields (None,opsional): input model kondisional untuk denoiser: mis. prompt_embeds, negative_prompt_embeds, dll. output_type (str,opsional*, defaultnya np): Jenis output dari video yang didekodekan

Output: video (list): Video yang dihasilkan.

Update on GitHub