Buckets:
Perturbed-Attention Guidance
Perturbed-Attention Guidance (PAG) — это новый метод направленного сэмплирования в диффузионных моделях, который повышает качество сгенерированных образцов как в безусловных, так и в условных режимах, не требуя дополнительной дообучения или интеграции внешних модулей.
PAG был предложен в работе Self-Rectifying Diffusion Sampling with Perturbed-Attention Guidance авторами Donghoon Ahn, Hyoungwon Cho, Jaewon Min, Wooseok Jang, Jungwoo Kim, SeonHwa Kim, Hyun Hee Park, Kyong Hwan Jin и Seungryong Kim.
Аннотация из статьи:
Недавние исследования показали, что диффузионные модели способны генерировать образцы высокого качества, однако их качество в значительной степени зависит от методов направленного сэмплирования, таких как классификаторное наведение (CG) и наведение без классификатора (CFG). Эти методы часто неприменимы в задачах безусловной генерации или в различных прикладных задачах, например, в восстановлении изображений. В данной статье мы предлагаем новый метод направленного сэмплирования, названный Perturbed-Attention Guidance (PAG), который повышает качество диффузионных образцов как в безусловных, так и в условных сценариях, не требуя дополнительного обучения или интеграции внешних модулей. PAG спроектирован для постепенного улучшения структуры образцов в процессе денойзинга. Он предполагает генерацию промежуточных образцов с деградированной структурой путём замены выбранных карт само-внимания в диффузионном U-Net единичной матрицей, с учётом способности механизмов само-внимания захватывать структурную информацию, и направлением процесса денойзинга в сторону, противоположную этим деградированным образцам. В обоих случаях — ADM и Stable Diffusion — PAG неожиданно повышает качество образцов в условных и даже безусловных сценариях. Более того, PAG значительно улучшает базовую производительность в различных прикладных задачах, где существующие методы наведения, такие как CG или CFG, не могут быть полностью задействованы, включая ControlNet с пустыми промптами и восстановление изображений, такое как инпейнтинг и удаление размытия.
PAG можно использовать, указав pag_applied_layers в качестве параметра при создании экземпляра конвейера PAG. Это может быть одна строка или список строк. Каждая строка может содержать уникальный идентификатор слоя или регулярное выражение для определения одного или нескольких слоёв.
- Полный идентификатор в виде обычной строки:
down_blocks.2.attentions.0.transformer_blocks.0.attn1.processor - Полный идентификатор в виде RegEx:
down_blocks.2.(attentions|motion_modules).0.transformer_blocks.0.attn1.processor - Частичный идентификатор в виде RegEx:
down_blocks.2илиattn1 - Список идентификаторов (может быть комбинацией строк и ReGex):
["blocks.1", "blocks.(14|20)", r"down_blocks\.(2,3)"]
Поскольку RegEx поддерживается как способ сопоставления идентификаторов слоёв, крайне важно использовать его правильно, иначе возможны непредвиденные сбои. Рекомендуемый способ использования PAG — указывать слои в формате
blocks.{layer_index}иblocks.({layer_index_1|layer_index_2|...}). Использование в любом ином виде, хотя и возможно, может обойти базовые проверки валидации и привести к непредсказуемым результатам.
Общие задачи
Вы можете применять PAG к StableDiffusionXLPipeline для таких задач, как генерация изображений по тексту, преобразование изображения в изображение и inpainting. Чтобы включить PAG для конкретной задачи, загрузите пайплайн с помощью API AutoPipeline, указав флаг enable_pag=True и аргумент pag_applied_layers.
🤗 Diffusers в настоящее время поддерживает использование PAG только с выбранными пайплайнами SDXL и PixArtSigmaPAGPipeline. Но не стесняйтесь создавать feature request, если вы хотите добавить поддержку PAG для нового пайплайна!
from diffusers import AutoPipelineForText2Image
from diffusers.utils import load_image
import torch
pipeline = AutoPipelineForText2Image.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
enable_pag=True,
pag_applied_layers=["mid"],
dtype=torch.float16
)
pipeline.enable_model_cpu_offload()
Аргумент
pag_applied_layersпозволяет указать, к каким слоям применяется PAG. Кроме того, вы можете использовать методset_pag_applied_layers, чтобы обновить эти слои после создания конвейера. Подробнее о применении PAG к другим слоям читайте в разделе pag_applied_layers.
Если у вас уже создан и загружен конвейер, вы можете включить для него PAG с помощью API from_pipe с флагом enable_pag. Внутренне конвейер PAG создаётся на основе конвейера и задачи, которые вы указали. В примере ниже, поскольку мы использовали AutoPipelineForText2Image и передали StableDiffusionXLPipeline, соответственно создаётся StableDiffusionXLPAGPipeline. Обратите внимание, что это не требует дополнительной памяти, и у вас будут загружены и готовы к использованию как StableDiffusionXLPipeline, так и StableDiffusionXLPAGPipeline. Подробнее об API from_pipe и о том, как повторно использовать конвейеры в diffuser, можно прочитать здесь.
pipeline_sdxl = AutoPipelineForText2Image.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16)
pipeline = AutoPipelineForText2Image.from_pipe(pipeline_sdxl, enable_pag=True)
Для генерации изображения также необходимо передать pag_scale. При увеличении pag_scale изображения приобретают более семантически согласованные структуры и демонстрируют меньше артефактов. Однако чрезмерно большое значение guidance scale может привести к более гладким текстурам и лёгкой перенасыщенности изображений, аналогично CFG. В официальном демо используется pag_scale=3.0, что хорошо работает в большинстве случаев, но вы можете экспериментировать и выбирать подходящее значение в соответствии со своими потребностями! PAG отключается, когда pag_scale=0.
prompt = "an insect robot preparing a delicious meal, anime style"
for pag_scale in [0.0, 3.0]:
generator = torch.Generator(device="cpu").manual_seed(0)
images = pipeline(
prompt=prompt,
num_inference_steps=25,
guidance_scale=7.0,
generator=generator,
pag_scale=pag_scale,
).images
сгенерированное изображение без PAG
сгенерированное изображение с PAG
Вы можете использовать PAG в конвейерах image-to-image.
from diffusers import AutoPipelineForImage2Image
from diffusers.utils import load_image
import torch
pipeline = AutoPipelineForImage2Image.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
enable_pag=True,
pag_applied_layers=["mid"],
dtype=torch.float16
)
pipeline.enable_model_cpu_offload()
Если у вас уже есть пайплайн image-to-image и вы хотите включить на нём PAG, вы можете выполнить это
pipeline_t2i = AutoPipelineForImage2Image.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16)
pipeline = AutoPipelineForImage2Image.from_pipe(pipeline_t2i, enable_pag=True)
Также очень легко напрямую переключиться из пайплайна «текст в изображение» в пайплайн «изображение в изображение» с поддержкой PAG
pipeline_pag = AutoPipelineForText2Image.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16)
pipeline = AutoPipelineForImage2Image.from_pipe(pipeline_t2i, enable_pag=True)
Если у вас есть конвейер «текст в изображение» с включённой PAG, вы можете напрямую переключиться на конвейер «изображение в изображение», сохранив включённую PAG
pipeline_pag = AutoPipelineForText2Image.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", enable_pag=True, dtype=torch.float16)
pipeline = AutoPipelineForImage2Image.from_pipe(pipeline_t2i)
Теперь давайте сгенерируем изображение!
pag_scales = 4.0
guidance_scales = 7.0
url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/sdxl-text2img.png"
init_image = load_image(url)
prompt = "a dog catching a frisbee in the jungle"
generator = torch.Generator(device="cpu").manual_seed(0)
image = pipeline(
prompt,
image=init_image,
strength=0.8,
guidance_scale=guidance_scale,
pag_scale=pag_scale,
generator=generator).images[0]
from diffusers import AutoPipelineForInpainting
from diffusers.utils import load_image
import torch
pipeline = AutoPipelineForInpainting.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
enable_pag=True,
dtype=torch.float16
)
pipeline.enable_model_cpu_offload()
Вы можете включить PAG в существующем пайплайне инпейнтинга следующим образом
pipeline_inpaint = AutoPipelineForInpainting.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16)
pipeline = AutoPipelineForInpainting.from_pipe(pipeline_inpaint, enable_pag=True)
Это по-прежнему работает, если ваша конвейерная линия выполняет другую задачу:
pipeline_t2i = AutoPipelineForText2Image.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16)
pipeline = AutoPipelineForInpaiting.from_pipe(pipeline_t2i, enable_pag=True)
Сгенерируем изображение!
img_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png"
mask_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png"
init_image = load_image(img_url).convert("RGB")
mask_image = load_image(mask_url).convert("RGB")
prompt = "A majestic tiger sitting on a bench"
pag_scales = 3.0
guidance_scales = 7.5
generator = torch.Generator(device="cpu").manual_seed(1)
images = pipeline(
prompt=prompt,
image=init_image,
mask_image=mask_image,
strength=0.8,
num_inference_steps=50,
guidance_scale=guidance_scale,
generator=generator,
pag_scale=pag_scale,
).images
images[0]
PAG с ControlNet
Чтобы использовать PAG с ControlNet, сначала создайте controlnet. Затем передайте controlnet и другие аргументы PAG в метод from_pretrained AutoPipeline для указанной задачи.
from diffusers import AutoPipelineForText2Image, ControlNetModel
import torch
controlnet = ControlNetModel.from_pretrained(
"diffusers/controlnet-canny-sdxl-1.0", dtype=torch.float16
)
pipeline = AutoPipelineForText2Image.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
controlnet=controlnet,
enable_pag=True,
pag_applied_layers="mid",
dtype=torch.float16
)
pipeline.enable_model_cpu_offload()
Если у вас уже есть конвейер controlnet и вы хотите включить PAG, вы можете использовать API
from_pipe:AutoPipelineForText2Image.from_pipe(pipeline_controlnet, enable_pag=True)
Вы можете использовать pipeline так же, как обычно используете пайплайны ControlNet, с дополнительным параметром pag_scale. Обратите внимание, что PAG хорошо работает для безусловной генерации. В этом примере мы сгенерируем изображение без промпта.
from diffusers.utils import load_image
canny_image = load_image(
"https://huggingface.co/datasets/YiYiXu/testing-images/resolve/main/pag_control_input.png"
)
for pag_scale in [0.0, 3.0]:
generator = torch.Generator(device="cpu").manual_seed(1)
images = pipeline(
prompt="",
controlnet_conditioning_scale=controlnet_conditioning_scale,
image=canny_image,
num_inference_steps=50,
guidance_scale=0,
generator=generator,
pag_scale=pag_scale,
).images
images[0]
сгенерированное изображение без PAG
сгенерированное изображение с PAG
PAG с IP-Adapter
IP-Adapter — популярная модель, которую можно подключить к диффузионным моделям для поддержки промптов на основе изображений без изменения базовой модели. Вы можете включить PAG в пайплайне, в который загружен IP-Adapter.
from diffusers import AutoPipelineForText2Image
from diffusers.utils import load_image
from transformers import CLIPVisionModelWithProjection
import torch
image_encoder = CLIPVisionModelWithProjection.from_pretrained(
"h94/IP-Adapter",
subfolder="models/image_encoder",
dtype=torch.float16
)
pipeline = AutoPipelineForText2Image.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
image_encoder=image_encoder,
enable_pag=True,
dtype=torch.float16
).to("cuda") # or "mps", "xpu", "cpu"
pipeline.load_ip_adapter("h94/IP-Adapter", subfolder="sdxl_models", weight_name="ip-adapter-plus_sdxl_vit-h.bin")
pag_scales = 5.0
ip_adapter_scales = 0.8
image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/ip_adapter_diner.png")
pipeline.set_ip_adapter_scale(ip_adapter_scale)
generator = torch.Generator(device="cpu").manual_seed(0)
images = pipeline(
prompt="a polar bear sitting in a chair drinking a milkshake",
ip_adapter_image=image,
negative_prompt="deformed, ugly, wrong proportion, low res, bad anatomy, worst quality, low quality",
num_inference_steps=25,
guidance_scale=3.0,
generator=generator,
pag_scale=pag_scale,
).images
images[0]
PAG уменьшает артефакты и улучшает общую композицию.
сгенерированное изображение без PAG
сгенерированное изображение с PAG
Настройка параметров
pag_applied_layers
Аргумент pag_applied_layers позволяет указать, к каким слоям применяется PAG. По умолчанию он применяется только к средним блокам. Изменение этого параметра существенно влияет на результат. Вы можете использовать метод set_pag_applied_layers, чтобы настроить слои PAG после создания конвейера, что поможет найти оптимальные слои для вашей модели.
В качестве примера ниже приведены изображения, сгенерированные с pag_layers = ["down.block_2"] и pag_layers = ["down.block_2", "up.block_1.attentions_0"]
prompt = "an insect robot preparing a delicious meal, anime style"
pipeline.set_pag_applied_layers(pag_layers)
generator = torch.Generator(device="cpu").manual_seed(0)
images = pipeline(
prompt=prompt,
num_inference_steps=25,
guidance_scale=guidance_scale,
generator=generator,
pag_scale=pag_scale,
).images
images[0]
down.block_2 + up.block1.attentions_0
down.block_2
AnimateDiffPAGPipeline[[diffusers.AnimateDiffPAGPipeline]]
diffusers.AnimateDiffPAGPipeline[[diffusers.AnimateDiffPAGPipeline]]
diffusers.AnimateDiffPAGPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, tokenizer: CLIPTokenizer, unet: diffusers.models.unets.unet_2d_condition.UNet2DConditionModel | diffusers.models.unets.unet_motion_model.UNetMotionModel, motion_adapter: MotionAdapter, scheduler: KarrasDiffusionSchedulers, feature_extractor: CLIPImageProcessorPil = None, image_encoder: CLIPVisionModelWithProjection = None, pag_applied_layers: str | list[str] = 'mid_block.*attn1')
Параметры:
vae (AutoencoderKL) : Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
text_encoder (CLIPTextModel) : замороженный текстовый энкодер (clip-vit-large-patch14).
tokenizer (CLIPTokenizer) : CLIPTokenizer для токенизации текста.
unet (UNet2DConditionModel) : UNet2DConditionModel, используемый для создания UNetMotionModel, который выполняет удаление шума из закодированных латентов видео.
motion_adapter (MotionAdapter) : MotionAdapter, используемый в сочетании с unet для удаления шума из закодированных латентных представлений видео.
scheduler (SchedulerMixin) : планировщик, используемый в сочетании с unet для удаления шума из закодированных латентов изображения. Может быть одним из DDIMScheduler, LMSDiscreteScheduler или PNDMScheduler.
Пайплайн для генерации видео по тексту с использованием AnimateDiff и Perturbed Attention Guidance.
Эта модель наследуется от DiffusionPipeline. Общую документацию по методам, реализованным для всех пайплайнов (загрузка, сохранение, запуск на конкретном устройстве и т. д.), см. в документации родительского класса.
Пайплайн также наследует следующие методы загрузки:
- load_textual_inversion() для загрузки эмбеддингов текстовой инверсии
- load_lora_weights() для загрузки весов LoRA
- save_lora_weights() для сохранения весов LoRA
- load_ip_adapter() для загрузки IP-адаптеров
call[[diffusers.AnimateDiffPAGPipeline.call]]
__call__(prompt: str | list[str] | None = None, num_frames: int | None = 16, height: int | None = None, width: int | None = None, num_inference_steps: int = 50, guidance_scale: float = 7.5, negative_prompt: str | list[str] | None = None, num_videos_per_prompt: int | None = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: list[torch.Tensor] | None = None, output_type: str | None = 'pil', return_dict: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, clip_skip: int | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], decode_chunk_size: int = 16, pag_scale: float = 3.0, pag_adaptive_scale: float = 0.0)
Параметры:
prompt (str или list[str], необязательный) : Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передать prompt_embeds.
height (int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) : Высота генерируемого видео в пикселях.
width (int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) : Ширина генерируемого видео в пикселях.
num_frames (int, optional, по умолчанию 16) : Количество генерируемых кадров видео. По умолчанию 16 кадров, что при 8 кадрах в секунду составляет 2 секунды видео.
num_inference_steps (int, optional, по умолчанию 50) : Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к более высокому качеству видео, но за счёт более медленного вывода.
guidance_scale (float, optional, по умолчанию 7.5) : Более высокое значение guidance scale побуждает модель генерировать изображения, тесно связанные с текстовым prompt, за счёт снижения качества изображения. Guidance scale активируется, когда guidance_scale > 1.
negative_prompt (str или list[str], необязательный) : Промпт или промпты, определяющие, что следует исключить из генерируемого изображения. Если не задан, необходимо передать negative_prompt_embeds. Игнорируется, если не используется направляющая (guidance_scale < 1).
num_videos_per_prompt (int, необязательный, по умолчанию 1) : Количество видео, генерируемых на один промпт.
eta (float, необязательный, по умолчанию 0.0) : Соответствует параметру eta (η) из статьи DDIM. Применяется только к DDIMScheduler и игнорируется другими планировщиками.
generator (torch.Generator или list[torch.Generator], необязательно) : torch.Generator для обеспечения детерминированности генерации.
latents (torch.Tensor, optional) : Предварительно сгенерированные шумовые латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации видео. Можно использовать, чтобы скорректировать одну и ту же генерацию с разными промптами. Если не указано, тензор латентов генерируется путём выборки с использованием переданного случайного generator. Латенты должны иметь форму (batch_size, num_channel, num_frames, height, width).
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") : Формат вывода сгенерированного видео. Выберите один из вариантов: torch.Tensor, PIL.Image или np.array.
return_dict (bool, необязательный, по умолчанию True) : Возвращать ли ~pipelines.text_to_video_synthesis.TextToVideoSDPipelineOutput вместо обычного кортежа.
cross_attention_kwargs (dict, необязательный) : Словарь kwargs, который при указании передается в AttentionProcessor, определенный в self.processor.
clip_skip (int, optional) : Количество слоев, которые пропускаются в CLIP при вычислении эмбеддингов промпта. Значение 1 означает, что для вычисления эмбеддингов промпта будет использоваться выход предпоследнего слоя.
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.
decode_chunk_size (int, optional, по умолчанию 16) : Количество кадров, которые декодируются за один вызов метода decode_latents.
pag_scale (float, optional, по умолчанию 3.0) : Коэффициент масштабирования для направленного внимания с возмущениями. Если установлено значение 0.0, направленное внимание с возмущениями не будет использоваться.
pag_adaptive_scale (float, optional, по умолчанию 0.0) : Адаптивный коэффициент масштабирования для направленного внимания с возмущениями. Если он установлен в 0.0, используется pag_scale.
Возвращает: AnimateDiffPipelineOutput или tuple
Если return_dict равно True, возвращается AnimateDiffPipelineOutput, иначе возвращается tuple, где первый элемент — это список сгенерированных кадров.
Функция вызова конвейера для генерации.
Примеры:
>>> import torch
>>> from diffusers import AnimateDiffPAGPipeline, MotionAdapter, DDIMScheduler
>>> from diffusers.utils import export_to_gif
>>> model_id = "SG161222/Realistic_Vision_V5.1_noVAE"
>>> motion_adapter_id = "guoyww/animatediff-motion-adapter-v1-5-2"
>>> motion_adapter = MotionAdapter.from_pretrained(motion_adapter_id)
>>> scheduler = DDIMScheduler.from_pretrained(
... model_id, subfolder="scheduler", beta_schedule="linear", steps_offset=1, clip_sample=False
... )
>>> pipe = AnimateDiffPAGPipeline.from_pretrained(
... model_id,
... motion_adapter=motion_adapter,
... scheduler=scheduler,
... pag_applied_layers=["mid"],
... torch_dtype=torch.float16,
... ).to("cuda")
>>> video = pipe(
... prompt="car, futuristic cityscape with neon lights, street, no human",
... negative_prompt="low quality, bad quality",
... num_inference_steps=25,
... guidance_scale=6.0,
... pag_scale=3.0,
... generator=torch.Generator().manual_seed(42),
... ).frames[0]
>>> export_to_gif(video, "animatediff_pag.gif")
encode_prompt[[diffusers.AnimateDiffPAGPipeline.encode_prompt]]
encode_prompt(prompt, device, num_images_per_prompt, do_classifier_free_guidance, negative_prompt = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None, clip_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 или 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, optional) : Количество слоев, которые пропускаются в CLIP при вычислении эмбеддингов промпта. Значение 1 означает, что для вычисления эмбеддингов промпта будет использоваться выход предпоследнего слоя.
Кодирует промпт в скрытые состояния текстового энкодера.
HunyuanDiTPAGPipeline[[diffusers.HunyuanDiTPAGPipeline]]
diffusers.HunyuanDiTPAGPipeline[[diffusers.HunyuanDiTPAGPipeline]]
diffusers.HunyuanDiTPAGPipeline(vae: AutoencoderKL, text_encoder: BertModel, tokenizer: BertTokenizer, transformer: HunyuanDiT2DModel, scheduler: DDPMScheduler, safety_checker: diffusers.pipelines.stable_diffusion.safety_checker.StableDiffusionSafetyChecker | None = None, feature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = None, requires_safety_checker: bool = True, text_encoder_2: transformers.models.t5.modeling_t5.T5EncoderModel | None = None, tokenizer_2: transformers.models.t5.tokenization_t5.T5Tokenizer | None = None, pag_applied_layers: str | list[str] = 'blocks.1')
Параметры:
vae (AutoencoderKL) : Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них. Мы используем sdxl-vae-fp16-fix.
text_encoder (~transformers.BertModel, ~transformers.CLIPTextModel | None) : Замороженный текстовый энкодер (clip-vit-large-patch14). HunyuanDiT использует дообученный [двуязычный CLIP].
tokenizer (~transformers.BertTokenizer, ~transformers.CLIPTokenizer | None) : BertTokenizer или CLIPTokenizer для токенизации текста.
transformer (HunyuanDiT2DModel) : Модель HunyuanDiT, разработанная командой Tencent Hunyuan.
text_encoder_2 (T5EncoderModel) : встраиватель mT5. Конкретно, это 't5-v1_1-xxl'.
tokenizer_2 (T5Tokenizer) : токенизатор для встраивателя mT5.
scheduler (DDPMScheduler) : планировщик, используемый в сочетании с HunyuanDiT для удаления шума из закодированных латентов изображения.
Пайплайн для генерации изображений из текста на английском/китайском языках с использованием HunyuanDiT и Perturbed Attention Guidance.
Эта модель наследуется от DiffusionPipeline. См. документацию родительского класса для общих методов, которые библиотека реализует для всех пайплайнов (например, загрузка или сохранение, запуск на конкретном устройстве и т. д.)
HunyuanDiT использует два текстовых кодировщика: mT5 и [двуязычный CLIP](fine-tuned by ourselves)
call[[diffusers.HunyuanDiTPAGPipeline.call]]
__call__(prompt: str | list[str] = None, height: int | None = None, width: int | None = None, num_inference_steps: int = 50, guidance_scale: float = 5.0, negative_prompt: str | list[str] | None = None, num_images_per_prompt: int = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_2: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds_2: typing.Optional[torch.Tensor] = None, prompt_attention_mask: typing.Optional[torch.Tensor] = None, prompt_attention_mask_2: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask_2: typing.Optional[torch.Tensor] = None, output_type: str = 'pil', return_dict: bool = True, callback_on_step_end: typing.Union[typing.Callable[[int, int, dict], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], guidance_rescale: float = 0.0, original_size: tuple[int, int] = (1024, 1024), target_size: tuple[int, int] = None, crops_coords_top_left: tuple[int, int] = (0, 0), use_resolution_binning: bool = True, pag_scale: float = 3.0, pag_adaptive_scale: float = 0.0)
Параметры:
prompt (str или list[str], необязательный) : Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передать prompt_embeds.
height (int) : Высота генерируемого изображения в пикселях.
width (int) : Ширина сгенерированного изображения в пикселях.
num_inference_steps (int, optional, по умолчанию 50) : Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода. Этот параметр модулируется strength.
guidance_scale (float, optional, по умолчанию 7.5) : Более высокое значение guidance scale побуждает модель генерировать изображения, тесно связанные с текстовым prompt, за счёт снижения качества изображения. Guidance scale активируется, когда guidance_scale > 1.
negative_prompt (str или 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 для обеспечения детерминированности генерации.
latents (torch.Tensor, необязательный) : Предварительно сгенерированные шумовые латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Позволяет корректировать одну и ту же генерацию с помощью разных промптов. Если не задано, тензор латентов генерируется путём выборки с использованием переданного случайного generator.
prompt_embeds (torch.Tensor, необязательный) : Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных (взвешивание промпта). Если не предоставлены, текстовые эмбеддинги генерируются из входного аргумента prompt.
prompt_embeds_2 (torch.Tensor, необязательный) : Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных (взвешивание промпта). Если не предоставлены, текстовые эмбеддинги генерируются из входного аргумента prompt.
negative_prompt_embeds (torch.Tensor, необязательный) : Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных (взвешивание промпта). Если не предоставлены, negative_prompt_embeds генерируются из входного аргумента negative_prompt.
negative_prompt_embeds_2 (torch.Tensor, необязательный) : Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных (взвешивание промпта). Если не предоставлены, negative_prompt_embeds генерируются из входного аргумента negative_prompt.
prompt_attention_mask (torch.Tensor, необязательный) : Маска внимания для промпта. Обязательна, если prompt_embeds передается напрямую.
prompt_attention_mask_2 (torch.Tensor, необязательный) : Маска внимания для промпта. Обязательна, если prompt_embeds_2 передается напрямую.
negative_prompt_attention_mask (torch.Tensor, необязательный) : Маска внимания для негативного промпта. Обязательна, если negative_prompt_embeds передается напрямую.
negative_prompt_attention_mask_2 (torch.Tensor, необязательный) : Маска внимания для негативного промпта. Обязательна, если negative_prompt_embeds_2 передается напрямую.
output_type (str, необязательный, по умолчанию "pil") : Формат вывода сгенерированного изображения. Выберите между PIL.Image и np.array.
return_dict (bool, необязательный, по умолчанию True) : Возвращать ли StableDiffusionPipelineOutput вместо обычного кортежа.
callback_on_step_end (Callable[[int, int], None], PipelineCallback, MultiPipelineCallbacks, optional) : Функция обратного вызова или список функций обратного вызова, которые вызываются в конце каждого шага удаления шума.
callback_on_step_end_tensor_inputs (list[str], необязательный) : Список тензорных входных данных, которые должны передаваться в функцию обратного вызова. Если не определено, будут переданы все тензорные входные данные.
guidance_rescale (float, optional, defaults to 0.0) : Rescale the noise_cfg according to guidance_rescale. Based on findings of Common Diffusion Noise Schedules and Sample Steps are Flawed. See Section 3.4
original_size (tuple[int, int], необязательный, по умолчанию (1024, 1024)) : исходный размер изображения. Используется для вычисления временных идентификаторов.
target_size (tuple[int, int], необязательный) : Целевой размер изображения. Используется для вычисления временных идентификаторов.
crops_coords_top_left (tuple[int, int], необязательный, по умолчанию (0, 0)) : координаты верхнего левого угла кадрирования. Используется для вычисления временных идентификаторов.
use_resolution_binning (bool, необязательный, по умолчанию True) : Использовать ли биннинг разрешения. Если True, входное разрешение будет сопоставлено с ближайшим стандартным разрешением. Поддерживаемые разрешения: 1024x1024, 1280x1280, 1024x768, 1152x864, 1280x960, 768x1024, 864x1152, 960x1280, 1280x768 и 768x1280. Рекомендуется установить это значение в True.
pag_scale (float, optional, по умолчанию 3.0) : Коэффициент масштабирования для направленного внимания с возмущениями. Если установлено значение 0.0, направленное внимание с возмущениями не будет использоваться.
pag_adaptive_scale (float, optional, по умолчанию 0.0) : Адаптивный коэффициент масштабирования для направленного внимания с возмущениями. Если он установлен в 0.0, используется pag_scale.
Возвращает: StableDiffusionPipelineOutput или tuple
Если return_dict равно True, возвращается StableDiffusionPipelineOutput, иначе возвращается tuple, где первый элемент — это список сгенерированных изображений, а второй — список значений bool, указывающих, содержит ли соответствующее сгенерированное изображение контент, нежелательный для просмотра на рабочем месте (nsfw).
Функция вызова pipeline для генерации с HunyuanDiT.
Примеры:
>>> import torch
>>> from diffusers import AutoPipelineForText2Image
>>> pipe = AutoPipelineForText2Image.from_pretrained(
... "Tencent-Hunyuan/HunyuanDiT-v1.2-Diffusers",
... torch_dtype=torch.float16,
... enable_pag=True,
... pag_applied_layers=[14],
... ).to("cuda")
>>> # prompt = "an astronaut riding a horse"
>>> prompt = "一个宇航员在骑马"
>>> image = pipe(prompt, guidance_scale=4, pag_scale=3).images[0]
encode_prompt[[diffusers.HunyuanDiTPAGPipeline.encode_prompt]]
encode_prompt(prompt: str, device: device = None, dtype: dtype = None, num_images_per_prompt: int = 1, do_classifier_free_guidance: bool = True, negative_prompt: str | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_attention_mask: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, max_sequence_length: int | None = None, text_encoder_index: int = 0)
Параметры:
prompt (str или list[str], необязательный) : промпт для кодирования
device : (torch.device): устройство torch
dtype (torch.dtype) : тип данных torch
num_images_per_prompt (int) : количество изображений, которые должны быть сгенерированы для каждого промпта
do_classifier_free_guidance (bool) : использовать ли классификаторное свободное наведение (classifier free guidance)
negative_prompt (str или list[str], необязательный) : Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передать negative_prompt_embeds. Игнорируется, если не используется направляющее влияние (то есть игнорируется, если guidance_scale меньше 1).
prompt_embeds (torch.Tensor, необязательный) : Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлены, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
negative_prompt_embeds (torch.Tensor, необязательный) : Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлены, negative_prompt_embeds будут сгенерированы из входного аргумента negative_prompt.
prompt_attention_mask (torch.Tensor, необязательный) : Маска внимания для промпта. Обязательна, если prompt_embeds передается напрямую.
negative_prompt_attention_mask (torch.Tensor, необязательный) : Маска внимания для негативного промпта. Обязательна, если negative_prompt_embeds передается напрямую.
max_sequence_length (int, необязательный) : максимальная длина последовательности, используемая для промпта.
text_encoder_index (int, optional) : Индекс используемого текстового энкодера. 0 для clip и 1 для T5.
Кодирует промпт в скрытые состояния текстового энкодера.
KolorsPAGPipeline[[diffusers.KolorsPAGPipeline]]
diffusers.KolorsPAGPipeline[[diffusers.KolorsPAGPipeline]]
diffusers.KolorsPAGPipeline(vae: AutoencoderKL, text_encoder: ChatGLMModel, tokenizer: ChatGLMTokenizer, unet: UNet2DConditionModel, scheduler: KarrasDiffusionSchedulers, image_encoder: CLIPVisionModelWithProjection = None, feature_extractor: CLIPImageProcessorPil = None, force_zeros_for_empty_prompt: bool = False, pag_applied_layers: str | list[str] = 'mid')
Параметры:
vae (AutoencoderKL) : Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
text_encoder (ChatGLMModel) : замороженный текстовый энкодер. Kolors использует ChatGLM3-6B.
tokenizer (ChatGLMTokenizer) : Токенизатор класса ChatGLMTokenizer.
unet (UNet2DConditionModel) : Условная архитектура U-Net для удаления шума из закодированных латентов изображения.
scheduler (SchedulerMixin) : планировщик, используемый в сочетании с unet для удаления шума из закодированных латентов изображения. Может быть одним из DDIMScheduler, LMSDiscreteScheduler или PNDMScheduler.
force_zeros_for_empty_prompt (bool, необязательный, по умолчанию "False") : Указывает, следует ли принудительно устанавливать эмбеддинги отрицательного промпта в 0. См. также конфигурацию Kwai-Kolors/Kolors-diffusers.
pag_applied_layers (str or list[str]``, *optional*, defaults to "mid"`) : Set the transformer attention layers where to apply the perturbed attention guidance. Can be a string or a list of strings with "down", "mid", "up", a whole transformer block or specific transformer block attention layers, e.g.: ["mid"] ["down", "mid"] ["down", "mid", "up.block_1"] ["down", "mid", "up.block_1.attentions_0", "up.block_1.attentions_1"]
Пайплайн для генерации изображений по тексту с использованием Kolors.
Эта модель наследуется от DiffusionPipeline. См. документацию родительского класса для общих методов, которые библиотека реализует для всех пайплайнов (например, загрузка или сохранение, запуск на конкретном устройстве и т. д.)
Пайплайн также наследует следующие методы загрузки:
- load_lora_weights() для загрузки весов LoRA
- save_lora_weights() для сохранения весов LoRA
- load_ip_adapter() для загрузки IP-адаптеров
call[[diffusers.KolorsPAGPipeline.call]]
__call__(prompt: str | list[str] = None, height: int | None = None, width: int | None = None, num_inference_steps: int = 50, timesteps: list[int] = None, sigmas: list[float] = None, denoising_end: float | None = None, guidance_scale: float = 5.0, negative_prompt: str | list[str] | None = None, num_images_per_prompt: int | None = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: list[torch.Tensor] | None = None, output_type: str | None = 'pil', return_dict: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, original_size: tuple[int, int] | None = None, crops_coords_top_left: tuple[int, int] = (0, 0), target_size: tuple[int, int] | None = None, negative_original_size: tuple[int, int] | None = None, negative_crops_coords_top_left: tuple[int, int] = (0, 0), negative_target_size: tuple[int, int] | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], pag_scale: float = 3.0, pag_adaptive_scale: float = 0.0, max_sequence_length: int = 256)
Параметры:
prompt (str или list[str], необязательный) : Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передать prompt_embeds вместо него.
height (int, optional, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) : Высота генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов. Значения ниже 512 пикселей будут работать некорректно для Kwai-Kolors/Kolors-diffusers и контрольных точек, которые не были специально дообучены на низких разрешениях.
width (int, optional, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) : Ширина генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов. Значения ниже 512 пикселей будут работать некорректно для Kwai-Kolors/Kolors-diffusers и контрольных точек, которые не были специально дообучены на низких разрешениях.
num_inference_steps (int, optional, по умолчанию 50) : Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.
timesteps (list[int], optional) : Пользовательские шаги для процесса денойзинга с планировщиками, поддерживающими аргумент timesteps в их методе set_timesteps. Если не определено, будет использоваться поведение по умолчанию при передаче num_inference_steps. Должны быть в порядке убывания.
sigmas (list[float], optional) : Пользовательские сигмы для процесса денойзинга в планировщиках, поддерживающих аргумент sigmas в методе set_timesteps. Если не задано, будет использовано поведение по умолчанию при передаче num_inference_steps.
denoising_end (float, optional) : When specified, determines the fraction (between 0.0 and 1.0) of the total denoising process to be completed before it is intentionally prematurely terminated. As a result, the returned sample will still retain a substantial amount of noise as determined by the discrete timesteps selected by the scheduler. The denoising_end parameter should ideally be utilized when this pipeline forms a part of a "Mixture of Denoisers" multi-pipeline setup, as elaborated in Refining the Image Output
guidance_scale (float, optional, по умолчанию 5.0) : Масштаб руководства, определённый в Classifier-Free Diffusion Guidance. guidance_scale определяется как w из уравнения 2 в Imagen Paper. Масштаб руководства активируется при установке guidance_scale > 1. Более высокий масштаб руководства способствует генерации изображений, тесно связанных с текстовым prompt, обычно за счёт снижения качества изображения.
negative_prompt (str или list[str], необязательный) : Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передать negative_prompt_embeds. Игнорируется, если не используется направляющее влияние (то есть игнорируется, если guidance_scale меньше 1).
num_images_per_prompt (int, необязательный, по умолчанию 1) : Количество изображений, генерируемых на один запрос.
eta (float, optional, по умолчанию 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.
pooled_prompt_embeds (torch.Tensor, необязательный) : Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлены, пул-эмбеддинги текста будут сгенерированы из аргумента prompt.
negative_prompt_embeds (torch.Tensor, необязательный) : Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлены, negative_prompt_embeds будут сгенерированы из входного аргумента negative_prompt.
negative_pooled_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: PIL.Image.Image или np.array.
return_dict (bool, необязательный, по умолчанию True) : Возвращать ли ~pipelines.kolors.KolorsPipelineOutput вместо обычного кортежа.
cross_attention_kwargs (dict, необязательный) : Словарь kwargs, который при указании передается в AttentionProcessor, определенный в self.processor в diffusers.models.attention_processor.
original_size (tuple[int], optional, по умолчанию (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], optional, по умолчанию (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], optional, по умолчанию (1024, 1024)) : В большинстве случаев target_size следует установить в желаемую высоту и ширину генерируемого изображения. Если не указано, по умолчанию будет (height, width). Часть микроусловий SDXL, описанная в разделе 2.2 статьи https://huggingface.co/papers/2307.01952.
negative_original_size (tuple[int], optional, по умолчанию (1024, 1024)) : Используется для негативного условия процесса генерации на основе конкретного разрешения изображения. Является частью микроусловия SDXL, описанной в разделе 2.2 статьи https://huggingface.co/papers/2307.01952. Для получения дополнительной информации см. этот тред: https://github.com/huggingface/diffusers/issues/4208.
negative_crops_coords_top_left (tuple[int], optional, по умолчанию (0, 0)) : Используется для негативного обусловливания процесса генерации на основе конкретных координат кадрирования. Является частью микрообусловливания SDXL, описанной в разделе 2.2 статьи https://huggingface.co/papers/2307.01952. Для получения дополнительной информации см. этот тред: https://github.com/huggingface/diffusers/issues/4208.
negative_target_size (tuple[int], optional, по умолчанию (1024, 1024)) : Используется для негативного обусловливания процесса генерации на основе целего разрешения изображения. В большинстве случаев должно совпадать с target_size. Является частью микрообусловливания SDXL, описанной в разделе 2.2 статьи https://huggingface.co/papers/2307.01952. Для получения дополнительной информации см. этот тред: https://github.com/huggingface/diffusers/issues/4208.
callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, optional) : функция или подкласс 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, optional) : Список тензорных входных данных для функции callback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргумента callback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте ._callback_tensor_inputs вашего класса pipeline.
pag_scale (float, optional, по умолчанию 3.0) : Коэффициент масштабирования для направленного внимания с возмущениями. Если установлено значение 0.0, направленное внимание с возмущениями не будет использоваться.
pag_adaptive_scale (float, optional, по умолчанию 0.0) : Адаптивный коэффициент масштабирования для направленного внимания с возмущениями. Если он установлен в 0.0, используется pag_scale.
max_sequence_length (int по умолчанию 256) : Максимальная длина последовательности, используемая с prompt.
Возвращает: ~pipelines.kolors.KolorsPipelineOutput или tuple
~pipelines.kolors.KolorsPipelineOutput, если return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список с сгенерированными изображениями.
Функция, вызываемая при обращении к конвейеру для генерации.
Примеры:
>>> import torch
>>> from diffusers import AutoPipelineForText2Image
>>> pipe = AutoPipelineForText2Image.from_pretrained(
... "Kwai-Kolors/Kolors-diffusers",
... variant="fp16",
... torch_dtype=torch.float16,
... enable_pag=True,
... pag_applied_layers=["down.block_2.attentions_1", "up.block_0.attentions_1"],
... )
>>> pipe = pipe.to("cuda")
>>> prompt = (
... "A photo of a ladybug, macro, zoom, high quality, film, holding a wooden sign with the text 'KOLORS'"
... )
>>> image = pipe(prompt, guidance_scale=5.5, pag_scale=1.5).images[0]
encode_prompt[[diffusers.KolorsPAGPipeline.encode_prompt]]
encode_prompt(prompt, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, do_classifier_free_guidance: bool = True, negative_prompt = None, prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, max_sequence_length: int = 256)
Параметры:
prompt (str или list[str], необязательный) : промпт для кодирования
device : (torch.device): устройство torch
num_images_per_prompt (int) : количество изображений, которые должны быть сгенерированы для каждого промпта
do_classifier_free_guidance (bool) : использовать ли классификаторное свободное наведение (classifier free guidance)
negative_prompt (str или list[str], необязательный) : Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передать negative_prompt_embeds. Игнорируется, если не используется направляющее влияние (то есть игнорируется, если guidance_scale меньше 1).
prompt_embeds (torch.FloatTensor, необязательный) : Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлены, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
pooled_prompt_embeds (torch.Tensor, необязательный) : Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлены, пул-эмбеддинги текста будут сгенерированы из аргумента prompt.
negative_prompt_embeds (torch.FloatTensor, необязательный) : Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлены, negative_prompt_embeds будут сгенерированы из входного аргумента negative_prompt.
negative_pooled_prompt_embeds (torch.Tensor, необязательный) : Предварительно сгенерированные отрицательные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промптов. Если не предоставлены, пул-эмбеддинги negative_prompt_embeds будут сгенерированы из входного аргумента negative_prompt.
max_sequence_length (int по умолчанию 256) : Максимальная длина последовательности, используемая с prompt.
Кодирует промпт в скрытые состояния текстового энкодера.
get_guidance_scale_embedding[[diffusers.KolorsPAGPipeline.get_guidance_scale_embedding]]
get_guidance_scale_embedding(w: Tensor, embedding_dim: int = 512, dtype: dtype = torch.float32)
Параметры:
w (torch.Tensor) : Генерирует векторы эмбеддингов с заданным масштабом руководства (guidance scale) для последующего обогащения эмбеддингов временных шагов.
embedding_dim (int, необязательный, по умолчанию 512) : Размерность генерируемых эмбеддингов.
dtype (torch.dtype, необязательный, по умолчанию torch.float32) : Тип данных для генерируемых эмбеддингов.
Возвращает: torch.Tensor
Векторы встраиваний с формой (len(w), embedding_dim).
StableDiffusionPAGInpaintPipeline[[diffusers.StableDiffusionPAGInpaintPipeline]]
diffusers.StableDiffusionPAGInpaintPipeline[[diffusers.StableDiffusionPAGInpaintPipeline]]
diffusers.StableDiffusionPAGInpaintPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, tokenizer: CLIPTokenizer, unet: UNet2DConditionModel, scheduler: KarrasDiffusionSchedulers, safety_checker: StableDiffusionSafetyChecker, feature_extractor: CLIPImageProcessorPil, image_encoder: CLIPVisionModelWithProjection = None, requires_safety_checker: bool = True, pag_applied_layers: str | list[str] = 'mid')
Параметры:
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
- from_single_file() для загрузки файлов
.ckpt - load_ip_adapter() для загрузки IP-адаптеров
call[[diffusers.StableDiffusionPAGInpaintPipeline.call]]
__call__(prompt: str | list[str] = None, image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, mask_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, masked_image_latents: Tensor = None, height: int | None = None, width: int | None = None, padding_mask_crop: int | None = None, strength: float = 0.9999, num_inference_steps: int = 50, timesteps: list[int] = None, sigmas: list[float] = None, guidance_scale: float = 7.5, negative_prompt: str | list[str] | None = None, num_images_per_prompt: int | None = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: list[torch.Tensor] | None = None, output_type: str | None = 'pil', return_dict: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, guidance_rescale: float = 0.0, clip_skip: int | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], pag_scale: float = 3.0, pag_adaptive_scale: float = 0.0)
Параметры:
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 или тензор, представляющие пакет изображений для инпейнтинга (какие части изображения следует замаскировать с помощью mask_image и перерисовать в соответствии с prompt).
mask_image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image] или list[np.ndarray]) : Image, массив numpy или тензор, представляющие пакет изображений для маскирования image. Белые пиксели в маске перекрашиваются, а чёрные сохраняются. Если mask_image — это изображение PIL, оно преобразуется в одноцветный канал (яркость) перед использованием. Если это массив numpy или тензор pytorch, он должен содержать один цветовой канал (L) вместо трёх, поэтому ожидаемая форма для тензора pytorch — (B, 1, H, W), (B, H, W), (1, H, W), (H, W). А для массива numpy — (B, H, W, 1), (B, H, W), (H, W, 1) или (H, W).
masked_image_latents (torch.Tensor, необязательный) : Предварительно закодированное латентное представление замаскированного изображения (для инпейнтинга).
height (int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) : Высота генерируемого изображения в пикселях.
width (int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) : Ширина генерируемого изображения в пикселях.
padding_mask_crop (int, optional, по умолчанию None) : Размер поля (margin) для обрезки, применяемой к изображению и маске. Если None, обрезка не применяется к image и mask_image. Если padding_mask_crop не равно None, сначала находится прямоугольная область с тем же соотношением сторон, что и у изображения, содержащая всю замаскированную область, а затем эта область расширяется на основе padding_mask_crop. После этого image и mask_image обрезаются по расширенной области перед изменением размера до исходного размера изображения для инпейнтинга. Это полезно, когда замаскированная область мала, а изображение велико и содержит информацию, не относящуюся к инпейнтингу, например фон.
strength (float, optional, по умолчанию 0.9999) : Определяет степень трансформации исходного image. Значение должно быть в диапазоне от 0 до 1. image используется как отправная точка, и чем выше strength, тем больше шума добавляется. Количество шагов денойзинга зависит от количества шума, добавленного изначально. Если strength равно 1, добавляется максимальное количество шума, и процесс денойзинга выполняется в течение полного числа итераций, указанного в num_inference_steps. Значение 1 фактически игнорирует image.
num_inference_steps (int, optional, по умолчанию 50) : Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.
timesteps (list[int], optional) : Пользовательские шаги для процесса денойзинга с планировщиками, поддерживающими аргумент timesteps в их методе set_timesteps. Если не определено, будет использоваться поведение по умолчанию при передаче num_inference_steps. Должны быть в порядке убывания.
sigmas (list[float], optional) : Пользовательские сигмы для процесса денойзинга в планировщиках, поддерживающих аргумент sigmas в методе set_timesteps. Если не задано, будет использовано поведение по умолчанию при передаче num_inference_steps.
guidance_scale (float, optional, по умолчанию 7.5) : Более высокое значение guidance scale побуждает модель генерировать изображения, тесно связанные с текстовым prompt, за счёт снижения качества изображения. Guidance scale активируется, когда guidance_scale > 1.
negative_prompt (str или 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 для обеспечения детерминированности генерации.
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 вместо обычного кортежа.
cross_attention_kwargs (dict, необязательный) : Словарь kwargs, который при указании передается в AttentionProcessor, определенный в self.processor.
guidance_rescale (float, необязательный, по умолчанию 0.0) : Коэффициент rescale для guidance из статьи Common Diffusion Noise Schedules and Sample Steps are Flawed. Коэффициент rescale для guidance должен исправлять переэкспозицию при использовании нулевого терминального SNR.
clip_skip (int, optional) : Количество слоев, которые пропускаются в CLIP при вычислении эмбеддингов промпта. Значение 1 означает, что для вычисления эмбеддингов промпта будет использоваться выход предпоследнего слоя.
callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, optional) : функция или подкласс 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, optional) : Список тензорных входных данных для функции callback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргумента callback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте ._callback_tensor_inputs вашего класса pipeline.
pag_scale (float, optional, по умолчанию 3.0) : Коэффициент масштабирования для направленного внимания с возмущениями. Если установлено значение 0.0, направленное внимание с возмущениями не будет использоваться.
pag_adaptive_scale (float, optional, по умолчанию 0.0) : Адаптивный коэффициент масштабирования для направленного внимания с возмущениями. Если он установлен в 0.0, используется pag_scale.
Возвращает: StableDiffusionPipelineOutput или tuple
Если return_dict равно True, возвращается StableDiffusionPipelineOutput, иначе возвращается tuple, где первый элемент — это список сгенерированных изображений, а второй — список значений bool, указывающих, содержит ли соответствующее сгенерированное изображение контент, нежелательный для просмотра на рабочем месте (nsfw).
Функция вызова конвейера для генерации.
Примеры:
>>> import torch
>>> from diffusers import AutoPipelineForInpainting
>>> pipe = AutoPipelineForInpainting.from_pretrained(
... "stable-diffusion-v1-5/stable-diffusion-v1-5", torch_dtype=torch.float16, enable_pag=True
... )
>>> pipe = pipe.to("cuda")
>>> img_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png"
>>> mask_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png"
>>> init_image = load_image(img_url).convert("RGB")
>>> mask_image = load_image(mask_url).convert("RGB")
>>> prompt = "A majestic tiger sitting on a bench"
>>> image = pipe(
... prompt=prompt,
... image=init_image,
... mask_image=mask_image,
... strength=0.8,
... num_inference_steps=50,
... guidance_scale=guidance_scale,
... generator=generator,
... pag_scale=pag_scale,
... ).images[0]
encode_prompt[[diffusers.StableDiffusionPAGInpaintPipeline.encode_prompt]]
encode_prompt(prompt, device, num_images_per_prompt, do_classifier_free_guidance, negative_prompt = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None, clip_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 или 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, optional) : Количество слоев, которые пропускаются в CLIP при вычислении эмбеддингов промпта. Значение 1 означает, что для вычисления эмбеддингов промпта будет использоваться выход предпоследнего слоя.
Кодирует промпт в скрытые состояния текстового энкодера.
get_guidance_scale_embedding[[diffusers.StableDiffusionPAGInpaintPipeline.get_guidance_scale_embedding]]
get_guidance_scale_embedding(w: Tensor, embedding_dim: int = 512, dtype: dtype = torch.float32)
Параметры:
w (torch.Tensor) : Генерирует векторы эмбеддингов с заданным масштабом руководства (guidance scale) для последующего обогащения эмбеддингов временных шагов.
embedding_dim (int, необязательный, по умолчанию 512) : Размерность генерируемых эмбеддингов.
dtype (torch.dtype, необязательный, по умолчанию torch.float32) : Тип данных для генерируемых эмбеддингов.
Возвращает: torch.Tensor
Векторы встраиваний с формой (len(w), embedding_dim).
StableDiffusionPAGPipeline[[diffusers.StableDiffusionPAGPipeline]]
diffusers.StableDiffusionPAGPipeline[[diffusers.StableDiffusionPAGPipeline]]
diffusers.StableDiffusionPAGPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, tokenizer: CLIPTokenizer, unet: UNet2DConditionModel, scheduler: KarrasDiffusionSchedulers, safety_checker: StableDiffusionSafetyChecker, feature_extractor: CLIPImageProcessorPil, image_encoder: CLIPVisionModelWithProjection = None, requires_safety_checker: bool = True, pag_applied_layers: str | list[str] = 'mid')
Параметры:
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
- from_single_file() для загрузки файлов
.ckpt - load_ip_adapter() для загрузки IP-адаптеров
call[[diffusers.StableDiffusionPAGPipeline.call]]
__call__(prompt: str | list[str] = None, height: int | None = None, width: int | None = None, num_inference_steps: int = 50, timesteps: list[int] = None, sigmas: list[float] = None, guidance_scale: float = 7.5, negative_prompt: str | list[str] | None = None, num_images_per_prompt: int | None = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: list[torch.Tensor] | None = None, output_type: str | None = 'pil', return_dict: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, guidance_rescale: float = 0.0, clip_skip: int | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], pag_scale: float = 3.0, pag_adaptive_scale: float = 0.0)
Параметры:
prompt (str или list[str], необязательный) : Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передать prompt_embeds.
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, optional, по умолчанию 50) : Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.
timesteps (list[int], optional) : Пользовательские шаги для процесса денойзинга с планировщиками, поддерживающими аргумент timesteps в их методе set_timesteps. Если не определено, будет использоваться поведение по умолчанию при передаче num_inference_steps. Должны быть в порядке убывания.
sigmas (list[float], optional) : Пользовательские сигмы для процесса денойзинга в планировщиках, поддерживающих аргумент sigmas в методе set_timesteps. Если не задано, будет использовано поведение по умолчанию при передаче num_inference_steps.
guidance_scale (float, optional, по умолчанию 7.5) : Более высокое значение guidance scale побуждает модель генерировать изображения, тесно связанные с текстовым prompt, за счёт снижения качества изображения. Guidance scale активируется, когда guidance_scale > 1.
negative_prompt (str или 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 для обеспечения детерминированности генерации.
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 вместо обычного кортежа.
cross_attention_kwargs (dict, необязательный) : Словарь kwargs, который при указании передается в AttentionProcessor, определенный в self.processor.
guidance_rescale (float, необязательный, по умолчанию 0.0) : Коэффициент rescale для guidance из статьи Common Diffusion Noise Schedules and Sample Steps are Flawed. Коэффициент rescale для guidance должен исправлять переэкспозицию при использовании нулевого терминального SNR.
clip_skip (int, optional) : Количество слоев, которые пропускаются в CLIP при вычислении эмбеддингов промпта. Значение 1 означает, что для вычисления эмбеддингов промпта будет использоваться выход предпоследнего слоя.
callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, optional) : функция или подкласс 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, optional) : Список тензорных входных данных для функции callback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргумента callback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте ._callback_tensor_inputs вашего класса pipeline.
pag_scale (float, optional, по умолчанию 3.0) : Коэффициент масштабирования для направленного внимания с возмущениями. Если установлено значение 0.0, направленное внимание с возмущениями не будет использоваться.
pag_adaptive_scale (float, optional, по умолчанию 0.0) : Адаптивный коэффициент масштабирования для направленного внимания с возмущениями. Если он установлен в 0.0, используется pag_scale.
Возвращает: StableDiffusionPipelineOutput или tuple
Если return_dict равно True, возвращается StableDiffusionPipelineOutput, иначе возвращается tuple, где первый элемент — это список сгенерированных изображений, а второй — список значений bool, указывающих, содержит ли соответствующее сгенерированное изображение контент, нежелательный для просмотра на рабочем месте (nsfw).
Функция вызова конвейера для генерации.
Примеры:
>>> import torch
>>> from diffusers import AutoPipelineForText2Image
>>> pipe = AutoPipelineForText2Image.from_pretrained(
... "stable-diffusion-v1-5/stable-diffusion-v1-5", torch_dtype=torch.float16, enable_pag=True
... )
>>> pipe = pipe.to("cuda")
>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> image = pipe(prompt, pag_scale=0.3).images[0]
encode_prompt[[diffusers.StableDiffusionPAGPipeline.encode_prompt]]
encode_prompt(prompt, device, num_images_per_prompt, do_classifier_free_guidance, negative_prompt = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None, clip_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 или 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, optional) : Количество слоев, которые пропускаются в CLIP при вычислении эмбеддингов промпта. Значение 1 означает, что для вычисления эмбеддингов промпта будет использоваться выход предпоследнего слоя.
Кодирует промпт в скрытые состояния текстового энкодера.
get_guidance_scale_embedding[[diffusers.StableDiffusionPAGPipeline.get_guidance_scale_embedding]]
get_guidance_scale_embedding(w: Tensor, embedding_dim: int = 512, dtype: dtype = torch.float32)
Параметры:
w (torch.Tensor) : Генерирует векторы эмбеддингов с заданным масштабом руководства (guidance scale) для последующего обогащения эмбеддингов временных шагов.
embedding_dim (int, необязательный, по умолчанию 512) : Размерность генерируемых эмбеддингов.
dtype (torch.dtype, необязательный, по умолчанию torch.float32) : Тип данных для генерируемых эмбеддингов.
Возвращает: torch.Tensor
Векторы встраиваний с формой (len(w), embedding_dim).
StableDiffusionPAGImg2ImgPipeline[[diffusers.StableDiffusionPAGImg2ImgPipeline]]
diffusers.StableDiffusionPAGImg2ImgPipeline[[diffusers.StableDiffusionPAGImg2ImgPipeline]]
diffusers.StableDiffusionPAGImg2ImgPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, tokenizer: CLIPTokenizer, unet: UNet2DConditionModel, scheduler: KarrasDiffusionSchedulers, safety_checker: StableDiffusionSafetyChecker, feature_extractor: CLIPImageProcessorPil, image_encoder: CLIPVisionModelWithProjection = None, requires_safety_checker: bool = True, pag_applied_layers: str | list[str] = 'mid')
Параметры:
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. Общую документацию по методам, реализованным для всех пайплайнов (загрузка, сохранение, запуск на конкретном устройстве и т. д.), см. в документации родительского класса.
Пайплайн также наследует следующие методы загрузки:
- load_textual_inversion() для загрузки эмбеддингов текстовой инверсии
- load_lora_weights() для загрузки весов LoRA
- save_lora_weights() для сохранения весов LoRA
- from_single_file() для загрузки файлов
.ckpt - load_ip_adapter() для загрузки IP-адаптеров
call[[diffusers.StableDiffusionPAGImg2ImgPipeline.call]]
__call__(prompt: str | list[str] = None, image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, strength: float = 0.8, num_inference_steps: int | None = 50, timesteps: list[int] = None, sigmas: list[float] = None, guidance_scale: float | None = 7.5, negative_prompt: str | list[str] | None = None, num_images_per_prompt: int | None = 1, eta: float | None = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: list[torch.Tensor] | None = None, output_type: str | None = 'pil', return_dict: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, clip_skip: int = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], pag_scale: float = 3.0, pag_adaptive_scale: float = 0.0)
Параметры:
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, optional, по умолчанию 0.8) : Определяет степень трансформации исходного image. Значение должно быть в диапазоне от 0 до 1. image используется как отправная точка, и чем выше strength, тем больше шума добавляется. Количество шагов денойзинга зависит от количества шума, добавленного изначально. Когда strength равно 1, добавляется максимальное количество шума, и процесс денойзинга выполняется в течение полного числа итераций, указанного в num_inference_steps. Значение 1 фактически игнорирует image.
num_inference_steps (int, optional, по умолчанию 50) : Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода. Этот параметр модулируется strength.
timesteps (list[int], optional) : Пользовательские шаги для процесса денойзинга с планировщиками, поддерживающими аргумент timesteps в их методе set_timesteps. Если не определено, будет использоваться поведение по умолчанию при передаче num_inference_steps. Должны быть в порядке убывания.
sigmas (list[float], optional) : Пользовательские сигмы для процесса денойзинга в планировщиках, поддерживающих аргумент sigmas в методе set_timesteps. Если не задано, будет использовано поведение по умолчанию при передаче num_inference_steps.
guidance_scale (float, optional, по умолчанию 7.5) : Более высокое значение guidance scale побуждает модель генерировать изображения, тесно связанные с текстовым prompt, за счёт снижения качества изображения. Guidance scale активируется, когда guidance_scale > 1.
negative_prompt (str или 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, optional) : Количество слоев, которые пропускаются в CLIP при вычислении эмбеддингов промпта. Значение 1 означает, что для вычисления эмбеддингов промпта будет использоваться выход предпоследнего слоя.
callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, optional) : функция или подкласс 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, optional) : Список тензорных входных данных для функции callback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргумента callback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте ._callback_tensor_inputs вашего класса pipeline.
pag_scale (float, optional, по умолчанию 3.0) : Коэффициент масштабирования для направленного внимания с возмущениями. Если установлено значение 0.0, направленное внимание с возмущениями не будет использоваться.
pag_adaptive_scale (float, optional, по умолчанию 0.0) : Адаптивный коэффициент масштабирования для направленного внимания с возмущениями. Если он установлен в 0.0, используется pag_scale.
Возвращает: StableDiffusionPipelineOutput или tuple
Если return_dict равно True, возвращается StableDiffusionPipelineOutput, иначе возвращается tuple, где первый элемент — это список сгенерированных изображений, а второй — список значений bool, указывающих, содержит ли соответствующее сгенерированное изображение контент, нежелательный для просмотра на рабочем месте (nsfw).
Функция вызова конвейера для генерации.
Примеры:
>>> import torch
>>> from diffusers import AutoPipelineForImage2Image
>>> from diffusers.utils import load_image
>>> pipe = AutoPipelineForImage2Image.from_pretrained(
... "stable-diffusion-v1-5/stable-diffusion-v1-5",
... torch_dtype=torch.float16,
... enable_pag=True,
... )
>>> pipe = pipe.to("cuda")
>>> url = "https://huggingface.co/datasets/patrickvonplaten/images/resolve/main/aa_xl/000000009.png"
>>> init_image = load_image(url).convert("RGB")
>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> image = pipe(prompt, image=init_image, pag_scale=0.3).images[0]
encode_prompt[[diffusers.StableDiffusionPAGImg2ImgPipeline.encode_prompt]]
encode_prompt(prompt, device, num_images_per_prompt, do_classifier_free_guidance, negative_prompt = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None, clip_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 или 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, optional) : Количество слоев, которые пропускаются в CLIP при вычислении эмбеддингов промпта. Значение 1 означает, что для вычисления эмбеддингов промпта будет использоваться выход предпоследнего слоя.
Кодирует промпт в скрытые состояния текстового энкодера.
get_guidance_scale_embedding[[diffusers.StableDiffusionPAGImg2ImgPipeline.get_guidance_scale_embedding]]
get_guidance_scale_embedding(w: Tensor, embedding_dim: int = 512, dtype: dtype = torch.float32)
Параметры:
w (torch.Tensor) : Генерирует векторы эмбеддингов с заданным масштабом руководства (guidance scale) для последующего обогащения эмбеддингов временных шагов.
embedding_dim (int, необязательный, по умолчанию 512) : Размерность генерируемых эмбеддингов.
dtype (torch.dtype, необязательный, по умолчанию torch.float32) : Тип данных для генерируемых эмбеддингов.
Возвращает: torch.Tensor
Векторы встраиваний с формой (len(w), embedding_dim).
StableDiffusionControlNetPAGPipeline[[diffusers.StableDiffusionControlNetPAGPipeline]]
diffusers.StableDiffusionControlNetPAGPipeline[[diffusers.StableDiffusionControlNetPAGPipeline]]
diffusers.StableDiffusionControlNetPAGPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, tokenizer: CLIPTokenizer, unet: UNet2DConditionModel, controlnet: diffusers.models.controlnets.controlnet.ControlNetModel | list[diffusers.models.controlnets.controlnet.ControlNetModel] | tuple[diffusers.models.controlnets.controlnet.ControlNetModel] | diffusers.models.controlnets.multicontrolnet.MultiControlNetModel, scheduler: KarrasDiffusionSchedulers, safety_checker: StableDiffusionSafetyChecker, feature_extractor: CLIPImageProcessorPil, image_encoder: CLIPVisionModelWithProjection = None, requires_safety_checker: bool = True, pag_applied_layers: str | list[str] = 'mid')
Параметры:
vae (AutoencoderKL) : Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
text_encoder (CLIPTextModel) : замороженный текстовый энкодер (clip-vit-large-patch14).
tokenizer (CLIPTokenizer) : CLIPTokenizer для токенизации текста.
unet (UNet2DConditionModel) : UNet2DConditionModel для удаления шума из закодированных латентов изображения.
controlnet (ControlNetModel или list[ControlNetModel]) : Обеспечивает дополнительное условие для unet в процессе денойзинга. Если вы зададите несколько ControlNet в виде списка, выходы каждого ControlNet будут сложены вместе, чтобы создать одно объединённое дополнительное условие.
scheduler (SchedulerMixin) : планировщик, используемый в сочетании с unet для удаления шума из закодированных латентов изображения. Может быть одним из DDIMScheduler, LMSDiscreteScheduler или PNDMScheduler.
safety_checker (StableDiffusionSafetyChecker) : модуль классификации, оценивающий, могут ли сгенерированные изображения считаться оскорбительными или вредными. Подробности о потенциальных рисках модели см. в карточке модели.
feature_extractor (CLIPImageProcessor) : экземпляр CLIPImageProcessor для извлечения признаков из сгенерированных изображений; используется в качестве входных данных для safety_checker.
Пайплайн для генерации изображений по тексту с использованием Stable Diffusion и управления через ControlNet.
Эта модель наследуется от DiffusionPipeline. Общую документацию по методам, реализованным для всех пайплайнов (загрузка, сохранение, запуск на конкретном устройстве и т. д.), см. в документации родительского класса.
Пайплайн также наследует следующие методы загрузки:
- load_textual_inversion() для загрузки эмбеддингов текстовой инверсии
- load_lora_weights() для загрузки весов LoRA
- save_lora_weights() для сохранения весов LoRA
- from_single_file() для загрузки файлов
.ckpt - load_ip_adapter() для загрузки IP-адаптеров
encode_prompt[[diffusers.StableDiffusionControlNetPAGPipeline.encode_prompt]]
encode_prompt(prompt, device, num_images_per_prompt, do_classifier_free_guidance, negative_prompt = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None, clip_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 или 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, optional) : Количество слоев, которые пропускаются в CLIP при вычислении эмбеддингов промпта. Значение 1 означает, что для вычисления эмбеддингов промпта будет использоваться выход предпоследнего слоя.
Кодирует промпт в скрытые состояния текстового энкодера.
get_guidance_scale_embedding[[diffusers.StableDiffusionControlNetPAGPipeline.get_guidance_scale_embedding]]
get_guidance_scale_embedding(w: Tensor, embedding_dim: int = 512, dtype: dtype = torch.float32)
Параметры:
w (torch.Tensor) : Генерирует векторы эмбеддингов с заданным масштабом руководства (guidance scale) для последующего обогащения эмбеддингов временных шагов.
embedding_dim (int, необязательный, по умолчанию 512) : Размерность генерируемых эмбеддингов.
dtype (torch.dtype, необязательный, по умолчанию torch.float32) : Тип данных для генерируемых эмбеддингов.
Возвращает: torch.Tensor
Векторы встраиваний с формой (len(w), embedding_dim).
StableDiffusionControlNetPAGInpaintPipeline[[diffusers.StableDiffusionControlNetPAGInpaintPipeline]]
diffusers.StableDiffusionControlNetPAGInpaintPipeline[[diffusers.StableDiffusionControlNetPAGInpaintPipeline]]
diffusers.StableDiffusionControlNetPAGInpaintPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, tokenizer: CLIPTokenizer, unet: UNet2DConditionModel, controlnet: diffusers.models.controlnets.controlnet.ControlNetModel | list[diffusers.models.controlnets.controlnet.ControlNetModel] | tuple[diffusers.models.controlnets.controlnet.ControlNetModel] | diffusers.models.controlnets.multicontrolnet.MultiControlNetModel, scheduler: KarrasDiffusionSchedulers, safety_checker: StableDiffusionSafetyChecker, feature_extractor: CLIPImageProcessorPil, image_encoder: CLIPVisionModelWithProjection = None, requires_safety_checker: bool = True, pag_applied_layers: str | list[str] = 'mid')
Параметры:
vae (AutoencoderKL) : Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
text_encoder (CLIPTextModel) : замороженный текстовый энкодер (clip-vit-large-patch14).
tokenizer (CLIPTokenizer) : CLIPTokenizer для токенизации текста.
unet (UNet2DConditionModel) : UNet2DConditionModel для удаления шума из закодированных латентов изображения.
controlnet (ControlNetModel или list[ControlNetModel]) : Обеспечивает дополнительное условие для unet в процессе денойзинга. Если вы зададите несколько ControlNet в виде списка, выходы каждого ControlNet будут сложены вместе, чтобы создать одно объединённое дополнительное условие.
scheduler (SchedulerMixin) : планировщик, используемый в сочетании с unet для удаления шума из закодированных латентов изображения. Может быть одним из DDIMScheduler, LMSDiscreteScheduler или PNDMScheduler.
safety_checker (StableDiffusionSafetyChecker) : модуль классификации, оценивающий, могут ли сгенерированные изображения считаться оскорбительными или вредными. Подробности о потенциальных рисках модели см. в карточке модели.
feature_extractor (CLIPImageProcessor) : экземпляр CLIPImageProcessor для извлечения признаков из сгенерированных изображений; используется в качестве входных данных для safety_checker.
Пайплайн для инпейнтинга изображений с использованием Stable Diffusion и управления через ControlNet.
Эта модель наследуется от DiffusionPipeline. Общую документацию по методам, реализованным для всех пайплайнов (загрузка, сохранение, запуск на конкретном устройстве и т. д.), см. в документации родительского класса.
Пайплайн также наследует следующие методы загрузки:
- load_textual_inversion() для загрузки эмбеддингов текстовой инверсии
- load_lora_weights() для загрузки весов LoRA
- save_lora_weights() для сохранения весов LoRA
- from_single_file() для загрузки файлов
.ckpt - load_ip_adapter() для загрузки IP-адаптеров
> Этот конвейер можно использовать с контрольными точками, специально дообученными для inpainting > (stable-diffusion-v1-5/stable-diffusion-inpainting), а также стандартные текстово-изображательные чекпоинты Stable Diffusion (stable-diffusion-v1-5/stable-diffusion-v1-5). Стандартные текстово-изображательные чекпоинты Stable Diffusion могут быть предпочтительнее для ControlNet, которые были дообучены на них, например lllyasviel/control_v11p_sd15_inpaint.
call[[diffusers.StableDiffusionControlNetPAGInpaintPipeline.call]]
__call__(prompt: str | list[str] = None, image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, mask_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, control_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, height: int | None = None, width: int | None = None, padding_mask_crop: int | None = None, strength: float = 1.0, num_inference_steps: int = 50, guidance_scale: float = 7.5, negative_prompt: str | list[str] | None = None, num_images_per_prompt: int | None = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: list[torch.Tensor] | None = None, output_type: str | None = 'pil', return_dict: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, controlnet_conditioning_scale: float | list[float] = 0.5, control_guidance_start: float | list[float] = 0.0, control_guidance_end: float | list[float] = 1.0, clip_skip: int | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], pag_scale: float = 3.0, pag_adaptive_scale: float = 0.0)
Параметры:
prompt (str или list[str], необязательный) : Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передать prompt_embeds.
image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], : list[PIL.Image.Image], or 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, но при прямой передаче латентов они не кодируются повторно.
mask_image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], : list[PIL.Image.Image], или list[np.ndarray]): Image, массив NumPy или тензор, представляющие пакет изображений для маскирования image. Белые пиксели в маске перекрашиваются, а чёрные сохраняются. Если mask_image — это изображение PIL, оно преобразуется в одноцветный (яркостной) канал перед использованием. Если это массив NumPy или тензор PyTorch, он должен содержать один цветовой канал (L) вместо трёх, поэтому ожидаемая форма для тензора PyTorch — (B, 1, H, W), (B, H, W), (1, H, W), (H, W). А для массива NumPy — (B, H, W, 1), (B, H, W), (H, W, 1) или (H, W).
control_image (torch.Tensor, PIL.Image.Image, list[torch.Tensor], list[PIL.Image.Image], : list[list[torch.Tensor]] или list[list[PIL.Image.Image]]): входное условие ControlNet, задающее направление для unet при генерации. Если тип указан как torch.Tensor, значение передаётся в ControlNet без изменений. В качестве изображения также принимается PIL.Image.Image. Размеры выходного изображения по умолчанию совпадают с размерами image. Если переданы высота и/или ширина, image масштабируется соответственно. Если в init указано несколько ControlNet, изображения необходимо передавать в виде списка, чтобы каждый элемент списка мог быть корректно сгруппирован в батч для входа в один ControlNet.
height (int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) : Высота генерируемого изображения в пикселях.
width (int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) : Ширина генерируемого изображения в пикселях.
padding_mask_crop (int, optional, по умолчанию None) : Размер поля (margin) для обрезки, применяемой к изображению и маске. Если None, обрезка не применяется к image и mask_image. Если padding_mask_crop не равно None, сначала находится прямоугольная область с тем же соотношением сторон, что и у изображения, содержащая всю замаскированную область, а затем эта область расширяется на основе padding_mask_crop. После этого image и mask_image обрезаются по расширенной области перед изменением размера до исходного размера изображения для инпейнтинга. Это полезно, когда замаскированная область мала, а изображение велико и содержит информацию, не относящуюся к инпейнтингу, например фон.
strength (float, optional, по умолчанию 1.0) : Определяет степень трансформации исходного image. Значение должно быть в диапазоне от 0 до 1. image используется как отправная точка, и чем выше strength, тем больше шума добавляется. Количество шагов денойзинга зависит от количества шума, добавленного изначально. Когда strength равно 1, добавляется максимальное количество шума, и процесс денойзинга выполняется в течение полного числа итераций, указанного в num_inference_steps. Значение 1 фактически игнорирует image.
num_inference_steps (int, optional, по умолчанию 50) : Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.
guidance_scale (float, optional, по умолчанию 7.5) : Более высокое значение guidance scale побуждает модель генерировать изображения, тесно связанные с текстовым prompt, за счёт снижения качества изображения. Guidance scale активируется, когда guidance_scale > 1.
negative_prompt (str или 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 для обеспечения детерминированности генерации.
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 вместо обычного кортежа.
cross_attention_kwargs (dict, необязательный) : Словарь kwargs, который при указании передается в AttentionProcessor, определенный в self.processor.
controlnet_conditioning_scale (float или list[float], необязательный, по умолчанию 0.5) : Выходные данные ControlNet умножаются на controlnet_conditioning_scale перед добавлением к остаточному соединению в исходном unet. Если в init указано несколько ControlNet, соответствующий масштаб можно задать в виде списка.
control_guidance_start (float или list[float], необязательный, по умолчанию 0.0) : Доля от общего числа шагов, на которой ControlNet начинает применяться.
control_guidance_end (float или list[float], необязательный, по умолчанию 1.0) : Доля от общего числа шагов, на которой ControlNet прекращает применяться.
clip_skip (int, optional) : Количество слоев, которые пропускаются в CLIP при вычислении эмбеддингов промпта. Значение 1 означает, что для вычисления эмбеддингов промпта будет использоваться выход предпоследнего слоя.
callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, optional) : функция или подкласс 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, optional) : Список тензорных входных данных для функции callback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргумента callback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте ._callback_tensor_inputs вашего класса pipeline.
pag_scale (float, optional, по умолчанию 3.0) : Коэффициент масштабирования для направленного внимания с возмущениями. Если установлено значение 0.0, направленное внимание с возмущениями не будет использоваться.
pag_adaptive_scale (float, optional, по умолчанию 0.0) : Адаптивный коэффициент масштабирования для направленного внимания с возмущениями. Если он установлен в 0.0, используется pag_scale.
Возвращает: StableDiffusionPipelineOutput или tuple
Если return_dict равно True, возвращается StableDiffusionPipelineOutput, иначе возвращается tuple, где первый элемент — это список сгенерированных изображений, а второй — список значений bool, указывающих, содержит ли соответствующее сгенерированное изображение контент, нежелательный для просмотра на рабочем месте (nsfw).
Функция вызова конвейера для генерации.
Примеры:
>>> # !pip install transformers accelerate
>>> import cv2
>>> from diffusers import AutoPipelineForInpainting, ControlNetModel, DDIMScheduler
>>> from diffusers.utils import load_image
>>> import numpy as np
>>> from PIL import Image
>>> import torch
>>> init_image = load_image(
... "https://huggingface.co/datasets/diffusers/test-arrays/resolve/main/stable_diffusion_inpaint/boy.png"
... )
>>> init_image = init_image.resize((512, 512))
>>> generator = torch.Generator(device="cpu").manual_seed(1)
>>> mask_image = load_image(
... "https://huggingface.co/datasets/diffusers/test-arrays/resolve/main/stable_diffusion_inpaint/boy_mask.png"
... )
>>> mask_image = mask_image.resize((512, 512))
>>> def make_canny_condition(image):
... image = np.array(image)
... image = cv2.Canny(image, 100, 200)
... image = image[:, :, None]
... image = np.concatenate([image, image, image], axis=2)
... image = Image.fromarray(image)
... return image
>>> control_image = make_canny_condition(init_image)
>>> controlnet = ControlNetModel.from_pretrained(
... "lllyasviel/control_v11p_sd15_inpaint", torch_dtype=torch.float16
... )
>>> pipe = AutoPipelineForInpainting.from_pretrained(
... "stable-diffusion-v1-5/stable-diffusion-v1-5",
... controlnet=controlnet,
... torch_dtype=torch.float16,
... enable_pag=True,
... )
>>> pipe.scheduler = DDIMScheduler.from_config(pipe.scheduler.config)
>>> pipe.enable_model_cpu_offload()
>>> # generate image
>>> image = pipe(
... "a handsome man with ray-ban sunglasses",
... num_inference_steps=20,
... generator=generator,
... eta=1.0,
... image=init_image,
... mask_image=mask_image,
... control_image=control_image,
... pag_scale=0.3,
... ).images[0]
encode_prompt[[diffusers.StableDiffusionControlNetPAGInpaintPipeline.encode_prompt]]
encode_prompt(prompt, device, num_images_per_prompt, do_classifier_free_guidance, negative_prompt = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None, clip_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 или 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, optional) : Количество слоев, которые пропускаются в CLIP при вычислении эмбеддингов промпта. Значение 1 означает, что для вычисления эмбеддингов промпта будет использоваться выход предпоследнего слоя.
Кодирует промпт в скрытые состояния текстового энкодера.
get_guidance_scale_embedding[[diffusers.StableDiffusionControlNetPAGInpaintPipeline.get_guidance_scale_embedding]]
get_guidance_scale_embedding(w: Tensor, embedding_dim: int = 512, dtype: dtype = torch.float32)
Параметры:
w (torch.Tensor) : Генерирует векторы эмбеддингов с заданным масштабом руководства (guidance scale) для последующего обогащения эмбеддингов временных шагов.
embedding_dim (int, необязательный, по умолчанию 512) : Размерность генерируемых эмбеддингов.
dtype (torch.dtype, необязательный, по умолчанию torch.float32) : Тип данных для генерируемых эмбеддингов.
Возвращает: torch.Tensor
Векторы встраиваний с формой (len(w), embedding_dim).
StableDiffusionXLPAGPipeline[[diffusers.StableDiffusionXLPAGPipeline]]
diffusers.StableDiffusionXLPAGPipeline[[diffusers.StableDiffusionXLPAGPipeline]]
diffusers.StableDiffusionXLPAGPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, text_encoder_2: CLIPTextModelWithProjection, tokenizer: CLIPTokenizer, tokenizer_2: CLIPTokenizer, unet: UNet2DConditionModel, scheduler: KarrasDiffusionSchedulers, image_encoder: CLIPVisionModelWithProjection = None, feature_extractor: CLIPImageProcessorPil = None, force_zeros_for_empty_prompt: bool = True, add_watermarker: bool | None = None, pag_applied_layers: str | list[str] = 'mid')
Параметры:
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.
force_zeros_for_empty_prompt (bool, необязательный, по умолчанию "True") : Указывает, следует ли принудительно устанавливать эмбеддинги отрицательного промпта в 0. См. также конфигурацию stabilityai/stable-diffusion-xl-base-1-0.
add_watermarker (bool, необязательный) : Использовать ли библиотеку invisible_watermark для добавления водяных знаков на выходные изображения. Если значение не задано, по умолчанию используется True, если пакет установлен, в противном случае водяной знак не добавляется.
Пайплайн для генерации изображений по тексту с использованием Stable Diffusion XL.
Эта модель наследуется от DiffusionPipeline. См. документацию родительского класса для общих методов, которые библиотека реализует для всех пайплайнов (например, загрузка или сохранение, запуск на конкретном устройстве и т. д.)
Пайплайн также наследует следующие методы загрузки:
- load_textual_inversion() для загрузки эмбеддингов текстовой инверсии
- from_single_file() для загрузки файлов
.ckpt - load_lora_weights() для загрузки весов LoRA
- save_lora_weights() для сохранения весов LoRA
- load_ip_adapter() для загрузки IP-адаптеров
call[[diffusers.StableDiffusionXLPAGPipeline.call]]
__call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, height: int | None = None, width: int | None = None, num_inference_steps: int = 50, timesteps: list[int] = None, sigmas: list[float] = None, denoising_end: float | None = None, guidance_scale: float = 5.0, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, num_images_per_prompt: int | None = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: list[torch.Tensor] | None = None, output_type: str | None = 'pil', return_dict: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, guidance_rescale: float = 0.0, original_size: tuple[int, int] | None = None, crops_coords_top_left: tuple[int, int] = (0, 0), target_size: tuple[int, int] | None = None, negative_original_size: tuple[int, int] | None = None, negative_crops_coords_top_left: tuple[int, int] = (0, 0), negative_target_size: tuple[int, int] | None = None, clip_skip: int | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], pag_scale: float = 3.0, pag_adaptive_scale: float = 0.0)
Параметры:
prompt (str или list[str], необязательный) : Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передать prompt_embeds вместо него.
prompt_2 (str или list[str], необязательный) : Промпт или промпты, которые будут отправлены в tokenizer_2 и text_encoder_2. Если не задано, в обоих текстовых кодировщиках используется prompt
height (int, optional, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) : Высота генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов. Значения ниже 512 пикселей будут работать некорректно для stabilityai/stable-diffusion-xl-base-1.0 и контрольных точек, которые не были специально дообучены на низких разрешениях.
width (int, optional, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) : Ширина генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов. Значения ниже 512 пикселей будут работать некорректно для stabilityai/stable-diffusion-xl-base-1.0 и контрольных точек, которые не были специально дообучены на низких разрешениях.
num_inference_steps (int, optional, по умолчанию 50) : Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.
timesteps (list[int], optional) : Пользовательские шаги для процесса денойзинга с планировщиками, поддерживающими аргумент timesteps в их методе set_timesteps. Если не определено, будет использоваться поведение по умолчанию при передаче num_inference_steps. Должны быть в порядке убывания.
sigmas (list[float], optional) : Пользовательские сигмы для процесса денойзинга в планировщиках, поддерживающих аргумент sigmas в методе set_timesteps. Если не задано, будет использовано поведение по умолчанию при передаче num_inference_steps.
denoising_end (float, optional) : When specified, determines the fraction (between 0.0 and 1.0) of the total denoising process to be completed before it is intentionally prematurely terminated. As a result, the returned sample will still retain a substantial amount of noise as determined by the discrete timesteps selected by the scheduler. The denoising_end parameter should ideally be utilized when this pipeline forms a part of a "Mixture of Denoisers" multi-pipeline setup, as elaborated in Refining the Image Output
guidance_scale (float, optional, по умолчанию 5.0) : Масштаб руководства, определённый в Classifier-Free Diffusion Guidance. guidance_scale определяется как w из уравнения 2 в Imagen Paper. Масштаб руководства активируется при установке guidance_scale > 1. Более высокий масштаб руководства способствует генерации изображений, тесно связанных с текстовым prompt, обычно за счёт снижения качества изображения.
negative_prompt (str или list[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, optional, по умолчанию 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.
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: PIL.Image.Image или np.array.
return_dict (bool, необязательный, по умолчанию True) : Возвращать ли ~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput вместо обычного кортежа.
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 Flawed guidance_scale is 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], optional, по умолчанию (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], optional, по умолчанию (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], optional, по умолчанию (1024, 1024)) : В большинстве случаев target_size следует установить в желаемую высоту и ширину генерируемого изображения. Если не указано, по умолчанию будет (height, width). Часть микроусловий SDXL, описанная в разделе 2.2 статьи https://huggingface.co/papers/2307.01952.
negative_original_size (tuple[int], optional, по умолчанию (1024, 1024)) : Используется для негативного условия процесса генерации на основе конкретного разрешения изображения. Является частью микроусловия SDXL, описанной в разделе 2.2 статьи https://huggingface.co/papers/2307.01952. Для получения дополнительной информации см. этот тред: https://github.com/huggingface/diffusers/issues/4208.
negative_crops_coords_top_left (tuple[int], optional, по умолчанию (0, 0)) : Используется для негативного обусловливания процесса генерации на основе конкретных координат кадрирования. Является частью микрообусловливания SDXL, описанной в разделе 2.2 статьи https://huggingface.co/papers/2307.01952. Для получения дополнительной информации см. этот тред: https://github.com/huggingface/diffusers/issues/4208.
negative_target_size (tuple[int], optional, по умолчанию (1024, 1024)) : Используется для негативного обусловливания процесса генерации на основе целего разрешения изображения. В большинстве случаев должно совпадать с target_size. Является частью микрообусловливания SDXL, описанной в разделе 2.2 статьи https://huggingface.co/papers/2307.01952. Для получения дополнительной информации см. этот тред: https://github.com/huggingface/diffusers/issues/4208.
clip_skip (int, optional) : Количество слоев, которые пропускаются в CLIP при вычислении эмбеддингов промпта. Значение 1 означает, что для вычисления эмбеддингов промпта будет использоваться выход предпоследнего слоя.
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.
pag_scale (float, optional, по умолчанию 3.0) : Коэффициент масштабирования для направленного внимания с возмущениями. Если установлено значение 0.0, направленное внимание с возмущениями не будет использоваться.
pag_adaptive_scale (float, optional, по умолчанию 0.0) : Адаптивный коэффициент масштабирования для направленного внимания с возмущениями. Если он установлен в 0.0, используется pag_scale.
Возвращает: ~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput или tuple
~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput, если return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список с сгенерированными изображениями.
Функция, вызываемая при обращении к конвейеру для генерации.
Примеры:
>>> import torch
>>> from diffusers import AutoPipelineForText2Image
>>> pipe = AutoPipelineForText2Image.from_pretrained(
... "stabilityai/stable-diffusion-xl-base-1.0",
... torch_dtype=torch.float16,
... enable_pag=True,
... )
>>> pipe = pipe.to("cuda")
>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> image = pipe(prompt, pag_scale=0.3).images[0]
encode_prompt[[diffusers.StableDiffusionXLPAGPipeline.encode_prompt]]
encode_prompt(prompt: str, prompt_2: str | None = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, do_classifier_free_guidance: bool = True, negative_prompt: str | None = None, negative_prompt_2: str | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None, clip_skip: int | None = None)
Параметры:
prompt (str или list[str], необязательный) : промпт для кодирования
prompt_2 (str или list[str], необязательный) : Промпт или промпты, которые будут отправлены в tokenizer_2 и text_encoder_2. Если не задано, в обоих текстовых кодировщиках используется prompt
device : (torch.device): устройство torch
num_images_per_prompt (int) : количество изображений, которые должны быть сгенерированы для каждого промпта
do_classifier_free_guidance (bool) : использовать ли классификаторное свободное наведение (classifier free guidance)
negative_prompt (str или list[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, optional) : масштаб lora, который будет применён ко всем слоям LoRA текстового энкодера, если слои LoRA загружены.
clip_skip (int, optional) : Количество слоев, которые пропускаются в CLIP при вычислении эмбеддингов промпта. Значение 1 означает, что для вычисления эмбеддингов промпта будет использоваться выход предпоследнего слоя.
Кодирует промпт в скрытые состояния текстового энкодера.
get_guidance_scale_embedding[[diffusers.StableDiffusionXLPAGPipeline.get_guidance_scale_embedding]]
get_guidance_scale_embedding(w: Tensor, embedding_dim: int = 512, dtype: dtype = torch.float32)
Параметры:
w (torch.Tensor) : Генерирует векторы эмбеддингов с заданным масштабом руководства (guidance scale) для последующего обогащения эмбеддингов временных шагов.
embedding_dim (int, необязательный, по умолчанию 512) : Размерность генерируемых эмбеддингов.
dtype (torch.dtype, необязательный, по умолчанию torch.float32) : Тип данных для генерируемых эмбеддингов.
Возвращает: torch.Tensor
Векторы встраиваний с формой (len(w), embedding_dim).
StableDiffusionXLPAGImg2ImgPipeline[[diffusers.StableDiffusionXLPAGImg2ImgPipeline]]
diffusers.StableDiffusionXLPAGImg2ImgPipeline[[diffusers.StableDiffusionXLPAGImg2ImgPipeline]]
diffusers.StableDiffusionXLPAGImg2ImgPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, text_encoder_2: CLIPTextModelWithProjection, tokenizer: CLIPTokenizer, tokenizer_2: CLIPTokenizer, unet: UNet2DConditionModel, scheduler: KarrasDiffusionSchedulers, image_encoder: CLIPVisionModelWithProjection = None, feature_extractor: CLIPImageProcessorPil = None, requires_aesthetics_score: bool = False, force_zeros_for_empty_prompt: bool = True, add_watermarker: bool | None = None, pag_applied_layers: str | list[str] = 'mid')
Параметры:
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, если пакет установлен, в противном случае водяной знак не добавляется.
Пайплайн для генерации изображений по тексту с использованием Stable Diffusion XL.
Эта модель наследуется от DiffusionPipeline. См. документацию родительского класса для общих методов, которые библиотека реализует для всех пайплайнов (например, загрузка или сохранение, запуск на конкретном устройстве и т. д.)
Пайплайн также наследует следующие методы загрузки:
- load_textual_inversion() для загрузки эмбеддингов текстовой инверсии
- from_single_file() для загрузки файлов
.ckpt - load_lora_weights() для загрузки весов LoRA
- save_lora_weights() для сохранения весов LoRA
- load_ip_adapter() для загрузки IP-адаптеров
call[[diffusers.StableDiffusionXLPAGImg2ImgPipeline.call]]
__call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, strength: float = 0.3, num_inference_steps: int = 50, timesteps: list[int] = None, sigmas: list[float] = None, denoising_start: float | None = None, denoising_end: float | None = None, guidance_scale: float = 5.0, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, num_images_per_prompt: int | None = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: list[torch.Tensor] | None = None, output_type: str | None = 'pil', return_dict: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, guidance_rescale: float = 0.0, original_size: tuple[int, int] = None, crops_coords_top_left: tuple[int, int] = (0, 0), target_size: tuple[int, int] = None, negative_original_size: tuple[int, int] | None = None, negative_crops_coords_top_left: tuple[int, int] = (0, 0), negative_target_size: tuple[int, int] | None = None, aesthetic_score: float = 6.0, negative_aesthetic_score: float = 2.5, clip_skip: int | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], pag_scale: float = 3.0, pag_adaptive_scale: float = 0.0)
Параметры:
prompt (str или list[str], необязательный) : Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передать prompt_embeds вместо него.
prompt_2 (str или list[str], необязательный) : Промпт или промпты, которые будут отправлены в tokenizer_2 и text_encoder_2. Если не задано, в обоих текстовых кодировщиках используется prompt
image (torch.Tensor или PIL.Image.Image или np.ndarray или list[torch.Tensor] или list[PIL.Image.Image] или list[np.ndarray]) : Изображение(я), которое(ые) нужно изменить с помощью конвейера.
strength (float, optional, по умолчанию 0.3) : Концептуально указывает, насколько сильно трансформировать исходное изображение image. Значение должно быть в диапазоне от 0 до 1. Изображение image используется как отправная точка: чем больше значение strength, тем больше шума добавляется к нему. Количество шагов денойзинга зависит от количества шума, добавленного изначально. Если strength равно 1, добавляется максимальное количество шума, и процесс денойзинга выполняется в течение полного числа итераций, указанного в num_inference_steps. Таким образом, значение 1 фактически игнорирует image. Обратите внимание, что если denoising_start объявлено как целое число, значение strength будет проигнорировано.
num_inference_steps (int, optional, по умолчанию 50) : Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.
timesteps (list[int], optional) : Пользовательские шаги для процесса денойзинга с планировщиками, поддерживающими аргумент timesteps в их методе set_timesteps. Если не определено, будет использоваться поведение по умолчанию при передаче num_inference_steps. Должны быть в порядке убывания.
sigmas (list[float], optional) : Пользовательские сигмы для процесса денойзинга в планировщиках, поддерживающих аргумент sigmas в методе set_timesteps. Если не задано, будет использовано поведение по умолчанию при передаче num_inference_steps.
denoising_start (float, optional) : Если указано, определяет долю (от 0.0 до 1.0) общего процесса денойзинга, которая пропускается перед его началом. В результате начальная часть процесса денойзинга пропускается, и предполагается, что переданное image является частично денойзинженным изображением. Обратите внимание, что при указании этого параметра strength игнорируется. Параметр denoising_start особенно полезен при интеграции данного конвейера в многоконвейерную конфигурацию «Mixture of Denoisers», как описано в Refine Image Quality.
denoising_end (float, optional) : Если указано, определяет долю (от 0.0 до 1.0) общего процесса денойзинга, которая должна быть завершена до его намеренного преждевременного прекращения. В результате возвращенный образец будет по-прежнему содержать значительное количество шума (остается около 20% временных шагов) и должен быть денойзингован последующим пайплайном, у которого параметр denoising_start установлен в 0.8, чтобы он денойзинговал только последние 20% планировщика. Параметр denoising_end следует использовать в тех случаях, когда данный пайплайн является частью многопайплайновой конфигурации «Mixture of Denoisers», как описано в Refine Image Quality.
guidance_scale (float, optional, по умолчанию 7.5) : Масштаб руководства, как определено в Classifier-Free Diffusion Guidance. guidance_scale определяется как w из уравнения 2 в Imagen Paper. Масштаб руководства активируется при установке guidance_scale > 1. Более высокий масштаб руководства способствует генерации изображений, тесно связанных с текстовым prompt, обычно за счёт снижения качества изображения.
negative_prompt (str или list[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, optional, по умолчанию 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.
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: PIL.Image.Image или np.array.
return_dict (bool, необязательный, по умолчанию True) : Возвращать ли ~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput вместо обычного кортежа.
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 Flawed guidance_scale is 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], optional, по умолчанию (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], optional, по умолчанию (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], optional, по умолчанию (1024, 1024)) : В большинстве случаев target_size следует установить в желаемую высоту и ширину генерируемого изображения. Если не указано, по умолчанию будет (height, width). Часть микроусловий SDXL, описанная в разделе 2.2 статьи https://huggingface.co/papers/2307.01952.
negative_original_size (tuple[int], optional, по умолчанию (1024, 1024)) : Используется для негативного условия процесса генерации на основе конкретного разрешения изображения. Является частью микроусловия SDXL, описанной в разделе 2.2 статьи https://huggingface.co/papers/2307.01952. Для получения дополнительной информации см. этот тред: https://github.com/huggingface/diffusers/issues/4208.
negative_crops_coords_top_left (tuple[int], optional, по умолчанию (0, 0)) : Используется для негативного обусловливания процесса генерации на основе конкретных координат кадрирования. Является частью микрообусловливания SDXL, описанной в разделе 2.2 статьи https://huggingface.co/papers/2307.01952. Для получения дополнительной информации см. этот тред: https://github.com/huggingface/diffusers/issues/4208.
negative_target_size (tuple[int], optional, по умолчанию (1024, 1024)) : Используется для негативного обусловливания процесса генерации на основе целего разрешения изображения. В большинстве случаев должно совпадать с target_size. Является частью микрообусловливания SDXL, описанной в разделе 2.2 статьи https://huggingface.co/papers/2307.01952. Для получения дополнительной информации см. этот тред: https://github.com/huggingface/diffusers/issues/4208.
aesthetic_score (float, необязательный, по умолчанию 6.0) : Используется для имитации эстетической оценки сгенерированного изображения путём влияния на положительное текстовое условие. Является частью микроусловий SDXL, как описано в разделе 2.2 статьи https://huggingface.co/papers/2307.01952.
negative_aesthetic_score (float, optional, по умолчанию 2.5) : Часть микроусловий SDXL, описанных в разделе 2.2 статьи https://huggingface.co/papers/2307.01952. Может использоваться для имитации эстетической оценки сгенерированного изображения путём влияния на отрицательное текстовое условие.
clip_skip (int, optional) : Количество слоев, которые пропускаются в CLIP при вычислении эмбеддингов промпта. Значение 1 означает, что для вычисления эмбеддингов промпта будет использоваться выход предпоследнего слоя.
callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, optional) : функция или подкласс 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, optional) : Список тензорных входных данных для функции callback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргумента callback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте ._callback_tensor_inputs вашего класса pipeline.
pag_scale (float, optional, по умолчанию 3.0) : Коэффициент масштабирования для направленного внимания с возмущениями. Если установлено значение 0.0, направленное внимание с возмущениями не будет использоваться.
pag_adaptive_scale (float, optional, по умолчанию 0.0) : Адаптивный коэффициент масштабирования для направленного внимания с возмущениями. Если он установлен в 0.0, используется pag_scale.
Возвращает: ~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput или tuple
~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput, если return_dict равно True, иначе — `tuple. При возврате кортежа первым элементом является список с сгенерированными изображениями.
Функция, вызываемая при обращении к конвейеру для генерации.
Примеры:
>>> import torch
>>> from diffusers import AutoPipelineForImage2Image
>>> from diffusers.utils import load_image
>>> pipe = AutoPipelineForImage2Image.from_pretrained(
... "stabilityai/stable-diffusion-xl-refiner-1.0",
... torch_dtype=torch.float16,
... enable_pag=True,
... )
>>> pipe = pipe.to("cuda")
>>> url = "https://huggingface.co/datasets/patrickvonplaten/images/resolve/main/aa_xl/000000009.png"
>>> init_image = load_image(url).convert("RGB")
>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> image = pipe(prompt, image=init_image, pag_scale=0.3).images[0]
encode_prompt[[diffusers.StableDiffusionXLPAGImg2ImgPipeline.encode_prompt]]
encode_prompt(prompt: str, prompt_2: str | None = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, do_classifier_free_guidance: bool = True, negative_prompt: str | None = None, negative_prompt_2: str | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None, clip_skip: int | None = None)
Параметры:
prompt (str или list[str], необязательный) : промпт для кодирования
prompt_2 (str или list[str], необязательный) : Промпт или промпты, которые будут отправлены в tokenizer_2 и text_encoder_2. Если не задано, в обоих текстовых кодировщиках используется prompt
device : (torch.device): устройство torch
num_images_per_prompt (int) : количество изображений, которые должны быть сгенерированы для каждого промпта
do_classifier_free_guidance (bool) : использовать ли классификаторное свободное наведение (classifier free guidance)
negative_prompt (str или list[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, optional) : масштаб lora, который будет применён ко всем слоям LoRA текстового энкодера, если слои LoRA загружены.
clip_skip (int, optional) : Количество слоев, которые пропускаются в CLIP при вычислении эмбеддингов промпта. Значение 1 означает, что для вычисления эмбеддингов промпта будет использоваться выход предпоследнего слоя.
Кодирует промпт в скрытые состояния текстового энкодера.
get_guidance_scale_embedding[[diffusers.StableDiffusionXLPAGImg2ImgPipeline.get_guidance_scale_embedding]]
get_guidance_scale_embedding(w: Tensor, embedding_dim: int = 512, dtype: dtype = torch.float32)
Параметры:
w (torch.Tensor) : Генерирует векторы эмбеддингов с заданным масштабом руководства (guidance scale) для последующего обогащения эмбеддингов временных шагов.
embedding_dim (int, необязательный, по умолчанию 512) : Размерность генерируемых эмбеддингов.
dtype (torch.dtype, необязательный, по умолчанию torch.float32) : Тип данных для генерируемых эмбеддингов.
Возвращает: torch.Tensor
Векторы встраиваний с формой (len(w), embedding_dim).
StableDiffusionXLPAGInpaintPipeline[[diffusers.StableDiffusionXLPAGInpaintPipeline]]
diffusers.StableDiffusionXLPAGInpaintPipeline[[diffusers.StableDiffusionXLPAGInpaintPipeline]]
diffusers.StableDiffusionXLPAGInpaintPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, text_encoder_2: CLIPTextModelWithProjection, tokenizer: CLIPTokenizer, tokenizer_2: CLIPTokenizer, unet: UNet2DConditionModel, scheduler: KarrasDiffusionSchedulers, image_encoder: CLIPVisionModelWithProjection = None, feature_extractor: CLIPImageProcessorPil = None, requires_aesthetics_score: bool = False, force_zeros_for_empty_prompt: bool = True, add_watermarker: bool | None = None, pag_applied_layers: str | list[str] = 'mid')
Параметры:
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, если пакет установлен, в противном случае водяной знак не добавляется.
Пайплайн для генерации изображений по тексту с использованием Stable Diffusion XL.
Эта модель наследуется от DiffusionPipeline. См. документацию родительского класса для общих методов, которые библиотека реализует для всех пайплайнов (например, загрузка или сохранение, запуск на конкретном устройстве и т. д.)
Пайплайн также наследует следующие методы загрузки:
- load_textual_inversion() для загрузки эмбеддингов текстовой инверсии
- from_single_file() для загрузки файлов
.ckpt - load_lora_weights() для загрузки весов LoRA
- save_lora_weights() для сохранения весов LoRA
- load_ip_adapter() для загрузки IP-адаптеров
call[[diffusers.StableDiffusionXLPAGInpaintPipeline.call]]
__call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, mask_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, masked_image_latents: Tensor = None, height: int | None = None, width: int | None = None, padding_mask_crop: int | None = None, strength: float = 0.9999, num_inference_steps: int = 50, timesteps: list[int] = None, sigmas: list[float] = None, denoising_start: float | None = None, denoising_end: float | None = None, guidance_scale: float = 7.5, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, num_images_per_prompt: int | None = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: list[torch.Tensor] | None = None, output_type: str | None = 'pil', return_dict: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, guidance_rescale: float = 0.0, original_size: tuple[int, int] = None, crops_coords_top_left: tuple[int, int] = (0, 0), target_size: tuple[int, int] = None, negative_original_size: tuple[int, int] | None = None, negative_crops_coords_top_left: tuple[int, int] = (0, 0), negative_target_size: tuple[int, int] | None = None, aesthetic_score: float = 6.0, negative_aesthetic_score: float = 2.5, clip_skip: int | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], pag_scale: float = 3.0, pag_adaptive_scale: float = 0.0)
Параметры:
prompt (str или list[str], необязательный) : Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передать prompt_embeds вместо него.
prompt_2 (str или list[str], необязательный) : Промпт или промпты, которые будут отправлены в tokenizer_2 и text_encoder_2. Если не задано, в обоих текстовых кодировщиках используется prompt
image (PIL.Image.Image) : Image или тензор, представляющий пакет изображений, которые будут подвергнуты inpainting, т. е. части изображения будут замаскированы с помощью mask_image и перерисованы в соответствии с prompt.
mask_image (PIL.Image.Image) : Image или тензор, представляющий пакет изображений, для маскирования image. Белые пиксели в маске будут перерисованы, а чёрные — сохранены. Если mask_image — это изображение PIL, оно будет преобразовано в одноцветный канал (яркость) перед использованием. Если это тензор, он должен содержать один цветовой канал (L) вместо трёх, поэтому ожидаемая форма — (B, H, W, 1).
masked_image_latents (torch.Tensor, необязательный) : Предварительно закодированное латентное представление замаскированного изображения (для инпейнтинга).
height (int, optional, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) : Высота генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов. Значения ниже 512 пикселей будут работать некорректно для stabilityai/stable-diffusion-xl-base-1.0 и контрольных точек, которые не были специально дообучены на низких разрешениях.
width (int, optional, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) : Ширина генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов. Значения ниже 512 пикселей будут работать некорректно для stabilityai/stable-diffusion-xl-base-1.0 и контрольных точек, которые не были специально дообучены на низких разрешениях.
padding_mask_crop (int, optional, по умолчанию None) : Размер поля (margin) для обрезки, применяемой к изображению и маске. Если None, обрезка не применяется к image и mask_image. Если padding_mask_crop не равно None, сначала находится прямоугольная область с тем же соотношением сторон, что и у изображения, содержащая всю замаскированную область, а затем эта область расширяется на основе padding_mask_crop. После этого image и mask_image обрезаются по расширенной области перед изменением размера до исходного размера изображения для инпейнтинга. Это полезно, когда замаскированная область мала, а изображение велико и содержит информацию, не относящуюся к инпейнтингу, например фон.
strength (float, optional, по умолчанию 0.9999) : Концептуально указывает, насколько сильно трансформировать замаскированную часть исходного image. Значение должно быть в диапазоне от 0 до 1. image используется как отправная точка: чем больше strength, тем больше шума добавляется к изображению. Количество шагов денойзинга зависит от количества шума, добавленного изначально. Если strength равно 1, добавляется максимальное количество шума, и процесс денойзинга выполняется в течение полного числа итераций, указанного в num_inference_steps. Таким образом, значение 1 фактически игнорирует замаскированную часть исходного image. Обратите внимание, что если denoising_start объявлено как целое число, значение strength игнорируется.
num_inference_steps (int, optional, по умолчанию 50) : Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.
timesteps (list[int], optional) : Пользовательские шаги для процесса денойзинга с планировщиками, поддерживающими аргумент timesteps в их методе set_timesteps. Если не определено, будет использоваться поведение по умолчанию при передаче num_inference_steps. Должны быть в порядке убывания.
sigmas (list[float], optional) : Пользовательские сигмы для процесса денойзинга в планировщиках, поддерживающих аргумент sigmas в методе set_timesteps. Если не задано, будет использовано поведение по умолчанию при передаче num_inference_steps.
denoising_start (float, optional) : Если указано, определяет долю (от 0.0 до 1.0) общего процесса денойзинга, которая пропускается перед его началом. В результате начальная часть процесса денойзинга пропускается, и предполагается, что переданное image является частично денойзинженным изображением. Обратите внимание, что при указании этого параметра strength игнорируется. Параметр denoising_start особенно полезен при интеграции данного конвейера в многоконвейерную конфигурацию «Mixture of Denoisers», как описано в Уточнение вывода изображения.
denoising_end (float, optional) : When specified, determines the fraction (between 0.0 and 1.0) of the total denoising process to be completed before it is intentionally prematurely terminated. As a result, the returned sample will still retain a substantial amount of noise (ca. final 20% of timesteps still needed) and should be denoised by a successor pipeline that has denoising_start set to 0.8 so that it only denoises the final 20% of the scheduler. The denoising_end parameter should ideally be utilized when this pipeline forms a part of a "Mixture of Denoisers" multi-pipeline setup, as elaborated in Refining the Image Output.
guidance_scale (float, optional, по умолчанию 7.5) : Масштаб руководства, как определено в Classifier-Free Diffusion Guidance. guidance_scale определяется как w из уравнения 2 в Imagen Paper. Масштаб руководства активируется при установке guidance_scale > 1. Более высокий масштаб руководства способствует генерации изображений, тесно связанных с текстовым prompt, обычно за счёт снижения качества изображения.
negative_prompt (str или list[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.
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.
num_images_per_prompt (int, необязательный, по умолчанию 1) : Количество изображений, генерируемых на один запрос.
eta (float, optional, по умолчанию 0.0) : Соответствует параметру eta (η) в статье DDIM: https://huggingface.co/papers/2010.02502. Применяется только к schedulers.DDIMScheduler, для остальных игнорируется.
generator (torch.Generator, необязательный) : Один или список генераторов torch для обеспечения детерминированности генерации.
latents (torch.Tensor, необязательный) : Предварительно сгенерированные зашумленные латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Можно использовать, чтобы скорректировать одну и ту же генерацию с разными промптами. Если не предоставлены, тензор латентов будет сгенерирован путём выборки с использованием переданного случайного generator.
output_type (str, необязательный, по умолчанию "pil") : Формат вывода для генерируемого изображения. Выберите между PIL: PIL.Image.Image или np.array.
return_dict (bool, необязательный, по умолчанию True) : Возвращать ли StableDiffusionPipelineOutput вместо обычного кортежа.
cross_attention_kwargs (dict, необязательный) : Словарь kwargs, который при указании передается в AttentionProcessor, определенный в self.processor в diffusers.models.attention_processor.
original_size (tuple[int], optional, по умолчанию (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], optional, по умолчанию (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], optional, по умолчанию (1024, 1024)) : В большинстве случаев target_size следует установить в желаемую высоту и ширину генерируемого изображения. Если не указано, по умолчанию будет (height, width). Часть микроусловий SDXL, описанная в разделе 2.2 статьи https://huggingface.co/papers/2307.01952.
negative_original_size (tuple[int], optional, по умолчанию (1024, 1024)) : Используется для негативного условия процесса генерации на основе конкретного разрешения изображения. Является частью микроусловия SDXL, описанной в разделе 2.2 статьи https://huggingface.co/papers/2307.01952. Для получения дополнительной информации см. этот тред: https://github.com/huggingface/diffusers/issues/4208.
negative_crops_coords_top_left (tuple[int], optional, по умолчанию (0, 0)) : Используется для негативного обусловливания процесса генерации на основе конкретных координат кадрирования. Является частью микрообусловливания SDXL, описанной в разделе 2.2 статьи https://huggingface.co/papers/2307.01952. Для получения дополнительной информации см. этот тред: https://github.com/huggingface/diffusers/issues/4208.
negative_target_size (tuple[int], optional, по умолчанию (1024, 1024)) : Используется для негативного обусловливания процесса генерации на основе целего разрешения изображения. В большинстве случаев должно совпадать с target_size. Является частью микрообусловливания SDXL, описанной в разделе 2.2 статьи https://huggingface.co/papers/2307.01952. Для получения дополнительной информации см. этот тред: https://github.com/huggingface/diffusers/issues/4208.
aesthetic_score (float, необязательный, по умолчанию 6.0) : Используется для имитации эстетической оценки сгенерированного изображения путём влияния на положительное текстовое условие. Является частью микроусловий SDXL, как описано в разделе 2.2 статьи https://huggingface.co/papers/2307.01952.
negative_aesthetic_score (float, optional, по умолчанию 2.5) : Часть микроусловий SDXL, описанных в разделе 2.2 статьи https://huggingface.co/papers/2307.01952. Может использоваться для имитации эстетической оценки сгенерированного изображения путём влияния на отрицательное текстовое условие.
guidance_rescale (float, optional, defaults to 0.0) : Guidance rescale factor from Common Diffusion Noise Schedules and Sample Steps are Flawed.
clip_skip (int, optional) : Количество слоев, которые пропускаются в CLIP при вычислении эмбеддингов промпта. Значение 1 означает, что для вычисления эмбеддингов промпта будет использоваться выход предпоследнего слоя.
callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, optional) : функция или подкласс 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, optional) : Список тензорных входных данных для функции callback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргумента callback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте ._callback_tensor_inputs вашего класса pipeline.
pag_scale (float, optional, по умолчанию 3.0) : Коэффициент масштабирования для направленного внимания с возмущениями. Если установлено значение 0.0, направленное внимание с возмущениями не будет использоваться.
pag_adaptive_scale (float, optional, по умолчанию 0.0) : Адаптивный коэффициент масштабирования для направленного внимания с возмущениями. Если он установлен в 0.0, используется pag_scale.
Возвращает: ~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput или tuple
~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput, если return_dict равно True, иначе tuple. tuple. При возврате кортежа первым элементом является список с сгенерированными изображениями.
Функция, вызываемая при обращении к конвейеру для генерации.
Примеры:
>>> import torch
>>> from diffusers import AutoPipelineForInpainting
>>> from diffusers.utils import load_image
>>> pipe = AutoPipelineForInpainting.from_pretrained(
... "stabilityai/stable-diffusion-xl-base-1.0",
... torch_dtype=torch.float16,
... variant="fp16",
... enable_pag=True,
... )
>>> pipe.to("cuda")
>>> img_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png"
>>> mask_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png"
>>> init_image = load_image(img_url).convert("RGB")
>>> mask_image = load_image(mask_url).convert("RGB")
>>> prompt = "A majestic tiger sitting on a bench"
>>> image = pipe(
... prompt=prompt,
... image=init_image,
... mask_image=mask_image,
... num_inference_steps=50,
... strength=0.80,
... pag_scale=0.3,
... ).images[0]
encode_prompt[[diffusers.StableDiffusionXLPAGInpaintPipeline.encode_prompt]]
encode_prompt(prompt: str, prompt_2: str | None = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, do_classifier_free_guidance: bool = True, negative_prompt: str | None = None, negative_prompt_2: str | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None, clip_skip: int | None = None)
Параметры:
prompt (str или list[str], необязательный) : промпт для кодирования
prompt_2 (str или list[str], необязательный) : Промпт или промпты, которые будут отправлены в tokenizer_2 и text_encoder_2. Если не задано, в обоих текстовых кодировщиках используется prompt
device : (torch.device): устройство torch
num_images_per_prompt (int) : количество изображений, которые должны быть сгенерированы для каждого промпта
do_classifier_free_guidance (bool) : использовать ли классификаторное свободное наведение (classifier free guidance)
negative_prompt (str или list[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, optional) : масштаб lora, который будет применён ко всем слоям LoRA текстового энкодера, если слои LoRA загружены.
clip_skip (int, optional) : Количество слоев, которые пропускаются в CLIP при вычислении эмбеддингов промпта. Значение 1 означает, что для вычисления эмбеддингов промпта будет использоваться выход предпоследнего слоя.
Кодирует промпт в скрытые состояния текстового энкодера.
get_guidance_scale_embedding[[diffusers.StableDiffusionXLPAGInpaintPipeline.get_guidance_scale_embedding]]
get_guidance_scale_embedding(w: Tensor, embedding_dim: int = 512, dtype: dtype = torch.float32)
Параметры:
w (torch.Tensor) : Генерирует векторы эмбеддингов с заданным масштабом руководства (guidance scale) для последующего обогащения эмбеддингов временных шагов.
embedding_dim (int, необязательный, по умолчанию 512) : Размерность генерируемых эмбеддингов.
dtype (torch.dtype, необязательный, по умолчанию torch.float32) : Тип данных для генерируемых эмбеддингов.
Возвращает: torch.Tensor
Векторы встраиваний с формой (len(w), embedding_dim).
StableDiffusionXLControlNetPAGPipeline[[diffusers.StableDiffusionXLControlNetPAGPipeline]]
diffusers.StableDiffusionXLControlNetPAGPipeline[[diffusers.StableDiffusionXLControlNetPAGPipeline]]
diffusers.StableDiffusionXLControlNetPAGPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, text_encoder_2: CLIPTextModelWithProjection, tokenizer: CLIPTokenizer, tokenizer_2: CLIPTokenizer, unet: UNet2DConditionModel, controlnet: diffusers.models.controlnets.controlnet.ControlNetModel | list[diffusers.models.controlnets.controlnet.ControlNetModel] | tuple[diffusers.models.controlnets.controlnet.ControlNetModel] | diffusers.models.controlnets.multicontrolnet.MultiControlNetModel, scheduler: KarrasDiffusionSchedulers, force_zeros_for_empty_prompt: bool = True, add_watermarker: bool | None = None, feature_extractor: CLIPImageProcessorPil = None, image_encoder: CLIPVisionModelWithProjection = None, pag_applied_layers: str | list[str] = 'mid')
Параметры:
vae (AutoencoderKL) : Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
text_encoder (CLIPTextModel) : замороженный текстовый энкодер (clip-vit-large-patch14).
text_encoder_2 (CLIPTextModelWithProjection) : второй замороженный текстовый энкодер (laion/CLIP-ViT-bigG-14-laion2B-39B-b160k).
tokenizer (CLIPTokenizer) : CLIPTokenizer для токенизации текста.
tokenizer_2 (CLIPTokenizer) : CLIPTokenizer для токенизации текста.
unet (UNet2DConditionModel) : UNet2DConditionModel для удаления шума из закодированных латентов изображения.
controlnet (ControlNetModel или list[ControlNetModel]) : Обеспечивает дополнительное условие для unet в процессе денойзинга. Если вы зададите несколько ControlNet в виде списка, выходы каждого ControlNet будут сложены вместе, чтобы создать одно объединённое дополнительное условие.
scheduler (SchedulerMixin) : планировщик, используемый в сочетании с unet для удаления шума из закодированных латентов изображения. Может быть одним из DDIMScheduler, LMSDiscreteScheduler или PNDMScheduler.
force_zeros_for_empty_prompt (bool, необязательный, по умолчанию "True") : следует ли всегда устанавливать эмбеддинги отрицательного промпта в 0. См. также конфигурацию stabilityai/stable-diffusion-xl-base-1-0.
add_watermarker (bool, необязательный) : Использовать ли библиотеку invisible_watermark для добавления водяных знаков на выходные изображения. Если не указано, по умолчанию устанавливается в True, если пакет установлен; в противном случае водяной знак не используется.
Пайплайн для генерации изображений по тексту с использованием Stable Diffusion XL и направлением через ControlNet.
Эта модель наследуется от DiffusionPipeline. Общую документацию по методам, реализованным для всех пайплайнов (загрузка, сохранение, запуск на конкретном устройстве и т. д.), см. в документации родительского класса.
Пайплайн также наследует следующие методы загрузки:
- load_textual_inversion() для загрузки эмбеддингов текстовой инверсии
- load_lora_weights() для загрузки весов LoRA
- save_lora_weights() для сохранения весов LoRA
- from_single_file() для загрузки файлов
.ckpt - load_ip_adapter() для загрузки IP-адаптеров
call[[diffusers.StableDiffusionXLControlNetPAGPipeline.call]]
__call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, height: int | None = None, width: int | None = None, num_inference_steps: int = 50, timesteps: list[int] = None, sigmas: list[float] = None, denoising_end: float | None = None, guidance_scale: float = 5.0, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, num_images_per_prompt: int | None = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: list[torch.Tensor] | None = None, output_type: str | None = 'pil', return_dict: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, controlnet_conditioning_scale: float | list[float] = 1.0, control_guidance_start: float | list[float] = 0.0, control_guidance_end: float | list[float] = 1.0, original_size: tuple[int, int] = None, crops_coords_top_left: tuple[int, int] = (0, 0), target_size: tuple[int, int] = None, negative_original_size: tuple[int, int] | None = None, negative_crops_coords_top_left: tuple[int, int] = (0, 0), negative_target_size: tuple[int, int] | None = None, clip_skip: int | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], pag_scale: float = 3.0, pag_adaptive_scale: float = 0.0)
Параметры:
prompt (str или list[str], необязательный) : Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передать prompt_embeds.
prompt_2 (str или list[str], необязательный) : Промпт или промпты, которые будут переданы в tokenizer_2 и text_encoder_2. Если не задано, в обоих текстовых кодировщиках используется prompt.
image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image], list[np.ndarray], : list[list[torch.Tensor]], list[list[np.ndarray]] or list[list[PIL.Image.Image]]): Вводное условие ControlNet, задающее направление для unet при генерации. Если тип указан как torch.Tensor, значение передаётся в ControlNet без изменений. В качестве изображения также допускается PIL.Image.Image. Размеры выходного изображения по умолчанию совпадают с размерами image. Если переданы высота и/или ширина, image масштабируется соответственно. Если в init указано несколько ControlNet, изображения необходимо передавать в виде списка, чтобы каждый элемент списка мог быть корректно сгруппирован в батч для входа в один ControlNet.
height (int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) : Высота генерируемого изображения в пикселях. Значения ниже 512 пикселей будут работать некорректно для stabilityai/stable-diffusion-xl-base-1.0 и контрольных точек, которые не были специально дообучены на низких разрешениях.
width (int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) : Ширина генерируемого изображения в пикселях. Значения менее 512 пикселей будут работать некорректно для stabilityai/stable-diffusion-xl-base-1.0 и контрольных точек, которые не были специально дообучены на низких разрешениях.
num_inference_steps (int, optional, по умолчанию 50) : Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.
timesteps (list[int], optional) : Пользовательские шаги для процесса денойзинга с планировщиками, поддерживающими аргумент timesteps в их методе set_timesteps. Если не определено, будет использоваться поведение по умолчанию при передаче num_inference_steps. Должны быть в порядке убывания.
sigmas (list[float], optional) : Пользовательские сигмы для процесса денойзинга в планировщиках, поддерживающих аргумент sigmas в методе set_timesteps. Если не задано, будет использовано поведение по умолчанию при передаче num_inference_steps.
denoising_end (float, optional) : When specified, determines the fraction (between 0.0 and 1.0) of the total denoising process to be completed before it is intentionally prematurely terminated. As a result, the returned sample will still retain a substantial amount of noise as determined by the discrete timesteps selected by the scheduler. The denoising_end parameter should ideally be utilized when this pipeline forms a part of a "Mixture of Denoisers" multi-pipeline setup, as elaborated in Refining the Image Output
guidance_scale (float, optional, по умолчанию 5.0) : Более высокое значение guidance scale побуждает модель генерировать изображения, тесно связанные с текстовым prompt, за счёт снижения качества изображения. Guidance scale активируется, когда guidance_scale > 1.
negative_prompt (str или list[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. Применяется только к DDIMScheduler и игнорируется другими планировщиками.
generator (torch.Generator или list[torch.Generator], необязательно) : torch.Generator для обеспечения детерминированности генерации.
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.
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.
controlnet_conditioning_scale (float или list[float], необязательный, по умолчанию 1.0) : Выходные данные ControlNet умножаются на controlnet_conditioning_scale перед добавлением к остаточному соединению в исходном unet. Если в init указано несколько ControlNet, соответствующий масштаб можно задать в виде списка.
control_guidance_start (float или list[float], необязательный, по умолчанию 0.0) : Доля от общего числа шагов, на которой ControlNet начинает применяться.
control_guidance_end (float или list[float], необязательный, по умолчанию 1.0) : Доля от общего числа шагов, на которой ControlNet прекращает применяться.
original_size (tuple[int], optional, по умолчанию (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], optional, по умолчанию (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], optional, по умолчанию (1024, 1024)) : В большинстве случаев target_size следует установить в желаемую высоту и ширину генерируемого изображения. Если не указано, по умолчанию будет (height, width). Часть микроусловий SDXL, описанная в разделе 2.2 статьи https://huggingface.co/papers/2307.01952.
negative_original_size (tuple[int], optional, по умолчанию (1024, 1024)) : Используется для негативного условия процесса генерации на основе конкретного разрешения изображения. Является частью микроусловия SDXL, описанной в разделе 2.2 статьи https://huggingface.co/papers/2307.01952. Для получения дополнительной информации см. этот тред: https://github.com/huggingface/diffusers/issues/4208.
negative_crops_coords_top_left (tuple[int], optional, по умолчанию (0, 0)) : Используется для негативного обусловливания процесса генерации на основе конкретных координат кадрирования. Является частью микрообусловливания SDXL, описанной в разделе 2.2 статьи https://huggingface.co/papers/2307.01952. Для получения дополнительной информации см. этот тред: https://github.com/huggingface/diffusers/issues/4208.
negative_target_size (tuple[int], optional, по умолчанию (1024, 1024)) : Используется для негативного обусловливания процесса генерации на основе целего разрешения изображения. В большинстве случаев должно совпадать с target_size. Является частью микрообусловливания SDXL, описанной в разделе 2.2 статьи https://huggingface.co/papers/2307.01952. Для получения дополнительной информации см. этот тред: https://github.com/huggingface/diffusers/issues/4208.
clip_skip (int, optional) : Количество слоев, которые пропускаются в CLIP при вычислении эмбеддингов промпта. Значение 1 означает, что для вычисления эмбеддингов промпта будет использоваться выход предпоследнего слоя.
callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, optional) : функция или подкласс 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, optional) : Список тензорных входных данных для функции callback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргумента callback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте ._callback_tensor_inputs вашего класса pipeline.
pag_scale (float, optional, по умолчанию 3.0) : Коэффициент масштабирования для направленного внимания с возмущениями. Если установлено значение 0.0, направленное внимание с возмущениями не будет использоваться.
pag_adaptive_scale (float, optional, по умолчанию 0.0) : Адаптивный коэффициент масштабирования для направленного внимания с возмущениями. Если он установлен в 0.0, используется pag_scale.
Возвращает: StableDiffusionPipelineOutput или tuple
Если return_dict равно True, возвращается StableDiffusionPipelineOutput, иначе возвращается tuple, содержащий выходные изображения.
Функция вызова конвейера для генерации.
Примеры:
>>> # !pip install opencv-python transformers accelerate
>>> from diffusers import AutoPipelineForText2Image, ControlNetModel, AutoencoderKL
>>> from diffusers.utils import load_image
>>> import numpy as np
>>> import torch
>>> import cv2
>>> from PIL import Image
>>> prompt = "aerial view, a futuristic research complex in a bright foggy jungle, hard lighting"
>>> negative_prompt = "low quality, bad quality, sketches"
>>> # download an image
>>> image = load_image(
... "https://hf.co/datasets/hf-internal-testing/diffusers-images/resolve/main/sd_controlnet/hf-logo.png"
... )
>>> # initialize the models and pipeline
>>> controlnet_conditioning_scale = 0.5 # recommended for good generalization
>>> controlnet = ControlNetModel.from_pretrained(
... "diffusers/controlnet-canny-sdxl-1.0", torch_dtype=torch.float16
... )
>>> vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16)
>>> pipe = AutoPipelineForText2Image.from_pretrained(
... "stabilityai/stable-diffusion-xl-base-1.0",
... controlnet=controlnet,
... vae=vae,
... torch_dtype=torch.float16,
... enable_pag=True,
... )
>>> pipe.enable_model_cpu_offload()
>>> # get canny image
>>> image = np.array(image)
>>> image = cv2.Canny(image, 100, 200)
>>> image = image[:, :, None]
>>> image = np.concatenate([image, image, image], axis=2)
>>> canny_image = Image.fromarray(image)
>>> # generate image
>>> image = pipe(
... prompt, controlnet_conditioning_scale=controlnet_conditioning_scale, image=canny_image, pag_scale=0.3
... ).images[0]
encode_prompt[[diffusers.StableDiffusionXLControlNetPAGPipeline.encode_prompt]]
encode_prompt(prompt: str, prompt_2: str | None = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, do_classifier_free_guidance: bool = True, negative_prompt: str | None = None, negative_prompt_2: str | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None, clip_skip: int | None = None)
Параметры:
prompt (str или list[str], необязательный) : промпт для кодирования
prompt_2 (str или list[str], необязательный) : Промпт или промпты, которые будут отправлены в tokenizer_2 и text_encoder_2. Если не задано, в обоих текстовых кодировщиках используется prompt
device : (torch.device): устройство torch
num_images_per_prompt (int) : количество изображений, которые должны быть сгенерированы для каждого промпта
do_classifier_free_guidance (bool) : использовать ли классификаторное свободное наведение (classifier free guidance)
negative_prompt (str или list[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, optional) : масштаб lora, который будет применён ко всем слоям LoRA текстового энкодера, если слои LoRA загружены.
clip_skip (int, optional) : Количество слоев, которые пропускаются в CLIP при вычислении эмбеддингов промпта. Значение 1 означает, что для вычисления эмбеддингов промпта будет использоваться выход предпоследнего слоя.
Кодирует промпт в скрытые состояния текстового энкодера.
get_guidance_scale_embedding[[diffusers.StableDiffusionXLControlNetPAGPipeline.get_guidance_scale_embedding]]
get_guidance_scale_embedding(w: Tensor, embedding_dim: int = 512, dtype: dtype = torch.float32)
Параметры:
w (torch.Tensor) : Генерирует векторы эмбеддингов с заданным масштабом руководства (guidance scale) для последующего обогащения эмбеддингов временных шагов.
embedding_dim (int, необязательный, по умолчанию 512) : Размерность генерируемых эмбеддингов.
dtype (torch.dtype, необязательный, по умолчанию torch.float32) : Тип данных для генерируемых эмбеддингов.
Возвращает: torch.Tensor
Векторы встраиваний с формой (len(w), embedding_dim).
StableDiffusionXLControlNetPAGImg2ImgPipeline[[diffusers.StableDiffusionXLControlNetPAGImg2ImgPipeline]]
diffusers.StableDiffusionXLControlNetPAGImg2ImgPipeline[[diffusers.StableDiffusionXLControlNetPAGImg2ImgPipeline]]
diffusers.StableDiffusionXLControlNetPAGImg2ImgPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, text_encoder_2: CLIPTextModelWithProjection, tokenizer: CLIPTokenizer, tokenizer_2: CLIPTokenizer, unet: UNet2DConditionModel, controlnet: diffusers.models.controlnets.controlnet.ControlNetModel | list[diffusers.models.controlnets.controlnet.ControlNetModel] | tuple[diffusers.models.controlnets.controlnet.ControlNetModel] | diffusers.models.controlnets.multicontrolnet.MultiControlNetModel, scheduler: KarrasDiffusionSchedulers, requires_aesthetics_score: bool = False, force_zeros_for_empty_prompt: bool = True, add_watermarker: bool | None = None, feature_extractor: CLIPImageProcessorPil = None, image_encoder: CLIPVisionModelWithProjection = None, pag_applied_layers: str | list[str] = 'mid')
Параметры:
vae (AutoencoderKL) : Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
text_encoder (CLIPTextModel) : Замороженный текстовый энкодер. Stable Diffusion использует текстовую часть 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 для удаления шума из закодированных латентов изображения.
controlnet (ControlNetModel или list[ControlNetModel]) : Обеспечивает дополнительное условие для unet в процессе денойзинга. Если вы зададите несколько ControlNet в виде списка, выходы каждого ControlNet будут сложены вместе, чтобы создать одно объединённое дополнительное условие.
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, если пакет установлен, в противном случае водяной знак не добавляется.
feature_extractor (CLIPImageProcessor) : экземпляр CLIPImageProcessor для извлечения признаков из сгенерированных изображений; используется в качестве входных данных для safety_checker.
Пайплайн для генерации изображений по изображению с использованием Stable Diffusion XL и управления через ControlNet.
Эта модель наследуется от DiffusionPipeline. См. документацию родительского класса для общих методов, которые библиотека реализует для всех пайплайнов (например, загрузка или сохранение, запуск на конкретном устройстве и т. д.)
Пайплайн также наследует следующие методы загрузки:
- load_textual_inversion() для загрузки эмбеддингов текстовой инверсии
- load_lora_weights() для загрузки весов LoRA
- save_lora_weights() для сохранения весов LoRA
- load_ip_adapter() для загрузки IP-адаптеров
call[[diffusers.StableDiffusionXLControlNetPAGImg2ImgPipeline.call]]
__call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, control_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, height: int | None = None, width: int | None = None, strength: float = 0.8, num_inference_steps: int = 50, guidance_scale: float = 5.0, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, num_images_per_prompt: int | None = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: list[torch.Tensor] | None = None, output_type: str | None = 'pil', return_dict: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, controlnet_conditioning_scale: float | list[float] = 0.8, guess_mode: bool = False, control_guidance_start: float | list[float] = 0.0, control_guidance_end: float | list[float] = 1.0, original_size: tuple[int, int] = None, crops_coords_top_left: tuple[int, int] = (0, 0), target_size: tuple[int, int] = None, negative_original_size: tuple[int, int] | None = None, negative_crops_coords_top_left: tuple[int, int] = (0, 0), negative_target_size: tuple[int, int] | None = None, aesthetic_score: float = 6.0, negative_aesthetic_score: float = 2.5, clip_skip: int | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], pag_scale: float = 3.0, pag_adaptive_scale: float = 0.0)
Параметры:
prompt (str или list[str], необязательный) : Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передать prompt_embeds вместо него.
prompt_2 (str или list[str], необязательный) : Промпт или промпты, которые будут отправлены в tokenizer_2 и text_encoder_2. Если не задано, в обоих текстовых кодировщиках используется prompt
image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image], list[np.ndarray], : list[list[torch.Tensor]], list[list[np.ndarray]] или list[list[PIL.Image.Image]]): начальное изображение будет использоваться как отправная точка для процесса генерации изображений. Также можно передавать латенты изображений в качестве image; при прямой передаче латентов они не будут кодироваться повторно.
control_image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image], list[np.ndarray], : list[list[torch.Tensor]], list[list[np.ndarray]] или list[list[PIL.Image.Image]]): входное условие для ControlNet. ControlNet использует это входное условие для генерации направляющих сигналов для Unet. Если тип указан как torch.Tensor, он передаётся в ControlNet без изменений. Также в качестве изображения может приниматься PIL.Image.Image. Размеры выходного изображения по умолчанию совпадают с размерами image. Если переданы высота и/или ширина, image масштабируется в соответствии с ними. Если при инициализации указано несколько ControlNet, изображения должны передаваться в виде списка, чтобы каждый элемент списка мог быть корректно сгруппирован в батч для входа в отдельный controlnet.
height (int, optional, по умолчанию — размер control_image) : Высота генерируемого изображения в пикселях. Значения ниже 512 пикселей будут работать некорректно для stabilityai/stable-diffusion-xl-base-1.0 и контрольных точек, которые не были специально дообучены на низких разрешениях.
width (int, необязательный, по умолчанию — размер control_image) : Ширина генерируемого изображения в пикселях. Значения менее 512 пикселей будут работать некорректно для stabilityai/stable-diffusion-xl-base-1.0 и контрольных точек, которые не были специально дообучены на низких разрешениях.
strength (float, optional, по умолчанию 0.8) : Определяет степень трансформации исходного image. Значение должно быть в диапазоне от 0 до 1. image используется как отправная точка, и чем выше strength, тем больше шума добавляется. Количество шагов денойзинга зависит от количества шума, добавленного изначально. Когда strength равно 1, добавляется максимальное количество шума, и процесс денойзинга выполняется в течение полного числа итераций, указанного в num_inference_steps. Значение 1 фактически игнорирует image.
num_inference_steps (int, optional, по умолчанию 50) : Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.
guidance_scale (float, optional, по умолчанию 7.5) : Масштаб руководства, как определено в Classifier-Free Diffusion Guidance. guidance_scale определяется как w из уравнения 2 в Imagen Paper. Масштаб руководства активируется при установке guidance_scale > 1. Более высокий масштаб руководства способствует генерации изображений, тесно связанных с текстовым prompt, обычно за счёт снижения качества изображения.
negative_prompt (str или list[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, optional, по умолчанию 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.
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: PIL.Image.Image или np.array.
return_dict (bool, необязательный, по умолчанию True) : Возвращать ли StableDiffusionPipelineOutput вместо обычного кортежа.
cross_attention_kwargs (dict, необязательный) : Словарь kwargs, который при указании передается в AttentionProcessor, определенный в self.processor в diffusers.models.attention_processor.
controlnet_conditioning_scale (float или list[float], необязательный, по умолчанию 1.0) : Выходные данные controlnet умножаются на controlnet_conditioning_scale перед добавлением к остаточному соединению в исходном unet. Если при инициализации указано несколько ControlNet, соответствующий масштаб можно задать в виде списка.
guess_mode (bool, необязательный, по умолчанию False) : В этом режиме энкодер ControlNet будет стараться распознать содержимое входного изображения даже при удалении всех промптов. Рекомендуется значение guidance_scale от 3.0 до 5.0.
control_guidance_start (float или list[float], необязательный, по умолчанию 0.0) : Доля от общего числа шагов, начиная с которой controlnet начинает применяться.
control_guidance_end (float или list[float], необязательный, по умолчанию 1.0) : Доля от общего числа шагов, на которой controlnet прекращает применяться.
original_size (tuple[int], optional, по умолчанию (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], optional, по умолчанию (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], optional, по умолчанию (1024, 1024)) : В большинстве случаев target_size следует установить в желаемую высоту и ширину генерируемого изображения. Если не указано, по умолчанию будет (height, width). Часть микроусловий SDXL, описанная в разделе 2.2 статьи https://huggingface.co/papers/2307.01952.
negative_original_size (tuple[int], optional, по умолчанию (1024, 1024)) : Используется для негативного условия процесса генерации на основе конкретного разрешения изображения. Является частью микроусловия SDXL, описанной в разделе 2.2 статьи https://huggingface.co/papers/2307.01952. Для получения дополнительной информации см. этот тред: https://github.com/huggingface/diffusers/issues/4208.
negative_crops_coords_top_left (tuple[int], optional, по умолчанию (0, 0)) : Используется для негативного обусловливания процесса генерации на основе конкретных координат кадрирования. Является частью микрообусловливания SDXL, описанной в разделе 2.2 статьи https://huggingface.co/papers/2307.01952. Для получения дополнительной информации см. этот тред: https://github.com/huggingface/diffusers/issues/4208.
negative_target_size (tuple[int], optional, по умолчанию (1024, 1024)) : Используется для негативного обусловливания процесса генерации на основе целего разрешения изображения. В большинстве случаев должно совпадать с target_size. Является частью микрообусловливания SDXL, описанной в разделе 2.2 статьи https://huggingface.co/papers/2307.01952. Для получения дополнительной информации см. этот тред: https://github.com/huggingface/diffusers/issues/4208.
aesthetic_score (float, необязательный, по умолчанию 6.0) : Используется для имитации эстетической оценки сгенерированного изображения путём влияния на положительное текстовое условие. Является частью микроусловий SDXL, как описано в разделе 2.2 статьи https://huggingface.co/papers/2307.01952.
negative_aesthetic_score (float, optional, по умолчанию 2.5) : Часть микроусловий SDXL, описанных в разделе 2.2 статьи https://huggingface.co/papers/2307.01952. Может использоваться для имитации эстетической оценки сгенерированного изображения путём влияния на отрицательное текстовое условие.
clip_skip (int, optional) : Количество слоев, которые пропускаются в CLIP при вычислении эмбеддингов промпта. Значение 1 означает, что для вычисления эмбеддингов промпта будет использоваться выход предпоследнего слоя.
callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, optional) : функция или подкласс 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, optional) : Список тензорных входных данных для функции callback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргумента callback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте ._callback_tensor_inputs вашего класса pipeline.
pag_scale (float, optional, по умолчанию 3.0) : Коэффициент масштабирования для направленного внимания с возмущениями. Если установлено значение 0.0, направленное внимание с возмущениями не будет использоваться.
pag_adaptive_scale (float, optional, по умолчанию 0.0) : Адаптивный коэффициент масштабирования для направленного внимания с возмущениями. Если он установлен в 0.0, используется pag_scale.
Возвращает: ~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput или tuple
~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput, если return_dict равно True, иначе tuple с выходными изображениями.
Функция, вызываемая при обращении к конвейеру для генерации.
Примеры:
>>> # pip install accelerate transformers safetensors diffusers
>>> import torch
>>> import numpy as np
>>> from PIL import Image
>>> from transformers import DPTFeatureExtractor, DPTForDepthEstimation
>>> from diffusers import ControlNetModel, StableDiffusionXLControlNetPAGImg2ImgPipeline, AutoencoderKL
>>> from diffusers.utils import load_image
>>> depth_estimator = DPTForDepthEstimation.from_pretrained("Intel/dpt-hybrid-midas").to("cuda")
>>> feature_extractor = DPTFeatureExtractor.from_pretrained("Intel/dpt-hybrid-midas")
>>> controlnet = ControlNetModel.from_pretrained(
... "diffusers/controlnet-depth-sdxl-1.0-small",
... variant="fp16",
... use_safetensors="True",
... torch_dtype=torch.float16,
... )
>>> vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16)
>>> pipe = StableDiffusionXLControlNetPAGImg2ImgPipeline.from_pretrained(
... "stabilityai/stable-diffusion-xl-base-1.0",
... controlnet=controlnet,
... vae=vae,
... variant="fp16",
... use_safetensors=True,
... torch_dtype=torch.float16,
... enable_pag=True,
... )
>>> pipe.enable_model_cpu_offload()
>>> def get_depth_map(image):
... image = feature_extractor(images=image, return_tensors="pt").pixel_values.to("cuda")
... with torch.no_grad(), torch.autocast("cuda"):
... depth_map = depth_estimator(image).predicted_depth
... depth_map = torch.nn.functional.interpolate(
... depth_map.unsqueeze(1),
... size=(1024, 1024),
... mode="bicubic",
... align_corners=False,
... )
... depth_min = torch.amin(depth_map, dim=[1, 2, 3], keepdim=True)
... depth_max = torch.amax(depth_map, dim=[1, 2, 3], keepdim=True)
... depth_map = (depth_map - depth_min) / (depth_max - depth_min)
... image = torch.cat([depth_map] * 3, dim=1)
... image = image.permute(0, 2, 3, 1).cpu().numpy()[0]
... image = Image.fromarray((image * 255.0).clip(0, 255).astype(np.uint8))
... return image
>>> prompt = "A robot, 4k photo"
>>> image = load_image(
... "https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/kandinsky/cat.png"
... ).resize((1024, 1024))
>>> controlnet_conditioning_scale = 0.5 # recommended for good generalization
>>> depth_image = get_depth_map(image)
>>> images = pipe(
... prompt,
... image=image,
... control_image=depth_image,
... strength=0.99,
... num_inference_steps=50,
... controlnet_conditioning_scale=controlnet_conditioning_scale,
... ).images
>>> images[0].save(f"robot_cat.png")
encode_prompt[[diffusers.StableDiffusionXLControlNetPAGImg2ImgPipeline.encode_prompt]]
encode_prompt(prompt: str, prompt_2: str | None = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, do_classifier_free_guidance: bool = True, negative_prompt: str | None = None, negative_prompt_2: str | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None, clip_skip: int | None = None)
Параметры:
prompt (str или list[str], необязательный) : промпт для кодирования
prompt_2 (str или list[str], необязательный) : Промпт или промпты, которые будут отправлены в tokenizer_2 и text_encoder_2. Если не задано, в обоих текстовых кодировщиках используется prompt
device : (torch.device): устройство torch
num_images_per_prompt (int) : количество изображений, которые должны быть сгенерированы для каждого промпта
do_classifier_free_guidance (bool) : использовать ли классификаторное свободное наведение (classifier free guidance)
negative_prompt (str или list[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, optional) : масштаб lora, который будет применён ко всем слоям LoRA текстового энкодера, если слои LoRA загружены.
clip_skip (int, optional) : Количество слоев, которые пропускаются в CLIP при вычислении эмбеддингов промпта. Значение 1 означает, что для вычисления эмбеддингов промпта будет использоваться выход предпоследнего слоя.
Кодирует промпт в скрытые состояния текстового энкодера.
StableDiffusion3PAGPipeline[[diffusers.StableDiffusion3PAGPipeline]]
diffusers.StableDiffusion3PAGPipeline[[diffusers.StableDiffusion3PAGPipeline]]
diffusers.StableDiffusion3PAGPipeline(transformer: SD3Transformer2DModel, scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKL, text_encoder: CLIPTextModelWithProjection, tokenizer: CLIPTokenizer, text_encoder_2: CLIPTextModelWithProjection, tokenizer_2: CLIPTokenizer, text_encoder_3: T5EncoderModel, tokenizer_3: T5Tokenizer, pag_applied_layers: str | list[str] = 'blocks.1')
Параметры:
transformer (SD3Transformer2DModel) : архитектура условного трансформера (MMDiT) для удаления шума из закодированных латентов изображения.
scheduler (FlowMatchEulerDiscreteScheduler) : планировщик, используемый в связке с transformer для удаления шума из закодированных латентов изображения.
vae (AutoencoderKL) : Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
text_encoder (CLIPTextModelWithProjection) : CLIP, а именно вариант clip-vit-large-patch14, с дополнительным слоем проекции, инициализированным диагональной матрицей размерности hidden_size.
text_encoder_2 (CLIPTextModelWithProjection) : CLIP, а именно вариант laion/CLIP-ViT-bigG-14-laion2B-39B-b160k.
text_encoder_3 (T5EncoderModel) : Замороженный текстовый энкодер. Stable Diffusion 3 использует T5, а именно вариант t5-v1_1-xxl.
tokenizer (CLIPTokenizer) : Токенизатор класса CLIPTokenizer.
tokenizer_2 (CLIPTokenizer) : Второй токенизатор класса CLIPTokenizer.
tokenizer_3 (T5TokenizerFast) : Токенизатор класса T5Tokenizer.
Конвейер PAG для генерации изображений по тексту с использованием Stable Diffusion 3.
call[[diffusers.StableDiffusion3PAGPipeline.call]]
__call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, prompt_3: str | list[str] | None = None, height: int | None = None, width: int | None = None, num_inference_steps: int = 28, sigmas: list[float] | None = None, guidance_scale: float = 7.0, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, negative_prompt_3: str | list[str] | None = None, num_images_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.FloatTensor] = None, prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, output_type: str | None = 'pil', return_dict: bool = True, joint_attention_kwargs: dict[str, typing.Any] | None = None, clip_skip: int | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 256, pag_scale: float = 3.0, pag_adaptive_scale: float = 0.0)
Параметры:
prompt (str или list[str], необязательный) : Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передать prompt_embeds вместо него.
prompt_2 (str или list[str], необязательный) : Промпт или промпты, которые будут переданы в tokenizer_2 и text_encoder_2. Если не задано, вместо этого будет использоваться prompt
prompt_3 (str или list[str], необязательный) : Промпт или промпты, которые будут переданы в tokenizer_3 и text_encoder_3. Если не задано, вместо него будет использоваться prompt
height (int, optional, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) : Высота генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов.
width (int, optional, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) : Ширина генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов.
num_inference_steps (int, optional, по умолчанию 50) : Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.
sigmas (list[float], optional) : Пользовательские сигмы для процесса денойзинга в планировщиках, поддерживающих аргумент sigmas в методе set_timesteps. Если не задано, будет использовано поведение по умолчанию при передаче num_inference_steps.
guidance_scale (float, optional, по умолчанию 7.0) : Масштаб руководства, определённый в Classifier-Free Diffusion Guidance. guidance_scale определяется как w из уравнения 2 в Imagen Paper. Масштаб руководства активируется при установке guidance_scale > 1. Более высокий масштаб руководства способствует генерации изображений, тесно связанных с текстовым prompt, обычно за счёт снижения качества изображения.
negative_prompt (str или list[str], необязательный) : Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передать negative_prompt_embeds. Игнорируется, если не используется направляющее влияние (то есть игнорируется, если guidance_scale меньше 1).
negative_prompt_2 (str или list[str], необязательный) : Промпт или промпты, которые не должны направлять генерацию изображения, и которые передаются в tokenizer_2 и text_encoder_2. Если не задан, вместо него используется negative_prompt
negative_prompt_3 (str или list[str], необязательный) : Промпт или промпты, которые не должны направлять генерацию изображения, для передачи в tokenizer_3 и text_encoder_3. Если не задан, вместо него используется negative_prompt
num_images_per_prompt (int, необязательный, по умолчанию 1) : Количество изображений, генерируемых на один запрос.
generator (torch.Generator или list[torch.Generator], необязательный) : Один или список генераторов torch для обеспечения детерминированности генерации.
latents (torch.FloatTensor, необязательный) : Предварительно сгенерированные шумовые латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Позволяет корректировать одну и ту же генерацию с помощью разных промптов. Если не заданы, тензор латентов будет сгенерирован путём выборки с использованием переданного случайного generator.
prompt_embeds (torch.FloatTensor, необязательный) : Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлены, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
negative_prompt_embeds (torch.FloatTensor, необязательный) : Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлены, negative_prompt_embeds будут сгенерированы из входного аргумента negative_prompt.
pooled_prompt_embeds (torch.FloatTensor, необязательный) : Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлены, пул-эмбеддинги текста будут сгенерированы из аргумента входных данных prompt.
negative_pooled_prompt_embeds (torch.FloatTensor, необязательный) : Предварительно сгенерированные отрицательные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промптов. Если не предоставлены, пул-эмбеддинги negative_prompt_embeds будут сгенерированы из входного аргумента negative_prompt.
output_type (str, необязательный, по умолчанию "pil") : Формат вывода для генерируемого изображения. Выберите между PIL: PIL.Image.Image или np.array.
return_dict (bool, необязательный, по умолчанию True) : Возвращать ли ~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput вместо обычного кортежа.
joint_attention_kwargs (dict, необязательный) : Словарь kwargs, который при указании передается в AttentionProcessor, определенный в self.processor в diffusers.models.attention_processor.
clip_skip (int, optional) : Количество слоев, которые пропускаются в CLIP при вычислении эмбеддингов промпта. Значение 1 означает, что для вычисления эмбеддингов промпта будет использоваться выход предпоследнего слоя.
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.
max_sequence_length (int по умолчанию 256) : Максимальная длина последовательности, используемая с prompt.
pag_scale (float, optional, по умолчанию 3.0) : Коэффициент масштабирования для направленного внимания с возмущениями. Если установлено значение 0.0, направленное внимание с возмущениями не будет использоваться.
pag_adaptive_scale (float, optional, по умолчанию 0.0) : Адаптивный коэффициент масштабирования для направленного внимания с возмущениями. Если он установлен в 0.0, используется pag_scale.
Возвращает: ~pipelines.stable_diffusion_3.StableDiffusion3PipelineOutput или tuple
~pipelines.stable_diffusion_3.StableDiffusion3PipelineOutput, если return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список с сгенерированными изображениями.
Функция, вызываемая при обращении к конвейеру для генерации.
Примеры:
>>> import torch
>>> from diffusers import AutoPipelineForText2Image
>>> pipe = AutoPipelineForText2Image.from_pretrained(
... "stabilityai/stable-diffusion-3-medium-diffusers",
... torch_dtype=torch.float16,
... enable_pag=True,
... pag_applied_layers=["blocks.13"],
... )
>>> pipe.to("cuda")
>>> prompt = "A cat holding a sign that says hello world"
>>> image = pipe(prompt, guidance_scale=5.0, pag_scale=0.7).images[0]
>>> image.save("sd3_pag.png")
encode_prompt[[diffusers.StableDiffusion3PAGPipeline.encode_prompt]]
encode_prompt(prompt: str | list[str], prompt_2: str | list[str], prompt_3: str | list[str], device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, do_classifier_free_guidance: bool = True, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, negative_prompt_3: str | list[str] | None = None, prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, clip_skip: int | None = None, max_sequence_length: int = 256, lora_scale: float | None = None)
Параметры:
prompt (str или list[str], необязательный) : промпт для кодирования
prompt_2 (str или list[str], необязательный) : Промпт или промпты, которые будут отправлены в tokenizer_2 и text_encoder_2. Если не задано, во всех text-encoders используется prompt
prompt_3 (str или list[str], необязательный) : Промпт или промпты, которые будут переданы в tokenizer_3 и text_encoder_3. Если не задано, во всех text-encoders используется prompt
device : (torch.device): устройство torch
num_images_per_prompt (int) : количество изображений, которые должны быть сгенерированы для каждого промпта
do_classifier_free_guidance (bool) : использовать ли классификаторное свободное наведение (classifier free guidance)
negative_prompt (str или list[str], необязательный) : Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передать negative_prompt_embeds. Игнорируется, если не используется направляющее влияние (то есть игнорируется, если guidance_scale меньше 1).
negative_prompt_2 (str или list[str], необязательный) : Промпт или промпты, которые не должны направлять генерацию изображения, и которые передаются в tokenizer_2 и text_encoder_2. Если не задан, negative_prompt используется во всех текстовых кодировщиках.
negative_prompt_3 (str или list[str], необязательный) : Промпт или промпты, которые не должны направлять генерацию изображения, для передачи в tokenizer_3 и text_encoder_3. Если не задан, negative_prompt используется во всех текстовых кодировщиках.
prompt_embeds (torch.FloatTensor, необязательный) : Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлены, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
negative_prompt_embeds (torch.FloatTensor, необязательный) : Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлены, negative_prompt_embeds будут сгенерированы из входного аргумента negative_prompt.
pooled_prompt_embeds (torch.FloatTensor, необязательный) : Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлены, пул-эмбеддинги текста будут сгенерированы из аргумента входных данных prompt.
negative_pooled_prompt_embeds (torch.FloatTensor, необязательный) : Предварительно сгенерированные отрицательные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промптов. Если не предоставлены, пул-эмбеддинги negative_prompt_embeds будут сгенерированы из входного аргумента negative_prompt.
clip_skip (int, optional) : Количество слоев, которые пропускаются в CLIP при вычислении эмбеддингов промпта. Значение 1 означает, что для вычисления эмбеддингов промпта будет использоваться выход предпоследнего слоя.
lora_scale (float, optional) : масштаб lora, который будет применён ко всем слоям LoRA текстового энкодера, если слои LoRA загружены.
StableDiffusion3PAGImg2ImgPipeline[[diffusers.StableDiffusion3PAGImg2ImgPipeline]]
diffusers.StableDiffusion3PAGImg2ImgPipeline[[diffusers.StableDiffusion3PAGImg2ImgPipeline]]
diffusers.StableDiffusion3PAGImg2ImgPipeline(transformer: SD3Transformer2DModel, scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKL, text_encoder: CLIPTextModelWithProjection, tokenizer: CLIPTokenizer, text_encoder_2: CLIPTextModelWithProjection, tokenizer_2: CLIPTokenizer, text_encoder_3: T5EncoderModel, tokenizer_3: T5Tokenizer, pag_applied_layers: str | list[str] = 'blocks.1')
Параметры:
transformer (SD3Transformer2DModel) : архитектура условного трансформера (MMDiT) для удаления шума из закодированных латентов изображения.
scheduler (FlowMatchEulerDiscreteScheduler) : планировщик, используемый в связке с transformer для удаления шума из закодированных латентов изображения.
vae (AutoencoderKL) : Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
text_encoder (CLIPTextModelWithProjection) : CLIP, а именно вариант clip-vit-large-patch14, с дополнительным слоем проекции, инициализированным диагональной матрицей размерности hidden_size.
text_encoder_2 (CLIPTextModelWithProjection) : CLIP, а именно вариант laion/CLIP-ViT-bigG-14-laion2B-39B-b160k.
text_encoder_3 (T5EncoderModel) : Замороженный текстовый энкодер. Stable Diffusion 3 использует T5, а именно вариант t5-v1_1-xxl.
tokenizer (CLIPTokenizer) : Токенизатор класса CLIPTokenizer.
tokenizer_2 (CLIPTokenizer) : Второй токенизатор класса CLIPTokenizer.
tokenizer_3 (T5TokenizerFast) : Токенизатор класса T5Tokenizer.
Конвейер PAG для генерации изображений из изображений с использованием Stable Diffusion 3.
call[[diffusers.StableDiffusion3PAGImg2ImgPipeline.call]]
__call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, prompt_3: str | list[str] | None = None, height: int | None = None, width: int | None = None, image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, strength: float = 0.6, num_inference_steps: int = 50, sigmas: list[float] | None = None, guidance_scale: float = 7.0, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, negative_prompt_3: str | list[str] | None = None, num_images_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.FloatTensor] = None, prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, output_type: str | None = 'pil', return_dict: bool = True, joint_attention_kwargs: dict[str, typing.Any] | None = None, clip_skip: int | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 256, pag_scale: float = 3.0, pag_adaptive_scale: float = 0.0)
Параметры:
prompt (str или list[str], необязательный) : Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передать prompt_embeds вместо него.
prompt_2 (str или list[str], необязательный) : Промпт или промпты, которые будут переданы в tokenizer_2 и text_encoder_2. Если не задано, вместо этого будет использоваться prompt
prompt_3 (str или list[str], необязательный) : Промпт или промпты, которые будут переданы в tokenizer_3 и text_encoder_3. Если не задано, вместо него будет использоваться prompt
height (int, необязательный, по умолчанию self.default_sample_size * self.vae_scale_factor) : Высота генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов.
width (int, необязательный, по умолчанию self.default_sample_size * self.vae_scale_factor) : Ширина генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов.
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, optional, по умолчанию 0.8) : Определяет степень трансформации исходного image. Значение должно быть в диапазоне от 0 до 1. image используется как отправная точка, и чем выше strength, тем больше шума добавляется. Количество шагов денойзинга зависит от количества шума, добавленного изначально. Когда strength равно 1, добавляется максимальное количество шума, и процесс денойзинга выполняется в течение полного числа итераций, указанного в num_inference_steps. Значение 1 фактически игнорирует image.
num_inference_steps (int, optional, по умолчанию 50) : Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.
sigmas (list[float], optional) : Пользовательские сигмы для процесса денойзинга в планировщиках, поддерживающих аргумент sigmas в методе set_timesteps. Если не задано, будет использовано поведение по умолчанию при передаче num_inference_steps.
guidance_scale (float, optional, по умолчанию 7.0) : Масштаб руководства, определённый в Classifier-Free Diffusion Guidance. guidance_scale определяется как w из уравнения 2 в Imagen Paper. Масштаб руководства активируется при установке guidance_scale > 1. Более высокий масштаб руководства способствует генерации изображений, тесно связанных с текстовым prompt, обычно за счёт снижения качества изображения.
negative_prompt (str или list[str], необязательный) : Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передать negative_prompt_embeds. Игнорируется, если не используется направляющее влияние (то есть игнорируется, если guidance_scale меньше 1).
negative_prompt_2 (str или list[str], необязательный) : Промпт или промпты, которые не должны направлять генерацию изображения, и которые передаются в tokenizer_2 и text_encoder_2. Если не задан, вместо него используется negative_prompt
negative_prompt_3 (str или list[str], необязательный) : Промпт или промпты, которые не должны направлять генерацию изображения, для передачи в tokenizer_3 и text_encoder_3. Если не задан, вместо него используется negative_prompt
num_images_per_prompt (int, необязательный, по умолчанию 1) : Количество изображений, генерируемых на один запрос.
generator (torch.Generator или list[torch.Generator], необязательный) : Один или список генераторов torch для обеспечения детерминированности генерации.
latents (torch.FloatTensor, необязательный) : Предварительно сгенерированные шумовые латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Позволяет корректировать одну и ту же генерацию с помощью разных промптов. Если не заданы, тензор латентов будет сгенерирован путём выборки с использованием переданного случайного generator.
prompt_embeds (torch.FloatTensor, необязательный) : Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлены, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
negative_prompt_embeds (torch.FloatTensor, необязательный) : Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлены, negative_prompt_embeds будут сгенерированы из входного аргумента negative_prompt.
pooled_prompt_embeds (torch.FloatTensor, необязательный) : Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлены, пул-эмбеддинги текста будут сгенерированы из аргумента входных данных prompt.
negative_pooled_prompt_embeds (torch.FloatTensor, необязательный) : Предварительно сгенерированные отрицательные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промптов. Если не предоставлены, пул-эмбеддинги negative_prompt_embeds будут сгенерированы из входного аргумента negative_prompt.
output_type (str, необязательный, по умолчанию "pil") : Формат вывода для генерируемого изображения. Выберите между PIL: PIL.Image.Image или np.array.
return_dict (bool, необязательный, по умолчанию True) : Возвращать ли ~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput вместо обычного кортежа.
joint_attention_kwargs (dict, необязательный) : Словарь kwargs, который при указании передается в AttentionProcessor, определенный в self.processor в diffusers.models.attention_processor.
clip_skip (int, optional) : Количество слоев, которые пропускаются в CLIP при вычислении эмбеддингов промпта. Значение 1 означает, что для вычисления эмбеддингов промпта будет использоваться выход предпоследнего слоя.
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.
max_sequence_length (int по умолчанию 256) : Максимальная длина последовательности, используемая с prompt.
pag_scale (float, optional, по умолчанию 3.0) : Коэффициент масштабирования для направленного внимания с возмущениями. Если установлено значение 0.0, направленное внимание с возмущениями не будет использоваться.
pag_adaptive_scale (float, optional, по умолчанию 0.0) : Адаптивный коэффициент масштабирования для направленного внимания с возмущениями. Если он установлен в 0.0, используется pag_scale.
Возвращает: ~pipelines.stable_diffusion_3.StableDiffusion3PipelineOutput или tuple
~pipelines.stable_diffusion_3.StableDiffusion3PipelineOutput, если return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список с сгенерированными изображениями.
Функция, вызываемая при обращении к конвейеру для генерации.
Примеры:
>>> import torch
>>> from diffusers import StableDiffusion3PAGImg2ImgPipeline
>>> from diffusers.utils import load_image
>>> pipe = StableDiffusion3PAGImg2ImgPipeline.from_pretrained(
... "stabilityai/stable-diffusion-3-medium-diffusers",
... torch_dtype=torch.float16,
... pag_applied_layers=["blocks.13"],
... )
>>> pipe.to("cuda")
>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> url = "https://huggingface.co/datasets/patrickvonplaten/images/resolve/main/aa_xl/000000009.png"
>>> init_image = load_image(url).convert("RGB")
>>> image = pipe(prompt, image=init_image, guidance_scale=5.0, pag_scale=0.7).images[0]
encode_prompt[[diffusers.StableDiffusion3PAGImg2ImgPipeline.encode_prompt]]
encode_prompt(prompt: str | list[str], prompt_2: str | list[str], prompt_3: str | list[str], device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, do_classifier_free_guidance: bool = True, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, negative_prompt_3: str | list[str] | None = None, prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, clip_skip: int | None = None, max_sequence_length: int = 256, lora_scale: float | None = None)
Параметры:
prompt (str или list[str], необязательный) : промпт для кодирования
prompt_2 (str или list[str], необязательный) : Промпт или промпты, которые будут отправлены в tokenizer_2 и text_encoder_2. Если не задано, во всех text-encoders используется prompt
prompt_3 (str или list[str], необязательный) : Промпт или промпты, которые будут переданы в tokenizer_3 и text_encoder_3. Если не задано, во всех text-encoders используется prompt
device : (torch.device): устройство torch
num_images_per_prompt (int) : количество изображений, которые должны быть сгенерированы для каждого промпта
do_classifier_free_guidance (bool) : использовать ли классификаторное свободное наведение (classifier free guidance)
negative_prompt (str или list[str], необязательный) : Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передать negative_prompt_embeds. Игнорируется, если не используется направляющее влияние (то есть игнорируется, если guidance_scale меньше 1).
negative_prompt_2 (str или list[str], необязательный) : Промпт или промпты, которые не должны направлять генерацию изображения, и которые передаются в tokenizer_2 и text_encoder_2. Если не задан, negative_prompt используется во всех текстовых кодировщиках.
negative_prompt_3 (str или list[str], необязательный) : Промпт или промпты, которые не должны направлять генерацию изображения, для передачи в tokenizer_3 и text_encoder_3. Если не задан, negative_prompt используется во всех текстовых кодировщиках.
prompt_embeds (torch.FloatTensor, необязательный) : Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлены, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
negative_prompt_embeds (torch.FloatTensor, необязательный) : Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлены, negative_prompt_embeds будут сгенерированы из входного аргумента negative_prompt.
pooled_prompt_embeds (torch.FloatTensor, необязательный) : Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлены, пул-эмбеддинги текста будут сгенерированы из аргумента входных данных prompt.
negative_pooled_prompt_embeds (torch.FloatTensor, необязательный) : Предварительно сгенерированные отрицательные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промптов. Если не предоставлены, пул-эмбеддинги negative_prompt_embeds будут сгенерированы из входного аргумента negative_prompt.
clip_skip (int, optional) : Количество слоев, которые пропускаются в CLIP при вычислении эмбеддингов промпта. Значение 1 означает, что для вычисления эмбеддингов промпта будет использоваться выход предпоследнего слоя.
lora_scale (float, optional) : масштаб lora, который будет применён ко всем слоям LoRA текстового энкодера, если слои LoRA загружены.
PixArtSigmaPAGPipeline[[diffusers.PixArtSigmaPAGPipeline]]
diffusers.PixArtSigmaPAGPipeline[[diffusers.PixArtSigmaPAGPipeline]]
diffusers.PixArtSigmaPAGPipeline(tokenizer: T5Tokenizer, text_encoder: T5EncoderModel, vae: AutoencoderKL, transformer: PixArtTransformer2DModel, scheduler: KarrasDiffusionSchedulers, pag_applied_layers: str | list[str] = 'blocks.1')
Конвейер PAG для генерации изображений по тексту с использованием PixArt-Sigma.
call[[diffusers.PixArtSigmaPAGPipeline.call]]
__call__(prompt: str | list[str] = None, negative_prompt: str = '', num_inference_steps: int = 20, timesteps: list[int] = None, sigmas: list[float] = None, guidance_scale: float = 4.5, num_images_per_prompt: int | None = 1, height: int | None = None, width: int | None = None, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_attention_mask: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, callback: typing.Optional[typing.Callable[[int, int, torch.Tensor], NoneType]] = None, callback_steps: int = 1, clean_caption: bool = True, use_resolution_binning: bool = True, max_sequence_length: int = 300, pag_scale: float = 3.0, pag_adaptive_scale: float = 0.0)
Параметры:
prompt (str или list[str], необязательный) : Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передать prompt_embeds вместо него.
negative_prompt (str или list[str], необязательный) : Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передать negative_prompt_embeds. Игнорируется, если не используется направляющее влияние (то есть игнорируется, если guidance_scale меньше 1).
num_inference_steps (int, optional, по умолчанию 100) : Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.
timesteps (list[int], optional) : Пользовательские шаги для процесса денойзинга с планировщиками, поддерживающими аргумент timesteps в их методе set_timesteps. Если не определено, будет использоваться поведение по умолчанию при передаче num_inference_steps. Должны быть в порядке убывания.
sigmas (list[float], optional) : Пользовательские сигмы для процесса денойзинга в планировщиках, поддерживающих аргумент sigmas в методе set_timesteps. Если не задано, будет использовано поведение по умолчанию при передаче num_inference_steps.
guidance_scale (float, optional, по умолчанию 4.5) : Масштаб руководства, как определено в Classifier-Free Diffusion Guidance. guidance_scale определяется как w из уравнения 2 в Imagen Paper. Масштаб руководства активируется при установке guidance_scale > 1. Более высокий масштаб руководства способствует генерации изображений, тесно связанных с текстовым prompt, обычно за счёт снижения качества изображения.
num_images_per_prompt (int, необязательный, по умолчанию 1) : Количество изображений, генерируемых на один запрос.
height (int, optional, по умолчанию self.unet.config.sample_size) : Высота генерируемого изображения в пикселях.
width (int, optional, по умолчанию self.unet.config.sample_size) : Ширина генерируемого изображения в пикселях.
eta (float, optional, по умолчанию 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.
prompt_attention_mask (torch.Tensor, необязательный) : Предварительно сгенерированная маска внимания для текстовых эмбеддингов.
negative_prompt_embeds (torch.Tensor, необязательный) : Предварительно сгенерированные отрицательные текстовые эмбеддинги. Для PixArt-Sigma этот отрицательный промпт должен быть "". Если не указан, negative_prompt_embeds будет сгенерирован из аргумента negative_prompt.
negative_prompt_attention_mask (torch.Tensor, необязательный) : Предварительно сгенерированная маска внимания для отрицательных текстовых эмбеддингов.
output_type (str, необязательный, по умолчанию "pil") : Формат вывода для генерируемого изображения. Выберите между PIL: PIL.Image.Image или np.array.
return_dict (bool, необязательный, по умолчанию True) : Возвращать ли ~pipelines.stable_diffusion.IFPipelineOutput вместо обычного кортежа.
callback (Callable, необязательный) : функция, которая будет вызываться каждые callback_steps шагов во время инференса. Функция будет вызвана со следующими аргументами: callback(step: int, timestep: int, latents: torch.Tensor).
callback_steps (int, optional, по умолчанию 1) : Частота вызова функции callback. Если не указано, callback будет вызываться на каждом шаге.
clean_caption (bool, необязательный, по умолчанию True) : Указывает, следует ли очищать подпись перед созданием эмбеддингов. Требует установки beautifulsoup4 и ftfy. Если зависимости не установлены, эмбеддинги будут созданы из исходного промпта.
use_resolution_binning (bool по умолчанию True) : Если установлено в True, запрашиваемые высота и ширина сначала сопоставляются с ближайшими разрешениями с помощью ASPECT_RATIO_1024_BIN. После того как полученные латенты декодируются в изображения, они масштабируются обратно до запрошенного разрешения. Полезно для генерации изображений, не являющихся квадратными.
max_sequence_length (int по умолчанию 300) : Максимальная длина последовательности, используемая с prompt.
pag_scale (float, optional, по умолчанию 3.0) : Коэффициент масштабирования для направленного внимания с возмущениями. Если установлено значение 0.0, направленное внимание с возмущениями не будет использоваться.
pag_adaptive_scale (float, optional, по умолчанию 0.0) : Адаптивный коэффициент масштабирования для направленного внимания с возмущениями. Если он установлен в 0.0, используется pag_scale.
Возвращает: ImagePipelineOutput или tuple
Если return_dict равно True, возвращается ImagePipelineOutput, иначе возвращается tuple, где первый элемент — это список с сгенерированными изображениями
Функция, вызываемая при обращении к конвейеру для генерации.
Примеры:
>>> import torch
>>> from diffusers import AutoPipelineForText2Image
>>> pipe = AutoPipelineForText2Image.from_pretrained(
... "PixArt-alpha/PixArt-Sigma-XL-2-1024-MS",
... torch_dtype=torch.float16,
... pag_applied_layers=["blocks.14"],
... enable_pag=True,
... )
>>> pipe = pipe.to("cuda")
>>> prompt = "A small cactus with a happy face in the Sahara desert"
>>> image = pipe(prompt, pag_scale=4.0, guidance_scale=1.0).images[0]
encode_prompt[[diffusers.PixArtSigmaPAGPipeline.encode_prompt]]
encode_prompt(prompt: str | list[str], do_classifier_free_guidance: bool = True, negative_prompt: str = '', num_images_per_prompt: int = 1, device: typing.Optional[torch.device] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_attention_mask: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, clean_caption: bool = False, max_sequence_length: int = 300, **kwargs)
Параметры:
prompt (str или list[str], необязательный) : промпт для кодирования
negative_prompt (str или list[str], необязательный) : Промпт, который не должен направлять генерацию изображения. Если не задан, необходимо передать negative_prompt_embeds. Игнорируется, если не используется направляющий сигнал (то есть игнорируется, если guidance_scale меньше 1). Для PixArt-Alpha это должно быть "".
do_classifier_free_guidance (bool, необязательный, по умолчанию True) : использовать ли classifier free guidance
num_images_per_prompt (int, необязательный, по умолчанию 1) : количество изображений, которые должны быть сгенерированы для каждого промпта
device : (torch.device, необязательный): устройство torch, на котором будут размещены полученные эмбеддинги
prompt_embeds (torch.Tensor, необязательный) : Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлены, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
negative_prompt_embeds (torch.Tensor, необязательный) : Предварительно сгенерированные эмбеддинги отрицательного текста. Для PixArt-Alpha это должны быть эмбеддинги строки "".
clean_caption (bool, по умолчанию False) : Если True, функция выполнит предобработку и очистку переданной подписи перед кодированием.
max_sequence_length (int, по умолчанию 300) : Максимальная длина последовательности, используемая для промпта.
Кодирует промпт в скрытые состояния текстового энкодера.
Xet Storage Details
- Size:
- 449 kB
- Xet hash:
- c26767ad6a5d60e3bd9ed1cfae3894ef71765901e2ac961c98d87acc4b381670
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.