AuraFlow
AuraFlow 借鉴了 Stable Diffusion 3,是目前拥有 Apache 2.0 许可证的最大的文本到图像生成模型。该模型在 GenEval 基准测试中取得了最先进的结果。
它由 Fal 团队开发,更多相关信息可以参考 这篇博客文章。
在消费级硬件设备上运行 AuraFlow 可能非常昂贵。但是,您可以执行一系列优化来更快地运行它,并以更友好的方式使用内存。查看 此部分,以了解更多详细信息。
AuraFlowPipeline
class 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__
< 源代码 >( 提示: Union = None 负面提示: Union = None 推理步骤数: int = 50 时间步长: List = None sigma 值: List = None 引导尺度: float = 3.5 每个提示生成的图像数量: Optional = 1 高度: Optional = 1024 宽度: Optional = 1024 生成器: Union = None 潜在变量: Optional = None 提示嵌入: Optional = None 提示注意力掩码: Optional = None 负面提示嵌入: Optional = None 负面提示注意力掩码: Optional = None 最大序列长度: int = 256 输出类型: Optional = 'pil' 返回字典: bool = True )
参数
- 提示 (
str
或List[str]
, 可选) — 指导图像生成的提示或提示。如果未定义,则必须传递prompt_embeds
. 代替。 - 负面提示 (
str
或List[str]
, 可选) — 不指导图像生成的提示或提示。如果未定义,则必须传递negative_prompt_embeds
代替。当不使用引导时忽略(即,如果guidance_scale
小于1
时忽略)。 - 高度 (
int
, 可选, 默认值为 self.transformer.config.sample_size * self.vae_scale_factor) — 生成的图像的高度(以像素为单位)。默认情况下,此设置为 1024,以获得最佳效果。 - 宽度 (
int
, 可选, 默认值为 self.transformer.config.sample_size * self.vae_scale_factor) — 生成的图像的宽度(以像素为单位)。默认情况下,此设置为 1024,以获得最佳效果。 - 推理步骤数 (
int
, 可选, 默认值为 50) — 降噪步骤的数量。更多的降噪步骤通常会导致更高的图像质量,但会降低推理速度。 - sigma 值 (
List[float]
, 可选) — 自定义 sigma 值,用于覆盖调度器的步长间距策略。如果传递了sigmas
,num_inference_steps
和timesteps
必须为None
。 - 时间步长 (
List[int]
, 可选) — 用于降噪过程的自定义时间步长,适用于在set_timesteps
方法中支持timesteps
参数的调度器。如果未定义,将使用传递num_inference_steps
时的默认行为。必须按降序排列。 - 引导尺度 (
float
, 可选, 默认值为 5.0) — 如 无分类器扩散引导 中定义的引导尺度。guidance_scale
定义为 Imagen 论文 的等式 2 中的w
。通过设置guidance_scale > 1
来启用引导尺度。更高的引导尺度鼓励生成与文本prompt
密切相关的图像,通常会降低图像质量。 - 每个提示生成的图像数量 (
int
, 可选, - 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_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_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
< 源代码 >( prompt: Union negative_prompt: Union = None do_classifier_free_guidance: bool = True 参数 str
或 List[str]
, 可选) — 要编码的提示 str
或 List[str]
, 可选) — 不引导图像生成的提示。如果没有定义,则必须传递 negative_prompt_embeds
。 不使用引导时忽略(即,如果 guidance_scale
小于 1
,则忽略)。 bool
, 可选, 默认值为 True
) — 是否使用分类器自由引导 int
, 可选, 默认值为 1) — 每个提示应该生成的图像数量 设备 — (torch.device
, 可选): 将生成的嵌入放置的火炬设备 torch.Tensor
, 可选) — 预生成的文本嵌入。 可用于轻松调整文本输入,例如提示加权。 如果未提供,则将从 prompt
输入参数生成文本嵌入。 torch.Tensor
, 可选) — 预生成的文本嵌入的注意力掩码。 torch.Tensor
, 可选) — 预生成的负文本嵌入。 torch.Tensor
, 可选) — 预生成的负文本嵌入的注意力掩码。 int
, 默认值为 256) — 用于提示的最大序列长度。
将提示编码为文本编码器隐藏状态。