# FreeU

[FreeU](https://huggingface.co/papers/2309.11497) 通过重新平衡 UNet 解码器从主干特征与跳跃连接特征中提取信息的比例来提升图像细节。跳跃连接可能会淹没主干的语义特征，从而导致输出中出现不自然的细节。FreeU 无需训练，并且可以在文本生成图像和文本生成视频流水线的推理阶段随时开启或关闭。

> [!NOTE]
> FreeU 仅适用于基于 UNet 的流水线，例如 Stable Diffusion、SDXL 和 AnimateDiff。它不支持基于 Transformer 的流水线，例如 Flux 或 Qwen-Image。

在您的 pipeline 上使用 [enable_freeu()](/docs/diffusers/v0.43.0/zh/api/pipelines/overview#diffusers.StableDiffusionMixin.enable_freeu) 方法并配置缩放因子。`b1` 和 `b2` 用于放大主干特征，而 `s1` 和 `s2` 用于衰减跳跃特征。`1` 和 `2` 分别指代 UNet 解码器的前两个上采样阶段。有关不同模型的参考超参数，请参阅 [FreeU](https://github.com/ChenyangSi/FreeU#parameters) 仓库。

从模型的仓库值开始。若要针对其他模型进行调优，请保持 `s1=0.9` 和 `s2=0.2` 不变，并优先调整 `b1` 和 `b2`。将四个因子全部设置为 `1.0` 等同于禁用 FreeU。较大的 `b` 值会增强效果，但可能会过度平滑精细纹理，而降低 `s1` 和 `s2` 可以抵消这种影响。

```py
import torch
from diffusers import DiffusionPipeline

pipeline = DiffusionPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16,
).to("cuda")  # or "mps", "xpu", "cpu"
pipeline.enable_freeu(s1=0.9, s2=0.2, b1=1.3, b2=1.4)
generator = torch.Generator(device="cpu").manual_seed(13)
prompt = "A squirrel eating a burger"
image = pipeline(prompt, generator=generator).images[0]
image
```

  
    
    FreeU 已禁用
  
  
    
    已启用 FreeU
  

调用 [disable_freeu()](/docs/diffusers/v0.43.0/zh/api/pipelines/overview#diffusers.StableDiffusionMixin.disable_freeu) 方法以禁用 FreeU。

```py
pipeline.disable_freeu()
```

## 后续步骤

- 有关完整的参数说明，请参阅 [enable_freeu()](/docs/diffusers/v0.43.0/zh/api/pipelines/overview#diffusers.StableDiffusionMixin.enable_freeu) API 参考。
- 使用 [AnimateDiff](../api/pipelines/animatediff) 在视频上尝试 FreeU。

