Diffusers 文档

控制图像质量

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

控制图像质量

扩散模型的组件,例如 UNet 和调度器,可以进行优化以提高生成图像的质量,从而带来更好的细节。如果您没有资源简单地使用更大的模型进行推理,这些技术尤其有用。您可以在推理期间启用这些技术,而无需任何额外的训练。

本指南将向您展示如何在 pipeline 中启用这些技术,以及如何配置它们以提高生成图像的质量。

细节

FreeU 通过重新平衡 UNet 的主干和跳跃连接权重来改善图像细节。跳跃连接可能导致模型忽略一些主干语义,这可能会导致生成图像中出现不自然的图像细节。这项技术不需要任何额外的训练,可以在图像到图像和文本到视频等任务的推理过程中即时应用。

在您的 pipeline 上使用 enable_freeu() 方法,并配置主干(b1b2)和跳跃连接(s1s2)的缩放因子。每个缩放因子后面的数字对应于应用该因子的 UNet 中的阶段。查看 FreeU 存储库,以获取不同模型的参考超参数。

Stable Diffusion v1-5
Stable Diffusion v2-1
Stable Diffusion XL
Zeroscope
import torch
from diffusers import DiffusionPipeline

pipeline = DiffusionPipeline.from_pretrained(
    "stable-diffusion-v1-5/stable-diffusion-v1-5", torch_dtype=torch.float16, safety_checker=None
).to("cuda")
pipeline.enable_freeu(s1=0.9, s2=0.2, b1=1.5, b2=1.6)
generator = torch.Generator(device="cpu").manual_seed(33)
prompt = ""
image = pipeline(prompt, generator=generator).images[0]
image
FreeU 已禁用
FreeU 已启用

调用 pipelines.StableDiffusionMixin.disable_freeu() 方法禁用 FreeU。

pipeline.disable_freeu()
< > 在 GitHub 上更新