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 من فريق Alibaba Wan صورة شخصية مرجعية بحركة فيديو مُوجِّه. يُعالَج الفيديو الموجِّه في مقاطع بطول ثابت: يُنفَّذ لكل مقطع مسار لاستخراج المرجع يخزّن مؤقتًا K/V للمقطع الموجِّه في كل طبقة من طبقات transformer، ثم يُزال الضوضاء مقابل ذلك التخزين المؤقت، ويُفكَّ الترميز داخل الحلقة لأن المقطع التالي يتوقف على إطارات الذيل المفككة الترميز من المقطع السابق.

يتوفر إعدادان مسبقان: نقطة الفحص الأساسية تعيّن العينات باستخدام التوجيه الحر من التصنيف، بينما نقطة الفحص المُقطّرة تعيّن العينات في خطوات قليلة دون ذلك (حيث يُثبّت مُوجّهها عند 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)

لنقطة التفتيش المُصغّرة، حمّل Wan-AI/Wan2.2-Animate-2-14B-Distilled-Diffusers بالطريقة نفسها — لا يتغير شيء آخر. تحمل كل إعداد مسبق قيم افتراضية خاصة به للعينات (40 خطوة لنقطة التفتيش الأساسية، و10 للمُصغّرة)، ولا يوجد أي حجة guidance_scale في أي مكان: فالإرشاد تملكه مكوّن المُوجّه في خط المعالجة (إرشاد بدون مُصنّف بقيمة 3.0 للإعداد المسبق الأساسي، ومعطّل للمُصغّر).

height وwidth (القيم الافتراضية 800 و640) تحدد المساحة المستهدفة للفيديو المولّد؛ حيث يحافظ حجم الإطار الفعلي على نسبة أبعاد الصورة المرجعية، وتُضاف حواف سوداء (letterbox) إلى الإطارات الدافعة لتناسب هذا الحجم. المدخلات التي تكون بالفعل بحجم الإطار المستهدف مع الحواف تمر عبر المعالجة المسبقة دون أي تغيير، لذا يمكن إجراء المعالجة المسبقة بالكامل خارج خط الأنابيب.

WanAnimate2ModularPipeline

فئة 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 لتأثيرات الحركة الشخصية في Wan-Animate-2.

WanAnimate2DistilledModularPipeline

فئة 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 لنموذج Wan-Animate-2 المُقطّر، والذي يُجري أخذ العينات في خطوات قليلة دون توجيه حر من المُصنِّف.

WanAnimate2Blocks

فئة diffusers.WanAnimate2Blocks

< >

( )

كتل خط أنابيب معيارية لتحريك الشخصيات في Wan-Animate-2: صورة شخصية مرجعية وفيديو تحفيزي ينتجان فيديو للشخصية تتبع فيه حركة الفيديو المحفّز.

المكوّنات: text_encoder (UMT5EncoderModel) tokenizer (AutoTokenizer) image_processor (WanAnimate2VideoProcessor) image_encoder (CLIPVisionModel) video_processor (WanAnimate2VideoProcessor) vae (AutoencoderKLWan) transformer (WanAnimate2Transformer3DModel) scheduler (SchedulerMixin) guider (ClassifierFreeGuidance)

المدخلات: prompt (str): الموجّه أو الموجّهات التي تُوجّه توليد الصورة. negative_prompt (str, اختياري): الموجّه أو الموجّهات التي لا تُوجّه توليد الصورة. prompt_ref (str, اختياري, الافتراضي هو 人物动作的参考视频): الموجّه المرجعي لسياق الفيديو الموجه max_sequence_length (int, اختياري, الافتراضي هو 512): أقصى طول للتسلسل لتشفير الموجّه. image (Image | list): الصورة المرجعية التي تحتوي على الشخصية المراد تحريكها. height (int, اختياري, الافتراضي هو 800): مع width، يمثل المساحة المستهدفة للفيديو المولّد؛ يأتي نسبة الأبعاد من image. يتم استبدالها بارتفاع الإطار المُحل. width (int, اختياري, الافتراضي هو 640): انظر height. يتم استبدالها بعرض الإطار المُحل. driving_video (list): الفيديو الموجه الذي يوفر الحركة، بأي صيغة يقبلها VideoProcessor.preprocess_video. driving_video_fps (float, اختياري): معدل الإطارات الذي تم التقاط driving_video به — يبلغ load_video(..., return_fps=True) عن ذلك. عند ضبطه، تُعاد عينة إطارات القيادة منه إلى fps؛ عند None تُستخدم كما هي. fps (int, اختياري, الافتراضي هو 24): معدل الإطارات الذي يولّد به النموذج segment_frame_length (int, اختياري, الافتراضي هو 81): عدد الإطارات في كل مقطع استنتاج prev_segment_conditioning_frames (int, اختياري, الافتراضي هو 1): عدد إطارات الشرط المنقولة من المقطع السابق generator (Generator, اختياري): مولّد Torch لتوليد حتمي. num_inference_steps (int, اختياري, الافتراضي هو 40): عدد خطوات إزالة الضوضاء. *denoiser_input_fields (None,اختياري): مدخلات النموذج الشرطية لمزيل الضوضاء: مثل prompt_embeds، وnegative_prompt_embeds، وما إلى ذلك. output_type (str,اختياري*، الافتراضي هو np): نوع المخرجات للفيديوهات المُفككة

المخرجات: فيديوهات (list): الفيديوهات المولّدة.

WanAnimate2DistilledBlocks

فئة diffusers.WanAnimate2DistilledBlocks

< >

( )

كتل خط أنابيب معيارية لتحريك الشخصيات في Wan-Animate-2 المُصغَّر، مع أخذ عينات في خطوات قليلة دون توجيه حر من المُصنِّف.

المكوّنات: text_encoder (UMT5EncoderModel) tokenizer (AutoTokenizer) image_processor (WanAnimate2VideoProcessor) image_encoder (CLIPVisionModel) video_processor (WanAnimate2VideoProcessor) vae (AutoencoderKLWan) transformer (WanAnimate2Transformer3DModel) scheduler (SchedulerMixin) guider (ClassifierFreeGuidance)

المدخلات: prompt (str): الموجّه أو الموجّهات التي تُوجّه توليد الصورة. negative_prompt (str, اختياري): الموجّه أو الموجّهات التي لا تُوجّه توليد الصورة. prompt_ref (str, اختياري, الافتراضي هو 人物动作的参考视频): الموجّه المرجعي لسياق الفيديو الموجه max_sequence_length (int, اختياري, الافتراضي هو 512): أقصى طول للتسلسل لتشفير الموجّه. image (Image | list): الصورة المرجعية التي تحتوي على الشخصية المراد تحريكها. height (int, اختياري, الافتراضي هو 800): مع width، يمثل المساحة المستهدفة للفيديو المولّد؛ يأتي نسبة الأبعاد من image. يتم استبدالها بارتفاع الإطار المُحل. width (int, اختياري, الافتراضي هو 640): انظر height. يتم استبدالها بعرض الإطار المُحل. driving_video (list): الفيديو الموجه الذي يوفر الحركة، بأي صيغة يقبلها VideoProcessor.preprocess_video. driving_video_fps (float, اختياري): معدل الإطارات الذي تم التقاط driving_video به — يبلغ load_video(..., return_fps=True) عن ذلك. عند ضبطه، تُعاد عينة إطارات القيادة منه إلى fps؛ عند None تُستخدم كما هي. fps (int, اختياري, الافتراضي هو 24): معدل الإطارات الذي يولّد به النموذج segment_frame_length (int, اختياري, الافتراضي هو 81): عدد الإطارات في كل مقطع استنتاج prev_segment_conditioning_frames (int, اختياري, الافتراضي هو 1): عدد إطارات الشرط المنقولة من المقطع السابق generator (Generator, اختياري): مولّد Torch لتوليد حتمي. num_inference_steps (int, اختياري, الافتراضي هو 10): عدد خطوات إزالة الضوضاء. *denoiser_input_fields (None,اختياري): مدخلات النموذج الشرطية لمزيل الضوضاء: مثل prompt_embeds، وnegative_prompt_embeds، وما إلى ذلك. output_type (str,اختياري*، الافتراضي هو np): نوع المخرجات للفيديوهات المُفككة

المخرجات: فيديوهات (list): الفيديوهات المولّدة.

Update on GitHub