Diffusers 文档

GLIGEN(基于文本生成图像)

Hugging Face's logo
加入 Hugging Face 社区

并访问增强版文档体验

开始使用

GLIGEN (基于语言的图像生成)

GLIGEN 模型由来自 威斯康星大学麦迪逊分校、哥伦比亚大学和微软 的研究人员和工程师创建。 StableDiffusionGLIGENPipelineStableDiffusionGLIGENTextImagePipeline 可以生成以接地输入为条件的照片级图像。除了文本和带有 StableDiffusionGLIGENPipeline 的边界框外,如果给出输入图像, StableDiffusionGLIGENTextImagePipeline 可以将文本描述的物体插入到边界框定义的区域中。否则,它将生成由标题/提示描述的图像,并将文本描述的物体插入到边界框定义的区域中。它在 COCO2014D 和 COCO2014CD 数据集上进行训练,模型使用冻结的 CLIP ViT-L/14 文本编码器来以接地输入为条件。

来自 论文 的摘要是

大规模文本到图像扩散模型取得了惊人的进步。然而,现状是仅使用文本输入,这会阻碍可控性。在这项工作中,我们提出了 GLIGEN,即基于语言的图像生成,这是一种新颖的方法,它建立在现有的预训练文本到图像扩散模型的基础上,并扩展了其功能,使其能够以接地输入为条件。为了保留预训练模型的大量概念知识,我们冻结了其所有权重,并通过门控机制将接地信息注入到新的可训练层中。我们的模型使用标题和边界框条件输入实现了开放世界的基于语言的文本到图像生成,并且接地能力很好地推广到新颖的空间配置和概念。GLIGEN 在 COCO 和 LVIS 上的零样本性能远远超过了现有的监督布局到图像基线。

务必查看稳定扩散的 技巧 部分,了解如何探索调度器速度和质量之间的权衡,以及如何有效地重用管道组件!

如果你想将其中一个官方检查点用于一项任务,请探索 gligen Hub 组织!

StableDiffusionGLIGENPipelineNikhil Gajendrakumar 贡献, StableDiffusionGLIGENTextImagePipelineNguyễn Công Tú Anh 贡献。

StableDiffusionGLIGENPipeline

class diffusers.StableDiffusionGLIGENPipeline

< >

( vae: AutoencoderKL text_encoder: CLIPTextModel tokenizer: CLIPTokenizer unet: UNet2DConditionModel scheduler: KarrasDiffusionSchedulers safety_checker: StableDiffusionSafetyChecker feature_extractor: CLIPImageProcessor requires_safety_checker: bool = True )

参数

  • vae (AutoencoderKL) — 用于将图像编码和解码到潜在表示的变分自动编码器 (VAE) 模型。
  • text_encoder (CLIPTextModel) — 冻结的文本编码器 (clip-vit-large-patch14)。
  • tokenizer (CLIPTokenizer) — 用于对文本进行标记的 CLIPTokenizer
  • unet (UNet2DConditionModel) — 用于对编码的图像潜在变量进行去噪的 UNet2DConditionModel
  • scheduler (SchedulerMixin) — 与 unet 结合使用的调度器,用于对编码的图像潜在变量进行去噪。 可以是以下之一:DDIMSchedulerLMSDiscreteSchedulerPNDMScheduler
  • safety_checker (StableDiffusionSafetyChecker) — 用于估计生成图像是否可能被认为具有冒犯性或有害性的分类模块。 有关模型潜在危害的更多详细信息,请参阅 模型卡
  • feature_extractor (CLIPImageProcessor) — 用于从生成图像中提取特征的 CLIPImageProcessor;用作 safety_checker 的输入。

使用带 Grounded-Language-to-Image Generation (GLIGEN) 的 Stable Diffusion 进行文本到图像生成的管道。

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

__call__

< >

( 提示: Union = None 高度: Optional = None 宽度: Optional = None 推理步骤数量: int = 50 引导尺度: float = 7.5 GLIGEN 定时采样 beta: float = 0.3 GLIGEN 短语: List = None GLIGEN 框: List = None GLIGEN 修补图像: Optional = None 负面提示: Union = None 每个提示的图像数量: Optional = 1 eta: float = 0.0 生成器: Union = None 潜在变量: Optional = None 提示嵌入: Optional = None 负面提示嵌入: Optional = None 输出类型: Optional = 'pil' 返回字典: bool = True 回调: Optional = None 回调步骤: int = 1 交叉注意力参数: Optional = None CLIP 跳过: Optional = None ) 稳定扩散管道输出 or tuple

参数

  • 提示 (str or List[str], 可选) — 指导图像生成的提示或提示。如果没有定义,则需要传递 prompt_embeds
  • 高度 (int, 可选, 默认值为 self.unet.config.sample_size * self.vae_scale_factor) — 生成的图像的高度(以像素为单位)。
  • 宽度 (int, 可选, 默认值为 self.unet.config.sample_size * self.vae_scale_factor) — 生成的图像的宽度(以像素为单位)。
  • 推理步骤数量 (int, 可选, 默认值为 50) — 降噪步骤的数量。更多的降噪步骤通常会导致更高的图像质量,但推理速度会变慢。
  • 引导尺度 (float, 可选, 默认值为 7.5) — 更高的引导尺度值会鼓励模型生成与文本 提示 紧密相关的图像,但会降低图像质量。当 guidance_scale > 1 时启用引导尺度。
  • GLIGEN 短语 (List[str]) — 指导在每个由相应的 gligen_boxes 定义的区域中包含什么内容的短语。每个边界框应该只有一个短语。
  • GLIGEN 框 (List[List[float]]) — 标识图像中将被相应的 gligen_phrases 描述的内容填充的矩形区域的边界框。每个矩形框都定义为一个包含 4 个元素 [xmin, ymin, xmax, ymax]List[float],其中每个值介于 [0,1] 之间。
  • gligen_inpaint_image (PIL.Image.Image, 可选) — 如果提供,输入图像将使用 gligen_boxesgligen_phrases 描述的对象进行修复。 否则,它将被视为对空白输入图像的生成任务。
  • gligen_scheduled_sampling_beta (float, 默认值为 0.3) — 来自 GLIGEN: Open-Set Grounded Text-to-Image Generation 的调度采样因子。 调度采样因子仅在推理期间用于调度采样,以提高质量和可控性。
  • negative_prompt (strList[str], 可选) — 指导图像生成中不包含内容的提示或提示。 如果未定义,则需要改用 negative_prompt_embeds。 当不使用指导(guidance_scale < 1)时被忽略。
  • num_images_per_prompt (int, 可选,默认值为 1) — 每个提示生成的图像数量。
  • eta (float, 可选,默认值为 0.0) — 对应于 DDIM 论文中的参数 eta (η)。 仅适用于 DDIMScheduler,在其他调度器中被忽略。
  • generator (torch.GeneratorList[torch.Generator], 可选) — 一个 torch.Generator,用于使生成确定性。
  • latents (torch.Tensor, 可选) — 从高斯分布中采样的预先生成的噪声潜伏,用作图像生成的输入。 可用于使用不同的提示微调相同的生成。 如果未提供,则通过使用提供的随机 generator 采样来生成潜伏张量。
  • prompt_embeds (torch.Tensor, 可选) — 预先生成的文本嵌入。 可用于轻松调整文本输入(提示加权)。 如果未提供,则从 prompt 输入参数生成文本嵌入。
  • negative_prompt_embeds (torch.Tensor, 可选) — 预先生成的负文本嵌入。 可用于轻松调整文本输入(提示加权)。 如果未提供,则从 negative_prompt 输入参数生成 negative_prompt_embeds
  • output_type (str, 可选,默认值为 "pil") — 生成的图像的输出格式。 在 PIL.Imagenp.array 之间选择。
  • callback (Callable, 可选) — 在推理过程中每 callback_steps 步调用一次的函数。该函数使用以下参数调用:callback(step: int, timestep: int, latents: torch.Tensor)
  • callback_steps (int, 可选,默认值为 1) — callback 函数的调用频率。如果未指定,则在每一步都调用回调函数。
  • cross_attention_kwargs (dict, 可选) — 如果指定,则将作为关键字参数字典传递给 self.processor 中定义的 AttentionProcessor
  • guidance_rescale (float, 可选,默认值为 0.0) — 来自 Common Diffusion Noise Schedules and Sample Steps are Flawed 的引导重缩放因子。引导重缩放因子应该在使用零终端 SNR 时修复过度曝光。
  • clip_skip (int, 可选) — 从 CLIP 计算提示嵌入时要跳过的层数。值为 1 表示将使用倒数第二层的输出计算提示嵌入。

返回值

StableDiffusionPipelineOutputtuple

如果 return_dictTrue,则返回 StableDiffusionPipelineOutput,否则返回一个 tuple,其中第一个元素是包含生成的图像的列表,第二个元素是包含 bool 的列表,指示相应的生成的图像是否包含“不适合工作”(nsfw)内容。

用于生成流水线的调用函数。

示例

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

>>> # Insert objects described by text at the region defined by bounding boxes
>>> pipe = StableDiffusionGLIGENPipeline.from_pretrained(
...     "masterful/gligen-1-4-inpainting-text-box", variant="fp16", torch_dtype=torch.float16
... )
>>> pipe = pipe.to("cuda")

>>> input_image = load_image(
...     "https://hf.co/datasets/huggingface/documentation-images/resolve/main/diffusers/gligen/livingroom_modern.png"
... )
>>> prompt = "a birthday cake"
>>> boxes = [[0.2676, 0.6088, 0.4773, 0.7183]]
>>> phrases = ["a birthday cake"]

>>> images = pipe(
...     prompt=prompt,
...     gligen_phrases=phrases,
...     gligen_inpaint_image=input_image,
...     gligen_boxes=boxes,
...     gligen_scheduled_sampling_beta=1,
...     output_type="pil",
...     num_inference_steps=50,
... ).images

>>> images[0].save("./gligen-1-4-inpainting-text-box.jpg")

>>> # Generate an image described by the prompt and
>>> # insert objects described by text at the region defined by bounding boxes
>>> pipe = StableDiffusionGLIGENPipeline.from_pretrained(
...     "masterful/gligen-1-4-generation-text-box", variant="fp16", torch_dtype=torch.float16
... )
>>> pipe = pipe.to("cuda")

>>> prompt = "a waterfall and a modern high speed train running through the tunnel in a beautiful forest with fall foliage"
>>> boxes = [[0.1387, 0.2051, 0.4277, 0.7090], [0.4980, 0.4355, 0.8516, 0.7266]]
>>> phrases = ["a waterfall", "a modern high speed train running through the tunnel"]

>>> images = pipe(
...     prompt=prompt,
...     gligen_phrases=phrases,
...     gligen_boxes=boxes,
...     gligen_scheduled_sampling_beta=1,
...     output_type="pil",
...     num_inference_steps=50,
... ).images

>>> images[0].save("./gligen-1-4-generation-text-box.jpg")

enable_vae_slicing

< >

( )

启用切片式 VAE 解码。启用此选项后,VAE 将把输入张量分成切片,以分多个步骤计算解码。这对于节省内存并允许更大的批次大小很有用。

disable_vae_slicing

< >

( )

禁用切片式 VAE 解码。如果之前启用了 enable_vae_slicing,则此方法将恢复一步计算解码。

enable_vae_tiling

< >

( )

启用平铺式 VAE 解码。启用此选项后,VAE 将把输入张量分成平铺,以分多个步骤计算解码和编码。这对于节省大量内存并允许处理更大的图像很有用。

disable_vae_tiling

< >

( )

禁用平铺式 VAE 解码。如果之前启用了 enable_vae_tiling,则此方法将恢复一步计算解码。

enable_model_cpu_offload

< >

( gpu_id: Optional = None device: Union = 'cuda' )

参数

  • gpu_id (int, 可选) — 要用于推理的加速器 ID。如果未指定,将默认为 0。
  • device (torch.Devicestr, 可选, 默认为 “cuda”) — 要用于推理的加速器 PyTorch 设备类型。如果未指定,将默认为 “cuda”。

使用 accelerate 将所有模型卸载到 CPU,从而减少内存使用,同时对性能的影响很小。与 enable_sequential_cpu_offload 相比,此方法在调用模型的 forward 方法时将一个完整的模型一次移动到 GPU,并且模型会一直保留在 GPU 中,直到下一个模型运行。内存节省比 enable_sequential_cpu_offload 少,但由于 unet 的迭代执行,性能要好得多。

prepare_latents

< >

( batch_size num_channels_latents height width dtype device generator latents = None )

enable_fuser

< >

( enabled = True )

encode_prompt

< >

( prompt device num_images_per_prompt do_classifier_free_guidance negative_prompt = None prompt_embeds: Optional = None negative_prompt_embeds: Optional = None lora_scale: Optional = None clip_skip: Optional = None )

参数

  • prompt (strList[str], 可选) — 要编码的提示 device — (torch.device): torch 设备
  • num_images_per_prompt (int) — 每个提示应该生成的图像数量
  • negative_prompt (strList[str], 可选) — 不用于引导图像生成的提示或提示。 如果未定义,则必须传递 negative_prompt_embeds。 当不使用引导时(即,如果 guidance_scale 小于 1)会被忽略。
  • prompt_embeds (torch.Tensor, 可选) — 预生成的文本嵌入。 可用于轻松调整文本输入,例如 提示加权。 如果未提供,文本嵌入将从 prompt 输入参数生成。
  • negative_prompt_embeds (torch.Tensor, 可选) — 预生成的负文本嵌入。 可用于轻松调整文本输入,例如 提示加权。 如果未提供,negative_prompt_embeds 将从 negative_prompt 输入参数生成。
  • lora_scale (float, 可选) — 如果加载了 LoRA 层,则将应用于文本编码器所有 LoRA 层的 LoRA 比例。
  • clip_skip (int, 可选) — 从 CLIP 计算提示嵌入时要跳过的层数。 值 1 表示将使用倒数第二层的输出计算提示嵌入。

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

StableDiffusionGLIGENTextImagePipeline

class diffusers.StableDiffusionGLIGENTextImagePipeline

< >

( vae: AutoencoderKL text_encoder: CLIPTextModel tokenizer: CLIPTokenizer processor: CLIPProcessor image_encoder: CLIPVisionModelWithProjection image_project: CLIPImageProjection unet: UNet2DConditionModel scheduler: KarrasDiffusionSchedulers safety_checker: StableDiffusionSafetyChecker feature_extractor: CLIPImageProcessor requires_safety_checker: bool = True )

参数

  • vae (AutoencoderKL) — 用于将图像编码和解码为潜在表示的变分自动编码器 (VAE) 模型。
  • text_encoder (CLIPTextModel) — 冻结的文本编码器 (clip-vit-large-patch14)。
  • processor (CLIPProcessor) — 用于处理参考图像的 CLIPProcessor
  • image_encoder (CLIPVisionModelWithProjection) — 冻结的图像编码器 (clip-vit-large-patch14)。
  • image_project (CLIPImageProjection) — 用于将图像嵌入投影到短语嵌入空间的 CLIPImageProjection
  • unet (UNet2DConditionModel) — 用于对编码后的图像潜在特征进行降噪的 UNet2DConditionModel
  • scheduler (SchedulerMixin) — 用于与 unet 结合以对编码后的图像潜在特征进行降噪的调度器。 可以是 DDIMSchedulerLMSDiscreteSchedulerPNDMScheduler 中的一种。
  • safety_checker (StableDiffusionSafetyChecker) — 用于估计生成图像是否可能被视为冒犯或有害的分类模块。 请参阅 模型卡,以了解有关模型潜在危害的更多详细信息。
  • feature_extractor (CLIPImageProcessor) — 用于从生成图像中提取特征的 CLIPImageProcessor;用作 safety_checker 的输入。

使用带 Grounded-Language-to-Image Generation (GLIGEN) 的 Stable Diffusion 进行文本到图像生成的管道。

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

__call__

< >

( prompt: Union = None height: Optional = None width: Optional = None num_inference_steps: int = 50 guidance_scale: float = 7.5 gligen_scheduled_sampling_beta: float = 0.3 gligen_phrases: List = None gligen_images: List = None input_phrases_mask: Union = None input_images_mask: Union = None gligen_boxes: List = None gligen_inpaint_image: Optional = None negative_prompt: 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 output_type: Optional = 'pil' return_dict: bool = True callback: Optional = None callback_steps: int = 1 cross_attention_kwargs: Optional = None gligen_normalize_constant: float = 28.7 clip_skip: int = None ) StableDiffusionPipelineOutput or tuple

参数

  • prompt (strList[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, 可选, 默认值为 50) — 降噪步骤的数量。更多的降噪步骤通常会导致更高质量的图像,但推理速度会更慢。
  • guidance_scale (float, 可选, 默认值为 7.5) — 较高的指导比例值会鼓励模型生成与文本 prompt 密切相关的图像,但会降低图像质量。当 guidance_scale > 1 时启用指导比例。
  • gligen_phrases (List[str]) — 指导每个区域(由相应的 gligen_boxes 定义)中包含内容的短语。每个边界框应该只有一个短语。
  • gligen_images (List[PIL.Image.Image]) — 指导每个区域(由相应的 gligen_boxes 定义)中包含内容的图像。每个边界框应该只有一张图像。
  • input_phrases_mask (intList[int]) — 由相应的 input_phrases_mask 定义的预短语掩码输入。
  • input_images_mask (intList[int]) — 由对应 input_images_mask 定义的预图像掩码输入
  • gligen_boxes (List[List[float]]) — 识别图像中将用对应 gligen_phrases 描述的内容填充的矩形区域的边界框。 每个矩形框定义为 List[float],包含 4 个元素 [xmin, ymin, xmax, ymax],每个值介于 [0,1] 之间。
  • gligen_inpaint_image (PIL.Image.Image, 可选) — 如果提供,输入图像将使用 gligen_boxesgligen_phrases 描述的对象进行修复。 否则,它将被视为在空白输入图像上的生成任务。
  • gligen_scheduled_sampling_beta (float,默认值为 0.3) — 来自 GLIGEN:开集接地文本到图像生成 的计划采样因子。 计划采样因子仅在推理过程中针对计划采样而变化,以提高质量和可控性。
  • negative_prompt (strList[str], 可选) — 指导图像生成中不包含什么的提示或提示。 如果未定义,您需要改为传递 negative_prompt_embeds。 当不使用引导 (guidance_scale < 1) 时忽略。
  • num_images_per_prompt (int, 可选,默认值为 1) — 每个提示要生成的图像数量。
  • eta (float, 可选,默认值为 0.0) — 对应于 DDIM 论文中的参数 eta (η)。 仅适用于 DDIMScheduler,在其他调度器中被忽略。
  • generator (torch.GeneratorList[torch.Generator], 可选) — 用于使生成确定性的 torch.Generator
  • latents (torch.Tensor, 可选) — 从高斯分布采样的预生成噪声潜码,用作图像生成的输入。 可用于使用不同的提示调整相同的生成。 如果未提供,潜码张量将通过使用提供的随机 generator 采样来生成。
  • prompt_embeds (torch.Tensor, 可选) — 预生成的文本嵌入。 可用于轻松调整文本输入(提示加权)。 如果未提供,文本嵌入将从 prompt 输入参数生成。
  • output_type (str, 可选, 默认值: "pil") — 生成的图像的输出格式。在 PIL.Imagenp.array 之间选择。
  • return_dict (bool, 可选, 默认值: True) — 是否返回 StableDiffusionPipelineOutput 而不是简单的元组。
  • callback (Callable, 可选) — 在推理过程中每 callback_steps 步调用一次的函数。该函数使用以下参数调用: callback(step: int, timestep: int, latents: torch.Tensor)
  • callback_steps (int, 可选, 默认值: 1) — callback 函数调用的频率。如果未指定,则在每一步都调用回调函数。
  • cross_attention_kwargs (dict, 可选) — 如果指定,则传递给 AttentionProcessor 的关键字参数字典,如 self.processor 中定义。
  • gligen_normalize_constant (float, 可选, 默认值: 28.7) — 图像嵌入的归一化值。
  • clip_skip (int, 可选) — 从 CLIP 计算提示嵌入时要跳过的层数。值为 1 意味着将使用倒数第二层的输出计算提示嵌入。

返回值

StableDiffusionPipelineOutputtuple

如果 return_dictTrue,则返回 StableDiffusionPipelineOutput,否则返回一个 tuple,其中第一个元素是包含生成的图像的列表,第二个元素是包含 bool 的列表,指示相应的生成的图像是否包含“不适合工作”(nsfw)内容。

用于生成流水线的调用函数。

示例

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

>>> # Insert objects described by image at the region defined by bounding boxes
>>> pipe = StableDiffusionGLIGENTextImagePipeline.from_pretrained(
...     "anhnct/Gligen_Inpainting_Text_Image", torch_dtype=torch.float16
... )
>>> pipe = pipe.to("cuda")

>>> input_image = load_image(
...     "https://hf.co/datasets/huggingface/documentation-images/resolve/main/diffusers/gligen/livingroom_modern.png"
... )
>>> prompt = "a backpack"
>>> boxes = [[0.2676, 0.4088, 0.4773, 0.7183]]
>>> phrases = None
>>> gligen_image = load_image(
...     "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/gligen/backpack.jpeg"
... )

>>> images = pipe(
...     prompt=prompt,
...     gligen_phrases=phrases,
...     gligen_inpaint_image=input_image,
...     gligen_boxes=boxes,
...     gligen_images=[gligen_image],
...     gligen_scheduled_sampling_beta=1,
...     output_type="pil",
...     num_inference_steps=50,
... ).images

>>> images[0].save("./gligen-inpainting-text-image-box.jpg")

>>> # Generate an image described by the prompt and
>>> # insert objects described by text and image at the region defined by bounding boxes
>>> pipe = StableDiffusionGLIGENTextImagePipeline.from_pretrained(
...     "anhnct/Gligen_Text_Image", torch_dtype=torch.float16
... )
>>> pipe = pipe.to("cuda")

>>> prompt = "a flower sitting on the beach"
>>> boxes = [[0.0, 0.09, 0.53, 0.76]]
>>> phrases = ["flower"]
>>> gligen_image = load_image(
...     "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/gligen/pexels-pixabay-60597.jpg"
... )

>>> images = pipe(
...     prompt=prompt,
...     gligen_phrases=phrases,
...     gligen_images=[gligen_image],
...     gligen_boxes=boxes,
...     gligen_scheduled_sampling_beta=1,
...     output_type="pil",
...     num_inference_steps=50,
... ).images

>>> images[0].save("./gligen-generation-text-image-box.jpg")

>>> # Generate an image described by the prompt and
>>> # transfer style described by image at the region defined by bounding boxes
>>> pipe = StableDiffusionGLIGENTextImagePipeline.from_pretrained(
...     "anhnct/Gligen_Text_Image", torch_dtype=torch.float16
... )
>>> pipe = pipe.to("cuda")

>>> prompt = "a dragon flying on the sky"
>>> boxes = [[0.4, 0.2, 1.0, 0.8], [0.0, 1.0, 0.0, 1.0]]  # Set `[0.0, 1.0, 0.0, 1.0]` for the style

>>> gligen_image = load_image(
...     "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/landscape.png"
... )

>>> gligen_placeholder = load_image(
...     "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/landscape.png"
... )

>>> images = pipe(
...     prompt=prompt,
...     gligen_phrases=[
...         "dragon",
...         "placeholder",
...     ],  # Can use any text instead of `placeholder` token, because we will use mask here
...     gligen_images=[
...         gligen_placeholder,
...         gligen_image,
...     ],  # Can use any image in gligen_placeholder, because we will use mask here
...     input_phrases_mask=[1, 0],  # Set 0 for the placeholder token
...     input_images_mask=[0, 1],  # Set 0 for the placeholder image
...     gligen_boxes=boxes,
...     gligen_scheduled_sampling_beta=1,
...     output_type="pil",
...     num_inference_steps=50,
... ).images

>>> images[0].save("./gligen-generation-text-image-box-style-transfer.jpg")

enable_vae_slicing

< >

( )

启用切片式 VAE 解码。启用此选项后,VAE 将把输入张量分成切片,以分多个步骤计算解码。这对于节省内存并允许更大的批次大小很有用。

disable_vae_slicing

< >

( )

禁用切片式 VAE 解码。如果之前启用了 enable_vae_slicing,则此方法将恢复一步计算解码。

enable_vae_tiling

< >

( )

启用平铺式 VAE 解码。启用此选项后,VAE 将把输入张量分成平铺,以分多个步骤计算解码和编码。这对于节省大量内存并允许处理更大的图像很有用。

< >

( gpu_id: Optional = None device: Union = 'cuda' )

参数

  • gpu_id (int, 可选) — 用于推理的加速器的 ID。如果没有指定,它将默认为 0。
  • device (torch.Devicestr, 可选, 默认为“cuda”) — 用于推理的加速器的 PyTorch 设备类型。如果没有指定,它将默认为“cuda”。

使用 accelerate 将所有模型卸载到 CPU,从而减少内存使用,同时对性能的影响很小。与 enable_sequential_cpu_offload 相比,此方法在调用模型的 forward 方法时将一个完整的模型一次移动到 GPU,并且模型会一直保留在 GPU 中,直到下一个模型运行。内存节省比 enable_sequential_cpu_offload 少,但由于 unet 的迭代执行,性能要好得多。

prepare_latents

< >

( batch_size num_channels_latents height width dtype device generator latents = None )

enable_fuser

< >

( enabled = True )

complete_mask

< >

( has_mask max_objs device )

根据输入掩码对每个短语和图像对应的值0 或 1,掩盖对应于短语和图像的特征。

crop

< >

( im new_width new_height )

将输入图像裁剪到指定的尺寸。

draw_inpaint_mask_from_boxes

< >

( boxes size )

根据给定的框创建修复掩码。此函数使用提供的框生成修复掩码,以标记需要修复的区域。

encode_prompt

< >

( prompt device num_images_per_prompt do_classifier_free_guidance negative_prompt = None prompt_embeds: Optional = None negative_prompt_embeds: Optional = None lora_scale: Optional = None clip_skip: Optional = None )

参数

  • num_images_per_prompt (int) — 每个提示应该生成的图像数量
  • do_classifier_free_guidance (bool) — 是否使用分类器免费引导
  • negative_prompt (str or List[str], optional) — 不引导图像生成的提示或提示。 如果未定义,则必须传递 negative_prompt_embeds。 在不使用引导时忽略(即,如果 guidance_scale 小于 1,则忽略)。
  • prompt_embeds (torch.Tensor, optional) — 预生成的文本嵌入。 可用于轻松调整文本输入,例如 提示权重。 如果未提供,将从 prompt 输入参数生成文本嵌入。
  • negative_prompt_embeds (torch.Tensor, optional) — 预生成的负文本嵌入。 可用于轻松调整文本输入,例如 提示权重。 如果未提供,将从 negative_prompt 输入参数生成 negative_prompt_embeds。
  • lora_scale (float, optional) — 如果加载了 LoRA 层,则将应用于文本编码器所有 LoRA 层的 LoRA 比例。
  • clip_skip (int, optional) — 从 CLIP 计算提示嵌入时要跳过的层数。 值为 1 表示将使用倒数第二层的输出计算提示嵌入。

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

get_clip_feature

< >

( input normalize_constant device is_image = False )

使用 CLIP 预训练模型获取图像和短语嵌入。 图像嵌入通过投影转换为短语嵌入空间。

get_cross_attention_kwargs_with_grounded

< >

( hidden_size gligen_phrases gligen_images gligen_boxes input_phrases_mask input_images_mask repeat_batch normalize_constant max_objs device )

准备包含有关地面输入(框、掩码、图像嵌入、短语嵌入)的信息的交叉注意力 kwargs。

get_cross_attention_kwargs_without_grounded

< >

( hidden_size repeat_batch max_objs device )

准备交叉注意力关键字,不包含有关地面输入(框、掩码、图像嵌入、短语嵌入)的信息(所有都是零张量)。

target_size_center_crop

< >

( im new_hw )

将图像裁剪并调整大小到目标大小,同时保持中心。

StableDiffusionPipelineOutput

class diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput

< >

( images: Union nsfw_content_detected: Optional )

参数

  • images (List[PIL.Image.Image]np.ndarray) — 长度为 batch_size 的去噪 PIL 图像列表或形状为 (batch_size, height, width, num_channels) 的 NumPy 数组。
  • nsfw_content_detected (List[bool]) — 指示相应生成图像是否包含“不适合工作”(nsfw)内容的列表,如果无法执行安全检查,则为 None

Stable Diffusion 管道的输出类。

< > 在 GitHub 上更新