Diffusers documentation
FreeU
FreeU
FreeU meningkatkan detail gambar dengan menyeimbangkan ulang seberapa banyak decoder UNet mengambil dari fitur backbone dibandingkan fitur koneksi lompat. Koneksi lompat dapat menenggelamkan fitur semantik backbone, yang menghasilkan detail yang tidak alami pada output. FreeU tidak memerlukan pelatihan, dan Anda dapat mengaktifkan atau menonaktifkannya pada saat inferensi untuk pipeline teks-ke-gambar dan teks-ke-video.
FreeU hanya berfungsi dengan pipeline berbasis UNet seperti Stable Diffusion, SDXL, dan AnimateDiff. Tidak didukung oleh pipeline berbasis transformer seperti Flux atau Qwen-Image.
Gunakan metode enable_freeu() pada pipeline Anda dan konfigurasikan faktor penskalaan. b1 dan b2 memperkuat fitur backbone, sedangkan s1 dan s2 meredam fitur skip. Angka 1 dan 2 merujuk pada dua tahap upsampling pertama dari decoder UNet. Lihat repositori FreeU untuk referensi hiperparameter untuk berbagai model.
Mulai dengan nilai repositori untuk sebuah model. Untuk menyesuaikan model lain, pertahankan s1=0.9 dan s2=0.2 lalu sesuaikan b1 dan b2 terlebih dahulu. Mengatur keempat faktor ke 1.0 sama dengan menonaktifkan FreeU. Nilai b yang lebih besar memperkuat efeknya tetapi dapat menghaluskan tekstur halus secara berlebihan, dan menurunkan s1 dan s2 akan menetralkan hal tersebut.
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
Panggil metode disable_freeu() untuk menonaktifkan FreeU.
pipeline.disable_freeu()
Langkah selanjutnya
- Lihat referensi API enable_freeu() untuk deskripsi parameter lengkap.
- Coba FreeU pada video dengan AnimateDiff.