稳定的级联
该模型基于Würstchen架构,与Stable Diffusion等模型的区别在于它在一个更小的潜在空间中工作。这为什么很重要?潜在空间越小,推理速度越快,训练成本越低。潜在空间有多小?Stable Diffusion使用8倍的压缩因子,将1024x1024的图像编码为128x128。Stable Cascade实现了42倍的压缩因子,这意味着可以将1024x1024的图像编码为24x24,同时保持清晰的重构。然后在此高度压缩的潜在空间中训练文本条件模型。该架构的早期版本与Stable Diffusion 1.5相比,实现了16倍的成本降低。
因此,这类模型非常适合效率重要的应用。此外,所有已知的扩展,如微调、LoRA、ControlNet、IP-Adapter、LCM等,也都适用此方法。
原始代码库可在Stability-AI/StableCascade找到。
模型概述
Stable Cascade包括三个模型:A阶段、B阶段和C阶段,代表了生成图像的级联,因此得名“稳定的级联”。
A阶段和B阶段用于压缩图像,类似于Stable Diffusion中的VAE的职责。然而,在这种配置下,可以达到更高的图像压缩率。而Stable Diffusion模型使用8倍的空间压缩因子,将1024 x 1024分辨率的图像编码为128 x 128,Stable Cascade达到了42倍的压缩因子。这意味着可以将1024 x 1024的图像编码为24 x 24,同时能够准确地解码图像。这带来了更低的训练和推理成本。此外,C阶段负责根据文本提示生成小型的24 x 24潜在值。
C阶段模型在小型24 x 24潜在上操作,并根据文本提示对潜在值进行去噪。该模型也是级联管道中最大的组件,旨在与StableCascadePriorPipeline
一起使用。
阶段B和阶段A模型与StableCascadeDecoderPipeline
一起使用,负责根据小的24 x 24潜在图像生成最终图像。
对于可以与稳定级联模型一起使用的数据类型有一些限制。对于StableCascadePriorPipeline
的官方检查点,不支持使用torch.float16
数据类型。请改用torch.bfloat16
。
为了在使用StableCascadeDecoderPipeline
时使用torch.bfloat16
数据类型,您需要安装PyTorch 2.2.0或更高版本。这也意味着使用带有torch.bfloat16
的StableCascadeCombinedPipeline
同样需要PyTorch 2.2.0或更高版本,因为它内部调用了StableCascadeDecoderPipeline
。
如果无法在您的环境中安装PyTorch 2.2.0或更高版本,则可以单独使用StableCascadeDecoderPipeline
并且使用torch.float16
数据类型。您可以下载全精度或bf16
变体的流程权重,并将权重转换为torch.float16
。
使用示例
import torch
from diffusers import StableCascadeDecoderPipeline, StableCascadePriorPipeline
prompt = "an image of a shiba inu, donning a spacesuit and helmet"
negative_prompt = ""
prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", variant="bf16", torch_dtype=torch.bfloat16)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", variant="bf16", torch_dtype=torch.float16)
prior.enable_model_cpu_offload()
prior_output = prior(
prompt=prompt,
height=1024,
width=1024,
negative_prompt=negative_prompt,
guidance_scale=4.0,
num_images_per_prompt=1,
num_inference_steps=20
)
decoder.enable_model_cpu_offload()
decoder_output = decoder(
image_embeddings=prior_output.image_embeddings.to(torch.float16),
prompt=prompt,
negative_prompt=negative_prompt,
guidance_scale=0.0,
output_type="pil",
num_inference_steps=10
).images[0]
decoder_output.save("cascade.png")
使用阶段B和阶段C模型的轻量级版本
import torch
from diffusers import (
StableCascadeDecoderPipeline,
StableCascadePriorPipeline,
StableCascadeUNet,
)
prompt = "an image of a shiba inu, donning a spacesuit and helmet"
negative_prompt = ""
prior_unet = StableCascadeUNet.from_pretrained("stabilityai/stable-cascade-prior", subfolder="prior_lite")
decoder_unet = StableCascadeUNet.from_pretrained("stabilityai/stable-cascade", subfolder="decoder_lite")
prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", prior=prior_unet)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", decoder=decoder_unet)
prior.enable_model_cpu_offload()
prior_output = prior(
prompt=prompt,
height=1024,
width=1024,
negative_prompt=negative_prompt,
guidance_scale=4.0,
num_images_per_prompt=1,
num_inference_steps=20
)
decoder.enable_model_cpu_offload()
decoder_output = decoder(
image_embeddings=prior_output.image_embeddings,
prompt=prompt,
negative_prompt=negative_prompt,
guidance_scale=0.0,
output_type="pil",
num_inference_steps=10
).images[0]
decoder_output.save("cascade.png")
使用from_single_file加载原始检查点
通过StableCascadeUNet中的from_single_file
方法支持加载原始格式的检查点。
import torch
from diffusers import (
StableCascadeDecoderPipeline,
StableCascadePriorPipeline,
StableCascadeUNet,
)
prompt = "an image of a shiba inu, donning a spacesuit and helmet"
negative_prompt = ""
prior_unet = StableCascadeUNet.from_single_file(
"https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_c_bf16.safetensors",
torch_dtype=torch.bfloat16
)
decoder_unet = StableCascadeUNet.from_single_file(
"https://huggingface.co/stabilityai/stable-cascade/blob/main/stage_b_bf16.safetensors",
torch_dtype=torch.bfloat16
)
prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", prior=prior_unet, torch_dtype=torch.bfloat16)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", decoder=decoder_unet, torch_dtype=torch.bfloat16)
prior.enable_model_cpu_offload()
prior_output = prior(
prompt=prompt,
height=1024,
width=1024,
negative_prompt=negative_prompt,
guidance_scale=4.0,
num_images_per_prompt=1,
num_inference_steps=20
)
decoder.enable_model_cpu_offload()
decoder_output = decoder(
image_embeddings=prior_output.image_embeddings,
prompt=prompt,
negative_prompt=negative_prompt,
guidance_scale=0.0,
output_type="pil",
num_inference_steps=10
).images[0]
decoder_output.save("cascade-single-file.png")
《使用》 使用
《直接使用》 直接使用
该模型目前用于研究目的。可能的研究领域和任务包括
- 对生成模型的研究。
- 潜在有害内容的模型的安全部署。
- 探究和理解生成模型局限性和偏差。
- 创建艺术品并在设计和其他艺术流程中使用。
- 在教育或创意工具中的应用。
以下为排除的使用。
《范围外使用》 范围外使用
该模型未接受过据实或真实代表人或事件的训练,因此使用该模型生成此类内容超出本模型的能力范围。不应以任何方式使用该模型,违反Stability AI的《接受使用政策》。
局限性和偏差
局限性
- 人脸和人物可能无法正确生成。
- 模型的自动编码部分是有损的。
StableCascadeCombinedPipeline
类 diffusers.StableCascadeCombinedPipeline
< source >( 分词器: CLIPTokenizer 文本编码器: CLIPTextModel 解码器: StableCascadeUNet 调度器: DDPMWuerstchenScheduler vqgan: PaellaVQModel 优先级优先: StableCascadeUNet 优先级文本编码器: CLIPTextModel 优先级分词器: CLIPTokenizer 优先级调度器: DDPMWuerstchenScheduler 优先级特征提取器: Optional = None 优先级图像编码器: Optional = None )
参数
- 分词器 (
CLIPTokenizer
) — 适用于文本输入的解码器分词器。 - 文本编码器 (
CLIPTextModel
) — 适用于文本输入的解码器文本编码器。 - 解码器 (
StableCascadeUNet
) — 用于解码器图像生成流程的解码器模型。 - 调度器 (
DDPMWuerstchenScheduler
) — 用于解码器图像生成流程的调度器。 - VQGAN (
PaellaVQModel
) — 用于解码器图像生成流程的VQGAN模型。 - 特征提取器 (CLIPImageProcessor) — 提取生成图像特征以用于作为
image_encoder
输入的模型。 - image_encoder (
CLIPVisionModelWithProjection
) — 冻结的 CLIP 图像编码器(《clip-vit-large-patch14》)。 - prior_prior (
StableCascadeUNet
) — 需要用于先验管道的先验模型。 - prior_scheduler (
DDPMWuerstchenScheduler
) — 将用于先验管道的调度器。
使用稳定级联的文本到图像生成组合管道。
此模型继承自 DiffusionPipeline。请参阅超类文档,了解库为实现所有管道(如下载或保存、在特定设备上运行等)实施的通用方法。
__call__
< 来源 >( 提示 : 联合 = None图像 : 联合 = None高度 : int = 512宽度 : int = 512先前推理步骤数 : int = 60先前指导缩放 : float = 4.0推理步骤数 : int = 12解码器指导缩放 : float = 0.0负提示 : 联合 = None提示嵌入 : 可选 = None提示嵌入池 : 可选 = None负提示嵌入 : 可选 = None负提示嵌入池 : 可选 = None每个提示图像数 : int = 1生成器 : 联合 = None潜在 : 可选 = None输出类型 : 可选 = 'pil'返回字典 : bool = True先前步骤结束时回调 : 可选 = None先前步骤结束时张量输入 : 列表 = ['latents']步骤结束时回调 : 可选 = None步骤结束时张量输入 : 列表 = ['latents'] )
参数
- 提示 (
str
或List[str]
) — 指导先前和解码器图像生成的提示或提示。 - images (
torch.Tensor
,PIL.Image.Image
,List[torch.Tensor]
,List[PIL.Image.Image]
, 可选) — 指导先验图像生成的图像。 - negative_prompt (
str
或List[str]
, 可选) — 不用于指导图像生成的提示或提示列表。当不使用指导(即当guidance_scale
小于1
时)将被忽略。 - prompt_embeds (
torch.Tensor
, 可选) — 为先验预先生成的文本嵌入。可用于轻松调整文本输入,例如提示加权。如果未提供,将从prompt
输入参数生成文本嵌入。 - num_images_per_prompt (
int
, 可选, 默认为1) — 每个提示生成图像的数量。 - height (
int
, 可选, 默认为512) — 生成的图像的高度,以像素为单位。 - width (
int
, 可选, 默认为512) — 生成的图像的宽度,以像素为单位。 - prior_guidance_scale (
float
, 可选, 默认值为4.0) — 与Classifier-Free Diffusion Guidance中定义的指导尺度相同。`prior_guidance_scale` 被定义为Imagen论文中的方程2中的`w`。通过设置prior_guidance_scale > 1
来启用指导尺度。较高的指导尺度鼓励生成与文本prompt
紧密相关的图像,这通常以牺牲较低图像质量为代价。 - prior_num_inference_steps (
Union[int, Dict[float, int]]
, 可选, 默认值为60) — 前期去噪步骤的数量。更多的去噪步骤通常会导致图像质量更高,但推理速度会变慢。为了更具体的步骤间距,您可以传递定制的prior_timesteps
- num_inference_steps (
int
, 可选, 默认值为12) — 解码器去噪步骤的数量。更多的去噪步骤通常会导致图像质量更高,但推理速度会变慢。为了更具体的步骤间距,您可以传递定制的timesteps
- decoder_guidance_scale (
float
, 可选,默认为0.0) —— 指导尺度,如无分类扩散指导中定义。guidance_scale
定义Imagen 论文中方程2的w
。当设置guidance-scale > 1
时启用指导尺度。较高的指导尺度会鼓励生成与文本prompt
密切相关的图像,通常以降低图像质量为代价。 - generator (
torch.Generator
或List[torch.Generator]
,可选) —— 一个或多个torch生成器,用于使生成过程具有确定性。 - latents (
torch.Tensor
,可选) —— 预生成的噪声latents,从高斯分布中采样,用于作为图像生成输入。可用于调优不同prompt的相同生成。如果不提供,将使用提供的随机generator
生成latents张量。 - output_type (
str
, 可选, 默认为"pil"
) — 生成图像的输出格式。可以选择以下选项:"pil"
(PIL.Image.Image
),"np"
(np.array
) 或"pt"
(torch.Tensor
)。 - return_dict (
bool
, 可选, 默认为True
) — 是否返回一个 ImagePipelineOutput 而非普通元组。 - prior_callback_on_step_end (
Callable
, 可选) — 一个在推理过程中每个去噪步骤结束时调用的函数。该函数使用以下参数调用:prior_callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)
。 - 在步骤结束时调用的先验回调函数的张量输入列表 (
列表
, 可选) — 供给优先回调函数在步骤结束时
函数的张量输入列表。列表中指定的张量将被作为callback_kwargs
参数传递。您只能包括您管道类._callback_tensor_inputs
属性中列出的变量。 - 在推理过程中每个去噪步骤结束时调用的回调函数 (
可调用
, 可选) — 在推理过程中每个去噪步骤结束时调用的函数。该函数使用以下参数调用:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)
。callback_kwargs
将包含一个列表,其中列出回调函数在步骤结束时张量输入
中指定的所有张量。 - 在步骤结束时调用的回调函数张量输入列表 (
列表
, 可选) — 供给在步骤结束时调用的回调函数
的张量输入列表。列表中指定的张量将被作为callback_kwargs
参数传递。您只能包括您管道类._callback_tensor_inputs
属性中列出的变量。
在调用生成流程时调用的函数。
示例
>>> import torch
>>> from diffusers import StableCascadeCombinedPipeline
>>> pipe = StableCascadeCombinedPipeline.from_pretrained(
... "stabilityai/stable-cascade", variant="bf16", torch_dtype=torch.bfloat16
... )
>>> pipe.enable_model_cpu_offload()
>>> prompt = "an image of a shiba inu, donning a spacesuit and helmet"
>>> images = pipe(prompt=prompt)
使用 accelerate 将所有模型卸载到 CPU,通过降低性能影响来减少内存使用。与 enable_sequential_cpu_offload
相比,这种方法在调用 forward
方法时将整个模型移动到 GPU,直到下一个模型运行结束。内存节省低于 enable_sequential_cpu_offload
,但由于 unet
的迭代执行,性能要高得多。
使用 🤗 Accelerate 将所有模型(unet
、text_encoder
、vae
和 安全检查器
状态字典)卸载到 CPU,显著减少内存使用。模型仅在特定子模块的 forward
方法被调用时移动到 torch.device('meta')
并在 GPU 上加载。卸载发生在子模块级别。内存节省高于 enable_model_cpu_offload
,但性能较低。
StableCascadePriorPipeline
类 diffusers.StableCascadePriorPipeline
< 来源 >( tokenizer: CLIPTokenizer text_encoder: CLIPTextModelWithProjection prior: StableCascadeUNet scheduler: DDPMWuerstchenScheduler resolution_multiple: float = 42.67 feature_extractor: 可选 = None image_encoder: 可选 = None )
参数
- 先验条件 (
StableCascadeUNet
) — 用于从文本和/或图像嵌入中近似图像嵌入的稳定级联先验。 - 文本编码器 (
CLIPTextModelWithProjection
) — 冻结的文本编码器 (laion/CLIP-ViT-bigG-14-laion2B-39B-b160k). - 特征提取器 (CLIPImageProcessor) — 提取生成的图像特征作为输入用于
图像编码器
。 - 图像编码器 (
CLIPVisionModelWithProjection
) — 冻结的 CLIP 图像编码器 (clip-vit-large-patch14). - tokenizer (
CLIPTokenizer
) — CLIPTokenizer 类的标记器。 - scheduler (
DDPMWuerstchenScheduler
) — 与prior
配合使用以生成图像嵌入的调度器。 - resolution_multiple (‘float’,可选,默认为 42.67) — 生成多张图像的默认分辨率。
用于生成稳定级联的图像先验的工具列表。
此模型继承自 DiffusionPipeline。请参阅超类文档,了解库为实现所有管道(如下载或保存、在特定设备上运行等)实施的通用方法。
__call__
< 源代码 >( prompt: 合并 = None images: 合并 = None height: int = 1024 width: int = 1024 num_inference_steps: int = 20 timesteps: 列表 = None guidance_scale: float = 4.0 negative_prompt: 合并 = None prompt_embeds: 可选 = None prompt_embeds_pooled: 可选 = None negative_prompt_embeds: 可选 = None negative_prompt_embeds_pooled: 可选 = None image_embeds: 可选 = None num_images_per_prompt: 可选 = 1 generator: 合并 = None latents: 可选 = None output_type: 可选 = 'pt' return_dict: bool = True callback_on_step_end: 可选 = None callback_on_step_end_tensor_inputs: 列表 = ['latents'] )
参数
- prompt (
str
或List[str]
) — 引导图像生成的指示或指示列表。 - 高度 (
int
, 可选, 默认为 1024) —— 生成的图像的像素高度。 - 宽度 (
int
, 可选, 默认为 1024) —— 生成的图像的像素宽度。 - num_inference_steps (
int
, 可选, 默认为 60) —— 降噪步骤的数量。更多的降噪步骤通常会导致图像质量更高,但代价是推理速度更慢。 - guidance_scale(《浮点数》, 可选,默认 8.0)— 指导规模,如 Classifier-Free Diffusion Guidance 中定义。`decoder_guidance_scale` 规定为 Imagen 论文 方程 2 中的 `w`。通过设置
decoder_guidance_scale > 1
启用指导规模。较高的指导规模鼓励生成与文本prompt
密切相关的图像,这通常以降低图像质量为代价。 - negative_prompt(《字符串》或《字符串列表》,可选)— 不应引导图像生成的提示或提示列表。如果不使用引导(即
decoder_guidance_scale
小于 `1` 时),则忽略。 - prompt_embeds(《pytorch.Tensor》可选)— 预生成的文本嵌入。可以用来轻松调整文本输入,例如提示权重。如果不提供,将从
prompt
输入参数中生成文本嵌入。 - prompt_embeds_pooled (
torch.Tensor
, 可选) — 预生成的池化文本嵌入。可用于轻松调整文本输入,例如提示加权。如果未提供,则将从prompt
输入参数生成池化文本嵌入。 - negative_prompt_embeds (
torch.Tensor
, 可选) — 预生成的负文本嵌入。可用于轻松调整文本输入,例如提示加权。如果未提供,则将从negative_prompt
输入参数生成负文本嵌入。 - negative_prompt_embeds_pooled (
torch.Tensor
, 可选) — 预生成的负池化文本嵌入。可用于轻松调整文本输入,例如提示加权。如果未提供,则将从negative_prompt
输入参数生成负池化文本嵌入。 - image_embeds (
torch.Tensor
, 可选) — 预生成的图像嵌入。可用于轻松调整图像输入,例如提示权重。如果没有提供,如果存在,将从image
输入参数生成图像嵌入。 - num_images_per_prompt (
int
, 可选,默认为 1) — 每个提示生成图像的数量。 - generator (
torch.Generator
或List[torch.Generator]
, 可选) — 一个或多个 torch generator(s) 以使生成过程可重复。 - latents (
torch.Tensor
, 可选) — 预生成的噪声潜变量,从高斯分布中采样,用于作为图像生成的输入。可用于用不同的提示调整相同的生成。如果不提供,将使用提供的随机generator
通过采样生成一个潜变量张量。 - output_type (
str
, 可选,默认为"pil"
) — 生成图像的输出格式。可选择:"pil"
(PIL.Image.Image
),"np"
(np.array
) 或"pt"
(torch.Tensor
)。 - return_dict (
bool
, 可选,默认为True
) — 是否返回一个 ImagePipelineOutput 而不是纯元组。 - callback_on_step_end (函数,可选)— 在推理过程中每一步的降噪步骤结束时调用的函数。该函数以以下参数调用:
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 (列表,可选)— 为
callback_on_step_end
函数指定的张量输入列表。列表中指定的张量将作为callback_kwargs
参数传递。您只能包括管道类._callback_tensor_inputs
属性中列出的变量。
在调用生成流程时调用的函数。
示例
>>> import torch
>>> from diffusers import StableCascadePriorPipeline
>>> prior_pipe = StableCascadePriorPipeline.from_pretrained(
... "stabilityai/stable-cascade-prior", torch_dtype=torch.bfloat16
... ).to("cuda")
>>> prompt = "an image of a shiba inu, donning a spacesuit and helmet"
>>> prior_output = pipe(prompt)
StableCascadePriorPipelineOutput
class diffusers.pipelines.stable_cascade.pipeline_stable_cascade_prior.StableCascadePriorPipelineOutput
< 源代码 >( image_embeddings: 联合 prompt_embeds: 联合 prompt_embeds_pooled: 联合 negative_prompt_embeds: 联合 negative_prompt_embeds_pooled: 联合 )
WuerstchenPriorPipeline的输出类。
StableCascadeDecoderPipeline
类 diffusers.StableCascadeDecoderPipeline
< 源代码 >( decoder: StableCascadeUNet tokenizer: CLIPTokenizer text_encoder: CLIPTextModel scheduler: DDPMWuerstchenScheduler vqgan: PaellaVQModel latent_dim_scale: float = 10.67 )
参数
- tokenizer (
CLIPTokenizer
) — CLIP 标记化器。 - text_encoder (
CLIPTextModel
) — CLIP 文本编码器。 - decoder (
StableCascadeUNet
) — Stable Cascade 解码器 U-Net。 - vqgan (
PaellaVQModel
) — VQGAN 模型。 - 调度器 (
DDPMWuerstchenScheduler
) — 与prior
结合使用以生成图像嵌入的调度器。 - 潜在维度比例 (float,
可选
, 默认为 10.67) — 用于从图像嵌入确定 VQ 潜在空间大小的乘数。如果图像嵌入的高度和宽度都是 24,则 VQ 潜在形状需要为高度=int(24*10.67)=256 和宽度=int(24*10.67)=256,以匹配训练条件。
从 Stable Cascade 模型生成图像的管道。
此模型继承自 DiffusionPipeline。请参阅超类文档,了解库为实现所有管道(如下载或保存、在特定设备上运行等)实施的通用方法。
__call__
< 源 >( image_embeddings: 联合类型 prompt: 联合类型 = None num_inference_steps: int = 10 guidance_scale: float = 0.0 negative_prompt: 联合类型 = None prompt_embeds: Optional = None prompt_embeds_pooled: Optional = None negative_prompt_embeds: Optional = None negative_prompt_embeds_pooled: Optional = None num_images_per_prompt: int = 1 generator: 联合类型 = None latents: Optional = None output_type: Optional = 'pil' return_dict: bool = True callback_on_step_end: Optional = None callback_on_step_end_tensor_inputs: List = ['latents'] )
参数
- image_embedding (
torch.Tensor
或List[torch.Tensor]
) — 从图像中提取或由先验模型生成的图像嵌入。 - prompt (
str
或List[str]
) — 指导图像生成的提示或提示列表。 - num_inference_steps (
int
,可选,默认为 12) — 降噪步骤的数量。更多的降噪步骤通常会导致图像质量更高,但推理速度更慢。 - guidance_scale (
float
,可选,默认为 0.0) — 指导尺度,如《无分类扩散指导》中定义。`decoder_guidance_scale` 是《Imagen 论文》中方程 2 的 `w`。启用指导尺度需要设置 `decoder_guidance_scale > 1`。更高的指导尺度会鼓励生成与文本 `prompt` 紧密相关的图像,通常以牺牲图像质量为代价。 - negative_prompt(《字符串》或《字符串列表》, 可选) — 用于指导图像生成的不希望包含的提示。当不使用引导时被忽略(例如,当
decoder_guidance_scale
小于1
时被忽略)。 - prompt_embeds(《torch.Tensor》型,可选) — 预生成的文本嵌入。可用于轻松调整文本输入,例如提示权重。如果没有提供,将根据
prompt
输入参数生成文本嵌入。 - prompt_embeds_pooled(《torch.Tensor》型,可选) — 预生成的池化文本嵌入。可用于轻松调整文本输入,例如提示权重。如果没有提供,将根据
prompt
输入参数生成池化文本嵌入。 - negative_prompt_embeds (
torch.Tensor
,可选)— 预生成的负文本嵌入。可用于轻松调整文本输入,例如,提示权重。如果未提供,则从输入参数negative_prompt
生成negative_prompt_embeds。 - negative_prompt_embeds_pooled (
torch.Tensor
,可选)— 预生成的负池化文本嵌入。可用于轻松调整文本输入,例如,提示权重。如果未提供,则从输入参数negative_prompt
生成negative_prompt_embeds_pooled。 - num_images_per_prompt (
int
,可选,默认为1)— 每个提示生成图像的数量。 - generator (
torch.Generator
或List[torch.Generator]
,可选)—— 用于生成确定性的一个或多个 torch 生成器。 - latents (
torch.Tensor
,默认可选)—— 前期生成的噪声 latents,从高斯分布中采样,用于图像生成的输入。可用于使用不同的提示调整相同的生成。如果没有提供,将使用给定的随机generator
来生成 latents 张量。 - output_type (
str
,默认可选,默认为"pil"
)—— 生成图像的输出格式。选择项包括:"pil"
(《PIL.Image.Image》)、"np"
(《numpy.array》)或"pt"
(《torch.Tensor》)。 - return_dict(《布尔值》, 可选, 默认为
True
) — 是否返回ImagePipelineOutput实例而不是纯元组。 - callback_on_step_end(《可调用对象》, 可选) — 在推理过程中每个降噪步骤结束时调用的函数。该函数以以下参数调用:
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(《列表》, 可选) — 用作
callback_on_step_end
函数的张力输入列表。列表中指定的张力将作为callback_kwargs
参数传递。您只能包括列表中在您的管道类别中定义的._callback_tensor_inputs
属性中列出的变量。
在调用生成流程时调用的函数。
示例
>>> import torch
>>> from diffusers import StableCascadePriorPipeline, StableCascadeDecoderPipeline
>>> prior_pipe = StableCascadePriorPipeline.from_pretrained(
... "stabilityai/stable-cascade-prior", torch_dtype=torch.bfloat16
... ).to("cuda")
>>> gen_pipe = StableCascadeDecoderPipeline.from_pretrain(
... "stabilityai/stable-cascade", torch_dtype=torch.float16
... ).to("cuda")
>>> prompt = "an image of a shiba inu, donning a spacesuit and helmet"
>>> prior_output = pipe(prompt)
>>> images = gen_pipe(prior_output.image_embeddings, prompt=prompt)