Diffusers documentation
FreeU
FreeU
FreeU, UNet decoder'ın backbone özelliklerinden ve atlamalı bağlantı (skip-connection) özelliklerinden ne kadar faydalandığını yeniden dengeleyerek görüntü detayını iyileştirir. Atlamalı bağlantılar, backbone'ın anlamsal (semantic) özelliklerini bastırabilir ve bu da çıktıda yapay detaylara yol açar. FreeU eğitim gerektirmez ve metinden görüntüye (text-to-image) ile metinden videoya (text-to-video) iş akışlarında çıkarım (inference) sırasında etkinleştirilebilir veya devre dışı bırakılabilir.
FreeU yalnızca Stable Diffusion, SDXL ve AnimateDiff gibi UNet tabanlı pipeline'larla çalışır. Flux veya Qwen-Image gibi transformer tabanlı pipeline'lar tarafından desteklenmez.
Hattınızda enable_freeu() yöntemini kullanın ve ölçekleme katsayılarını yapılandırın. b1 ve b2 omurga özelliklerini (backbone features) büyütür, s1 ve s2 ise atlama özelliklerini (skip features) sönümler. 1 ve 2, UNet çözücüsünün (decoder) ilk iki yukarı örnekleme (upsampling) aşamalarına atıfta bulunur. Farklı modeller için referans hiperparametrelerini FreeU deposunda bulabilirsiniz.
Bir model için depo değerleriyle başlayın. Diğer modeller için ayarlama yaparken s1=0.9 ve s2=0.2 değerlerini koruyun ve önce b1 ile b2 değerlerini ayarlayın. Dört faktörün tamamını 1.0 olarak ayarlamak, FreeU'yu devre dışı bırakmakla aynıdır. Daha büyük b değerleri etkiyi güçlendirir ancak ince dokuyu aşırı yumuşatabilir; s1 ve s2 değerlerini düşürmek bu etkiyi dengelemeye yardımcı olur.
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'yu devre dışı bırakmak için disable_freeu() metodunu çağırın.
pipeline.disable_freeu()
Sonraki adımlar
- Tam parametre açıklamaları için enable_freeu() API referansına bakın.
- FreeU'yu AnimateDiff ile videoda deneyin.