扩散器文档

稳定的扩散XL

Hugging Face's logo
加入Hugging Face社区

并获取增强文档体验的权限

开始使用

稳定扩散XL

稳定扩散XL (SDXL) 由 Dustin Podell、Zion English、Kyle Lacey、Andreas Blattmann、Tim Dockhorn、Jonas Müller、Joe Penna 和 Robin Rombach 在 SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis 一文中提出。

论文的摘要如下:

我们介绍了 SDXL,一种用于文本到图像合成的潜在扩散模型。与稳定扩散的先前版本相比,SDXL 利用三倍大的 UNet 主干:模型参数的增加主要归因于更多的注意力模块和更大的交叉注意力上下文,因为 SDXL 使用了第二个文本编码器。我们设计了多种新的条件方案,并在多个宽高比上训练了 SDXL。我们还引入了一个细化模型,该模型通过后处理图像到图像技术来改善 SDXL 生成的样本的视觉保真度。我们证明了 SDXL 相对于稳定扩散的先前版本有显着改进的性能,并达到了与最先进的黑盒图像生成器相当的结果。

提示

  • 使用SDXL与DPM++调度器进行少于50步的操作会产生视觉伪影,因为求解器变得数值不稳定性。要解决这个问题,请看这个Pull Request,它建议对ODE/SDE求解器采取的方法。
    • 设置use_karras_sigmas=Truelu_lambdas=True以提高图像质量
    • 如果您使用的是具有均匀步长(DPM++2M或DPM++2M SDE)的求解器,请设置euler_at_final=True
  • 大多数SDXL检查点与1024x1024的图像大小工作效果最佳。也支持768x768和512x512的图像大小,但效果不如前者。不建议使用512x512以下的任何大小,并且默认检查点如stabilityai/stable-diffusion-xl-base-1.0可能也不推荐使用。
  • SDXL可以为它在训练期间使用的每个文本编码器通过不同的提示。我们甚至可以把同一个提示的不同部分传递给文本编码器。
  • 通过使用图像到图像设置中的精修模型,可以提高SDXL输出图像的质量。
  • SDXL提供了negative_original_sizenegative_crops_coords_top_leftnegative_target_size来对模型在图像分辨率和裁剪参数上的条件进行负面影响。

有关如何使用SDXL进行各种任务、优化性能和其他用法示例,请参阅Stable Diffusion XL指南。

访问Stability AI Hub组织以获取官方基础和精修模型检查点!

StableDiffusionXLPipeline

diffusers.StableDiffusionXLPipeline

< >

( vae: AutoencoderKL text_encoder: CLIPTextModel text_encoder_2: CLIPTextModelWithProjection tokenizer: CLIPTokenizer tokenizer_2: CLIPTokenizer unet: UNet2DConditionModel scheduler: KarrasDiffusionSchedulers image_encoder: CLIPVisionModelWithProjection = None feature_extractor: CLIPImageProcessor = None force_zeros_for_empty_prompt: bool = True add_watermarker: Optional = None )

参数

  • vae (AutoencoderKL) — 用于将图像编码和解码为潜在表示的变分自动编码器 (VAE) 模型。
  • text_encoder (CLIP文本编码器) — 冻结的文本编码器。Stable Diffusion XL 使用来自 CLIP 的文本部分,具体是 clip-vit-large-patch14 变体。
  • text_encoder_2 ( CLIP文本编码器WithProjection) — 第二个冻结的文本编码器。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一起用来去噪编码图像潜在空间的调度器。可以是以下之一:DDIMSchedulerLMSDiscreteScheduler、或PNDMScheduler
  • force_zeros_for_empty_prompt (bool, optional, defaults to "True") — Whether the negative prompt embeddings shall be forced to always be set to 0. Also see the config of stabilityai/stable-diffusion-xl-base-1-0.
  • add_watermarker (bool, optional) — Whether to use the invisible_watermark library to watermark output images. If not defined, it will default to True if the package is installed, otherwise no watermarker will be used.

使用Stable Diffusion XL进行文本到图像生成的流水线。

该模型继承自DiffusionPipeline。查看超类文档,了解库为所有流水线实现的通用方法(例如下载或保存、在特定设备上运行等)

该流水线还继承了以下加载方法

__call__

< >

( prompt: Union = None prompt_2: Union = None height: Optional = None width: Optional = None num_inference_steps: int = 50 timesteps: List = None sigmas: List = None denoising_end: Optional = None guidance_scale: float = 5.0 negative_prompt: Union = None negative_prompt_2: Union = None num_images_per_prompt: Optional = 1 eta: float = 0.0 generator: Union = None latents: Optional = None prompt_embeds: Optional = None negative_prompt_embeds: Optional = None pooled_prompt_embeds: Optional = None negative_pooled_prompt_embeds: Optional = None ip_adapter_image: Union = None ip_adapter_image_embeds: Optional = None output_type: Optional = 'pil' return_dict: bool = True cross_attention_kwargs: Optional = None guidance_rescale: float = 0.0 original_size: Optional = None crops_coords_top_left: Tuple = (0, 0) target_size: Optional = None negative_original_size: Optional = None negative_crops_coords_top_left: Tuple = (0, 0) negative_target_size: Optional = None clip_skip: Optional = None callback_on_step_end: Union = None callback_on_step_end_tensor_inputs: List = ['latents'] **kwargs ) ~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput or tuple

参数

  • prompt (strList[str],可选) — 引导图像生成的提示或提示列表。如果未定义,需要传递 prompt_embeds
  • prompt_2 (strList[str],可选) — 发送到 tokenizer_2text_encoder_2 的提示或提示列表。如果未定义,则同时在两个文本编码器中使用 prompt
  • height (int, 可选,默认为self.unet.config.sample_size * self.vae_scale_factor) — 生成图片的高度(像素)。默认设置为1024,以获得最佳效果。低于512像素对于stabilityai/stable-diffusion-xl-base-1.0及其不专门针对低分辨率微调的检查点来说效果不佳。
  • width (int, 可选,默认为self.unet.config.sample_size * self.vae_scale_factor) — 生成图片的宽度(像素)。默认设置为1024,以获得最佳效果。低于512像素对于stabilityai/stable-diffusion-xl-base-1.0及其不专门针对低分辨率微调的检查点来说效果不佳。
  • num_inference_steps (int, 可选,默认为50) — 去噪步数。更多的去噪步数通常会导致图像质量更高,但推理速度会变慢。
  • 时间步 (int列表, 可选) — 为支持在set_timesteps方法中使用timesteps参数的调度器使用自定义时间步长进行去噪过程。如果没有定义,则会使用在传递num_inference_steps时默认的行为。必须降序排列。
  • sigma参数 (float列表, 可选) — 为支持在set_timesteps方法中使用sigmas参数的调度器使用自定义sigma参数进行去噪过程。如果没有定义,则会使用在传递num_inference_steps时默认的行为。 denoising_end (float, 可选) 当指定时,决定在故意提前终止之前,完成整个去噪过程的百分比值(介于0.0和1.0之间)。因此,返回的样本仍然保留一定量的噪声,这是由调度器选定的离散时间步决定的。该参数最好在构成“混合去噪器”的多管线设置中,如改善图像输出中所详细描述的区域使用。
  • 去噪结束 (float, 可选) — 当指定时,确定在故意提前终止之前,完成整个去噪过程的分数(介于0.0和1.0之间)。结果,返回的样本仍然保留一定量的噪声,这是由调度器选定的离散时间步决定的。该参数理想情况下应在该管线组成“混合去噪器”多管线设置时使用,如改进图像输出中所述。 denoising_end — 指定时,确定在故意提前终止之前完成整个去噪过程的比率(介于0.0和1.0之间)。因此,最终生成的样本将仍然保留根据调度器选择的离散时间步而确定的噪声量。在num_inference_steps传递时,未定义则会使用默认行为。
  • guidance_scale (float, 可选, 默认为 5.0) — 指导尺度,如 Classifier-Free Diffusion Guidance 中所述。guidance_scale 定义为 Imagen 论文 方程 2 中的 w。指导尺度通过设置 guidance_scale > 1 启用。较高的指导尺度会鼓励生成与文本 prompt 密切相关的图像,通常以降低图像质量为代价。
  • negative_prompt (strList[str], 可选) — 不用于指导图像生成的提示或提示词。如果没有定义,将传递 negative_prompt_embeds。在未使用指导(即如果 guidance_scale 小于 1)的情况下将忽略之。
  • negative_prompt_2 (strList[str], 可选) — 不用于指导图像生成的提示或提示词,将发送到 tokenizer_2text_encoder_2。如果没有定义,则使用 negative_prompt
  • num_images_per_prompt (int, 可选, 默认为 1) — 每个提示生成图像的数量。
  • eta (float, 可选, 默认为 0.0) — 对应 DDIM 论文中的参数 eta(η):[链接](https://arxiv.org/abs/2010.02502)。仅适用于 schedulers.DDIMScheduler,其他情况将被忽略。
  • generator (torch.GeneratorList[torch.Generator], 可选) — 一个或多个用于使生成确定性化的 torch 生成器
  • latentstorch.Tensor可选)— 预生成的噪声潜变量,从高斯分布中采样,用作图像生成的输入。可用于使用不同的提示调整相同的生成。如果未提供,将使用提供的随机generator生成潜变量张量。
  • prompt_embedstorch.Tensor可选)— 预生成的文本嵌入。可用于轻松调整文本输入,例如提示权重。如果未提供,将从输入参数prompt生成文本嵌入。
  • negative_prompt_embedstorch.Tensor可选)— 预生成的负文本嵌入。可用于轻松调整文本输入,例如提示权重。如果未提供,将根据输入参数negative_prompt生成负嵌入。
  • 预生成的文本嵌入 (torch.Tensor, 可选) — 预生成的聚合文本嵌入。可用于轻松调整文本输入,例如调整提示权重。如果没有提供,将从 prompt 输入参数生成聚合文本嵌入。
  • 负聚合文本嵌入 (torch.Tensor, 可选) — 预生成的负聚合文本嵌入。可用于轻松调整文本输入,例如调整提示权重。如果没有提供,将从 negative_prompt 输入参数生成聚合负文本嵌入。ip_adapter_image — (PipelineImageInput, 可选):与 IP 适配器一起工作的可选图像输入。
  • IP 适配器图像嵌入 (List[torch.Tensor], 可选) — IP-适配器的预生成的图像嵌入。它应该是一个与 IP 适配器数量相同的长度列表。每个元素应该具有形状 (batch_size, num_images, emb_dim) 的张量。如果将 do_classifier_free_guidance 设置为 True,则应包含负图像嵌入。如果没有提供,则从 ip_adapter_image 输入参数计算嵌入。
  • guidance_rescale (float, 可选, 默认为 0.0) — 由《Common Diffusion Noise Schedules and Sample Steps are Flawed》提出的指导缩放因子。在文档Common Diffusion Noise Schedules and Sample Steps are Flawed的第16个公式中,guidance_scale 被定义为 φ。当使用零终端信噪比时,应调整指导缩放因子以修正过曝问题。
  • original_size (Tuple[int], 可选, 默认为 (1024, 1024)) — 如果 original_size 与 target_size 不同,则图像看起来会被下采样或上采样。如果没有指定,则默认为 (高度, 宽度)。这是 SDXL 的微条件之一,如https://huggingface.co/papers/2307.01952中第2.2节所述。
  • crops_coords_top_left (Tuple[int], 可选, 默认为 (0, 0)) — 可以使用 crops_coords_top_left 来生成一个从位置 crops_coords_top_left 向下裁剪的图像。为了获取正确对齐的图像,通常将 crops_coords_top_left 设置为 (0, 0)。这是 SDXL 的微条件之一,如https://huggingface.co/papers/2307.01952中第2.2节所述。
  • target_size (Tuple[int], 可选, 默认为 (1024, 1024)) — 对于大多数情况,应将 target_size 设置为所需生成的图像的高度和宽度。如果未指定,将默认为 (height, width)。这是 SDXL 微条件的一部分,如第 2.2 节所述,请参阅 https://huggingface.co/papers/2307.01952
  • negative_original_size (Tuple[int], 可选, 默认为 (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], 可选, 默认为 (0, 0)) — 为了根据特定的裁剪坐标对生成过程进行负条件化。这是 SDXL 微条件的一部分,如第 2.2 节所述,请参阅 https://huggingface.co/papers/2307.01952。更多详细信息,请参阅此问题线程: https://github.com/huggingface/diffusers/issues/4208
  • negative_target_size (Tuple[int], 可选, 默认为 (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, 可选) — 一个函数或 PipelineCallbackMultiPipelineCallbacks 的子类,在推理过程中每个去噪步骤结束时被调用。带有以下参数: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_inputsList,可选) —— callback_on_step_end 函数的 tensor 输入列表。列表中指定的 tensor 将作为 callback_kwargs 参数传递。您只能包含您的 pipeline 类 ._callback_tensor_inputs 属性中列出的变量。

返回值

~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutputtuple

~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput 如果 return_dict 为真,否则为 tuple。当返回一个 tuple 时,第一个元素是一个包含生成图像的列表。

在调用 pipeline 进行生成时调用的函数。

例子

>>> import torch
>>> from diffusers import StableDiffusionXLPipeline

>>> pipe = StableDiffusionXLPipeline.from_pretrained(
...     "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16
... )
>>> pipe = pipe.to("cuda")

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

encode_prompt

< >

( 提示语: str 提示语_2: 可选 = None 设备: 可选 = None 每个提示语图片数量: int = 1 是否用于分类器自由引导: bool = True 负面提示语: 可选 = None 负面提示语_2: 可选 = None 提示语嵌入: 可选 = None 负面提示语嵌入: 可选 = None 汇总提示语嵌入: 可选 = None 负面汇总提示语嵌入: 可选 = None lora_scale: 可选 = None clip_skip: 可选 = None )

参数

  • 提示语 (strList[str], 可选) — 待编码的提示语
  • 提示语_2 (strList[str], 可选) — 发送到 tokenizer_2text_encoder_2 的提示语或提示语列表。如未定义,则使用 提示语 作为两个文本编码器。设备 — (torch.device):torch 设备
  • num_images_per_prompt (int) — 每个提示应生成的图像数
  • do_classifier_free_guidance (bool) — 是否使用分类器无指导
  • negative_prompt (strList[str]) — 不应引导图像生成的提示或提示列表。(可选) 如果未定义,则必须传递 negative_prompt_embeds。当不使用指导时(即当 guidance_scale 小于 1 时)忽略。
  • negative_prompt_2strList[str],可选)—不要引导图像生成的提示或提示列表,发送到 tokenizer_2text_encoder_2。如果未定义,在两个文本编码器中使用 negative_prompt
  • prompt_embedstorch.Tensor,可选)—预先生成的文本嵌入。可以用于轻松调整文本输入,例如调整提示权重。如果未提供,将根据 prompt 输入参数生成文本嵌入。
  • negative_prompt_embedstorch.Tensor,可选)—预先生成的负文本嵌入。可以用于轻松调整文本输入,例如调整提示权重。如果未提供,则从 negative_prompt 输入参数生成 negative_prompt_embeds。
  • 合并文本嵌入 (torch.Tensor, 可选) — 预生成的合并文本嵌入。可用于轻松调整文本输入,例如提示权重。如果没有提供,将从 prompt 输入参数生成合并文本嵌入。
  • 负合并文本嵌入 (torch.Tensor, 可选) — 预生成的负合并文本嵌入。可用于轻松调整文本输入,例如提示权重。如果没有提供,将从 negative_prompt 输入参数生成负合并文本嵌入。
  • LoRA缩放比例 (float, 可选) — 如果加载了LoRA层,将应用于文本编码器的所有LoRA层的一个LoRA缩放比例。
  • clip_skip (int, optional) — 跳过CLIP时的层数。值为1表示将使用预最终层的输出来计算提示嵌入。

将提示编码为文本编码器的隐藏状态。

get_guidance_scale_embedding

< >

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

参数

  • w (torch.Tensor) — 生成具有指定指导比例的嵌入向量,以随后丰富时间步嵌入。
  • embedding_dim (int, 可选,默认为512) — 生成嵌入的维度。
  • dtype (torch.dtype, 可选,默认为torch.float32) — 生成嵌入的数据类型。

返回值

torch.Tensor

形状为 (len(w), embedding_dim) 的嵌入向量。

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

StableDiffusionXLImg2ImgPipeline

diffusers.StableDiffusionXLImg2ImgPipeline

< >

( vae: AutoencoderKL text_encoder: CLIPTextModel text_encoder_2: CLIPTextModelWithProjection tokenizer: CLIPTokenizer tokenizer_2: CLIPTokenizer unet: UNet2DConditionModel scheduler: KarrasDiffusionSchedulers image_encoder: CLIPVisionModelWithProjection = None feature_extractor: CLIPImageProcessor = None requires_aesthetics_score: bool = False force_zeros_for_empty_prompt: bool = True add_watermarker: Optional = None )

参数

  • vae (AutoencoderKL) — Variational Auto-Encoder (VAE) Model to encode and decode images to and from latent representations.
  • 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 一起使用的调度器,用于去噪编码图像潜变量。可以是以下之一:DDIMSchedulerLMSDiscreteSchedulerPNDMScheduler
  • requires_aesthetics_score (类型:bool,可选,默认为"False")— 在推理过程中,unet是否需要条件。另请参阅stabilityai/stable-diffusion-xl-refiner-1-0的配置。
  • force_zeros_for_empty_prompt (类型:bool,可选,默认为"True")— 是否应将负提示嵌入始终设置为零。另请参阅stabilityai/stable-diffusion-xl-base-1-0的配置。
  • add_watermarker (类型:bool,可选)— 是否使用隐形水印库对输出图像添加水印。如果没有定义,如果已安装包,则默认为True,否则不使用水印器。

使用Stable Diffusion XL进行文本到图像生成的流水线。

该模型继承自DiffusionPipeline。查看超类文档,了解库为所有流水线实现的通用方法(例如下载或保存、在特定设备上运行等)

该流水线还继承了以下加载方法

__call__

< >

( prompt: Union = None prompt_2: Union = None image: Union = None strength: float = 0.3 num_inference_steps: int = 50 timesteps: List = None sigmas: List = None denoising_start: Optional = None denoising_end: Optional = None guidance_scale: float = 5.0 negative_prompt: Union = None negative_prompt_2: Union = None num_images_per_prompt: Optional = 1 eta: float = 0.0 generator: Union = None latents: Optional = None prompt_embeds: Optional = None negative_prompt_embeds: Optional = None pooled_prompt_embeds: Optional = None negative_pooled_prompt_embeds: Optional = None ip_adapter_image: Union = None ip_adapter_image_embeds: Optional = None output_type: Optional = 'pil' return_dict: bool = True cross_attention_kwargs: Optional = None guidance_rescale: float = 0.0 original_size: Tuple = None crops_coords_top_left: Tuple = (0, 0) target_size: Tuple = None negative_original_size: Optional = None negative_crops_coords_top_left: Tuple = (0, 0) negative_target_size: Optional = None aesthetic_score: float = 6.0 negative_aesthetic_score: float = 2.5 clip_skip: Optional = None callback_on_step_end: Union = None callback_on_step_end_tensor_inputs: List = ['latents'] **kwargs ) ~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput or tuple

参数

  • prompt (strList[str],可选) — 指导图像生成的提示或提示列表。如果未定义,则需要传递 prompt_embeds
  • prompt_2 (strList[str],可选) — 需要发送到 tokenizer_2text_encoder_2 的提示或提示列表。如果未定义,则两个文本编码器都使用 prompt
  • 图像 (torch.TensorPIL.Image.Imagenp.ndarrayList[torch.Tensor]List[PIL.Image.Image]List[np.ndarray]) — 要使用管道修改的图像。
  • 强度 (float可选,默认为 0.3) — 概念上表示要变换参考图像的程度。必须在 0 和 1 之间。image 将用作起点,strength 越大,添加的噪声就越多。去噪步骤的数量取决于最初添加的噪声量。当 strength 为 1 时,添加的噪声最大,去噪过程将运行到 num_inference_steps 中指定的完整迭代次数。因此,1 实质上忽略了 image。请注意,如果将 denoising_start 声明为整数,则将忽略 strength 的值。
  • 推理步数 (int可选,默认为 50) — 去噪步骤的数量。更多的去噪步骤通常会以牺牲推理速度为代价,在图像质量上获得更好的效果。
  • timesteps (列表[int]可选) — 用于支持在 set_timesteps 方法中具有 timesteps 参数的调度程序进行去噪过程的自定义时间段。如果没有定义,当传递 num_inference_steps 时将使用默认行为。必须按降序排列。
  • sigmas (列表[float]可选) — 用于支持在 set_timesteps 方法中具有 sigmas 参数的调度程序进行去噪过程的自定义 sigmas。如果没有定义,当传递 num_inference_steps 时将使用默认行为。
  • denoising_start (float可选) — 当指定时,表示在启动之前要绕过的总去噪过程的分数(介于 0.0 和 1.0 之间)。因此,去噪过程的初始部分将被跳过,并假定传递的 image 是部分去噪的图像。请注意,当指定此值时,将忽略强度。当此管道集成到“解噪器混合”多管道设置中时,《code>denoising_start 参数特别有益,如 refine-image-quality中所述。
  • denoising_end (float, 可选) — 当指定时,确定在故意提前终止之前,总的去噪过程的完成比例(介于 0.0 和 1.0 之间)。因此,返回的样本仍保留大量噪声(大约还需要 20% 的步长),应由将 denoising_start 设置为 0.8 的后续管道去噪,以便它仅去噪调度器的最后 20%。应该 ideally 使用 denoising_end 参数,当该管道是 “去噪混合” 多管道设置的一部分时,如 提高图像质量中所详述的。
  • guidance_scale (float, 可选,默认为 7.5) — 如 无分类器扩散指导所述的指导尺度。 guidance_scaleImagen 论文 第 2 个方程式中的 w。通过将 guidance_scale > 1 设置为启用指导尺度。较高的指导尺度鼓励生成与文本 prompt 紧密相关的图像,这通常是以降低图像质量为代价的。
  • negative_prompt (strList[str],可选)——不指导图像生成的提示或提示列表。如果没有定义,则必须传入 negative_prompt_embeds。在不使用引导时(即,如果 guidance_scale 小于 1,则忽略)。
  • negative_prompt_2 (strList[str],可选)——不指导图像生成并发送到 tokenizer_2text_encoder_2 的提示或提示列表。如果没有定义,则在两个文本编码器中使用 negative_prompt
  • num_images_per_prompt (int,可选,默认为 1)——每个提示生成的图像数量。
  • eta (浮点数, 可选, 默认为0.0) — 对应DDIM论文中的eta(η)参数:[https://arxiv.org/abs/2010.02502](https://arxiv.org/abs/2010.02502)。仅应用于schedulers.DDIMScheduler,其他情况将被忽略。
  • generator (torch.Generatortorch.Generator 列表, 可选) — 一个或多个torch 生成器,用于使生成过程确定性。
  • latents (torch.Tensor, 可选) — 预生成的噪声latents,从高斯分布中采样,用作图像生成的输入。可用于使用不同的提示微调相同的生成。如果不提供,将使用提供的随机generator生成latents张量。
  • prompt_embeds (torch.Tensor, 可选) — 预生成的文本嵌入。可以用来轻松调整文本输入,例如提示权重。如果没有提供,将从 prompt 输入参数生成文本嵌入。
  • negative_prompt_embeds (torch.Tensor, 可选) — 预生成的负文本嵌入。可以用来轻松调整文本输入,例如提示权重。如果没有提供,将从 negative_prompt 输入参数生成负文本嵌入。
  • pooled_prompt_embeds (torch.Tensor, 可选) — 预生成的汇集文本嵌入。可以用来轻松调整文本输入,例如提示权重。如果没有提供,将从 prompt 输入参数生成汇集文本嵌入。
  • 负池文本嵌入
  • 图像嵌入
  • 输出类型
  • return_dict (bool, 可选, 默认为 True) — 是否返回 ~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput 而不是纯元组。
  • cross_attention_kwargs (dict, 可选) — 一个 kwargs 字典,如果指定,将会传递给 AttentionProcessor,该处理器定义在 diffusers.models.attention_processor 中的 self.processor 下。
  • guidance_rescale (float, 可选, 默认为 0.0) — 由 Common Diffusion Noise Schedules and Sample Steps are Flawed 提出的引导缩放因子。引导缩放因子被定义为公式16中的 φ。当使用零端终端信噪比时,引导缩放因子可以修复过度曝光。
  • original_size (Tuple[int], 可选, 默认为(1024, 1024)) — 如果original_sizetarget_size不同,则图像将看起来是下采样或上采样的。如果没有指定,默认为(高度, 宽度)。这是SDXL微条件的一部分,如2.2节所述https://huggingface.co/papers/2307.01952
  • crops_coords_top_left (Tuple[int], 可选, 默认为(0, 0)) — 可使用crops_coords_top_left生成从crops_coords_top_left位置的图像,看起来像是从该位置向下裁剪的。通常,通过将crops_coords_top_left设置为(0, 0)来获得中心对称的图像。这是SDXL微条件的一部分,如2.2节所述https://huggingface.co/papers/2307.01952
  • target_size (Tuple[int], 可选, 默认为(1024, 1024)) — 对于大多数情况,应将target_size设置为所需生成的图像的高度和宽度。如果没有指定,它将默认为(高度, 宽度)。这是SDXL微条件的一部分,如2.2节所述https://huggingface.co/papers/2307.01952
  • negative_original_size (整数元组, 可选参数,默认为 (1024, 1024)) — 基于特定图像分辨率训练生成过程。SDXL 微度条件的部分,详细说明见第 2.2 节https://huggingface.co/papers/2307.01952。更多信息,请参阅此问题线程:https://github.com/huggingface/diffusers/issues/4208
  • negative_crops_coords_top_left (整数元组, 可选参数,默认为 (0, 0)) — 根据特定裁剪坐标来培训生成过程。SDXL 微度条件的部分,详细说明见第 2.2 节https://huggingface.co/papers/2307.01952。更多信息,请参阅此问题线程:https://github.com/huggingface/diffusers/issues/4208
  • negative_target_size (元组[int], 可选,默认为 (1024, 1024)) — 根据目标图像分辨率对生成过程进行负向条件设置。在大多数情况下应与 target_size 相同。SDXL 微条件的部分,如第2.2节所述 https://huggingface.co/papers/2307.01952。更多信息,请参阅此问题线程: https://github.com/huggingface/diffusers/issues/4208
  • aesthetic_score (浮点数, 可选,默认为 6.0) — 通过影响正文本条件来模拟生成图像的美学评分。SDXL 微条件的一部分,如第2.2节所述 https://huggingface.co/papers/2307.01952
  • negative_aesthetic_score (浮点数, 可选,默认为 2.5) — SDXL 微条件的一部分,如第2.2节所述 https://huggingface.co/papers/2307.01952。可用于通过影响负文本条件来模拟生成图像的美学评分。
  • clip_skip (int, 可选) — 在计算提示嵌入时跳过的 CLIP 层数。值为 1 表示将使用预最终层的输出来计算提示嵌入。
  • callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, 可选) — 在推理过程中每个去噪步骤结束时被调用的函数或 PipelineCallbackMultiPipelineCallbacks 的子类。该函数有以下参数:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)callback_kwargs 将包含一个由 callback_on_step_end_tensor_inputs 指定的所有张量列表。
  • callback_on_step_end_tensor_inputs (List, 可选) — callback_on_step_end 函数的输入张量列表。列表中指定的张量将作为 callback_kwargs 参数传递。您只能包括管道类 ._callback_tensor_inputs 属性中列出的变量。

返回值

~pipelines.stable_diffusion.StableDiffusionXLPipelineOutputtuple

~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput 如果 return_dict 为 True,否则为 `tuple`。当返回 `tuple` 时,第一个元素是包含生成图像的列表。

在调用 pipeline 进行生成时调用的函数。

例子

>>> import torch
>>> from diffusers import StableDiffusionXLImg2ImgPipeline
>>> from diffusers.utils import load_image

>>> pipe = StableDiffusionXLImg2ImgPipeline.from_pretrained(
...     "stabilityai/stable-diffusion-xl-refiner-1.0", torch_dtype=torch.float16
... )
>>> 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).images[0]

encode_prompt

< >

( 提示语: str 提示语_2: 可选 = None 设备: 可选 = None 每个提示语图片数量: int = 1 是否用于分类器自由引导: bool = True 负面提示语: 可选 = None 负面提示语_2: 可选 = None 提示语嵌入: 可选 = None 负面提示语嵌入: 可选 = None 汇总提示语嵌入: 可选 = None 负面汇总提示语嵌入: 可选 = None lora_scale: 可选 = None clip_skip: 可选 = None )

参数

  • prompt (strList[str], 可选) — 被编码的提示符
  • prompt_2 (strList[str], 可选) — 要发送到 tokenizer_2text_encoder_2 的提示符或提示符列表。如未定义,则使用 prompt 在两个文本编码器的设备上 — (torch.device):torch 设备
  • num_images_per_prompt (int) — 每个提示应生成的图片数量
  • do_classifier_free_guidance (bool) — 是否使用无分类器引导
  • negative_prompt (strList[str], 可选) — 不指导图像生成的提示或提示列表。如果未定义,必须传递 negative_prompt_embeds。在不使用引导时忽略(例如,如果 guidance_scale 小于 1,则忽略)。
  • (HTML 标签开始)negative_prompt_2 (strList[str]可选)— 不用于引导图像生成的提示,发送到 tokenizer_2text_encoder_2。如未定义,则采用两个文本编码器中都使用的 negative_prompt。(HTML 标签结束)
  • (HTML 标签开始)prompt_embeds (torch.Tensor可选)— 预生成的文本嵌入,可用于轻松调整文本输入,例如提示权重。如未提供,将从 prompt 输入参数生成文本嵌入。(HTML 标签结束)
  • (HTML 标签开始)negative_prompt_embeds (torch.Tensor可选)— 预生成的负文本嵌入,可用于轻松调整文本输入,例如提示权重。如未提供,将基于 negative_prompt 输入参数生成负文本嵌入。(HTML 标签结束)
  • pooled_prompt_embeds (torch.Tensor, 可选) — 预生成的文本池化嵌入。可以用于轻松调整文本输入,例如提示权重。如果没有提供,将从 prompt 输入参数生成池化文本嵌入。
  • negative_pooled_prompt_embeds (torch.Tensor, 可选) — 预生成的负文本池化嵌入。可以用于轻松调整文本输入,例如提示权重。如果未提供,将从 negative_prompt 输入参数生成池化负嵌入。
  • lora_scale (float, 可选) — 将应用于加载的所有 LoRA 层的 LoRA 缩放系数。
  • clip_skip (int, 可选) — 从 CLIP 中跳过的层数,用于计算提示嵌入。值为 1 表示将使用预最终层的输出用于计算提示嵌入。

将提示编码为文本编码器的隐藏状态。

get_guidance_scale_embedding

< >

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

参数

  • w (torch.Tensor) — 使用指定的指导尺度生成嵌入向量,以丰富时间步嵌入。
  • 嵌入维度 (int可选,默认为 512) — 生成嵌入的维度。
  • 数据类型 (torch.dtype可选,默认为 torch.float32) — 生成嵌入的数据类型。

返回值

torch.Tensor

形状为 (len(w), embedding_dim) 的嵌入向量。

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

StableDiffusionXLInpaintPipeline

diffusers.StableDiffusionXLInpaintPipeline

< >

( vae: AutoencoderKL text_encoder: CLIPTextModel text_encoder_2: CLIPTextModelWithProjection tokenizer: CLIPTokenizer tokenizer_2: CLIPTokenizer unet: UNet2DConditionModel scheduler: KarrasDiffusionSchedulers image_encoder: CLIPVisionModelWithProjection = None feature_extractor: CLIPImageProcessor = None requires_aesthetics_score: bool = False force_zeros_for_empty_prompt: bool = True add_watermarker: Optional = None )

参数

  • 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 一起去噪编码图像潜在变量的调度器。可以是 DDIMSchedulerLMSDiscreteSchedulerPNDMScheduler 中的一种。
  • 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, 可选) — 是否使用 隐形水印库 对输出图像添加水印。如果未定义,且已安装该软件包,默认为 True,否则不使用水印。

使用Stable Diffusion XL进行文本到图像生成的流水线。

该模型继承自DiffusionPipeline。查看超类文档,了解库为所有流水线实现的通用方法(例如下载或保存、在特定设备上运行等)

该流水线还继承了以下加载方法

__call__

< >

( prompt: Union = None prompt_2: Union = None image: Union = None mask_image: Union = None masked_image_latents: Tensor = None height: Optional = None width: Optional = None padding_mask_crop: Optional = None strength: float = 0.9999 num_inference_steps: int = 50 timesteps: List = None sigmas: List = None denoising_start: Optional = None denoising_end: Optional = None guidance_scale: float = 7.5 negative_prompt: Union = None negative_prompt_2: Union = None num_images_per_prompt: Optional = 1 eta: float = 0.0 generator: Union = None latents: Optional = None prompt_embeds: Optional = None negative_prompt_embeds: Optional = None pooled_prompt_embeds: Optional = None negative_pooled_prompt_embeds: Optional = None ip_adapter_image: Union = None ip_adapter_image_embeds: Optional = None output_type: Optional = 'pil' return_dict: bool = True cross_attention_kwargs: Optional = None guidance_rescale: float = 0.0 original_size: Tuple = None crops_coords_top_left: Tuple = (0, 0) target_size: Tuple = None negative_original_size: Optional = None negative_crops_coords_top_left: Tuple = (0, 0) negative_target_size: Optional = None aesthetic_score: float = 6.0 negative_aesthetic_score: float = 2.5 clip_skip: Optional = None callback_on_step_end: Union = None callback_on_step_end_tensor_inputs: List = ['latents'] **kwargs ) ~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput or tuple

参数

  • prompt (str or List[str], 可选) — 指导图像生成的提示或提示列表。如果没有定义,需要传递 prompt_embeds
  • prompt_2 (str or List[str], 可选) — 发送到 tokenizer_2text_encoder_2 的提示或提示列表。如果没有定义,两个文本编码器都使用 prompt
  • image (PIL.Image.Image) — 图片或表示图像批次的张量,将被修复,即使用 mask_image 进行图像部分遮罩并以 prompt 为依据进行重绘。
  • mask_image (PIL.Image.Image) — Image 或表示图像批次的张量,用于遮罩 image。遮罩中的白色像素将被重绘,而黑色像素将保留。如果 mask_image 是 PIL 图像,则在使用之前将其转换为单通道(亮度)。如果它是张量,则应包含一个颜色通道(L),而不是 3 个,因此预期的形状将是 (B, H, W, 1)
  • height (int, 可选,默认为 self.unet.config.sample_size * self.vae_scale_factor) — 生成图像的像素高度。默认设置为 1024 以获得最佳效果。低于 512 像素的图像对于 stabilityai/stable-diffusion-xl-base-1.0 和未在低分辨率上专门微调的检查点效果不佳。
  • width (int, 可选,默认为 self.unet.config.sample_size * self.vae_scale_factor) — 生成图像的像素宽度。默认设置为 1024 以获得最佳效果。低于 512 像素的图像对于 stabilityai/stable-diffusion-xl-base-1.0 和未在低分辨率上专门微调的检查点效果不佳。
  • padding_mask_crop (int, 可选,默认为 None) — 设置裁剪图像和掩码图像的边缘大小。如果为 None,则不对图像和掩码图像进行裁剪。如果 padding_mask_crop 不是 None,它将首先找到包含所有掩码区域的与图像相同宽高比的矩形区域,然后根据 padding_mask_crop 扩展该区域。然后,图像和掩码图像将基于扩展区域裁剪,并在填充到原始图像大小之前进行修复。这在掩码区域小而图像大且包含与修复无关信息(如背景)时很有用。
  • strength (float, 可选,默认为 0.9999) — 从概念上讲,指示参考 image 中要处理多少掩码部分。必须在 0 到 1 之间。将 image 作为起始点,添加更多噪声,strength 越大。去噪步骤的数量取决于最初添加的噪声量。当 strength 为 1 时,添加的噪声最大,去噪过程将运行到在 num_inference_steps 中指定的迭代次数。因此,1 的值基本上忽略了参考 image 的掩码部分。注意,当 denoising_start 被声明为整数时,strength 的值将被忽略。
  • num_inference_steps(《int》,可选,默认为50)—— 去噪步骤的数量。更多的去噪步骤通常会导致图像质量更高,但会牺牲推理速度。
  • timesteps(《List[int]》,可选)—— 用于支持在 set_timesteps 方法中使用 timesteps 参数的调度器的自定义时间步。如果没有定义,将使用 num_inference_steps 传递时的默认行为。必须按降序排列。
  • sigmas(《List[float]》,可选)—— 用于支持在 set_timesteps 方法中使用 sigmas 参数的调度器的自定义sigma值。如果没有定义,当传递 num_inference_steps 时将使用默认行为。
  • denoising_start (float, 可选) — 当指定时,指示在启动之前要绕过的总去噪过程的分数(介于0.0和1.0之间)。因此,去噪过程的初始部分将被跳过,假设传递的image是一个部分去噪的图像。请注意,当指定此参数时,将忽略强度。当此管道集成到“混合去噪器”多管道配置中时,denoising_start参数特别有益,详情请参阅调整图像输出
  • denoising_end (float, 可选) — 当指定时,确定在有意提前终止之前完成的总去噪过程的分数(介于0.0和1.0之间)。因此,返回的样本仍将保留相当数量的噪声(大约需要最终的20%时间步),并且应由将denoising_start设置为0.8的后继管道进行去噪,以使其仅去噪调度器最后的20%。当此管道形成“混合去噪器”多管道配置的一部分时,宜使用denoising_end参数,详情请参阅调整图像输出
  • guidance_scale (float, 可选, 默认为7.5) — 指导尺度,如无分类扩散指导中定义。 guidance_scaleImagen 论文中的方程2的w定义。通过设置guidance_scale > 1来启用指导尺度。更高的指导尺度会促使生成与文本prompt紧密关联的图像,通常以牺牲图像质量为代价。
  • negative_prompt (strList[str], 可选) — 不用于引导图像生成的提示或提示。如果未定义,则必须传递negative_prompt_embeds。在不使用指导时(即,如果guidance_scale小于1),则忽略。
  • negative_prompt_2 (strList[str], 可选) — 发送到tokenizer_2text_encoder_2的不用于引导图像生成的提示或提示。如果未定义,则在两个文本编码器中使用negative_prompt
  • prompt_embeds (torch.Tensor, 可选) — 预生成的文本嵌入。可用于轻松调整文本输入,例如提示权重。如果未提供,则从 prompt 输入参数生成文本嵌入。
  • negative_prompt_embeds (torch.Tensor, 可选) — 预生成的负文本嵌入。可用于轻松调整文本输入,例如提示权重。如果未提供,则从 negative_prompt 输入参数生成负文本嵌入。
  • pooled_prompt_embeds (torch.Tensor, 可选) — 预生成的池化文本嵌入。可用于轻松调整文本输入,例如提示权重。如果未提供,则从 prompt 输入参数生成池化文本嵌入。
  • negative_pooled_prompt_embedstorch.Tensor可选)—预生成的负面池化文本嵌入。可用于轻松调整文本输入,例如提示权重。如果没有提供,将从negative_prompt输入参数中生成池化negative_prompt_embeds。ip_adapter_image — (PipelineImageInput可选):与IP适配器一起使用时的可选图像输入。
  • ip_adapter_image_embedsList[torch.Tensor]可选)—为IP-适配器预生成的图像嵌入。它应该是一个长度与IP适配器数量相同的列表。每个元素应是一个形状为(batch_size, num_images, emb_dim)的张量。如果do_classifier_free_guidance设置为True,它应包含负面图像嵌入。如果没有提供,将从ip_adapter_image输入参数中计算嵌入。
  • num_images_per_promptint可选,默认为1)—每个提示生成的图像数量。
  • etafloat可选,默认为0.0) — 与DDIM论文中的eta(η)参数相对应: https://arxiv.org/abs/2010.02502。仅适用于 schedulers.DDIMScheduler,其他情况将被忽略。
  • generatortorch.Generator可选) — 一或多个用于生成确定性的 torch generator(s)
  • latentstorch.Tensor可选) — 预生成的噪声潜变量,从高斯分布中采样,用作图像生成的输入。可用于使用不同的提示微调相同的生成。如果没有提供,则将通过提供的随机 generator 生成一个 latents 张量。
  • original_size (元组[int]可选,默认 (1024, 1024)) — 如果 original_sizetarget_size 不相同,则图片看起来会被下采样或上采样。如果没有指定,默认为 (height, width)。是 SDXL 的微观条件的一部分,如第 2.2 节所述 https://huggingface.co/papers/2307.01952
  • crops_coords_top_left (元组[int]可选,默认 (0, 0)) — 可以使用 crops_coords_top_left 来生成从 crops_coords_top_left 位置向下裁剪的图片。通过将 crops_coords_top_left 设置为 (0, 0),通常可以得到中心居中、形状良好的图片。是 SDXL 的微观条件的一部分,如第 2.2 节所述 https://huggingface.co/papers/2307.01952
  • target_size (元组[int]可选,默认 (1024, 1024)) — 对于大多数情况,应将 target_size 设置为生成图像所需的宽度和高度。如果没有指定,默认为 (height, width)。是 SDXL 的微观条件的一部分,如第 2.2 节所述 https://huggingface.co/papers/2307.01952
  • negative_original_size(《int》元组,可选,默认为(1024, 1024))——根据特定图像分辨率对生成过程进行负条件化。SDXL的微条件化部分,如第2.2节中所述https://huggingface.co/papers/2307.01952。有关更多信息,请参考此问题线程:https://github.com/huggingface/diffusers/issues/4208
  • negative_crops_coords_top_left(《int》元组,可选,默认为(0, 0))——根据特定的裁剪坐标对生成过程进行负条件化。SDXL的微条件化部分,如第2.2节中所述https://huggingface.co/papers/2307.01952。有关更多信息,请参考此问题线程:https://github.com/huggingface/diffusers/issues/4208
  • negative_target_size (元组[int], 可选, 默认为 (1024, 1024)) — 基于目标图像分辨率对生成过程进行负面条件化的参数。在大多数情况下,它应该与 target_size 相同。这是SDXL微观条件化的一个部分,正如在第2.2节所述的 https://huggingface.co/papers/2307.01952。有关更多信息,请参阅此问题线程: https://github.com/huggingface/diffusers/issues/4208
  • aesthetic_score (浮点数, 可选, 默认为 6.0) — 用于通过影响正文字面条件来模拟生成的图像的美学评分。这是SDXL微观条件化的一个部分,正如在第2.2节所述的 https://huggingface.co/papers/2307.01952
  • negative_aesthetic_score (浮点数, 可选, 默认为 2.5) — 这是SDXL微观条件化的一个部分,正如在第2.2节所述的 https://huggingface.co/papers/2307.01952。可用于通过影响负文字面条件来模拟生成图像的美学评分。
  • clip_skipint可选)— 在计算提示嵌入时从CLIP跳过的层数。值为1表示使用预最终层的输出计算提示嵌入。
  • callback_on_step_endCallablePipelineCallbackMultiPipelineCallbacks可选)— 每个推理中在每个降噪步骤结束时调用的函数或 PipelineCallbackMultiPipelineCallbacks 的子类。带有以下参数: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_inputsList可选)— callback_on_step_end 函数的输入张量列表。列表中指定的张量将作为参数传递给 callback_kwargs。您将只能包含在您的流水线类 ._callback_tensor_inputs 属性中列出的变量。

返回值

~pipelines.stable_diffusion.StableDiffusionXLPipelineOutputtuple

~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput如果return_dict为真,否则为一个元组。当返回元组时,第一个元素是一个包含生成的图像的列表。

在调用 pipeline 进行生成时调用的函数。

例子

>>> import torch
>>> from diffusers import StableDiffusionXLInpaintPipeline
>>> from diffusers.utils import load_image

>>> pipe = StableDiffusionXLInpaintPipeline.from_pretrained(
...     "stabilityai/stable-diffusion-xl-base-1.0",
...     torch_dtype=torch.float16,
...     variant="fp16",
...     use_safetensors=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
... ).images[0]

encode_prompt

< >

( 提示语: str 提示语_2: 可选 = None 设备: 可选 = None 每个提示语图片数量: int = 1 是否用于分类器自由引导: bool = True 负面提示语: 可选 = None 负面提示语_2: 可选 = None 提示语嵌入: 可选 = None 负面提示语嵌入: 可选 = None 汇总提示语嵌入: 可选 = None 负面汇总提示语嵌入: 可选 = None lora_scale: 可选 = None clip_skip: 可选 = None )

参数

  • prompt (strList[str], 可选) — 待编码的提示
  • prompt_2 (strList[str], 可选) — 传送给 tokenizer_2text_encoder_2 的提示或提示列表。如果未定义,则在两个文本编码器设备中使用 prompt — (torch.device): torch device
  • num_images_per_prompt (int) — 每个提示应该生成的图像数量
  • do_classifier_free_guidance (bool) — 是否使用分类器免费引导
  • negative_prompt (strList[str], 可选) — 不用于引导图像生成的提示或提示列表。未定义时,必须传递 negative_prompt_embeds。当不使用引导时忽略(即,如果 guidance_scale 小于 1,则忽略)。
  • negative_prompt_2 (strList[str]可选) — 不用于引导图像生成的提示或提示列表,将其发送到 tokenizer_2text_encoder_2。如未定义,则在两个文本编码器中使用 negative_prompt
  • prompt_embeds (torch.Tensor可选) — 预生成的文本嵌入。可用于轻松调整文本输入,例如提示权重。如果未提供,将从 prompt 输入参数生成文本嵌入。
  • negative_prompt_embeds (torch.Tensor可选) — 预生成的负文本嵌入。可用于轻松调整文本输入,例如提示权重。如果未提供,将从 negative_prompt 输入参数生成负文本嵌入。
  • pooling_prompt_embeds (torch.Tensor, 可选) — 预生成的文本池化嵌入,可用于轻松调整文本输入,例如调整提示的权重。如果未提供,将从 prompt 输入参数生成文本嵌入。
  • negative_pooling_prompt_embeds (torch.Tensor, 可选) — 预生成的负文本池化嵌入,可用于轻松调整文本输入,例如调整提示的权重。如果未提供,将根据 negative_prompt 输入参数生成。
  • lora_scale (float, 可选) — 如果加载了 LoRA 层,则将对文本编码器的所有 LoRA 层应用 lora 比例。
  • clip_skip (int, 可选) — 计算提示嵌入时从 CLIP 跳过的层数。值为 1 表示使用预最终层的输出进行提示嵌入计算。

将提示编码为文本编码器的隐藏状态。

get_guidance_scale_embedding

< >

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

参数

  • w (torch.Tensor) — 使用指定的指导规模生成嵌入向量,以随后丰富时间步嵌入。
  • embedding_dim (int, 可选, 默认值 512) — 生成嵌入的维度。
  • dtype (torch.dtype, 可选, 默认值 torch.float32) — 生成嵌入的数据类型。

返回值

torch.Tensor

形状为 (len(w), embedding_dim) 的嵌入向量。

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

< > 在 GitHub 上更新