Diffusers documentation

Изображение в изображение

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Изображение в изображение

LoRA

Модель Stable Diffusion также может использоваться для генерации изображений по изображению: для этого передаются текстовый промпт и исходное изображение, которые задают условия для создания новых изображений.

StableDiffusionImg2ImgPipeline использует механизм диффузионного шумоподавления, предложенный в статье SDEdit: Guided Image Synthesis and Editing with Stochastic Differential Equations авторов Chenlin Meng, Yutong He, Yang Song, Jiaming Song, Jiajun Wu, Jun-Yan Zhu, Stefano Ermon.

Аннотация из статьи:

Направляемый синтез изображений позволяет обычным пользователям создавать и редактировать фотореалистичные изображения с минимальными усилиями. Ключевая задача заключается в балансе между верностью вводу пользователя (например, нарисованным от руки цветным штрихам) и реализмом синтезированного изображения. Существующие методы на основе GAN пытаются достичь такого баланса с помощью условных GAN или инверсий GAN, что является сложной задачей и часто требует дополнительных обучающих данных или функций потерь для отдельных приложений. Для решения этих проблем мы предлагаем новый метод синтеза и редактирования изображений, Stochastic Differential Editing (SDEdit), основанный на генеративном априорном распределении диффузионной модели, который синтезирует реалистичные изображения путем итеративного удаления шума через стохастическое дифференциальное уравнение (SDE). Получив входное изображение с направляющим элементом пользователя любого типа, SDEdit сначала добавляет шум к входу, а затем последовательно удаляет шум из полученного изображения через SDE-априорное распределение, чтобы повысить его реализм. SDEdit не требует обучения под конкретную задачу или инверсий и может естественным образом достичь баланса между реализмом и верностью. Согласно исследованию человеческого восприятия, SDEdit значительно превосходит передовые методы на основе GAN на 98,09% по показателю реализма и на 91,72% по общему уровню удовлетворенности на нескольких задачах, включая синтез и редактирование изображений на основе штрихов, а также композицию изображений.

Обязательно ознакомьтесь с разделом Советы по Stable Diffusion, чтобы узнать, как исследовать баланс между скоростью и качеством планировщика, а также как эффективно переиспользовать компоненты конвейера!

StableDiffusionImg2ImgPipeline

класс diffusers.StableDiffusionImg2ImgPipeline

< >

( vae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizerunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulerssafety_checker: StableDiffusionSafetyCheckerfeature_extractor: CLIPImageProcessorPilimage_encoder: CLIPVisionModelWithProjection = Nonerequires_safety_checker: bool = True )

Параметры

  • vae (AutoencoderKL) — модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
  • text_encoder (CLIPTextModel) — Замороженный текстовый энкодер (clip-vit-large-patch14).
  • tokenizer (CLIPTokenizer) — CLIPTokenizer для токенизации текста.
  • unet (UNet2DConditionModel) — UNet2DConditionModel для удаления шума из закодированных латентов изображения.
  • scheduler (SchedulerMixin) — планировщик, используемый в связке с unet для удаления шума из закодированных латентов изображения. Может быть одним из DDIMScheduler, LMSDiscreteScheduler или PNDMScheduler.
  • safety_checker (StableDiffusionSafetyChecker) — модуль классификации, оценивающий, могут ли сгенерированные изображения считаться оскорбительными или вредными. Подробнее о потенциальных рисках модели см. в карточке модели.
  • feature_extractor (CLIPImageProcessor) — CLIPImageProcessor для извлечения признаков из сгенерированных изображений; используется как вход для safety_checker.

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

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

Пайплайн также наследует следующие методы загрузки:

__call__

< >

( prompt: str | list[str] = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonestrength: float = 0.8num_inference_steps: int | None = 50timesteps: list = Nonesigmas: list = Noneguidance_scale: float | None = 7.5negative_prompt: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float | None = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Noneclip_skip: int = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']**kwargs ) → StableDiffusionPipelineOutput or tuple

Параметры

  • prompt (str или list[str], необязательный) — Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передать prompt_embeds.
  • image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image] или list[np.ndarray]) — Image, массив numpy или тензор, представляющие пакет изображений, который будет использоваться в качестве начальной точки. Для массивов numpy и тензоров pytorch ожидаемый диапазон значений составляет [0, 1]. Если передан тензор или список тензоров, ожидаемая форма должна быть (B, C, H, W) или (C, H, W). Если передан массив numpy или список массивов, ожидаемая форма должна быть (B, H, W, C) или (H, W, C). Также можно передавать латенты изображений в качестве image, но при прямой передаче латентов они не кодируются повторно.
  • strength (float, необязательный, по умолчанию 0.8) — Определяет степень трансформации исходного image. Значение должно находиться в диапазоне от 0 до 1. image используется как стартовая точка, и чем выше strength, тем больше шума добавляется. Количество шагов денойзинга зависит от количества шума, добавленного изначально. Когда strength равно 1, добавляется максимальное количество шума, и процесс денойзинга выполняется в течение полного числа итераций, указанного в num_inference_steps. Значение 1 по сути игнорирует image.
  • num_inference_steps (int, необязательный, по умолчанию 50) — Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода. Этот параметр модулируется strength.
  • timesteps (list[int], необязательный) — Пользовательские шаги для процесса удаления шума в планировщиках, поддерживающих аргумент timesteps в методе set_timesteps. Если не задан, будет использоваться поведение по умолчанию при передаче num_inference_steps. Значения должны быть в порядке убывания.
  • sigmas (list[float], необязательный) — Пользовательские сигмы для процесса удаления шума в планировщиках, поддерживающих аргумент sigmas в их методе set_timesteps. Если не задано, будет использоваться поведение по умолчанию при передаче num_inference_steps.
  • guidance_scale (float, необязательный, по умолчанию 7.5) — Более высокое значение guidance scale побуждает модель генерировать изображения, тесно связанные с текстовым prompt, ценой снижения качества изображения. Guidance scale включается, когда guidance_scale > 1.
  • negative_prompt (str or list[str], необязательный) — Промпт или промпты, определяющие, что не должно присутствовать в генерируемом изображении. Если не задан, необходимо передать negative_prompt_embeds. Игнорируется, если не используется направляющий сигнал (guidance_scale < 1).
  • num_images_per_prompt (int, необязательный, по умолчанию 1) — Количество изображений, генерируемых для каждого промпта.
  • eta (float, необязательный, по умолчанию 0.0) — Соответствует параметру eta (η) из статьи DDIM. Применяется только к DDIMScheduler и игнорируется другими планировщиками.
  • generator (torch.Generator или list[torch.Generator], необязательный) — torch.Generator для обеспечения детерминированности генерации.
  • prompt_embeds (torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных (взвешивание промпта). Если не задано, текстовые эмбеддинги генерируются из входного аргумента prompt.
  • negative_prompt_embeds (torch.Tensor, необязательный) — Предварительно сгенерированные эмбеддинги отрицательного текста. Можно использовать для простой настройки текстовых входных данных (взвешивание промпта). Если не задано, negative_prompt_embeds генерируются из входного аргумента negative_prompt.
  • ip_adapter_image — (PipelineImageInput, необязательный): Необязательное входное изображение для работы с IP-адаптерами.
  • ip_adapter_image_embeds (list[torch.Tensor], необязательный) — Предварительно сгенерированные эмбеддинги изображений для IP-Adapter. Должен представлять собой список, длина которого равна количеству IP-адаптеров. Каждый элемент должен быть тензором формы (batch_size, num_images, emb_dim). Если do_classifier_free_guidance установлен в True, должен содержать отрицательный эмбеддинг изображения. Если не указан, эмбеддинги вычисляются из входного аргумента ip_adapter_image.
  • output_type (str, необязательный, по умолчанию "pil") — Формат вывода сгенерированного изображения. Выберите между PIL.Image и np.array.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать StableDiffusionPipelineOutput вместо обычного кортежа.
  • cross_attention_kwargs (dict, необязательный) — Словарь kwargs, который при указании передается в AttentionProcessor, определенный в self.processor.
  • clip_skip (int, необязательный) — Количество слоев CLIP, которые пропускаются при вычислении эмбеддингов промпта. Значение 1 означает, что для вычисления эмбеддингов промпта будет использоваться выход предпоследнего слоя.
  • callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, необязательный) — функция или подкласс PipelineCallback или MultiPipelineCallbacks, вызываемая в конце каждого шага денойзинга во время инференса. Аргументы: 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 вашего класса пайплайна.

Возвращает

StableDiffusionPipelineOutput или tuple

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

Функция вызова конвейера для генерации.

Примеры:

>>> import requests
>>> import torch
>>> from PIL import Image
>>> from io import BytesIO

>>> from diffusers import StableDiffusionImg2ImgPipeline

>>> device = "cuda"
>>> model_id_or_path = "stable-diffusion-v1-5/stable-diffusion-v1-5"
>>> pipe = StableDiffusionImg2ImgPipeline.from_pretrained(model_id_or_path, torch_dtype=torch.float16)
>>> pipe = pipe.to(device)

>>> url = "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/assets/stable-samples/img2img/sketch-mountains-input.jpg"

>>> response = requests.get(url)
>>> init_image = Image.open(BytesIO(response.content)).convert("RGB")
>>> init_image = init_image.resize((768, 512))

>>> prompt = "A fantasy landscape, trending on artstation"

>>> images = pipe(prompt=prompt, image=init_image, strength=0.75, guidance_scale=7.5).images
>>> images[0].save("fantasy_landscape.png")

enable_attention_slicing

< >

( slice_size: str | int = 'auto' )

Параметры

  • slice_size (str или int, необязательный, по умолчанию "auto") — Если указано "auto", вход для головок внимания делится пополам, и внимание вычисляется в два этапа. Если указано "max", экономия памяти будет максимальной, так как за раз выполняется только один срез. Если предоставлено число, используется столько срезов, сколько получается из attention_head_dim // slice_size. В этом случае attention_head_dim должно быть кратно slice_size.

Включает послойный (сliced) вычисление внимания. При включении этого параметра модуль внимания разбивает входной тензор на части (слайсы) для вычисления внимания в несколько шагов. Если используется более одной головы внимания, вычисления выполняются последовательно для каждой головы. Это полезно для экономии памяти ценой небольшого снижения скорости.

> ⚠️ Не включайте нарезку внимания, если вы уже используете scaled_dot_product_attention (SDPA) из PyTorch > 2.0 или xFormers. Эти вычисления внимания уже очень эффективны по памяти, поэтому вам не нужно включать > эту функцию. Если вы включите нарезку внимания вместе с SDPA или xFormers, это может привести к серьезному замедлению!

Примеры:

>>> import torch
>>> from diffusers import StableDiffusionPipeline

>>> pipe = StableDiffusionPipeline.from_pretrained(
...     "stable-diffusion-v1-5/stable-diffusion-v1-5",
...     dtype=torch.float16,
...     use_safetensors=True,
... )

>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> pipe.enable_attention_slicing()
>>> image = pipe(prompt).images[0]

disable_attention_slicing

< >

( )

Отключает вычисление внимания с нарезкой. Если enable_attention_slicing был вызван ранее, внимание вычисляется за один шаг.

enable_xformers_memory_efficient_attention

< >

( attention_op: typing.Optional[typing.Callable] = None )

Параметры

  • attention_op (Callable, необязательный) — Заменяет оператор по умолчанию None для использования в качестве аргумента op функции memory_efficient_attention() библиотеки xFormers.

Включите энергоэффективное внимание от xFormers. При включении этого параметра вы должны наблюдать снижение потребления памяти GPU и потенциальное ускорение во время инференса. Ускорение во время обучения не гарантируется.

> ⚠️ Если включены и memory efficient attention, и sliced attention, то memory efficient attention имеет > приоритет.

Примеры:

>>> import torch
>>> from diffusers import DiffusionPipeline
>>> from xformers.ops import MemoryEfficientAttentionFlashAttentionOp

>>> pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1", dtype=torch.float16)
>>> pipe = pipe.to("cuda")
>>> pipe.enable_xformers_memory_efficient_attention(attention_op=MemoryEfficientAttentionFlashAttentionOp)
>>> # Workaround for not accepting attention shape using VAE for Flash Attention
>>> pipe.vae.enable_xformers_memory_efficient_attention(attention_op=None)

disable_xformers_memory_efficient_attention

< >

( )

Отключить энергоэффективное внимание из xFormers.

load_textual_inversion

< >

( pretrained_model_name_or_path: str | list[str] | dict[str, torch.Tensor] | list[dict[str, torch.Tensor]]token: str | list[str] | None = Nonetokenizer: 'PreTrainedTokenizer' | None = Nonetext_encoder: 'PreTrainedModel' | None = None**kwargs )

Параметры

  • pretrained_model_name_or_path (str или os.PathLike или list[str or os.PathLike] или Dict или list[Dict]) — Может быть одним из следующих вариантов или списком таких вариантов:
    • Строка, идентификатор модели (например, sd-concepts-library/low-poly-hd-logos-icons) предобученной модели, размещенной на Hub.
    • Путь к каталогу (например, ./my_text_inversion_directory/), содержащему веса текстовой инверсии.
    • Путь к файлу (например, ./my_text_inversions.pt), содержащему веса текстовой инверсии.
    • Словарь состояния torch.
  • token (str или list[str], необязательный) — Переопределяет токен, используемый для весов текстовой инверсии. Если pretrained_model_name_or_path является списком, то token также должен быть списком той же длины.
  • text_encoder (CLIPTextModel, необязательный) — Замороженный текстовый энкодер (clip-vit-large-patch14). Если не указан, функция возьмет self.tokenizer.
  • tokenizer (CLIPTokenizer, необязательный) — CLIPTokenizer для токенизации текста. Если не указан, функция использует self.tokenizer.
  • weight_name (str, необязательный) — Имя файла с кастомными весами. Это следует использовать, когда:
    • Сохранённый файл текстовой инверсии находится в формате 🤗 Diffusers, но был сохранён под конкретным именем весов, например text_inv.bin.
    • Сохранённый файл текстовой инверсии находится в формате Automatic1111.
  • cache_dir (str | os.PathLike, необязательный) — Путь к каталогу, в котором кэшируется загруженная конфигурация предобученной модели, если стандартный кэш не используется.
  • force_download (bool, необязательный, по умолчанию False) — Следует ли принудительно (пере)скачивать веса модели и файлы конфигурации, игнорируя кэшированные версии, если они существуют.
  • proxies (dict[str, str], необязательный) — Словарь прокси-серверов, используемых по протоколу или конечной точке, например, {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Прокси применяются при каждом запросе.
  • local_files_only (bool, необязательный, по умолчанию False) — Определяет, следует ли загружать только локальные веса модели и файлы конфигурации. Если установлено значение True, модель не будет скачана с Hub.
  • hf_token (str или bool, необязательный) — Токен, используемый в качестве HTTP bearer-авторизации для удалённых файлов. Если True, используется токен, сгенерированный командой diffusers-cli login (сохранённый в ~/.huggingface).
  • revision (str, необязательный, по умолчанию "main") — Конкретная версия модели, которую следует использовать. Может быть именем ветки, именем тега, идентификатором коммита или любым другим идентификатором, поддерживаемым Git.
  • subfolder (str, необязательный, по умолчанию "") — Расположение подпапки файла модели внутри более крупного репозитория моделей на Hub или локально.
  • mirror (str, optional) — Источник зеркала для решения проблем с доступностью при загрузке модели в Китае. Мы не гарантируем актуальность или безопасность источника, поэтому за дополнительной информацией обращайтесь на сайт зеркала.

Загрузите эмбеддинги Textual Inversion в текстовый энкодер StableDiffusionPipeline (поддерживаются форматы 🤗 Diffusers и Automatic1111).

Пример:

Для загрузки вектора встраивания Textual Inversion в формате 🤗 Diffusers:

from diffusers import StableDiffusionPipeline
import torch

model_id = "stable-diffusion-v1-5/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16).to("cuda")

pipe.load_textual_inversion("sd-concepts-library/cat-toy")

prompt = "A <cat-toy> backpack"

image = pipe(prompt, num_inference_steps=50).images[0]
image.save("cat-backpack.png")

Чтобы загрузить вектор встраивания Textual Inversion в формате Automatic1111, сначала скачайте вектор (например, с civitAI), а затем загрузите его

локально:

from diffusers import StableDiffusionPipeline
import torch

model_id = "stable-diffusion-v1-5/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16).to("cuda")

pipe.load_textual_inversion("./charturnerv2.pt", token="charturnerv2")

prompt = "charturnerv2, multiple views of the same character in the same outfit, a character turnaround of a woman wearing a black jacket and red shirt, best quality, intricate details."

image = pipe(prompt, num_inference_steps=50).images[0]
image.save("character.png")

from_single_file

< >

( pretrained_model_link_or_path**kwargs )

Параметры

  • pretrained_model_link_or_path (str или os.PathLike, необязательный) — Может быть:
    • Ссылка на файл .ckpt (например, "https://huggingface.co/<repo_id>/blob/main/<path_to_file>.ckpt") на Hub.
    • Путь к файлу, содержащему все веса конвейера.
  • dtype (str или torch.dtype, необязательный) — Переопределяет стандартный torch.dtype и загружает модель с другим dtype.
  • force_download (bool, необязательный, по умолчанию False) — Следует ли принудительно (пере)скачивать веса модели и файлы конфигурации, игнорируя кэшированные версии, если они существуют.
  • cache_dir (str | os.PathLike, необязательный) — Путь к каталогу, в котором кэшируется загруженная конфигурация предобученной модели, если стандартный кэш не используется.
  • proxies (dict[str, str], необязательный) — Словарь прокси-серверов, используемых по протоколу или конечной точке, например, {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Прокси применяются при каждом запросе.
  • local_files_only (bool, необязательный, по умолчанию False) — Определяет, следует ли загружать только локальные веса модели и файлы конфигурации. Если установлено значение True, модель не будет скачана с Hub.
  • token (str или bool, необязательный) — Токен, используемый в качестве HTTP bearer-авторизации для удалённых файлов. Если True, используется токен, сгенерированный командой diffusers-cli login (сохранённый в ~/.huggingface).
  • revision (str, необязательный, по умолчанию "main") — Конкретная версия модели, которую следует использовать. Может быть именем ветки, именем тега, идентификатором коммита или любым другим идентификатором, поддерживаемым Git.
  • original_config_file (str, необязательный) — Путь к исходному файлу конфигурации, который использовался для обучения модели. Если не указан, файл конфигурации будет определен из файла контрольной точки.
  • config (str, необязательный) — Может быть одним из:
    • Строка, repo id (например, CompVis/ldm-text2im-large-256) предобученного пайплайна, размещенного на Hub.
    • Путь к каталогу (например, ./my_pipeline_directory/), содержащему конфигурации компонентов пайплайна в формате Diffusers.
  • disable_mmap (‘bool’, необязательный, по умолчанию ‘False’) — Определяет, следует ли отключать mmap при загрузке модели Safetensors. Этот параметр может обеспечить лучшую производительность, если модель находится на сетевом диске или жёстком диске.
  • kwargs (остальные именованные аргументы в виде словаря, необязательно) — Можно использовать для переопределения переменных загрузки и сохранения (компонентов конвейера конкретного класса конвейера). Переопределённые компоненты передаются непосредственно в метод __init__ конвейера. Подробнее см. пример ниже.

Создайте экземпляр DiffusionPipeline из предобученных весов пайплайна, сохранённых в формате .ckpt или .safetensors. По умолчанию пайплайн устанавливается в режим оценки (model.eval()).

Примеры:

>>> from diffusers import StableDiffusionPipeline

>>> # Download pipeline from huggingface.co and cache.
>>> pipeline = StableDiffusionPipeline.from_single_file(
...     "https://huggingface.co/WarriorMama777/OrangeMixs/blob/main/Models/AbyssOrangeMix/AbyssOrangeMix.safetensors"
... )

>>> # Download pipeline from local file
>>> # file is downloaded under ./v1-5-pruned-emaonly.ckpt
>>> pipeline = StableDiffusionPipeline.from_single_file("./v1-5-pruned-emaonly.ckpt")

>>> # Enable float16 and move to GPU
>>> pipeline = StableDiffusionPipeline.from_single_file(
...     "https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5/blob/main/v1-5-pruned-emaonly.ckpt",
...     torch_dtype=torch.float16,
... )
>>> pipeline.to("cuda")

load_lora_weights

< >

( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )

Параметры

  • pretrained_model_name_or_path_or_dict (str или os.PathLike или dict) — См. lora_state_dict().
  • adapter_name (str, необязательный) — Имя адаптера, используемое для ссылки на загруженную модель адаптера. Если не указано, будет использовано default_{i}, где i — общее количество загружаемых адаптеров.
  • low_cpu_mem_usage (bool, необязательный) — Ускоряет загрузку модели, загружая только предобученные веса LoRA и не инициализируя случайные веса.
  • hotswap (bool, необязательный) — По умолчанию False. Определяет, следует ли заменить существующий адаптер (LoRA) на новый загруженный адаптер на месте. Это означает, что вместо загрузки дополнительного адаптера существующие веса адаптера будут заменены весами нового адаптера. Это может быть быстрее и экономнее по памяти. Однако главное преимущество hotswap заключается в том, что при компиляции модели с помощью torch.compile загрузка нового адаптера не требует повторной компиляции модели. При использовании hotswap переданный adapter_name должен быть именем уже загруженного адаптера.

    Если у нового адаптера и старого адаптера разные ранги и/или значения LoRA alpha (т. е. масштабирование), перед загрузкой адаптера необходимо вызвать дополнительный метод:

Загрузите веса LoRA, указанные в pretrained_model_name_or_path_or_dict, в self.unet и self.text_encoder.

Все kwargs передаются в self.lora_state_dict.

См. lora_state_dict() для получения подробной информации о том, как загружается state dict.

See load_lora_into_unet() for more details on how the state dict is loaded into self.unet.

См. load_lora_into_text_encoder() для подробностей о том, как state dict загружается в self.text_encoder.

save_lora_weights

< >

( save_directory: str | os.PathLikeunet_lora_layers: dict = Nonetext_encoder_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Trueunet_lora_adapter_metadata = Nonetext_encoder_lora_adapter_metadata = None )

Параметры

  • save_directory (str or os.PathLike) — Каталог для сохранения параметров LoRA. Будет создан, если не существует.
  • unet_lora_layers (dict[str, torch.nn.Module] или dict[str, torch.Tensor]) — Состояние словаря (state dict) слоёв LoRA, соответствующих unet.
  • text_encoder_lora_layers (dict[str, torch.nn.Module] или dict[str, torch.Tensor]) — State dict слоёв LoRA, соответствующих text_encoder. Необходимо явно передать state dict слоёв LoRA текстового энкодера, так как он поступает из 🤗 Transformers.
  • is_main_process (bool, необязательный, по умолчанию True) — Указывает, является ли процесс, вызывающий эту функцию, основным. Полезно при распределенном обучении, когда необходимо вызвать эту функцию во всех процессах. В этом случае установите is_main_process=True только в основном процессе, чтобы избежать гонок.
  • save_function (Callable) — Функция, используемая для сохранения словаря состояния. Полезно при распределённом обучении, когда необходимо заменить torch.save на другой метод. Может быть настроена с помощью переменной окружения DIFFUSERS_SAVE_MODE.
  • safe_serialization (bool, необязательный, по умолчанию True) — Определяет, сохранять ли модель с помощью safetensors или традиционным способом PyTorch с использованием pickle.
  • unet_lora_adapter_metadata — метаданные адаптера LoRA, связанные с unet, которые будут сериализованы вместе со state dict.
  • text_encoder_lora_adapter_metadata — метаданные адаптера LoRA, связанные с текстовым энкодером, которые будут сериализованы вместе со словарем состояний.

Сохраните параметры LoRA, соответствующие UNet и текстовому энкодеру.

encode_prompt

< >

( promptdevicenum_images_per_promptdo_classifier_free_guidancenegative_prompt = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )

Параметры

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

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

get_guidance_scale_embedding

< >

( w: Tensorembedding_dim: int = 512dtype: dtype = torch.float32 ) → torch.Tensor

Параметры

  • w (torch.Tensor) — Генерирует векторы эмбеддингов с заданным масштабом руководства (guidance scale) для последующего обогащения эмбеддингов временных шагов (timestep embeddings).
  • embedding_dim (int, необязательный, по умолчанию 512) — Размерность генерируемых эмбеддингов.
  • dtype (torch.dtype, необязательный, по умолчанию torch.float32) — Тип данных для генерируемых эмбеддингов.

Возвращает

torch.Tensor

Векторы встраиваний с формой (len(w), embedding_dim).

См. https://github.com/google-research/vdm/blob/dc27b98a554f65cdc654b800da5aa1846545d41b/model_vdm.py#L298

StableDiffusionPipelineOutput

класс diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput

< >

( images: list[PIL.Image.Image] | numpy.ndarraynsfw_content_detected: list[bool] | None )

Параметры

  • images (list[PIL.Image.Image] или np.ndarray) — список денойзированных изображений PIL длиной batch_size или массив NumPy формы (batch_size, height, width, num_channels).
  • nsfw_content_detected (list[bool]) — список, указывающий, содержит ли соответствующее сгенерированное изображение контент, непригодный для рабочего места (nsfw), или None, если проверка безопасности не могла быть выполнена.

Класс вывода для пайплайнов Stable Diffusion.

Update on GitHub