Diffusers documentation
Stable Cascade
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
< source >( tokenizer: CLIPTokenizertext_encoder: CLIPTextModelWithProjectiondecoder: StableCascadeUNetscheduler: DDPMWuerstchenSchedulervqgan: PaellaVQModelprior_prior: StableCascadeUNetprior_text_encoder: CLIPTextModelWithProjectionprior_tokenizer: CLIPTokenizerprior_scheduler: DDPMWuerstchenSchedulerprior_feature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = Noneprior_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__
< source >( prompt: str | list[str] | None = Noneimages: typing.Union[torch.Tensor, list[torch.Tensor], PIL.Image.Image, list[PIL.Image.Image]] = Noneheight: int = 512width: int = 512prior_num_inference_steps: int = 60prior_guidance_scale: float = 4.0num_inference_steps: int = 12decoder_guidance_scale: float = 0.0negative_prompt: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenum_images_per_prompt: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Trueprior_callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Noneprior_callback_on_step_end_tensor_inputs: list = ['latents']callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents'] )
Параметры
- prompt (
strorlist[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, необязательный, по умолчанию 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, необязательный, по умолчанию 12) — Количество шагов денойзинга декодера. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода. Для более точного управления интервалами между временными шагами можно передать настраиваемыеtimesteps - decoder_guidance_scale (
float, необязательный, по умолчанию 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, необязательный) — Список тензорных входных данных для функции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, необязательный) — Список тензорных входных данных для функцииcallback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргументаcallback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте._callback_tensor_inputsвашего класса пайплайна.
Функция, вызываемая при обращении к конвейеру для генерации.
Примеры:
>>> 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
< source >( gpu_id: int | None = Nonedevice: typing.Union[torch.device, str] = None )
Переносит все модели на CPU с помощью accelerate, снижая потребление памяти с минимальным влиянием на производительность. В отличие от enable_sequential_cpu_offload, этот метод перемещает на GPU целую модель за один раз при вызове её метода forward, и модель остаётся на GPU до запуска следующей модели. Экономия памяти меньше, чем при использовании enable_sequential_cpu_offload, но производительность значительно выше благодаря итеративному выполнению unet.
enable_sequential_cpu_offload
< source >( gpu_id: int | None = Nonedevice: 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
< source >( tokenizer: CLIPTokenizertext_encoder: CLIPTextModelWithProjectionprior: StableCascadeUNetscheduler: DDPMWuerstchenSchedulerresolution_multiple: float = 42.67feature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = Noneimage_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = None )
Параметры
- prior (
StableCascadeUNet) — Stable Cascade prior для приближённого получения эмбеддинга изображения из эмбеддинга текста и/или изображения. - 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__
< source >( prompt: str | list[str] | None = Noneimages: typing.Union[torch.Tensor, list[torch.Tensor], PIL.Image.Image, list[PIL.Image.Image]] = Noneheight: int = 1024width: int = 1024num_inference_steps: int = 20timesteps: list = Noneguidance_scale: float = 4.0negative_prompt: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = Noneimage_embeds: typing.Optional[torch.Tensor] = Nonenum_images_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pt'return_dict: bool = Truecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['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, необязательный, по умолчанию 60) — Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода. - timesteps (
list[float], необязательный) — Пользовательские шаги для процесса удаления шума в планировщиках, поддерживающих аргументtimestepsв методеset_timesteps. Если не задан, будет использовано поведение по умолчанию при передачеnum_inference_steps. Должны быть в порядке убывания. - guidance_scale (
float, необязательный, по умолчанию 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, необязательный) — Список тензорных входных данных для функцииcallback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргументаcallback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте._callback_tensor_inputsвашего класса пайплайна.
Функция, вызываемая при обращении к конвейеру для генерации.
Примеры:
>>> 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
< source >( 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] )
Класс вывода для WuerstchenPriorPipeline.
StableCascadeDecoderPipeline
класс diffusers.StableCascadeDecoderPipeline
< source >( decoder: StableCascadeUNettokenizer: CLIPTokenizertext_encoder: CLIPTextModelWithProjectionscheduler: DDPMWuerstchenSchedulervqgan: PaellaVQModellatent_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__
< source >( image_embeddings: typing.Union[torch.Tensor, list[torch.Tensor]]prompt: str | list[str] = Nonenum_inference_steps: int = 10guidance_scale: float = 0.0negative_prompt: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenum_images_per_prompt: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents'] )
Параметры
- image_embeddings (
torch.Tensorилиlist[torch.Tensor]) — векторы изображений, извлечённые из изображения или сгенерированные моделью-предшественником (Prior Model). - prompt (
strилиlist[str]) — Промпт или промпты для управления генерацией изображения. - num_inference_steps (
int, необязательный, по умолчанию 12) — Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода. - guidance_scale (
float, необязательный, по умолчанию 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, необязательный) — Список тензорных входных данных для функцииcallback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргументаcallback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте._callback_tensor_inputsвашего класса пайплайна.
Функция, вызываемая при обращении к конвейеру для генерации.
Примеры:
>>> 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)