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.42.1).
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 da Alibaba Wan Team anima uma imagem de referência de um personagem com o movimento de um vídeo de direção. O vídeo de direção é processado em segmentos de comprimento fixo: cada segmento executa uma passagem de extração de referência que faz o cache do K/V do segmento de direção em cada camada do transformer, realiza o desruido contra esse cache e é decodificado dentro do loop, pois o próximo segmento é condicionado pelas quadros finais decodificados do segmento anterior.

Dois presets estão disponíveis: o checkpoint base amostra com classifier-free guidance, e o checkpoint destilado amostra em poucas etapas sem ele (seu guider é fixado em 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)

Para o checkpoint destilado, carregue Wan-AI/Wan2.2-Animate-2-14B-Distilled-Diffusers da mesma forma — nada mais muda. Cada preset possui seus próprios padrões de amostragem (40 passos para o checkpoint base, 10 para o destilado) e nenhum argumento guidance_scale existe em lugar nenhum: a orientação é gerenciada pelo componente guider do pipeline (orientação livre de classificador em 3.0 para o preset base, desativada para o destilado).

height e width (padrões 800 e 640) definem a área alvo do vídeo gerado; o tamanho real do quadro mantém a proporção da imagem de referência, e os quadros de condução são ajustados com barras (letterbox) para esse tamanho. Entradas que já estão no tamanho de letterbox alvo passam pelo pré-processamento sem alterações, de modo que o pré-processamento também pode ser feito inteiramente fora do pipeline.

WanAnimate2ModularPipeline

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

Uma ModularPipeline para animação de personagens do Wan-Animate-2.

WanAnimate2DistilledModularPipeline

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

Uma ModularPipeline para o modelo Wan-Animate-2 destilado, que realiza a amostragem em poucas etapas sem orientação livre de classificador.

WanAnimate2Blocks

classe diffusers.WanAnimate2Blocks

< >

( )

Blocos de pipeline modulares para animação de personagens do Wan-Animate-2: uma imagem de referência do personagem e um vídeo de direção produzem um vídeo do personagem seguindo o movimento de direção.

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

Entradas: prompt (str): O prompt ou prompts para orientar a geração de imagem. negative_prompt (str, opcional): O prompt ou prompts que não devem orientar a geração de imagem. prompt_ref (str, opcional, padrão 人物动作的参考视频): O prompt de referência para o contexto do vídeo de condução max_sequence_length (int, opcional, padrão 512): Comprimento máximo da sequência para a codificação do prompt. image (Image | list): A imagem de referência contendo o personagem a ser animado. height (int, opcional, padrão 800): Junto com width, a área alvo do vídeo gerado; a proporção de aspecto vem de image. Sobrescrevida com a altura do quadro resolvida. width (int, opcional, padrão 640): Veja height. Sobrescrevida com a largura do quadro resolvida. driving_video (list): O vídeo de condução que fornece o movimento, em qualquer formato aceito por VideoProcessor.preprocess_video. driving_video_fps (float, opcional): A taxa de quadros em que driving_video foi capturado — load_video(..., return_fps=True) a relata. Quando definido, os quadros de condução são reamostrados a partir dele para fps; quando None, são usados como estão. fps (int, opcional, padrão 24): A taxa de quadros em que o modelo gera segment_frame_length (int, opcional, padrão 81): O número de quadros em cada segmento de inferência prev_segment_conditioning_frames (int, opcional, padrão 1): O número de quadros de condicionamento transferidos do segmento anterior generator (Generator, opcional): Gerador do Torch para geração determinística. num_inference_steps (int, opcional, padrão 40): O número de etapas de remoção de ruído. *denoiser_input_fields (None,opcional): entradas condicionais do modelo para o denoiser: por exemplo, prompt_embeds, negative_prompt_embeds, etc. output_type (str,opcional*, padrão np): O tipo de saída dos vídeos decodificados

Saídas: vídeos (list): Os vídeos gerados.

WanAnimate2DistilledBlocks

classe diffusers.WanAnimate2DistilledBlocks

< >

( )

Blocos de pipeline modulares para animação de personagens do Wan-Animate-2 destilado, com amostragem em poucas etapas sem orientação livre de classificador.

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

Entradas: prompt (str): O prompt ou prompts para orientar a geração de imagem. negative_prompt (str, opcional): O prompt ou prompts que não devem orientar a geração de imagem. prompt_ref (str, opcional, padrão: 人物动作的参考视频): O prompt de referência para o contexto do vídeo de condução max_sequence_length (int, opcional, padrão: 512): Comprimento máximo da sequência para a codificação do prompt. image (Image | list): A imagem de referência contendo o personagem a ser animado. height (int, opcional, padrão: 800): Junto com width, a área alvo do vídeo gerado; a proporção de aspecto vem de image. Sobrescrevida com a altura do quadro resolvida. width (int, opcional, padrão: 640): Veja height. Sobrescrevida com a largura do quadro resolvida. driving_video (list): O vídeo de condução que fornece o movimento, em qualquer formato aceito por VideoProcessor.preprocess_video. driving_video_fps (float, opcional): A taxa de quadros em que driving_video foi capturado — load_video(..., return_fps=True) a relata. Quando definido, os quadros de condução são reamostrados a partir dele para fps; quando None, são usados como estão. fps (int, opcional, padrão: 24): A taxa de quadros em que o modelo gera segment_frame_length (int, opcional, padrão: 81): O número de quadros em cada segmento de inferência prev_segment_conditioning_frames (int, opcional, padrão: 1): O número de quadros de condicionamento transferidos do segmento anterior generator (Generator, opcional): Gerador do Torch para geração determinística. num_inference_steps (int, opcional, padrão: 10): O número de etapas de remoção de ruído. *denoiser_input_fields (None,opcional): entradas condicionais do modelo para o denoiser: por exemplo, prompt_embeds, negative_prompt_embeds, etc. output_type (str,opcional*, padrão: np): O tipo de saída dos vídeos decodificados

Saídas: vídeos (list): Os vídeos gerados.

Update on GitHub