Buckets:
| # Stable Cascade | |
| Эта модель построена на архитектуре [Würstchen](https://openreview.net/forum?id=gU58d5QeGv), и её главное отличие от других моделей, таких как 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](https://github.com/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. | |
| > [!WARNING] | |
| > Существуют некоторые ограничения на типы данных, которые можно использовать с моделями 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`. | |
| ## Пример использования | |
| ```python | |
| 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 | |
| ```python | |
| 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. | |
| ```python | |
| 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") | |
| ``` | |
| ## Применение | |
| ### Прямое использование | |
| Модель в настоящее время предназначена для исследовательских целей. Возможные области исследований и задачи включают | |
| - Исследования генеративных моделей. | |
| - Безопасное развёртывание моделей, которые могут генерировать вредоносный контент. | |
| - Исследование и понимание ограничений и предвзятости генеративных моделей. | |
| - Создание произведений искусства и их использование в дизайне и других творческих процессах. | |
| - Применения в образовательных или творческих инструментах. | |
| Исключённые случаи использования описаны ниже. | |
| ### Использование вне области применения | |
| Модель не обучалась для создания фактических или достоверных изображений людей или событий, поэтому использование модели для генерации такого контента выходит за рамки её возможностей. Модель не должна использоваться каким-либо образом, нарушающим [Политику допустимого использования](https://stability.ai/use-policy) Stability AI. | |
| ## Ограничения и предвзятость | |
| ### Ограничения | |
| - Лица и люди в целом могут генерироваться некорректно. | |
| - Часть модели, отвечающая за автокодирование, является с потерями. | |
| ## StableCascadeCombinedPipeline[[diffusers.StableCascadeCombinedPipeline]] | |
| #### diffusers.StableCascadeCombinedPipeline[[diffusers.StableCascadeCombinedPipeline]] | |
| ```python | |
| 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) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_cascade/pipeline_stable_cascade_combined.py#L46) | |
| **Параметры:** | |
| 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](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPImageProcessor)) : Модель, извлекающая признаки из сгенерированных изображений для использования в качестве входных данных для `image_encoder`. | |
| prior_image_encoder (`CLIPVisionModelWithProjection`) : замороженный энкодер изображений CLIP ([clip-vit-large-patch14](https://huggingface.co/openai/clip-vit-large-patch14)). | |
| Составленный конвейер для генерации изображений по тексту с использованием Stable Cascade. | |
| Эта модель наследуется от [DiffusionPipeline](/docs/diffusers/main/ru/api/pipelines/overview#diffusers.DiffusionPipeline). См. документацию родительского класса для общих методов, которые библиотека реализует для всех пайплайнов (например, загрузка или сохранение, запуск на конкретном устройстве и т. д.) | |
| #### __call__[[diffusers.StableCascadeCombinedPipeline.__call__]] | |
| ```python | |
| __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']) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_cascade/pipeline_stable_cascade_combined.py#L159) | |
| **Параметры:** | |
| 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](https://huggingface.co/papers/2207.12598). `prior_guidance_scale` определяется как `w` из уравнения 2. в [Imagen Paper](https://huggingface.co/papers/2205.11487). Масштаб руководства активируется при установке `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](https://huggingface.co/papers/2207.12598). `guidance_scale` определяется как `w` из уравнения 2 в [Imagen Paper](https://huggingface.co/papers/2205.11487). Масштаб направленного генерирования активируется при установке `guidance_scale > 1`. Более высокое значение масштаба направленного генерирования способствует созданию изображений, тесно связанных с текстовым `prompt`, обычно за счёт снижения качества изображения. | |
| generator (`torch.Generator` или `list[torch.Generator]`, *необязательный*) : Один или список [генераторов torch](https://pytorch.org/docs/stable/generated/torch.Generator.html) для обеспечения детерминированности генерации. | |
| latents (`torch.Tensor`, *необязательный*) : Предварительно сгенерированные зашумленные латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Можно использовать, чтобы скорректировать одну и ту же генерацию с разными промптами. Если не предоставлены, тензор латентов будет сгенерирован путём выборки с использованием переданного случайного `generator`. | |
| output_type (`str`, *необязательный*, по умолчанию `"pil"`) : Формат вывода для генерируемого изображения. Выберите один из вариантов: `"pil"` (`PIL.Image.Image`), `"np"` (`np.array`) или `"pt"` (`torch.Tensor`). | |
| return_dict (`bool`, *необязательный*, по умолчанию `True`) : Возвращать ли [ImagePipelineOutput](/docs/diffusers/main/ru/api/pipelines/consistency_models#diffusers.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](/docs/diffusers/main/ru/api/pipelines/consistency_models#diffusers.ImagePipelineOutput) или `tuple` [ImagePipelineOutput](/docs/diffusers/main/ru/api/pipelines/consistency_models#diffusers.ImagePipelineOutput), если `return_dict` равно True, иначе `tuple`. При возврате кортежа первым элементом является список с сгенерированными изображениями. | |
| Функция, вызываемая при обращении к конвейеру для генерации. | |
| Примеры: | |
| ```py | |
| >>> 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]] | |
| ```python | |
| enable_model_cpu_offload(gpu_id: int | None = None, device: typing.Union[torch.device, str] = None) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_cascade/pipeline_stable_cascade_combined.py#L131) | |
| Переносит все модели на CPU с помощью accelerate, снижая потребление памяти с минимальным влиянием на производительность. В отличие от `enable_sequential_cpu_offload`, этот метод перемещает на GPU целую модель за один раз в момент вызова её метода `forward`, и модель остаётся на GPU до запуска следующей модели. Экономия памяти меньше, чем при использовании `enable_sequential_cpu_offload`, но производительность значительно выше благодаря итеративному выполнению `unet`. | |
| #### enable_sequential_cpu_offload[[diffusers.StableCascadeCombinedPipeline.enable_sequential_cpu_offload]] | |
| ```python | |
| enable_sequential_cpu_offload(gpu_id: int | None = None, device: typing.Union[torch.device, str] = None) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_cascade/pipeline_stable_cascade_combined.py#L141) | |
| Переносит все модели (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]] | |
| ```python | |
| 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) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_cascade/pipeline_stable_cascade_prior.py#L80) | |
| **Параметры:** | |
| prior (`StableCascadeUNet`) : Предварительная модель Stable Cascade, которая приближённо вычисляет эмбеддинг изображения на основе текстового и/или изображенческого эмбеддинга. | |
| text_encoder (`CLIPTextModelWithProjection`) : замороженный текстовый энкодер ([laion/CLIP-ViT-bigG-14-laion2B-39B-b160k](https://huggingface.co/laion/CLIP-ViT-bigG-14-laion2B-39B-b160k)). | |
| feature_extractor ([CLIPImageProcessor](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPImageProcessor)) : Модель, извлекающая признаки из сгенерированных изображений для использования в качестве входных данных для `image_encoder`. | |
| image_encoder (`CLIPVisionModelWithProjection`) : замороженный энкодер изображений CLIP ([clip-vit-large-patch14](https://huggingface.co/openai/clip-vit-large-patch14)). | |
| tokenizer (`CLIPTokenizer`) : Токенизатор класса [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer). | |
| scheduler (`DDPMWuerstchenScheduler`) : планировщик, используемый в сочетании с `prior` для генерации встраивания изображения. | |
| resolution_multiple ('float', *необязательный*, по умолчанию 42.67) : Разрешение по умолчанию для нескольких сгенерированных изображений. | |
| Пайплайн для генерации image prior для Stable Cascade. | |
| Эта модель наследуется от [DiffusionPipeline](/docs/diffusers/main/ru/api/pipelines/overview#diffusers.DiffusionPipeline). См. документацию родительского класса для общих методов, которые библиотека реализует для всех пайплайнов (например, загрузка или сохранение, запуск на конкретном устройстве и т. д.) | |
| #### __call__[[diffusers.StableCascadePriorPipeline.__call__]] | |
| ```python | |
| __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']) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_cascade/pipeline_stable_cascade_prior.py#L375) | |
| **Параметры:** | |
| 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](https://huggingface.co/papers/2207.12598). `decoder_guidance_scale` определяется как `w` из уравнения 2 в [Imagen Paper](https://huggingface.co/papers/2205.11487). Масштаб направленного генерирования включается при установке `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](https://pytorch.org/docs/stable/generated/torch.Generator.html) для обеспечения детерминированности генерации. | |
| latents (`torch.Tensor`, *необязательный*) : Предварительно сгенерированные зашумленные латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Можно использовать, чтобы скорректировать одну и ту же генерацию с разными промптами. Если не предоставлены, тензор латентов будет сгенерирован путём выборки с использованием переданного случайного `generator`. | |
| output_type (`str`, *необязательный*, по умолчанию `"pil"`) : Формат вывода для генерируемого изображения. Выберите один из вариантов: `"pil"` (`PIL.Image.Image`), `"np"` (`np.array`) или `"pt"` (`torch.Tensor`). | |
| return_dict (`bool`, *необязательный*, по умолчанию `True`) : Возвращать ли [ImagePipelineOutput](/docs/diffusers/main/ru/api/pipelines/consistency_models#diffusers.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`. При возврате кортежа первым элементом является список с эмбеддингами сгенерированного изображения. | |
| Функция, вызываемая при обращении к конвейеру для генерации. | |
| Примеры: | |
| ```py | |
| >>> 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]] | |
| ```python | |
| 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]) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_cascade/pipeline_stable_cascade_prior.py#L60) | |
| **Параметры:** | |
| image_embeddings (`torch.Tensor` или `np.ndarray`) : Предварительные эмбеддинги изображений для текстового промпта | |
| prompt_embeds (`torch.Tensor`) : Текстовые эмбеддинги для промпта. | |
| negative_prompt_embeds (`torch.Tensor`) : Текстовые эмбеддинги для негативного промпта. | |
| Класс вывода для WuerstchenPriorPipeline. | |
| ## StableCascadeDecoderPipeline[[diffusers.StableCascadeDecoderPipeline]] | |
| #### diffusers.StableCascadeDecoderPipeline[[diffusers.StableCascadeDecoderPipeline]] | |
| ```python | |
| diffusers.StableCascadeDecoderPipeline(decoder: StableCascadeUNet, tokenizer: CLIPTokenizer, text_encoder: CLIPTextModelWithProjection, scheduler: DDPMWuerstchenScheduler, vqgan: PaellaVQModel, latent_dim_scale: float = 10.67) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_cascade/pipeline_stable_cascade.py#L60) | |
| **Параметры:** | |
| 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(24*10.67)=256 и width=int(24*10.67)=256, чтобы соответствовать условиям обучения. | |
| Пайплайн для генерации изображений с помощью модели Stable Cascade. | |
| Эта модель наследуется от [DiffusionPipeline](/docs/diffusers/main/ru/api/pipelines/overview#diffusers.DiffusionPipeline). См. документацию родительского класса для общих методов, которые библиотека реализует для всех пайплайнов (например, загрузка или сохранение, запуск на конкретном устройстве и т. д.) | |
| #### __call__[[diffusers.StableCascadeDecoderPipeline.__call__]] | |
| ```python | |
| __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']) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_cascade/pipeline_stable_cascade.py#L306) | |
| **Параметры:** | |
| 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](https://huggingface.co/papers/2207.12598). `decoder_guidance_scale` соответствует `w` из уравнения 2 в [Imagen Paper](https://huggingface.co/papers/2205.11487). Направленное генерирование включается при установке `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](https://pytorch.org/docs/stable/generated/torch.Generator.html) для обеспечения детерминированности генерации. | |
| latents (`torch.Tensor`, *необязательный*) : Предварительно сгенерированные зашумленные латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Можно использовать, чтобы скорректировать одну и ту же генерацию с разными промптами. Если не предоставлены, тензор латентов будет сгенерирован путём выборки с использованием переданного случайного `generator`. | |
| output_type (`str`, *необязательный*, по умолчанию `"pil"`) : Формат вывода для генерируемого изображения. Выберите один из вариантов: `"pil"` (`PIL.Image.Image`), `"np"` (`np.array`) или `"pt"` (`torch.Tensor`). | |
| return_dict (`bool`, *необязательный*, по умолчанию `True`) : Возвращать ли [ImagePipelineOutput](/docs/diffusers/main/ru/api/pipelines/consistency_models#diffusers.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](/docs/diffusers/main/ru/api/pipelines/consistency_models#diffusers.ImagePipelineOutput) или `tuple` [ImagePipelineOutput](/docs/diffusers/main/ru/api/pipelines/consistency_models#diffusers.ImagePipelineOutput), если `return_dict` равно True, иначе `tuple`. При возврате кортежа первым элементом является список с сгенерированными эмбеддингами изображений. | |
| Функция, вызываемая при обращении к конвейеру для генерации. | |
| Примеры: | |
| ```py | |
| >>> 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.