Diffusers documentation

EasyAnimate

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

EasyAnimate

EasyAnimate da Alibaba PAI.

A descrição de sua página no GitHub: EasyAnimate é um pipeline baseado na arquitetura de transformer, projetado para gerar imagens e vídeos com IA, e para treinar modelos de base e modelos Lora para Diffusion Transformer. Suportamos a predição direta a partir de modelos EasyAnimate pré-treinados, permitindo a geração de vídeos com várias resoluções, com aproximadamente 6 segundos de duração, a 8fps (EasyAnimateV5.1, de 1 a 49 quadros). Além disso, os usuários podem treinar seus próprios modelos de base e Lora para transformações de estilo específicas.

Este pipeline foi contribuído por bubbliiiing. A base de código original pode ser encontrada aqui. Os pesos originais podem ser encontrados em hf.co/alibaba-pai.

Existem dois checkpoints oficiais do EasyAnimate para texto-para-vídeo e vídeo-para-vídeo.

checkpointsdtype de inferência recomendado
alibaba-pai/EasyAnimateV5.1-12b-zhtorch.float16
alibaba-pai/EasyAnimateV5.1-12b-zh-InPtorch.float16

Há um checkpoint oficial do EasyAnimate disponível para image-to-video e video-to-video.

checkpointsdtype de inferência recomendado
alibaba-pai/EasyAnimateV5.1-12b-zh-InPtorch.float16

Existem dois checkpoints oficiais do EasyAnimate disponíveis para control-to-video.

checkpointsdtype de inferência recomendado
alibaba-pai/EasyAnimateV5.1-12b-zh-Controltorch.float16
alibaba-pai/EasyAnimateV5.1-12b-zh-Control-Cameratorch.float16

Para a série EasyAnimateV5.1:

  • Text-to-video (T2V) e Image-to-video (I2V) funcionam para múltiplas resoluções. A largura e a altura podem variar de 256 a 1024.
  • Os modelos T2V e I2V suportam geração com 1~49 quadros e funcionam melhor nesse valor. É recomendável exportar os vídeos a 8 FPS.

Quantização

A quantização ajuda a reduzir os requisitos de memória de modelos muito grandes armazenando os pesos do modelo em um tipo de dados de menor precisão. No entanto, a quantização pode ter um impacto variável na qualidade do vídeo, dependendo do modelo de vídeo.

Consulte a visão geral de Quantization para saber mais sobre os backends de quantização suportados e sobre como selecionar um backend de quantização que atenda ao seu caso de uso. O exemplo abaixo demonstra como carregar um EasyAnimatePipeline quantizado para inferência com bitsandbytes.

import torch
from diffusers import BitsAndBytesConfig as DiffusersBitsAndBytesConfig, EasyAnimateTransformer3DModel, EasyAnimatePipeline
from diffusers.utils import export_to_video

quant_config = DiffusersBitsAndBytesConfig(load_in_8bit=True)
transformer_8bit = EasyAnimateTransformer3DModel.from_pretrained(
    "alibaba-pai/EasyAnimateV5.1-12b-zh",
    subfolder="transformer",
    quantization_config=quant_config,
    dtype=torch.float16,
)

pipeline = EasyAnimatePipeline.from_pretrained(
    "alibaba-pai/EasyAnimateV5.1-12b-zh",
    transformer=transformer_8bit,
    dtype=torch.float16,
    device_map="balanced",
)

prompt = "A cat walks on the grass, realistic style."
negative_prompt = "bad detailed"
video = pipeline(prompt=prompt, negative_prompt=negative_prompt, num_frames=49, num_inference_steps=30).frames[0]
export_to_video(video, "cat.mp4", fps=8)

EasyAnimatePipeline

classe diffusers.EasyAnimatePipeline

< >

( vae: AutoencoderKLMagvittext_encoder: transformers.models.qwen2_vl.modeling_qwen2_vl.Qwen2VLForConditionalGeneration | transformers.models.bert.modeling_bert.BertModeltokenizer: transformers.models.qwen2.tokenization_qwen2.Qwen2Tokenizer | transformers.models.bert.tokenization_bert.BertTokenizertransformer: EasyAnimateTransformer3DModelscheduler: FlowMatchEulerDiscreteScheduler )

Parâmetros

  • vae (AutoencoderKLMagvit) — Modelo de Variational Auto-Encoder (VAE) para codificar e decodificar vídeo para e a partir de representações latentes.
  • text_encoder (~transformers.Qwen2VLForConditionalGeneration, ~transformers.BertModel | None) — O EasyAnimate usa qwen2 vl na V5.1.
  • tokenizer (~transformers.Qwen2Tokenizer, ~transformers.BertTokenizer | None) — Um Qwen2Tokenizer ou BertTokenizer para tokenizar texto.
  • transformer (EasyAnimateTransformer3DModel) — O modelo EasyAnimate desenvolvido pela EasyAnimate Team.
  • scheduler (FlowMatchEulerDiscreteScheduler) — Um scheduler a ser usado em combinação com EasyAnimate para desruidar os latentes da imagem codificada.

Pipeline para geração de texto para vídeo usando EasyAnimate.

Este modelo herda de DiffusionPipeline. Consulte a documentação da superclasse para os métodos genéricos que a biblioteca implementa para todos os pipelines (como download ou salvamento, execução em um dispositivo específico, etc.)

O EasyAnimate usa um único codificador de texto qwen2 vl na V5.1.

__call__

< >

( prompt: str | list[str] = Nonenum_frames: int | None = 49height: int | None = 512width: int | None = 512num_inference_steps: int | None = 50guidance_scale: float | None = 5.0negative_prompt: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float | None = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonetimesteps: list[int] | None = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_attention_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list[str] = ['latents']guidance_rescale: float = 0.0 ) → StableDiffusionPipelineOutput or tuple

Parâmetros

  • prompt (str ou list[str], opcional) — Prompts de texto para orientar a geração de imagem ou vídeo. Se não for fornecido, use prompt_embeds em vez disso.
  • num_frames (int, opcional) — Comprimento do vídeo gerado (em quadros).
  • height (int, opcional) — Altura da imagem gerada em pixels.
  • width (int, opcional) — Largura da imagem gerada em pixels.
  • num_inference_steps (int, opcional, padrão 50) — Número de etapas de desruidamento durante a geração. Mais etapas geralmente resultam em imagens de maior qualidade, mas tornam a inferência mais lenta.
  • guidance_scale (float, opcional, padrão 5.0) — Incentiva o modelo a alinhar as saídas aos prompts. Um valor mais alto pode diminuir a qualidade da imagem.
  • negative_prompt (str ou list[str], opcional) — Prompts indicando o que excluir na geração. Se não for especificado, use negative_prompt_embeds.
  • num_images_per_prompt (int, opcional, padrão 1) — Número de imagens a serem geradas para cada prompt.
  • eta (float, opcional, padrão 0.0) — Aplica-se ao agendamento DDIM. Controlado pelo parâmetro eta da literatura relacionada.
  • generator (torch.Generator ou list[torch.Generator], opcional) — Um gerador para garantir a reprodutibilidade na geração de imagens.
  • latents (torch.Tensor, opcional) — Tensores latentes predefinidos para condicionar a geração.
  • prompt_embeds (torch.Tensor, opcional) — Incorporações de texto para os prompts. Substitui as entradas de string de prompt para maior flexibilidade.
  • negative_prompt_embeds (torch.Tensor, opcional) — Embeddings para prompts negativos. Substitui as entradas de string, se definido.
  • prompt_attention_mask (torch.Tensor, opcional) — Máscara de atenção para os embeddings do prompt principal.
  • negative_prompt_attention_mask (torch.Tensor, opcional) — Máscara de atenção para os embeddings do prompt negativo.
  • output_type (str, opcional, padrão “latent”) — Formato da saída gerada, seja como uma imagem PIL ou como um array NumPy.
  • return_dict (bool, opcional, padrão True) — Se True, retorna uma saída estruturada. Caso contrário, retorna uma tupla simples.
  • callback_on_step_end (Callable, opcional) — Funções chamadas no final de cada etapa de desruidamento.
  • callback_on_step_end_tensor_inputs (list[str], opcional) — Nomes dos tensores a serem incluídos nas chamadas da função de callback.
  • guidance_rescale (float, opcional, padrão 0.0) — Ajusta os níveis de ruído com base na escala de orientação.
  • timesteps (list[int], opcional) — Timesteps personalizados para usar no processo de remoção de ruído. Se não definidos, o agendamento padrão do scheduler para num_inference_steps é utilizado.

Se return_dict for True, StableDiffusionPipelineOutput é retornado, caso contrário, uma tuple é retornada, em que o primeiro elemento é uma lista com as imagens geradas e o segundo elemento é uma lista de bools indicando se a imagem gerada correspondente contém conteúdo “not-safe-for-work” (nsfw).

Gera imagens ou vídeos usando o pipeline EasyAnimate com base nos prompts fornecidos.

Exemplos:

>>> import torch
>>> from diffusers import EasyAnimatePipeline
>>> from diffusers.utils import export_to_video

>>> # Models: "alibaba-pai/EasyAnimateV5.1-12b-zh"
>>> pipe = EasyAnimatePipeline.from_pretrained(
...     "alibaba-pai/EasyAnimateV5.1-7b-zh-diffusers", torch_dtype=torch.float16
... ).to("cuda")
>>> prompt = (
...     "A panda, dressed in a small, red jacket and a tiny hat, sits on a wooden stool in a serene bamboo forest. "
...     "The panda's fluffy paws strum a miniature acoustic guitar, producing soft, melodic tunes. Nearby, a few other "
...     "pandas gather, watching curiously and some clapping in rhythm. Sunlight filters through the tall bamboo, "
...     "casting a gentle glow on the scene. The panda's face is expressive, showing concentration and joy as it plays. "
...     "The background includes a small, flowing stream and vibrant green foliage, enhancing the peaceful and magical "
...     "atmosphere of this unique musical performance."
... )
>>> sample_size = (512, 512)
>>> video = pipe(
...     prompt=prompt,
...     guidance_scale=6,
...     negative_prompt="bad detailed",
...     height=sample_size[0],
...     width=sample_size[1],
...     num_inference_steps=50,
... ).frames[0]
>>> export_to_video(video, "output.mp4", fps=8)

encode_prompt

< >

( prompt: str | list[str]num_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_attention_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.Tensor] = Nonedevice: typing.Optional[torch.device] = Nonedtype: typing.Optional[torch.dtype] = Nonemax_sequence_length: int = 256 )

Parâmetros

  • prompt (str ou list[str], opcional) — prompt a ser codificado
  • device — (torch.device): dispositivo torch
  • dtype (torch.dtype) — dtype do torch
  • num_images_per_prompt (int) — número de imagens que devem ser geradas por prompt
  • do_classifier_free_guidance (bool) — se deve usar classifier free guidance ou não
  • negative_prompt (str ou list[str], opcional) — O prompt ou os prompts que não devem orientar a geração da imagem. Se não for definido, é necessário passar negative_prompt_embeds em vez disso. Ignorado quando não se usa orientação (ou seja, ignorado se guidance_scale for menor que 1).
  • prompt_embeds (torch.Tensor, opcional) — Incorporações de texto pré-geradas. Podem ser usadas para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompts. Se não forem fornecidas, as incorporações de texto serão geradas a partir do argumento de entrada prompt.
  • negative_prompt_embeds (torch.Tensor, opcional) — Incorporações de texto negativas pré-geradas. Pode ser usado para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompts. Se não for fornecido, negative_prompt_embeds será gerado a partir do argumento de entrada negative_prompt.
  • prompt_attention_mask (torch.Tensor, opcional) — Máscara de atenção para o prompt. Obrigatória quando prompt_embeds é passado diretamente.
  • negative_prompt_attention_mask (torch.Tensor, opcional) — Máscara de atenção para o prompt negativo. Obrigatória quando negative_prompt_embeds é passado diretamente.
  • max_sequence_length (int, opcional) — comprimento máximo da sequência a ser usado para o prompt.

Codifica o prompt em estados ocultos do codificador de texto.

EasyAnimatePipelineOutput

classe diffusers.pipelines.easyanimate.pipeline_output.EasyAnimatePipelineOutput

< >

( frames: Tensor )

Parâmetros

  • frames (torch.Tensor, np.ndarray ou list[list[PIL.Image.Image]]) — lista de saídas de vídeo - Pode ser uma lista aninhada de comprimento batch_size, com cada sublista contendo sequências de imagens PIL desruidas de comprimento num_frames. Também pode ser um array NumPy ou tensor Torch de forma (batch_size, num_frames, channels, height, width).

Classe de saída para os pipelines do EasyAnimate.

Update on GitHub