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.43.0).
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