Diffusers documentation

EasyAnimate

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

EasyAnimate

EasyAnimate от Alibaba PAI.

Описание с его страницы на GitHub: EasyAnimate — это конвейер, основанный на архитектуре трансформера, предназначенный для генерации изображений и видео с помощью ИИ, а также для обучения базовых моделей и моделей Lora для Diffusion Transformer. Мы поддерживаем прямое предсказание с использованием предварительно обученных моделей EasyAnimate, что позволяет генерировать видео с различными разрешениями, продолжительностью около 6 секунд, при частоте 8 кадров в секунду (EasyAnimateV5.1, от 1 до 49 кадров). Кроме того, пользователи могут обучать собственные базовые и Lora-модели для конкретных стилевых трансформаций.

Этот конвейер был предложен пользователем bubbliiiing. Исходная кодовая база доступна здесь. Исходные веса можно найти по адресу hf.co/alibaba-pai.

Существуют две официальные контрольные точки EasyAnimate для генерации видео по тексту и преобразования видео в видео.

чекпоинтырекомендуемый тип данных для вывода
alibaba-pai/EasyAnimateV5.1-12b-zhtorch.float16
alibaba-pai/EasyAnimateV5.1-12b-zh-InPtorch.float16

Доступна одна официальная контрольная точка EasyAnimate для задач изображения в видео и видео в видео.

чекпоинтырекомендуемый тип данных для вывода
alibaba-pai/EasyAnimateV5.1-12b-zh-InPtorch.float16

Доступны две официальные контрольные точки EasyAnimate для управления генерацией видео.

чекпоинтырекомендуемый тип данных для вывода
alibaba-pai/EasyAnimateV5.1-12b-zh-Controltorch.float16
alibaba-pai/EasyAnimateV5.1-12b-zh-Control-Cameratorch.float16

Для серии EasyAnimateV5.1:

  • Text-to-video (T2V) and Image-to-video (I2V) works for multiple resolutions. The width and height can vary from 256 to 1024.
  • Модели T2V и I2V поддерживают генерацию с 1~49 кадрами и работают лучше всего при этом значении. Рекомендуется экспортировать видео со скоростью 8 FPS.

Квантование

Квантование помогает снизить требования к памяти для очень больших моделей, храня веса модели в формате данных с меньшей точностью. Однако влияние квантования на качество видео может различаться в зависимости от используемой модели видео.

См. обзор Quantization, чтобы узнать больше о поддерживаемых бэкендах квантования и о том, как выбрать бэкенд, подходящий для вашей задачи. Пример ниже показывает, как загрузить квантованный EasyAnimatePipeline для инференса с помощью 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

класс 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 )

Параметры

  • vae (AutoencoderKLMagvit) — Модель вариационного автоэнкодера (VAE) для кодирования и декодирования видео в латентные представления и обратно.
  • text_encoder (~transformers.Qwen2VLForConditionalGeneration, ~transformers.BertModel | None) — EasyAnimate использует qwen2 vl в V5.1.
  • tokenizer (~transformers.Qwen2Tokenizer, ~transformers.BertTokenizer | None) — Qwen2Tokenizer или BertTokenizer для токенизации текста.
  • transformer (EasyAnimateTransformer3DModel) — Модель EasyAnimate, разработанная командой EasyAnimate.
  • scheduler (FlowMatchEulerDiscreteScheduler) — планировщик, используемый в связке с EasyAnimate для удаления шума из закодированных латентов изображения.

Pipeline для генерации видео из текста с использованием EasyAnimate.

Эта модель наследуется от DiffusionPipeline. См. документацию родительского класса для общих методов, которые библиотека реализует для всех пайплайнов (например, загрузка или сохранение, запуск на конкретном устройстве и т. д.)

EasyAnimate использует один текстовый энкодер qwen2 vl в 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 = ['latents']guidance_rescale: float = 0.0 ) → StableDiffusionPipelineOutput or tuple

Параметры

  • prompt (str или list[str], необязательный) — Текстовые промпты для управления генерацией изображения или видео. Если не указаны, используйте вместо них prompt_embeds.
  • num_frames (int, необязательный) — Длина сгенерированного видео (в кадрах).
  • height (int, необязательный) — Высота генерируемого изображения в пикселях.
  • width (int, необязательный) — Ширина генерируемого изображения в пикселях.
  • num_inference_steps (int, необязательный, по умолчанию 50) — Количество шагов денойзинга при генерации. Чем больше шагов, тем, как правило, выше качество изображений, но тем медленнее выполняется инференс.
  • guidance_scale (float, необязательный, по умолчанию 5.0) — Побуждает модель согласовывать выходные данные с промптами. Более высокое значение может снизить качество изображения.
  • negative_prompt (str или list[str], необязательный) — Промпты, указывающие, что следует исключить при генерации. Если не задано, используется negative_prompt_embeds.
  • num_images_per_prompt (int, необязательный, по умолчанию 1) — Количество изображений, генерируемых для каждого промпта.
  • eta (float, необязательный, по умолчанию 0.0) — Применяется к расписанию DDIM. Управляется параметром eta из соответствующей литературы.
  • generator (torch.Generator или list[torch.Generator], необязательный) — Генератор для обеспечения воспроизводимости при генерации изображений.
  • latents (torch.Tensor, необязательный) — Предопределённые тензоры латентного пространства для управления генерацией.
  • prompt_embeds (torch.Tensor, необязательный) — Векторные представления текста для промптов. Переопределяет строковые входные данные промптов для большей гибкости.
  • negative_prompt_embeds (torch.Tensor, необязательный) — Векторы вложений для отрицательных промптов. Если заданы, заменяют строковые входные данные.
  • prompt_attention_mask (torch.Tensor, необязательный) — Маска внимания для основных эмбеддингов промпта.
  • negative_prompt_attention_mask (torch.Tensor, необязательный) — Маска внимания для эмбеддингов отрицательного промпта.
  • output_type (str, необязательный, по умолчанию “latent”) — Формат генерируемого вывода: изображение PIL или массив NumPy.
  • return_dict (bool, необязательный, по умолчанию True) — Если True, возвращает структурированный вывод. В противном случае возвращает простой кортеж.
  • callback_on_step_end (Callable, необязательный) — Функции, вызываемые в конце каждого шага денойзинга.
  • callback_on_step_end_tensor_inputs (list[str], необязательный) — Имена тензоров, которые должны включаться в вызовы функции обратного вызова.
  • guidance_rescale (float, необязательный, по умолчанию 0.0) — Корректирует уровни шума на основе масштаба руководства.
  • timesteps (list[int], необязательный) — Пользовательские timesteps для процесса денойзинга. Если не заданы, используется расписание по умолчанию планировщика для num_inference_steps.

Возвращает

StableDiffusionPipelineOutput или tuple

Если return_dict равно True, возвращается StableDiffusionPipelineOutput, в противном случае возвращается tuple, где первый элемент — это список с сгенерированными изображениями, а второй элемент — это список значений bool, указывающих, содержит ли соответствующее сгенерированное изображение контент, нежелательный для работы (nsfw).

Генерирует изображения или видео с использованием конвейера EasyAnimate на основе предоставленных промптов.

Примеры:

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

Параметры

  • prompt (str или list[str], необязательный) — промпт для кодирования
  • device — (torch.device): устройство torch
  • dtype (torch.dtype) — torch dtype
  • num_images_per_prompt (int) — количество изображений, которые должны быть сгенерированы для каждого промпта
  • do_classifier_free_guidance (bool) — использовать ли classifier free guidance
  • negative_prompt (str or list[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передать negative_prompt_embeds. Игнорируется, если не используется направляющее поле (то есть игнорируется, если guidance_scale меньше 1).
  • prompt_embeds (torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
  • negative_prompt_embeds (torch.Tensor, необязательный) — Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не передано, negative_prompt_embeds будет сгенерировано из входного аргумента negative_prompt.
  • prompt_attention_mask (torch.Tensor, необязательный) — Маска внимания для промпта. Обязателен, если prompt_embeds передается напрямую.
  • negative_prompt_attention_mask (torch.Tensor, необязательный) — Маска внимания для негативного промпта. Обязателен, если negative_prompt_embeds передается напрямую.
  • max_sequence_length (int, необязательный) — максимальная длина последовательности, используемая для промпта.

Кодирует промпт в скрытые состояния текстового энкодера.

EasyAnimatePipelineOutput

класс diffusers.pipelines.easyanimate.pipeline_output.EasyAnimatePipelineOutput

< >

( frames: Tensor )

Параметры

  • frames (torch.Tensor, np.ndarray или list[list[PIL.Image.Image]]) — список видеовыходов. Может быть вложенным списком длины batch_size, где каждый под-список содержит последовательности денойзированных изображений PIL длины num_frames. Также может быть массивом NumPy или тензором Torch с формой (batch_size, num_frames, channels, height, width).

Класс вывода для конвейеров EasyAnimate.

Update on GitHub