Diffusers documentation
InstructPix2Pix
InstructPix2Pix
InstructPix2Pix: Learning to Follow Image Editing Instructions — работа Тима Брукса, Александера Холынски и Алексея А. Эфроса.
Аннотация из статьи:
Мы предлагаем метод редактирования изображений по инструкциям человека: по входному изображению и текстовой инструкции, указывающей модели, что делать, наша модель выполняет редактирование изображения в соответствии с этими инструкциями. Для получения обучающих данных для этой задачи мы объединяем знания двух крупных предобученных моделей — языковой модели (GPT-3) и модели генерации изображений по тексту (Stable Diffusion) — чтобы сгенерировать большой датасет примеров редактирования изображений. Наша условная диффузионная модель, InstructPix2Pix, обучается на сгенерированных нами данных и обобщается на реальные изображения и инструкции, написанные пользователями, на этапе инференса. Поскольку модель выполняет редактирование в прямом проходе и не требует дообучения или инверсии для каждого примера, она редактирует изображения быстро, за считанные секунды. Мы демонстрируем убедительные результаты редактирования для разнообразного набора входных изображений и текстовых инструкций.
Дополнительную информацию об InstructPix2Pix можно найти в статье, исходном коде, а также попробовать в демо.
Обязательно ознакомьтесь с руководством по планировщикам, чтобы узнать, как исследовать баланс между скоростью и качеством планировщика, а также с разделом повторное использование компонентов в разных конвейерах, чтобы узнать, как эффективно загружать одни и те же компоненты в несколько конвейеров.
StableDiffusionInstructPix2PixPipeline
класс diffusers.StableDiffusionInstructPix2PixPipeline
< source >( vae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizerunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulerssafety_checker: StableDiffusionSafetyCheckerfeature_extractor: CLIPImageProcessorPilimage_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = 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.
Пайплайн для редактирования изображений на уровне пикселей по текстовым инструкциям (на основе Stable Diffusion).
Эта модель наследуется от DiffusionPipeline. Общую документацию по методам, реализованным для всех пайплайнов (загрузка, сохранение, запуск на конкретном устройстве и т. д.), см. в документации родительского класса.
Пайплайн также наследует следующие методы загрузки:
- load_textual_inversion() для загрузки эмбеддингов текстовой инверсии
- load_lora_weights() для загрузки весов LoRA
- save_lora_weights() для сохранения весов LoRA
- load_ip_adapter() для загрузки IP-адаптеров
__call__
< source >( prompt: str | list[str] = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonenum_inference_steps: int = 100guidance_scale: float = 7.5image_guidance_scale: float = 1.5negative_prompt: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = 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 = Truecallback_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']cross_attention_kwargs: dict[str, typing.Any] | None = None**kwargs ) → StableDiffusionPipelineOutput or tuple
Параметры
- prompt (
strилиlist[str], необязательный) — Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передатьprompt_embeds. - image (
torch.Tensornp.ndarray,PIL.Image.Image,list[torch.Tensor],list[PIL.Image.Image]илиlist[np.ndarray]) —Imageили тензор, представляющий пакет изображений, которые будут перерисованы в соответствии сprompt. Также можно передавать латенты изображений в качествеimage, но при прямой передаче латентов они не кодируются повторно. - num_inference_steps (
int, необязательный, по умолчанию 100) — Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счет более медленного вывода. - guidance_scale (
float, необязательный, по умолчанию 7.5) — Более высокое значение guidance scale побуждает модель генерировать изображения, тесно связанные с текстовымprompt, ценой снижения качества изображения. Guidance scale включается, когдаguidance_scale > 1. - image_guidance_scale (
float, необязательный, по умолчанию 1.5) — Направляет сгенерированное изображение в сторону исходногоimage. Масштаб руководства изображением активируется при установкеimage_guidance_scale > 1. Более высокое значение масштаба руководства изображением способствует получению сгенерированных изображений, тесно связанных с исходнымimage, обычно за счёт снижения качества изображения. Для этого конвейера требуется значение не менее1. - negative_prompt (
strorlist[str], необязательный) — Промпт или промпты, определяющие, что не должно присутствовать в генерируемом изображении. Если не задан, необходимо передатьnegative_prompt_embeds. Игнорируется, если не используется направляющий сигнал (guidance_scale < 1). - num_images_per_prompt (
int, необязательный, по умолчанию 1) — Количество изображений, генерируемых для каждого промпта. - eta (
float, необязательный, по умолчанию 0.0) — Соответствует параметру eta (η) из статьи DDIM. Применяется только к DDIMScheduler и игнорируется другими планировщиками. - generator (
torch.Generator, необязательный) —torch.Generatorдля обеспечения детерминированности генерации. - latents (
torch.Tensor, необязательный) — Предварительно сгенерированные зашумленные латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Можно использовать, чтобы корректировать одну и ту же генерацию с разными промптами. Если не задано, тензор латентов генерируется путём выборки с использованием переданного случайного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 вместо обычного кортежа. - 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вашего класса пайплайна. - cross_attention_kwargs (
dict, необязательный) — Словарь kwargs, который при указании передается вAttentionProcessor, определенный вself.processor.
Возвращает
StableDiffusionPipelineOutput или tuple
Если return_dict равно True, возвращается StableDiffusionPipelineOutput,
в противном случае возвращается tuple, где первый элемент — это список с сгенерированными изображениями, а
второй элемент — это список значений bool, указывающих, содержит ли соответствующее сгенерированное изображение
контент, нежелательный для работы (nsfw).
Функция вызова конвейера для генерации.
Примеры:
>>> import PIL
>>> import requests
>>> import torch
>>> from io import BytesIO
>>> from diffusers import StableDiffusionInstructPix2PixPipeline
>>> def download_image(url):
... response = requests.get(url)
... return PIL.Image.open(BytesIO(response.content)).convert("RGB")
>>> img_url = "https://huggingface.co/datasets/diffusers/diffusers-images-docs/resolve/main/mountain.png"
>>> image = download_image(img_url).resize((512, 512))
>>> pipe = StableDiffusionInstructPix2PixPipeline.from_pretrained(
... "timbrooks/instruct-pix2pix", torch_dtype=torch.float16
... )
>>> pipe = pipe.to("cuda")
>>> prompt = "make the mountains snowy"
>>> image = pipe(prompt=prompt, image=image).images[0]load_textual_inversion
< source >( 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.
- Сохранённый файл текстовой инверсии находится в формате 🤗 Diffusers, но был сохранён под конкретным именем весов, например
- 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")load_lora_weights
< source >( 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
< source >( 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 (
stroros.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 и текстовому энкодеру.
StableDiffusionXLInstructPix2PixPipeline
класс diffusers.StableDiffusionXLInstructPix2PixPipeline
< source >( vae: AutoencoderKLtext_encoder: CLIPTextModeltext_encoder_2: CLIPTextModelWithProjectiontokenizer: CLIPTokenizertokenizer_2: CLIPTokenizerunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulersforce_zeros_for_empty_prompt: bool = Trueadd_watermarker: bool | None = Noneis_cosxl_edit: bool | None = False )
Параметры
- vae (AutoencoderKL) — Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
- text_encoder (
CLIPTextModel) — Замороженный текстовый энкодер. Stable Diffusion XL использует текстовую часть CLIP, а именно вариант clip-vit-large-patch14. - text_encoder_2 (
CLIPTextModelWithProjection) — Второй замороженный текстовый энкодер. Stable Diffusion XL использует текстовую и пул-часть CLIP, а именно вариант laion/CLIP-ViT-bigG-14-laion2B-39B-b160k. - tokenizer (
CLIPTokenizer) — токенизатор класса CLIPTokenizer. - tokenizer_2 (
CLIPTokenizer) — Второй токенизатор класса CLIPTokenizer. - unet (UNet2DConditionModel) — условная архитектура U-Net для удаления шума из закодированных латентов изображения.
- scheduler (SchedulerMixin) —
планировщик, используемый в связке с
unetдля удаления шума из закодированных латентов изображения. Может быть одним из DDIMScheduler, LMSDiscreteScheduler или PNDMScheduler. - requires_aesthetics_score (
bool, необязательный, по умолчанию"False") — Указывает, требуется ли дляunetпередача условия aesthetic_score во время инференса. См. также конфигурациюstabilityai/stable-diffusion-xl-refiner-1-0. - force_zeros_for_empty_prompt (
bool, необязательный, по умолчанию"True") — Определяет, следует ли всегда принудительно устанавливать эмбеддинги негативного промпта в 0. См. также конфигурациюstabilityai/stable-diffusion-xl-base-1-0. - add_watermarker (
bool, необязательный) — Определяет, следует ли использовать библиотеку invisible_watermark для нанесения водяного знака на выходные изображения. Если значение не задано, по умолчанию используется True, если пакет установлен, в противном случае водяной знак не применяется. - is_cosxl_edit (
bool, необязательный) — Если задан, латенты изображения масштабируются.
Пайплайн для редактирования изображений на уровне пикселей по текстовым инструкциям. Основан на Stable Diffusion XL.
Эта модель наследуется от DiffusionPipeline. См. документацию родительского класса для общих методов, которые библиотека реализует для всех пайплайнов (например, загрузка или сохранение, запуск на конкретном устройстве и т. д.)
Пайплайн также наследует следующие методы загрузки:
- load_textual_inversion() для загрузки эмбеддингов текстовой инверсии
- from_single_file() для загрузки файлов
.ckpt - load_lora_weights() для загрузки весов LoRA
- save_lora_weights() для сохранения весов LoRA
__call__
< source >( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 100denoising_end: float | None = Noneguidance_scale: float = 5.0image_guidance_scale: float = 1.5negative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecallback: typing.Optional[typing.Callable[[int, int, torch.Tensor], NoneType]] = Nonecallback_steps: int = 1cross_attention_kwargs: dict[str, typing.Any] | None = Noneguidance_rescale: float = 0.0original_size: tuple = Nonecrops_coords_top_left: tuple = (0, 0)target_size: tuple = None ) → ~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput or tuple
Параметры
- prompt (
strилиlist[str], необязательный) — Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передатьprompt_embedsвместо него. - prompt_2 (
strилиlist[str], необязательный) — Промпт или промпты, которые передаются вtokenizer_2иtext_encoder_2. Если не задан, в обоих text-encoders используетсяprompt - image (
torch.TensorилиPIL.Image.Imageилиnp.ndarrayилиlist[torch.Tensor]илиlist[PIL.Image.Image]илиlist[np.ndarray]) — Изображение(я), которое(ые) нужно изменить с помощью конвейера. - height (
int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Высота генерируемого изображения в пикселях. - width (
int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Ширина генерируемого изображения в пикселях. - num_inference_steps (
int, необязательный, по умолчанию 50) — Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода. - denoising_end (
float, необязательный) — Если указано, определяет долю (от 0.0 до 1.0) общего процесса денойзинга, которая должна быть завершена до его намеренного преждевременного прекращения. В результате возвращаемый образец будет по-прежнему содержать значительное количество шума, определяемое дискретными временными шагами, выбранными планировщиком. Параметр denoising_end следует использовать в тех случаях, когда данный конвейер является частью многоконвейерной конфигурации «Mixture of Denoisers», как описано в Уточнение выходного изображения - guidance_scale (
float, необязательный, по умолчанию 5.0) — Масштаб руководства, как определено в Classifier-Free Diffusion Guidance.guidance_scaleопределяется какwиз уравнения 2 статьи Imagen Paper. Масштаб руководства включается при установкеguidance_scale > 1. Более высокий масштаб руководства способствует генерации изображений, тесно связанных с текстомprompt, обычно за счёт снижения качества изображения. - image_guidance_scale (
float, необязательный, по умолчанию 1.5) — Масштаб направленного генерирования изображения используется для смещения генерируемого изображения в сторону исходного изображенияimage. Масштаб направленного генерирования изображения активируется при установке значенияimage_guidance_scale > 1. Более высокое значение масштаба направленного генерирования изображения способствует генерации изображений, тесно связанных с исходным изображениемimage, как правило, за счёт снижения качества изображения. Для этого конвейера требуется значение не менее1. - negative_prompt (
strorlist[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передатьnegative_prompt_embeds. Игнорируется, если не используется направляющее поле (то есть игнорируется, еслиguidance_scaleменьше1). - negative_prompt_2 (
strилиlist[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию изображения, передаваемые вtokenizer_2иtext_encoder_2. Если не задан, в обоих текстовых кодировщиках используетсяnegative_prompt. - num_images_per_prompt (
int, необязательный, по умолчанию 1) — Количество изображений, генерируемых для каждого промпта. - eta (
float, необязательный, по умолчанию 0.0) — Соответствует параметру eta (η) в статье DDIM: https://huggingface.co/papers/2010.02502. Применяется только к schedulers.DDIMScheduler, для остальных игнорируется. - generator (
torch.Generatorилиlist[torch.Generator], необязательный) — Один или список генераторов torch для обеспечения детерминированности генерации. - latents (
torch.Tensor, необязательный) — Предварительно сгенерированные зашумлённые латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Позволяет корректировать один и тот же процесс генерации с помощью различных промптов. Если не заданы, тензор латентов будет сгенерирован путём выборки с использованием переданного случайногоgenerator. - prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргументаprompt. - negative_prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не передано, negative_prompt_embeds будет сгенерировано из входного аргументаnegative_prompt. - pooled_prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлено, пул-эмбеддинги текста будут сгенерированы из входного аргументаprompt. - negative_pooled_prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные отрицательные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не передано, пул-эмбеддинги negative_prompt_embeds будут сгенерированы из входного аргументаnegative_prompt. - output_type (
str, необязательный, по умолчанию"pil") — Формат вывода сгенерированного изображения. Выберите один из вариантов: PIL:PIL.Image.Imageилиnp.array. - return_dict (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли возвращать~pipelines.stable_diffusion.StableDiffusionXLPipelineOutputвместо обычного кортежа. - callback (
Callable, необязательный) — Функция, которая будет вызываться каждыеcallback_stepsшагов во время инференса. Функция будет вызываться со следующими аргументами:callback(step: int, timestep: int, latents: torch.Tensor). - callback_steps (
int, необязательный, по умолчанию 1) — Частота вызова функцииcallback. Если не указано, callback будет вызываться на каждом шаге. - cross_attention_kwargs (
dict, необязательный) — Словарь kwargs, который при указании передается вAttentionProcessor, определенный вself.processorв модуле diffusers.models.attention_processor. - guidance_rescale (
float, optional, defaults to 0.0) — Guidance rescale factor proposed by Common Diffusion Noise Schedules and Sample Steps are Flawedguidance_scaleis defined asφin equation 16. of Common Diffusion Noise Schedules and Sample Steps are Flawed. Guidance rescale factor should fix overexposure when using zero terminal SNR. - original_size (
tuple[int], необязательный, по умолчанию (1024, 1024)) — Еслиoriginal_sizeне совпадает сtarget_size, изображение будет выглядеть как уменьшенное или увеличенное. По умолчаниюoriginal_sizeравно(height, width), если не указано иное. Является частью микроусловий SDXL, как описано в разделе 2.2 https://huggingface.co/papers/2307.01952. - crops_coords_top_left (
tuple[int], необязательный, по умолчанию (0, 0)) —crops_coords_top_leftможно использовать для генерации изображения, которое выглядит как «обрезанное» из позицииcrops_coords_top_leftвниз. Как правило, хорошо центрированные изображения получаются при установкеcrops_coords_top_leftв (0, 0). Является частью микроусловий SDXL, описанных в разделе 2.2 статьи https://huggingface.co/papers/2307.01952. - target_size (
tuple[int], необязательный, по умолчанию (1024, 1024)) — В большинстве случаевtarget_sizeследует устанавливать в желаемую высоту и ширину генерируемого изображения. Если значение не указано, по умолчанию будет использовано(height, width). Является частью микроусловий SDXL, как описано в разделе 2.2 статьи https://huggingface.co/papers/2307.01952.
Возвращает
~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput или tuple
~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput, если return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список с сгенерированными изображениями.
Функция, вызываемая при обращении к конвейеру для генерации.
Примеры:
>>> import torch
>>> from diffusers import StableDiffusionXLInstructPix2PixPipeline
>>> from diffusers.utils import load_image
>>> resolution = 768
>>> image = load_image(
... "https://hf.co/datasets/diffusers/diffusers-images-docs/resolve/main/mountain.png"
... ).resize((resolution, resolution))
>>> edit_instruction = "Turn sky into a cloudy one"
>>> pipe = StableDiffusionXLInstructPix2PixPipeline.from_pretrained(
... "diffusers/sdxl-instructpix2pix-768", torch_dtype=torch.float16
... ).to("cuda")
>>> edited_image = pipe(
... prompt=edit_instruction,
... image=image,
... height=resolution,
... width=resolution,
... guidance_scale=3.0,
... image_guidance_scale=1.5,
... num_inference_steps=30,
... ).images[0]
>>> edited_imageencode_prompt
< source >( prompt: strprompt_2: str | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | None = Nonenegative_prompt_2: str | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = None )
Параметры
- prompt (
strилиlist[str], необязательный) — промпт для кодирования - prompt_2 (
strилиlist[str], необязательный) — Промпт или промпты, которые передаются вtokenizer_2иtext_encoder_2. Если не задан, в обоих text-encoders используетсяprompt - device — (
torch.device): устройство torch - num_images_per_prompt (
int) — количество изображений, которые должны быть сгенерированы для каждого промпта - do_classifier_free_guidance (
bool) — использовать ли classifier free guidance - negative_prompt (
strorlist[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передатьnegative_prompt_embeds. Игнорируется, если не используется направляющее поле (то есть игнорируется, еслиguidance_scaleменьше1). - negative_prompt_2 (
strилиlist[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию изображения, передаваемые вtokenizer_2иtext_encoder_2. Если не задан, в обоих текстовых кодировщиках используетсяnegative_prompt - prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргументаprompt. - negative_prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не передано, negative_prompt_embeds будет сгенерировано из входного аргументаnegative_prompt. - pooled_prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлено, пул-эмбеддинги текста будут сгенерированы из входного аргументаprompt. - negative_pooled_prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные отрицательные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не передано, пул-эмбеддинги negative_prompt_embeds будут сгенерированы из входного аргументаnegative_prompt. - lora_scale (
float, необязательный) — Масштаб LoRA, который будет применён ко всем слоям LoRA текстового кодировщика, если слои LoRA загружены.
Кодирует промпт в скрытые состояния текстового энкодера.