Diffusers 文档
AuraFlow
并获取增强的文档体验
开始使用
AuraFlow
AuraFlow 的灵感来源于 Stable Diffusion 3,是迄今为止最大的文本到图像生成模型,它带有 Apache 2.0 许可证。该模型在 GenEval 基准测试中取得了最先进的结果。
它由 Fal 团队开发,更多详情请见 这篇博客文章。
AuraFlow 在消费级硬件设备上运行可能相当昂贵。但是,您可以执行一系列优化,以使其运行更快且更节省内存。查看此部分了解更多详情。
AuraFlowPipeline
类 diffusers.AuraFlowPipeline
< 源码 >( tokenizer: T5Tokenizer text_encoder: UMT5EncoderModel vae: AutoencoderKL transformer: AuraFlowTransformer2DModel scheduler: FlowMatchEulerDiscreteScheduler )
参数
- tokenizer (
T5TokenizerFast
) — T5Tokenizer 类的分词器。 - text_encoder (
T5EncoderModel
) — 冻结的文本编码器。 AuraFlow 使用 T5,特别是 EleutherAI/pile-t5-xl 变体。 - vae (AutoencoderKL) — 变分自编码器 (VAE) 模型,用于将图像编码和解码为潜在表示和从潜在表示解码图像。
- transformer (AuraFlowTransformer2DModel) — 条件 Transformer (MMDiT 和 DiT) 架构,用于对编码的图像潜在空间进行去噪。
- scheduler (FlowMatchEulerDiscreteScheduler) — 调度器,与
transformer
结合使用,以对编码的图像潜在空间进行去噪。
__call__
< source >( prompt: typing.Union[str, typing.List[str]] = None negative_prompt: typing.Union[str, typing.List[str]] = None num_inference_steps: int = 50 sigmas: typing.List[float] = None guidance_scale: float = 3.5 num_images_per_prompt: typing.Optional[int] = 1 height: typing.Optional[int] = 1024 width: typing.Optional[int] = 1024 generator: typing.Union[torch._C.Generator, typing.List[torch._C.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 max_sequence_length: int = 256 output_type: typing.Optional[str] = 'pil' return_dict: bool = True )
参数
- prompt (
str
或List[str]
, 可选) — 用于引导图像生成的提示或提示列表。如果未定义,则必须传递prompt_embeds
。 - negative_prompt (
str
或List[str]
, 可选) — 不用于引导图像生成的提示或提示列表。如果未定义,则必须传递negative_prompt_embeds
。当不使用引导时忽略(即,如果guidance_scale
小于1
则忽略)。 - height (
int
, 可选, 默认为 self.transformer.config.sample_size * self.vae_scale_factor) — 生成图像的高度像素。 默认设置为 1024 以获得最佳效果。 - width (
int
, 可选, 默认为 self.transformer.config.sample_size * self.vae_scale_factor) — 生成图像的宽度像素。 默认设置为 1024 以获得最佳效果。 - num_inference_steps (
int
, 可选, 默认为 50) — 去噪步骤的数量。 更多的去噪步骤通常会带来更高质量的图像,但会牺牲较慢的推理速度。 - sigmas (
List[float]
, 可选) — 用于覆盖调度器的时间步长策略的自定义 sigmas。 如果传递sigmas
,则num_inference_steps
和timesteps
必须为None
。 - guidance_scale (
float
, 可选, 默认为 5.0) — 无分类器扩散引导 中定义的引导缩放。guidance_scale
定义为 Imagen Paper 等式 2 中的w
。 通过设置guidance_scale > 1
启用引导缩放。 较高的引导缩放鼓励生成与文本prompt
紧密相关的图像,通常以降低图像质量为代价。 - num_images_per_prompt (
int
, 可选, 默认为 1) — 每个提示要生成的图像数量。 - generator (
torch.Generator
或List[torch.Generator]
, 可选) — 用于使生成具有确定性的一个或一组 torch 生成器。 - latents (
torch.FloatTensor
, 可选) — 预生成的噪声潜在变量,从高斯分布中采样,用作图像生成的输入。 可用于使用不同的提示调整相同的生成。 如果未提供,将使用提供的随机generator
采样生成潜在张量。 - prompt_embeds (
torch.FloatTensor
, 可选) — 预生成的文本嵌入。 可用于轻松调整文本输入,例如 提示权重。 如果未提供,将从prompt
输入参数生成文本嵌入。 - prompt_attention_mask (
torch.Tensor
, 可选) — 文本嵌入的预生成注意力掩码。 - negative_prompt_embeds (
torch.FloatTensor
, 可选) — 预生成的负文本嵌入。 可用于轻松调整文本输入,例如 提示权重。 如果未提供,将从negative_prompt
输入参数生成 negative_prompt_embeds。 - negative_prompt_attention_mask (
torch.Tensor
, 可选) — 负文本嵌入的预生成注意力掩码。 - output_type (
str
, 可选, 默认为"pil"
) — 生成图像的输出格式。 在 PIL:PIL.Image.Image
或np.array
之间选择。 - return_dict (
bool
, 可选, 默认为True
) — 是否返回~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput
而不是纯元组。 - max_sequence_length (
int
默认为 256) — 与prompt
一起使用的最大序列长度。
调用管道进行生成时调用的函数。
示例
>>> import torch
>>> from diffusers import AuraFlowPipeline
>>> pipe = AuraFlowPipeline.from_pretrained("fal/AuraFlow", torch_dtype=torch.float16)
>>> pipe = pipe.to("cuda")
>>> prompt = "A cat holding a sign that says hello world"
>>> image = pipe(prompt).images[0]
>>> image.save("aura_flow.png")
返回值: ImagePipelineOutput 或 tuple
: 如果 return_dict
为 True
, 则返回 ImagePipelineOutput, 否则返回 tuple
,其中第一个元素是包含生成图像的列表。
encode_prompt
< source >( prompt: typing.Union[str, typing.List[str]] negative_prompt: typing.Union[str, typing.List[str]] = None do_classifier_free_guidance: bool = True 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 max_sequence_length: int = 256 )
参数
- prompt (
str
或List[str]
, 可选) — 要编码的提示词 - negative_prompt (
str
或List[str]
, 可选) — 不用于引导图像生成的提示词。如果未定义,则必须传递negative_prompt_embeds
。当不使用引导时(即,如果guidance_scale
小于1
时)将被忽略。 - do_classifier_free_guidance (
bool
, 可选, 默认为True
) — 是否使用无分类器引导 - num_images_per_prompt (
int
, 可选, 默认为 1) — 每个提示词应生成的图像数量 - device — (
torch.device
, 可选): 用于放置结果嵌入的 torch 设备 - prompt_embeds (
torch.Tensor
, 可选) — 预生成的文本嵌入。可用于轻松调整文本输入,例如 提示词权重。如果未提供,则将从prompt
输入参数生成文本嵌入。 - prompt_attention_mask (
torch.Tensor
, 可选) — 预生成的文本嵌入的注意力掩码。 - negative_prompt_embeds (
torch.Tensor
, 可选) — 预生成的负面文本嵌入。 - negative_prompt_attention_mask (
torch.Tensor
, 可选) — 预生成的负面文本嵌入的注意力掩码。 - max_sequence_length (
int
, 默认为 256) — 用于提示词的最大序列长度。
将提示词编码为文本编码器隐藏状态。