Diffusers documentation

FreeU

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

FreeU

يحسّن FreeU تفاصيل الصورة من خلال إعادة التوازن بين مقدار ما يستخلصه مُفكّك UNet من ميزات العمود الفقري (backbone) مقارنةً بميزات وصلات التخطي (skip-connection). يمكن أن تُغمر ميزات العمود الفقري الدلالية بواسطة وصلات التخطي، مما ينتج عنه تفاصيل غير طبيعية في المخرجات. لا يتطلب FreeU أي تدريب، ويمكنك تفعيله أو تعطيله في وقت الاستدلال (inference time) لأنابيب النص إلى الصورة والنص إلى الفيديو.

يعمل FreeU فقط مع خطوط الأنابيب المعتمدة على UNet مثل Stable Diffusion وSDXL وAnimateDiff. ولا يحظى بدعم خطوط الأنابيب المعتمدة على المحولات (transformers) مثل Flux أو Qwen-Image.

استخدم طريقة enable_freeu() على خط الأنابيب الخاص بك وقم بإعداد عوامل التوسيع. تُعزّز b1 وb2 ميزات الهيكل الأساسي، بينما تُخمد s1 وs2 ميزات التخطي. تشير 1 و2 إلى مرحلتي إعادة العينات الأولى والثانية في فكّ تشفير UNet. راجع مستودع FreeU للاطلاع على المعلمات الفائقة المرجعية للنماذج المختلفة.

ابدأ بقيم المستودع الخاصة بنموذج. لضبط نماذج أخرى، احتفظ بـs1=0.9 وs2=0.2 وقم بتعديل b1 وb2 أولاً. ضبط العوامل الأربعة جميعها على 1.0 يعادل تعطيل FreeU. تزيد القيم الأكبر لـb من قوة التأثير لكنها قد تُنعّم النسيج الدقيق بشكل مفرط، بينما يُخفّض خفض s1 وs2 من ذلك.

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() لتعطيل FreeU.

pipeline.disable_freeu()

الخطوات التالية

  • راجع مرجع واجهة enable_freeu() للحصول على أوصاف كاملة للمعاملات.
  • جرّب FreeU على الفيديو باستخدام AnimateDiff.
Update on GitHub