Diffusers documentation
Wan-Animate-2
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
< 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 )
ModularPipeline untuk animasi karakter Wan-Animate-2.
WanAnimate2DistilledModularPipeline
kelas 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 )
ModularPipeline untuk model Wan-Animate-2 yang telah di-distil, yang melakukan sampling dalam beberapa langkah tanpa classifier-free guidance.
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
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.