# FreeU

[FreeU](https://huggingface.co/papers/2309.11497)は、UNetデコーダーがバックボーン特徴とスキップ接続特徴をそれぞれどの程度参照するかというバランスを再調整することで、画像の詳細度を向上させます。スキップ接続がバックボーンのセマンティック特徴を打ち消してしまうと、出力に不自然な詳細が生じます。FreeUは学習を必要とせず、テキストから画像やテキストから動画へのパイプラインにおいて、推論時にオン/オフを切り替えることができます。

> [!NOTE]
> FreeUは、Stable Diffusion、SDXL、AnimateDiffなどのUNetベースのパイプラインでのみ動作します。FluxやQwen-Imageなどのtransformerベースのパイプラインではサポートされていません。

パイプラインの [enable_freeu()](/docs/diffusers/v0.43.0/ja/api/pipelines/overview#diffusers.StableDiffusionMixin.enable_freeu) メソッドを使用し、スケーリング係数を設定します。`b1` と `b2` はバックボーンの特徴量を増幅し、`s1` と `s2` はスキップ特徴量を減衰します。`1` と `2` は、UNet デコーダーの最初の 2 つのアップサンプリング段階を指します。異なるモデル向けの参考となるハイパーパラメータについては、[FreeU](https://github.com/ChenyangSi/FreeU#parameters) リポジトリを参照してください。

モデルのリポジトリ値から開始します。他のモデルにチューニングする場合は、`s1=0.9` と `s2=0.2` を維持し、まず `b1` と `b2` を調整してください。4つの係数をすべて `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 有効
  

FreeUを無効にするには、[disable_freeu()](/docs/diffusers/v0.43.0/ja/api/pipelines/overview#diffusers.StableDiffusionMixin.disable_freeu)メソッドを呼び出します。

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

## 次のステップ

- [enable_freeu()](/docs/diffusers/v0.43.0/ja/api/pipelines/overview#diffusers.StableDiffusionMixin.enable_freeu)のAPIリファレンスに、パラメータの詳細な説明が記載されています。
- [AnimateDiff](../api/pipelines/animatediff)でFreeUを動画に試してください。

