Buckets:

hf-doc-build/doc / diffusers /main /ru /api /pipelines /stable_cascade.md
mishig's picture
|
download
raw
56.2 kB

Stable Cascade

Эта модель построена на архитектуре Würstchen, и её главное отличие от других моделей, таких как Stable Diffusion, заключается в том, что она работает в значительно более малом латентном пространстве. Почему это важно? Чем меньше латентное пространство, тем быстрее можно выполнять инференс и тем дешевле становится обучение. Насколько мало это латентное пространство? Stable Diffusion использует коэффициент сжатия 8, в результате чего изображение 1024x1024 кодируется в 128x128. Stable Cascade достигает коэффициента сжатия 42, что означает возможность кодирования изображения 1024x1024 в 24x24 при сохранении чётких реконструкций. Затем текстово-условная модель обучается в этом сильно сжатом латентном пространстве. Предыдущие версии этой архитектуры обеспечивали снижение стоимости в 16 раз по сравнению со Stable Diffusion 1.5.

Поэтому этот тип модели хорошо подходит для сценариев, где важна эффективность. Кроме того, с помощью этого метода также возможны все известные расширения, такие как дообучение, LoRA, ControlNet, IP-Adapter, LCM и т. д.

Исходный код можно найти в репозитории Stability-AI/StableCascade.

Обзор модели

Stable Cascade состоит из трёх моделей: Stage A, Stage B и Stage C, образующих каскад для генерации изображений, отсюда и название «Stable Cascade».

Стадии A & B используются для сжатия изображений, выполняя ту же функцию, что и VAE в Stable Diffusion. Однако при такой конфигурации достигается значительно более высокое сжатие изображений. Если модели Stable Diffusion используют пространственный коэффициент сжатия 8, кодируя изображение с разрешением 1024 x 1024 в 128 x 128, то Stable Cascade достигает коэффициента сжатия 42. Это кодирует изображение 1024 x 1024 в 24 x 24, при этом сохраняя возможность точного декодирования изображения. Это даёт значительное преимущество в виде более дешёвого обучения и инференса. Кроме того, стадия C отвечает за генерацию небольших латентов 24 x 24 на основе текстового промпта.

Модель Stage C работает с небольшими латентами размером 24 x 24 и выполняет денойзинг латентов с условием на текстовые промпты. Эта модель также является крупнейшим компонентом каскадного конвейера и предназначена для использования с StableCascadePriorPipeline

Модели Stage B и Stage A используются вместе с StableCascadeDecoderPipeline и отвечают за генерацию итогового изображения на основе небольших латентов размером 24 x 24.

Существуют некоторые ограничения на типы данных, которые можно использовать с моделями Stable Cascade. Официальные контрольные точки для StableCascadePriorPipeline не поддерживают тип данных torch.float16. Пожалуйста, используйте torch.bfloat16 вместо него.

Чтобы использовать тип данных torch.bfloat16 с StableCascadeDecoderPipeline, необходимо установить PyTorch версии 2.2.0 или выше. Это также означает, что использование StableCascadeCombinedPipeline с torch.bfloat16 требует PyTorch версии 2.2.0 или выше, поскольку он внутренне вызывает StableCascadeDecoderPipeline.

Если в вашей среде невозможно установить PyTorch 2.2.0 или более новую версию, StableCascadeDecoderPipeline можно использовать самостоятельно с типом данных torch.float16. Вы можете скачать веса полного разрешения или вариант bf16 для пайплайна и привести веса к torch.float16.

Пример использования

import torch
from diffusers import StableCascadeDecoderPipeline, StableCascadePriorPipeline

prompt = "an image of a shiba inu, donning a spacesuit and helmet"
negative_prompt = ""

prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", variant="bf16", dtype=torch.bfloat16)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", variant="bf16", dtype=torch.float16)

prior.enable_model_cpu_offload()
prior_output = prior(
    prompt=prompt,
    height=1024,
    width=1024,
    negative_prompt=negative_prompt,
    guidance_scale=4.0,
    num_images_per_prompt=1,
    num_inference_steps=20
)

decoder.enable_model_cpu_offload()
decoder_output = decoder(
    image_embeddings=prior_output.image_embeddings.to(torch.float16),
    prompt=prompt,
    negative_prompt=negative_prompt,
    guidance_scale=0.0,
    output_type="pil",
    num_inference_steps=10
).images[0]
decoder_output.save("cascade.png")

Использование облегченных версий моделей Stage B и Stage C

import torch
from diffusers import (
    StableCascadeDecoderPipeline,
    StableCascadePriorPipeline,
    StableCascadeUNet,
)

prompt = "an image of a shiba inu, donning a spacesuit and helmet"
negative_prompt = ""

prior_unet = StableCascadeUNet.from_pretrained("stabilityai/stable-cascade-prior", subfolder="prior_lite")
decoder_unet = StableCascadeUNet.from_pretrained("stabilityai/stable-cascade", subfolder="decoder_lite")

prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", prior=prior_unet)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", decoder=decoder_unet)

prior.enable_model_cpu_offload()
prior_output = prior(
    prompt=prompt,
    height=1024,
    width=1024,
    negative_prompt=negative_prompt,
    guidance_scale=4.0,
    num_images_per_prompt=1,
    num_inference_steps=20
)

decoder.enable_model_cpu_offload()
decoder_output = decoder(
    image_embeddings=prior_output.image_embeddings,
    prompt=prompt,
    negative_prompt=negative_prompt,
    guidance_scale=0.0,
    output_type="pil",
    num_inference_steps=10
).images[0]
decoder_output.save("cascade.png")

Загрузка исходных контрольных точек с помощью from_single_file

Загрузка контрольных точек в исходном формате поддерживается с помощью метода from_single_file в StableCascadeUNet.

import torch
from diffusers import (
    StableCascadeDecoderPipeline,
    StableCascadePriorPipeline,
    StableCascadeUNet,
)

prompt = "an image of a shiba inu, donning a spacesuit and helmet"
negative_prompt = ""

prior_unet = StableCascadeUNet.from_single_file(
    "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_c_bf16.safetensors",
    dtype=torch.bfloat16
)
decoder_unet = StableCascadeUNet.from_single_file(
    "https://huggingface.co/stabilityai/stable-cascade/blob/main/stage_b_bf16.safetensors",
    dtype=torch.bfloat16
)

prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", prior=prior_unet, dtype=torch.bfloat16)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", decoder=decoder_unet, dtype=torch.bfloat16)

prior.enable_model_cpu_offload()
prior_output = prior(
    prompt=prompt,
    height=1024,
    width=1024,
    negative_prompt=negative_prompt,
    guidance_scale=4.0,
    num_images_per_prompt=1,
    num_inference_steps=20
)

decoder.enable_model_cpu_offload()
decoder_output = decoder(
    image_embeddings=prior_output.image_embeddings,
    prompt=prompt,
    negative_prompt=negative_prompt,
    guidance_scale=0.0,
    output_type="pil",
    num_inference_steps=10
).images[0]
decoder_output.save("cascade-single-file.png")

Применение

Прямое использование

Модель в настоящее время предназначена для исследовательских целей. Возможные области исследований и задачи включают

  • Исследования генеративных моделей.
  • Безопасное развёртывание моделей, которые могут генерировать вредоносный контент.
  • Исследование и понимание ограничений и предвзятости генеративных моделей.
  • Создание произведений искусства и их использование в дизайне и других творческих процессах.
  • Применения в образовательных или творческих инструментах.

Исключённые случаи использования описаны ниже.

Использование вне области применения

Модель не обучалась для создания фактических или достоверных изображений людей или событий, поэтому использование модели для генерации такого контента выходит за рамки её возможностей. Модель не должна использоваться каким-либо образом, нарушающим Политику допустимого использования Stability AI.

Ограничения и предвзятость

Ограничения

  • Лица и люди в целом могут генерироваться некорректно.
  • Часть модели, отвечающая за автокодирование, является с потерями.

StableCascadeCombinedPipeline[[diffusers.StableCascadeCombinedPipeline]]

diffusers.StableCascadeCombinedPipeline[[diffusers.StableCascadeCombinedPipeline]]

diffusers.StableCascadeCombinedPipeline(tokenizer: CLIPTokenizer, text_encoder: CLIPTextModelWithProjection, decoder: StableCascadeUNet, scheduler: DDPMWuerstchenScheduler, vqgan: PaellaVQModel, prior_prior: StableCascadeUNet, prior_text_encoder: CLIPTextModelWithProjection, prior_tokenizer: CLIPTokenizer, prior_scheduler: DDPMWuerstchenScheduler, prior_feature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = None, prior_image_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = None)

Источник

Параметры:

tokenizer (CLIPTokenizer) : Токенизатор декодера, используемый для текстовых входных данных.

text_encoder (CLIPTextModelWithProjection) : декодер-кодировщик текста, используемый для текстовых входных данных.

decoder (StableCascadeUNet) : модель декодера, используемая в конвейере генерации изображений декодером.

scheduler (DDPMWuerstchenScheduler) : планировщик, используемый в конвейере генерации изображений декодером.

vqgan (PaellaVQModel) : модель VQGAN, используемая в конвейере генерации изображений декодером.

prior_prior (StableCascadeUNet) : модель prior, используемая в prior-пайплайне.

prior_text_encoder (CLIPTextModelWithProjection) : предыдущий текстовый энкодер, используемый для текстовых входных данных.

prior_tokenizer (CLIPTokenizer) : предыдущий токенизатор, используемый для текстовых входных данных.

prior_scheduler (DDPMWuerstchenScheduler) : планировщик, используемый для предварительного конвейера.

prior_feature_extractor (CLIPImageProcessor) : Модель, извлекающая признаки из сгенерированных изображений для использования в качестве входных данных для image_encoder.

prior_image_encoder (CLIPVisionModelWithProjection) : замороженный энкодер изображений CLIP (clip-vit-large-patch14).

Составленный конвейер для генерации изображений по тексту с использованием Stable Cascade.

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

call[[diffusers.StableCascadeCombinedPipeline.call]]

__call__(prompt: str | list[str] | None = None, images: typing.Union[torch.Tensor, list[torch.Tensor], PIL.Image.Image, list[PIL.Image.Image]] = None, height: int = 512, width: int = 512, prior_num_inference_steps: int = 60, prior_guidance_scale: float = 4.0, num_inference_steps: int = 12, decoder_guidance_scale: float = 0.0, negative_prompt: str | list[str] | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_pooled: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = None, num_images_per_prompt: int = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, prior_callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, prior_callback_on_step_end_tensor_inputs: list[str] = ['latents'], callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'])

Источник

Параметры:

prompt (str или list[str]) : Промпт или промпты для управления генерацией изображения в prior и decoder.

images (torch.Tensor, PIL.Image.Image, list[torch.Tensor], list[PIL.Image.Image], необязательный) : Изображения, направляющие генерацию изображения для prior.

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

prompt_embeds (torch.Tensor, необязательный) : Предварительно сгенерированные текстовые эмбеддинги для prior. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промптов. Если не предоставлено, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.

prompt_embeds_pooled (torch.Tensor, необязательный) : Предварительно сгенерированные текстовые эмбеддинги для prior. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промптов. Если не предоставлено, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.

negative_prompt_embeds (torch.Tensor, необязательный) : Предварительно сгенерированные отрицательные текстовые эмбеддинги для prior. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промптов. Если не предоставлены, negative_prompt_embeds будут сгенерированы из входного аргумента negative_prompt.

negative_prompt_embeds_pooled (torch.Tensor, необязательный) : Предварительно сгенерированные отрицательные текстовые эмбеддинги для prior. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промптов. Если не предоставлены, negative_prompt_embeds будут сгенерированы из входного аргумента negative_prompt.

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

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

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

prior_guidance_scale (float, optional, по умолчанию 4.0) : Масштаб руководства, определенный в Classifier-Free Diffusion Guidance. prior_guidance_scale определяется как w из уравнения 2. в Imagen Paper. Масштаб руководства активируется при установке prior_guidance_scale > 1. Более высокий масштаб руководства способствует генерации изображений, тесно связанных с текстовым prompt, обычно за счет снижения качества изображения.

prior_num_inference_steps (int | dict[float, int], необязательный, по умолчанию 60) : Количество предварительных шагов денойзинга. Как правило, большее количество шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода. Для более точного распределения временных шагов можно передать настраиваемые prior_timesteps

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

decoder_guidance_scale (float, optional, по умолчанию 0.0) : Масштаб направленного генерирования, как определено в Classifier-Free Diffusion Guidance. guidance_scale определяется как w из уравнения 2 в Imagen Paper. Масштаб направленного генерирования активируется при установке guidance_scale > 1. Более высокое значение масштаба направленного генерирования способствует созданию изображений, тесно связанных с текстовым prompt, обычно за счёт снижения качества изображения.

generator (torch.Generator или list[torch.Generator], необязательный) : Один или список генераторов torch для обеспечения детерминированности генерации.

latents (torch.Tensor, необязательный) : Предварительно сгенерированные зашумленные латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Можно использовать, чтобы скорректировать одну и ту же генерацию с разными промптами. Если не предоставлены, тензор латентов будет сгенерирован путём выборки с использованием переданного случайного generator.

output_type (str, необязательный, по умолчанию "pil") : Формат вывода для генерируемого изображения. Выберите один из вариантов: "pil" (PIL.Image.Image), "np" (np.array) или "pt" (torch.Tensor).

return_dict (bool, необязательный, по умолчанию True) : Возвращать ли ImagePipelineOutput вместо обычного кортежа.

prior_callback_on_step_end (Callable, необязательный) : функция, вызываемая в конце каждого шага денойзинга во время инференса. Функция вызывается со следующими аргументами: prior_callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).

prior_callback_on_step_end_tensor_inputs (list, optional) : Список тензорных входных данных для функции prior_callback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргумента callback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте ._callback_tensor_inputs вашего класса pipeline.

callback_on_step_end (Callable, необязательный) : функция, вызываемая в конце каждого шага денойзинга во время инференса. Функция вызывается со следующими аргументами: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs будет содержать список всех тензоров, как указано в callback_on_step_end_tensor_inputs.

callback_on_step_end_tensor_inputs (list, optional) : Список тензорных входных данных для функции callback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргумента callback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте ._callback_tensor_inputs вашего класса pipeline.

Возвращает:

ImagePipelineOutput или tuple ImagePipelineOutput, если return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список с сгенерированными изображениями.

Функция, вызываемая при обращении к конвейеру для генерации.

Примеры:

>>> import torch
>>> from diffusers import StableCascadeCombinedPipeline

>>> pipe = StableCascadeCombinedPipeline.from_pretrained(
...     "stabilityai/stable-cascade", variant="bf16", torch_dtype=torch.bfloat16
... )
>>> pipe.enable_model_cpu_offload()
>>> prompt = "an image of a shiba inu, donning a spacesuit and helmet"
>>> images = pipe(prompt=prompt)

enable_model_cpu_offload[[diffusers.StableCascadeCombinedPipeline.enable_model_cpu_offload]]

enable_model_cpu_offload(gpu_id: int | None = None, device: typing.Union[torch.device, str] = None)

Источник

Переносит все модели на CPU с помощью accelerate, снижая потребление памяти с минимальным влиянием на производительность. В отличие от enable_sequential_cpu_offload, этот метод перемещает на GPU целую модель за один раз в момент вызова её метода forward, и модель остаётся на GPU до запуска следующей модели. Экономия памяти меньше, чем при использовании enable_sequential_cpu_offload, но производительность значительно выше благодаря итеративному выполнению unet.

enable_sequential_cpu_offload[[diffusers.StableCascadeCombinedPipeline.enable_sequential_cpu_offload]]

enable_sequential_cpu_offload(gpu_id: int | None = None, device: typing.Union[torch.device, str] = None)

Источник

Переносит все модели (state dicts unet, text_encoder, vae и safety checker) на CPU с помощью 🤗 Accelerate, что значительно снижает потребление памяти. Модели перемещаются на torch.device('meta') и загружаются на GPU только при вызове метода forward конкретного подмодуля. Перенос выполняется на уровне подмодулей. Экономия памяти выше, чем при использовании enable_model_cpu_offload, но производительность ниже.

StableCascadePriorPipeline[[diffusers.StableCascadePriorPipeline]]

diffusers.StableCascadePriorPipeline[[diffusers.StableCascadePriorPipeline]]

diffusers.StableCascadePriorPipeline(tokenizer: CLIPTokenizer, text_encoder: CLIPTextModelWithProjection, prior: StableCascadeUNet, scheduler: DDPMWuerstchenScheduler, resolution_multiple: float = 42.67, feature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = None, image_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = None)

Источник

Параметры:

prior (StableCascadeUNet) : Предварительная модель Stable Cascade, которая приближённо вычисляет эмбеддинг изображения на основе текстового и/или изображенческого эмбеддинга.

text_encoder (CLIPTextModelWithProjection) : замороженный текстовый энкодер (laion/CLIP-ViT-bigG-14-laion2B-39B-b160k).

feature_extractor (CLIPImageProcessor) : Модель, извлекающая признаки из сгенерированных изображений для использования в качестве входных данных для image_encoder.

image_encoder (CLIPVisionModelWithProjection) : замороженный энкодер изображений CLIP (clip-vit-large-patch14).

tokenizer (CLIPTokenizer) : Токенизатор класса CLIPTokenizer.

scheduler (DDPMWuerstchenScheduler) : планировщик, используемый в сочетании с prior для генерации встраивания изображения.

resolution_multiple ('float', необязательный, по умолчанию 42.67) : Разрешение по умолчанию для нескольких сгенерированных изображений.

Пайплайн для генерации image prior для Stable Cascade.

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

call[[diffusers.StableCascadePriorPipeline.call]]

__call__(prompt: str | list[str] | None = None, images: typing.Union[torch.Tensor, list[torch.Tensor], PIL.Image.Image, list[PIL.Image.Image]] = None, height: int = 1024, width: int = 1024, num_inference_steps: int = 20, timesteps: list[float] = None, guidance_scale: float = 4.0, negative_prompt: str | list[str] | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_pooled: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = None, image_embeds: typing.Optional[torch.Tensor] = None, num_images_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pt', return_dict: bool = True, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'])

Источник

Параметры:

prompt (str или list[str]) : Промпт или промпты для управления генерацией изображения.

images (torch.Tensor, PIL.Image.Image, list[torch.Tensor] или list[PIL.Image.Image], необязательный) : Ссылочное изображение(я), используемое для обусловливания генерации. При указании из изображения извлекаются эмбеддинги, которые объединяются с текстовым промптом.

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

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

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

timesteps (list[float], optional) : Пользовательские шаги для процесса денойзинга с планировщиками, поддерживающими аргумент timesteps в их методе set_timesteps. Если не определено, будет использоваться поведение по умолчанию при передаче num_inference_steps. Должны быть в порядке убывания.

guidance_scale (float, optional, по умолчанию 8.0) : Масштаб направленного генерирования, определённый в Classifier-Free Diffusion Guidance. decoder_guidance_scale определяется как w из уравнения 2 в Imagen Paper. Масштаб направленного генерирования включается при установке decoder_guidance_scale > 1. Более высокое значение масштаба направленного генерирования способствует созданию изображений, тесно связанных с текстовым prompt, обычно за счёт снижения качества изображения.

negative_prompt (str или list[str], необязательный) : Промпт или промпты, которые не следует использовать для управления генерацией изображения. Игнорируется, если управление не используется (то есть игнорируется, если decoder_guidance_scale меньше 1).

prompt_embeds (torch.Tensor, необязательный) : Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлены, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.

prompt_embeds_pooled (torch.Tensor, необязательный) : Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлены, пул-эмбеддинги текста будут сгенерированы из аргумента prompt.

negative_prompt_embeds (torch.Tensor, необязательный) : Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлены, negative_prompt_embeds будут сгенерированы из входного аргумента negative_prompt.

negative_prompt_embeds_pooled (torch.Tensor, необязательный) : Предварительно сгенерированные отрицательные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промптов. Если не предоставлены, negative_prompt_embeds_pooled будет сгенерирован из входного аргумента negative_prompt.

image_embeds (torch.Tensor, необязательный) : Предварительно сгенерированные эмбеддинги изображений. Можно использовать для простой настройки входных данных изображения, например для взвешивания промпта. Если не предоставлены, эмбеддинги изображений будут сгенерированы из входного аргумента image, если он существует.

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

generator (torch.Generator или list[torch.Generator], необязательный) : Один или список генераторов torch для обеспечения детерминированности генерации.

latents (torch.Tensor, необязательный) : Предварительно сгенерированные зашумленные латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Можно использовать, чтобы скорректировать одну и ту же генерацию с разными промптами. Если не предоставлены, тензор латентов будет сгенерирован путём выборки с использованием переданного случайного generator.

output_type (str, необязательный, по умолчанию "pil") : Формат вывода для генерируемого изображения. Выберите один из вариантов: "pil" (PIL.Image.Image), "np" (np.array) или "pt" (torch.Tensor).

return_dict (bool, необязательный, по умолчанию True) : Возвращать ли ImagePipelineOutput вместо обычного кортежа.

callback_on_step_end (Callable, необязательный) : функция, вызываемая в конце каждого шага денойзинга во время инференса. Функция вызывается со следующими аргументами: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs будет содержать список всех тензоров, как указано в callback_on_step_end_tensor_inputs.

callback_on_step_end_tensor_inputs (list, optional) : Список тензорных входных данных для функции callback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргумента callback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте ._callback_tensor_inputs вашего класса pipeline.

Возвращает:

StableCascadePriorPipelineOutput или tuple StableCascadePriorPipelineOutput, если return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список с эмбеддингами сгенерированного изображения.

Функция, вызываемая при обращении к конвейеру для генерации.

Примеры:

>>> import torch
>>> from diffusers import StableCascadePriorPipeline

>>> prior_pipe = StableCascadePriorPipeline.from_pretrained(
...     "stabilityai/stable-cascade-prior", torch_dtype=torch.bfloat16
... ).to("cuda")

>>> prompt = "an image of a shiba inu, donning a spacesuit and helmet"
>>> prior_output = pipe(prompt)

StableCascadePriorPipelineOutput[[diffusers.pipelines.stable_cascade.pipeline_stable_cascade_prior.StableCascadePriorPipelineOutput]]

diffusers.pipelines.stable_cascade.pipeline_stable_cascade_prior.StableCascadePriorPipelineOutput[[diffusers.pipelines.stable_cascade.pipeline_stable_cascade_prior.StableCascadePriorPipelineOutput]]

diffusers.pipelines.stable_cascade.pipeline_stable_cascade_prior.StableCascadePriorPipelineOutput(image_embeddings: typing.Union[torch.Tensor, numpy.ndarray], prompt_embeds: typing.Union[torch.Tensor, numpy.ndarray], prompt_embeds_pooled: typing.Union[torch.Tensor, numpy.ndarray], negative_prompt_embeds: typing.Union[torch.Tensor, numpy.ndarray], negative_prompt_embeds_pooled: typing.Union[torch.Tensor, numpy.ndarray])

Источник

Параметры:

image_embeddings (torch.Tensor или np.ndarray) : Предварительные эмбеддинги изображений для текстового промпта

prompt_embeds (torch.Tensor) : Текстовые эмбеддинги для промпта.

negative_prompt_embeds (torch.Tensor) : Текстовые эмбеддинги для негативного промпта.

Класс вывода для WuerstchenPriorPipeline.

StableCascadeDecoderPipeline[[diffusers.StableCascadeDecoderPipeline]]

diffusers.StableCascadeDecoderPipeline[[diffusers.StableCascadeDecoderPipeline]]

diffusers.StableCascadeDecoderPipeline(decoder: StableCascadeUNet, tokenizer: CLIPTokenizer, text_encoder: CLIPTextModelWithProjection, scheduler: DDPMWuerstchenScheduler, vqgan: PaellaVQModel, latent_dim_scale: float = 10.67)

Источник

Параметры:

tokenizer (CLIPTokenizer) : Токенизатор CLIP.

text_encoder (CLIPTextModelWithProjection) : текстовый энкодер CLIP.

decoder (StableCascadeUNet) : unet декодера Stable Cascade.

vqgan (PaellaVQModel) : модель VQGAN.

scheduler (DDPMWuerstchenScheduler) : планировщик, используемый в сочетании с prior для генерации встраивания изображения.

latent_dim_scale (float, optional, по умолчанию 10.67) : Множитель для определения размера латентного пространства VQ на основе эмбеддингов изображения. Если эмбеддинги изображения имеют height=24 и width=24, то форма латентного представления VQ должна быть height=int(2410.67)=256 и width=int(2410.67)=256, чтобы соответствовать условиям обучения.

Пайплайн для генерации изображений с помощью модели Stable Cascade.

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

call[[diffusers.StableCascadeDecoderPipeline.call]]

__call__(image_embeddings: typing.Union[torch.Tensor, list[torch.Tensor]], prompt: str | list[str] = None, num_inference_steps: int = 10, guidance_scale: float = 0.0, negative_prompt: str | list[str] | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_pooled: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = None, num_images_per_prompt: int = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'])

Источник

Параметры:

image_embeddings (torch.Tensor или list[torch.Tensor]) : Встроенные представления изображений, извлечённые из изображения или сгенерированные моделью Prior Model.

prompt (str или list[str]) : Промпт или промпты для управления генерацией изображения.

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

guidance_scale (float, optional, по умолчанию 0.0) : Масштаб направленного генерирования, определённый в Classifier-Free Diffusion Guidance. decoder_guidance_scale соответствует w из уравнения 2 в Imagen Paper. Направленное генерирование включается при установке decoder_guidance_scale > 1. Более высокое значение масштаба направленного генерирования способствует созданию изображений, тесно связанных с текстовым prompt, обычно за счёт снижения качества изображения.

negative_prompt (str или list[str], необязательный) : Промпт или промпты, которые не следует использовать для управления генерацией изображения. Игнорируется, если управление не используется (то есть игнорируется, если decoder_guidance_scale меньше 1).

prompt_embeds (torch.Tensor, необязательный) : Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлены, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.

prompt_embeds_pooled (torch.Tensor, необязательный) : Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлены, пул-эмбеддинги текста будут сгенерированы из аргумента prompt.

negative_prompt_embeds (torch.Tensor, необязательный) : Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлены, negative_prompt_embeds будут сгенерированы из входного аргумента negative_prompt.

negative_prompt_embeds_pooled (torch.Tensor, необязательный) : Предварительно сгенерированные отрицательные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промптов. Если не предоставлены, negative_prompt_embeds_pooled будет сгенерирован из входного аргумента negative_prompt.

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

generator (torch.Generator или list[torch.Generator], необязательный) : Один или список генераторов torch для обеспечения детерминированности генерации.

latents (torch.Tensor, необязательный) : Предварительно сгенерированные зашумленные латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Можно использовать, чтобы скорректировать одну и ту же генерацию с разными промптами. Если не предоставлены, тензор латентов будет сгенерирован путём выборки с использованием переданного случайного generator.

output_type (str, необязательный, по умолчанию "pil") : Формат вывода для генерируемого изображения. Выберите один из вариантов: "pil" (PIL.Image.Image), "np" (np.array) или "pt" (torch.Tensor).

return_dict (bool, необязательный, по умолчанию True) : Возвращать ли ImagePipelineOutput вместо обычного кортежа.

callback_on_step_end (Callable, необязательный) : функция, вызываемая в конце каждого шага денойзинга во время инференса. Функция вызывается со следующими аргументами: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs будет содержать список всех тензоров, как указано в callback_on_step_end_tensor_inputs.

callback_on_step_end_tensor_inputs (list, optional) : Список тензорных входных данных для функции callback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргумента callback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте ._callback_tensor_inputs вашего класса pipeline.

Возвращает:

ImagePipelineOutput или tuple ImagePipelineOutput, если return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список с сгенерированными эмбеддингами изображений.

Функция, вызываемая при обращении к конвейеру для генерации.

Примеры:

>>> import torch
>>> from diffusers import StableCascadePriorPipeline, StableCascadeDecoderPipeline

>>> prior_pipe = StableCascadePriorPipeline.from_pretrained(
...     "stabilityai/stable-cascade-prior", torch_dtype=torch.bfloat16
... ).to("cuda")
>>> gen_pipe = StableCascadeDecoderPipeline.from_pretrain(
...     "stabilityai/stable-cascade", torch_dtype=torch.float16
... ).to("cuda")

>>> prompt = "an image of a shiba inu, donning a spacesuit and helmet"
>>> prior_output = pipe(prompt)
>>> images = gen_pipe(prior_output.image_embeddings, prompt=prompt)

Xet Storage Details

Size:
56.2 kB
·
Xet hash:
8b3300429f6f137c0c66e3009e3740aef282d9fb9e3911a0a5deae9f20e0bf76

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