Diffusers documentation
Wan-Animate-2
Wan-Animate-2
Alibaba Wan Team tarafından geliştirilen Wan-Animate-2, referans karakter görselini, sürücü videonun hareketiyle canlandırır. Sürücü video, sabit uzunlukta segmentler halinde işlenir: her segment, her transformer katmanında sürücü segmentinin K/V'sini önbelleğe alan bir referans çıkarma geçişi çalıştırır, bu önbelleğe karşı gürültü giderme yapar ve bir sonraki segmentin önceki segmentin çözümlenmiş kuyruk karelerine bağlı olması nedeniyle döngü içinde çözümlenir.
İki hazır ayar mevcuttur: temel kontrol noktası, sınıflandırıcı-ücretsiz yönlendirme ile örneklerken, damıtılmış kontrol noktası yönlendirme olmadan birkaç adımda örnekler (yönlendiricisi guidance_scale=1.0 olarak sabitlenmiştir).
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)Distilled checkpoint için Wan-AI/Wan2.2-Animate-2-14B-Distilled-Diffusers modelini aynı şekilde yükleyin — başka hiçbir değişiklik yoktur. Her preset kendi örneklem varsayılanlarını taşır (temel checkpoint için 40 adım, distilled olan için 10 adım) ve hiçbir yerde guidance_scale argümanı bulunmaz: guidance, pipeline’ın guider bileşenine aittir (temel preset için 3.0 değerinde classifier-free guidance, distilled olan için devre dışı).
height ve width (varsayılanlar 800 ve 640), üretilen videonun hedef alanını belirler; gerçek kare boyutu, referans görüntünün en-boy oranını korur ve sürücü kareleri buna göre letterbox (siyah şeritli) olarak ayarlanır. Zaten hedef letterbox boyutunda olan girdiler, ön işlemeden dokunulmadan geçer; bu nedenle ön işleme tamamen pipeline dışında da yapılabilir.
WanAnimate2ModularPipeline
sınıf 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 )
Wan-Animate-2 karakter animasyonu için bir ModularPipeline.
WanAnimate2DistilledModularPipeline
sınıf 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 )
Sınıflandırıcı-özgür yönlendirme olmadan birkaç adımda örnekleyen distile Wan-Animate-2 modeli için bir ModularPipeline.
WanAnimate2Blocks
Wan-Animate-2 karakter animasyonu için modüler pipeline blokları: bir referans karakter görseli ve bir sürücü video, karakterin sürücü hareketiyle uyumlu hareketini gösteren bir video üretir.
Bileşenler:
text_encoder (UMT5EncoderModel) tokenizer (AutoTokenizer) image_processor (WanAnimate2VideoProcessor)
image_encoder (CLIPVisionModel) video_processor (WanAnimate2VideoProcessor) vae (AutoencoderKLWan)
transformer (WanAnimate2Transformer3DModel) scheduler (SchedulerMixin) guider (ClassifierFreeGuidance)
Girdiler:
prompt (str):
Görsel üretimi yönlendirmek için istem veya istemler.
negative_prompt (str, isteğe bağlı):
Görsel üretimini yönlendirmemesi gereken istem veya istemler.
prompt_ref (str, isteğe bağlı, varsayılan: 人物动作的参考视频):
Sürücü video bağlamı için referans istem
max_sequence_length (int, isteğe bağlı, varsayılan: 512):
İstem kodlaması için maksimum dizi uzunluğu.
image (Image | list):
Canlandırılacak karakteri içeren referans görsel.
height (int, isteğe bağlı, varsayılan: 800):
width ile birlikte, üretilen videonun hedef alanı; en-boy oranı image'dan gelir.
Çözümlenen kare yüksekliğiyle değiştirilir.
width (int, isteğe bağlı, varsayılan: 640):
Bkz. height. Çözümlenen kare genişliğiyle değiştirilir.
driving_video (list):
Hareketi sağlayan sürücü video, VideoProcessor.preprocess_video tarafından kabul edilen herhangi bir biçimde.
driving_video_fps (float, isteğe bağlı):
driving_video'nun çekildiği kare hızı — load_video(..., return_fps=True) bunu raporlar. Ayarlandığında,
sürücü kareleri buradan fps'e yeniden örneklenir; None olduğunda olduğu gibi kullanılır.
fps (int, isteğe bağlı, varsayılan: 24):
Modelin üretim yaptığı kare hızı
segment_frame_length (int, isteğe bağlı, varsayılan: 81):
Her çıkarım segmentindeki kare sayısı
prev_segment_conditioning_frames (int, isteğe bağlı, varsayılan: 1):
Önceki segmentten devralınan koşullandırma karelerinin sayısı
generator (Generator, isteğe bağlı):
Belirlenebilir üretim için Torch üreteci.
num_inference_steps (int, isteğe bağlı, varsayılan: 40):
Gürültü azaltma adım sayısı.
*denoiser_input_fields (None,isteğe bağlı):
Gürültü azaltıcı için koşullu model girdileri: örn. prompt_embeds, negative_prompt_embeds vb.
output_type (str,isteğe bağlı*, varsayılan: np):
Çözümlenen videoların çıktı türü
Çıktılar:
videos (list):
Oluşturulan videolar.
WanAnimate2DistilledBlocks
Damıtılmış Wan-Animate-2 karakter animasyonu için modüler pipeline blokları, classifier-free guidance olmadan birkaç adımda örneklem.
Bileşenler:
text_encoder (UMT5EncoderModel) tokenizer (AutoTokenizer) image_processor (WanAnimate2VideoProcessor)
image_encoder (CLIPVisionModel) video_processor (WanAnimate2VideoProcessor) vae (AutoencoderKLWan)
transformer (WanAnimate2Transformer3DModel) scheduler (SchedulerMixin) guider (ClassifierFreeGuidance)
Girdiler:
prompt (str):
Görsel üretimi yönlendirmek için istem veya istemler.
negative_prompt (str, isteğe bağlı):
Görsel üretimini yönlendirmemesi gereken istem veya istemler.
prompt_ref (str, isteğe bağlı, varsayılan: 人物动作的参考视频):
Sürücü video bağlamı için referans istem
max_sequence_length (int, isteğe bağlı, varsayılan: 512):
İstem kodlaması için maksimum dizi uzunluğu.
image (Image | list):
Canlandırılacak karakteri içeren referans görsel.
height (int, isteğe bağlı, varsayılan: 800):
width ile birlikte, üretilen videonun hedef alanı; en-boy oranı image'dan gelir.
Çözümlenen kare yüksekliğiyle değiştirilir.
width (int, isteğe bağlı, varsayılan: 640):
Bkz. height. Çözümlenen kare genişliğiyle değiştirilir.
driving_video (list):
Hareketi sağlayan sürücü video, VideoProcessor.preprocess_video tarafından kabul edilen herhangi bir biçimde.
driving_video_fps (float, isteğe bağlı):
driving_video'nun çekildiği kare hızı — load_video(..., return_fps=True) bunu raporlar. Ayarlandığında,
sürücü kareleri buradan fps'e yeniden örneklenir; None olduğunda olduğu gibi kullanılır.
fps (int, isteğe bağlı, varsayılan: 24):
Modelin üretim yaptığı kare hızı
segment_frame_length (int, isteğe bağlı, varsayılan: 81):
Her çıkarım segmentindeki kare sayısı
prev_segment_conditioning_frames (int, isteğe bağlı, varsayılan: 1):
Önceki segmentten devralınan koşullandırma karelerinin sayısı
generator (Generator, isteğe bağlı):
Belirlenebilir üretim için Torch üreteci.
num_inference_steps (int, isteğe bağlı, varsayılan: 10):
Gürültü azaltma adım sayısı.
*denoiser_input_fields (None,isteğe bağlı):
Gürültü azaltıcı için koşullu model girdileri: örn. prompt_embeds, negative_prompt_embeds vb.
output_type (str,isteğe bağlı*, varsayılan: np):
Çözümlenen videoların çıktı türü
Çıktılar:
videos (list):
Oluşturulan videolar.