Diffusers documentation
Wan-Animate-2
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
< 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 )
Uma ModularPipeline para animação de personagens do Wan-Animate-2.
WanAnimate2DistilledModularPipeline
classe 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 )
Uma ModularPipeline para o modelo Wan-Animate-2 destilado, que realiza a amostragem em poucas etapas sem orientação livre de classificador.
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
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.