Buckets:

mishig's picture
|
download
raw
22.3 kB

Лицензия Apache License, Version 2.0 («Лицензия»);

вы можете использовать этот файл только в соответствии с Лицензией.

Вы можете получить копию Лицензии по адресу

http://www.apache.org/licenses/LICENSE-2.0

Если это не требуется применимым законодательством или не оговорено письменно, программное

распространяется по Лицензии на условиях «КАК ЕСТЬ»,

БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ ИЛИ УСЛОВИЙ, прямо указанных или подразумеваемых.

См. Лицензию для получения конкретных условий, регулирующих разрешения и

ограничениями, предусмотренными Лицензией.

-->

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-zh torch.float16
alibaba-pai/EasyAnimateV5.1-12b-zh-InP torch.float16

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

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

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

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

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

  • Текст-в-видео (T2V) и изображение-в-видео (I2V) работают с несколькими разрешениями. Ширина и высота могут варьироваться от 256 до 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]]

diffusers.EasyAnimatePipeline[[diffusers.EasyAnimatePipeline]]

diffusers.EasyAnimatePipeline(vae: AutoencoderKLMagvit, text_encoder: transformers.models.qwen2_vl.modeling_qwen2_vl.Qwen2VLForConditionalGeneration | transformers.models.bert.modeling_bert.BertModel, tokenizer: transformers.models.qwen2.tokenization_qwen2.Qwen2Tokenizer | transformers.models.bert.tokenization_bert.BertTokenizer, transformer: EasyAnimateTransformer3DModel, scheduler: 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[[diffusers.EasyAnimatePipeline.call]]

__call__(prompt: str | list[str] = None, num_frames: int | None = 49, height: int | None = 512, width: int | None = 512, num_inference_steps: int | None = 50, guidance_scale: float | None = 5.0, negative_prompt: str | list[str] | None = None, num_images_per_prompt: int | None = 1, eta: float | None = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, timesteps: list[int] | None = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_attention_mask: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], guidance_rescale: float = 0.0)

Источник

Параметры:

prompt (str или list[str], необязательный) : Текстовые промпты для управления генерацией изображения или видео. Если не указаны, используйте вместо них prompt_embeds.

num_frames (int, optional) : Длина сгенерированного видео (в кадрах).

height (int, optional) : Высота генерируемого изображения в пикселях.

width (int, необязательный) : Ширина сгенерированного изображения в пикселях.

num_inference_steps (int, optional, по умолчанию 50) : Количество шагов денойзинга при генерации. Чем больше шагов, тем, как правило, выше качество изображений, но тем медленнее выполняется инференс.

guidance_scale (float, optional, по умолчанию 5.0) : Поощряет модель согласовывать выходные данные с подсказками. Более высокое значение может снизить качество изображения.

negative_prompt (str или list[str], необязательный) : Промпты, указывающие, что следует исключить при генерации. Если не указаны, используются negative_prompt_embeds.

num_images_per_prompt (int, необязательный, по умолчанию 1) : Количество изображений, генерируемых для каждого промпта.

eta (float, optional, по умолчанию 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], optional) : Пользовательские шаги для процесса удаления шума. Если не заданы, используется расписание по умолчанию планировщика для 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[[diffusers.EasyAnimatePipeline.encode_prompt]]

encode_prompt(prompt: str | list[str], num_images_per_prompt: int = 1, do_classifier_free_guidance: bool = True, negative_prompt: str | list[str] | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_attention_mask: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, device: typing.Optional[torch.device] = None, dtype: typing.Optional[torch.dtype] = None, max_sequence_length: int = 256)

Источник

Параметры:

prompt (str или list[str], необязательный) : промпт для кодирования

device : (torch.device): устройство torch

dtype (torch.dtype) : тип данных torch

num_images_per_prompt (int) : количество изображений, которые должны быть сгенерированы для каждого промпта

do_classifier_free_guidance (bool) : использовать ли классификаторное свободное наведение (classifier free guidance)

negative_prompt (str или 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]]

diffusers.pipelines.easyanimate.pipeline_output.EasyAnimatePipelineOutput[[diffusers.pipelines.easyanimate.pipeline_output.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.

Xet Storage Details

Size:
22.3 kB
·
Xet hash:
d82dd2138eb4468846653712c303a487e84e3dbd5eca04362614f81e77a9b7f9

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.