Diffusers documentation
AutoencoderKL
AutoencoderKL
طُرِح نموذج الترميز التلقائي التبايني (VAE) مع خسارة كولباك-ليبلر في Auto-Encoding Variational Bayes من قِبل Diederik P. Kingma وMax Welling. يُستخدم هذا النموذج في 🤗 Diffusers لتشفير الصور إلى تمثيلات كامنة (latents) وفك تشفير التمثيلات الكامنة إلى صور.
ملخص الورقة البحثية هو:
كيف يمكننا إجراء الاستدلال والتعلم بكفاءة في النماذج الاحتمالية الموجّهة، في وجود متغيرات كامنة مستمرة ذات توزيعات خلفية غير قابلة للحل، ومجموعات بيانات كبيرة؟ نُقدّم خوارزمية استنتاج وتعلم تباينية عشوائية تتوسع لتناسب مجموعات البيانات الكبيرة، وتعمل حتى في الحالة غير القابلة للحل، تحت بعض شروط التفاضلية المعتدلة. مساهماتنا ثنائية. أولاً، نُظهر أن إعادة تمثيل الحد الأدنى التبايني ينتج عن مُقدِّر لحد أدنى يمكن تحسينه بسهولة باستخدام طرق التدرج العشوائي القياسية. ثانياً، نُظهر أنه في مجموعات البيانات المستقلة والمتطابقة التوزيع (i.i.d.) التي تحتوي على متغيرات كامنة مستمرة لكل نقطة بيانات، يمكن جعل الاستدلال الخلفي أكثر كفاءة بشكل خاص من خلال ملاءمة نموذج استدلال تقريبي (يُسمى أيضاً نموذج التعرف) للتوزيع الخلفي غير القابل للحل باستخدام مُقدِّر الحد الأدنى المقترح. تنعكس المزايا النظرية في النتائج التجريبية.
التحميل من التنسيق الأصلي
بشكل افتراضي، يجب تحميل AutoencoderKL باستخدام from_pretrained()، لكن يمكن أيضًا تحميله من التنسيق الأصلي باستخدام FromOriginalModelMixin.from_single_file على النحو التالي:
from diffusers import AutoencoderKL
url = "https://huggingface.co/stabilityai/sd-vae-ft-mse-original/blob/main/vae-ft-mse-840000-ema-pruned.safetensors" # can also be a local file
model = AutoencoderKL.from_single_file(url)AutoencoderKL
فئة diffusers.AutoencoderKL
< source >( in_channels: int = 3out_channels: int = 3down_block_types: tuple = ('DownEncoderBlock2D',)up_block_types: tuple = ('UpDecoderBlock2D',)block_out_channels: tuple = (64,)layers_per_block: int = 1act_fn: str = 'silu'latent_channels: int = 4norm_num_groups: int = 32sample_size: int = 32scaling_factor: float = 0.18215shift_factor: float | None = Nonelatents_mean: tuple[float] | None = Nonelatents_std: tuple[float] | None = Noneforce_upcast: bool = Trueuse_quant_conv: bool = Trueuse_post_quant_conv: bool = Truemid_block_add_attention: bool = True )
المعاملات
- in_channels (int، اختياري، القيمة الافتراضية 3) — عدد القنوات في الصورة المدخلة.
- out_channels (int، اختياري، القيمة الافتراضية 3) — عدد القنوات في المخرجات.
- down_block_types (
tuple[str]، اختياري، الافتراضي("DownEncoderBlock2D",)) — مجموعة من أنواع كتل التقليل (downsample). - up_block_types (
tuple[str]، اختياري، الافتراضي("UpDecoderBlock2D",)) — مجموعة من أنواع كتل التوسيع (upsample). - block_out_channels (
tuple[int]، اختياري، الافتراضي(64,)) — مجموعة من قنوات مخرجات الكتل. - act_fn (
str، اختياري، الافتراضي"silu") — دالة التنشيط المستخدمة. - latent_channels (
int، اختياري، القيمة الافتراضية 4) — عدد القنوات في الفضاء الكامن. - sample_size (
int، اختياري، القيمة الافتراضية32) — حجم المدخلات العينة. - scaling_factor (
float، اختياري، القيمة الافتراضية 0.18215) — انحراف معياري لكل مكوّن في الفضاء الكامن المُدرَّب، محسوب باستخدام الدفعة الأولى من مجموعة التدريب. يُستخدم هذا المقياس لضبط الفضاء الكامن بحيث يكون له تباين وحدة عند تدريب نموذج الانتشار. يتم قياس الكامنات باستخدام الصيغةz = z * scaling_factorقبل تمريرها إلى نموذج الانتشار. عند فك الترميز، تُعاد الكامنات إلى المقياس الأصلي باستخدام الصيغة:z = 1 / scaling_factor * z. لمزيد من التفاصيل، راجع الأقسام 4.3.2 و D.1 من ورقة High-Resolution Image Synthesis with Latent Diffusion Models. - force_upcast (
bool، اختياري، الافتراضيTrue) — إذا تم تفعيله، سيُجبر VAE على العمل في float32 لخطوط أنابيب الدقة العالية للصور، مثل SD-XL. يمكن ضبط VAE الدقيق / تدريبه على نطاق أدنى دون فقدان كبير في الدقة، وفي هذه الحالة يمكن تعيينforce_upcastإلىFalse- انظر: https://huggingface.co/madebyollin/sdxl-vae-fp16-fix - mid_block_add_attention (
bool، اختياري، الافتراضيTrue) — إذا تم التفعيل، فإن mid_block في Encoder و Decoder سيحتوي على كتل انتباه. إذا تم ضبطه على false، فإن mid_block سيحتوي فقط على كتل resnet
نموذج VAE مع خسارة KL لتشفير الصور إلى كامنات وفك تمثيل الكامنات إلى صور.
يرث هذا النموذج من ModelMixin. راجع توثيق الفئة الأصلية لمعرفة طرقه العامة المُنفَّذة لجميع النماذج (مثل التنزيل أو الحفظ).
decode
< source >( z: FloatTensorreturn_dict: bool = Truegenerator = None ) → ~models.vae.DecoderOutput or tuple
المعاملات
- z (
torch.Tensor) — دفعة مدخلات من المتجهات الكامنة. - return_dict (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع~models.vae.DecoderOutputبدلاً من tuple عادي.
يعيد
~models.vae.DecoderOutput أو tuple
If return_dict is True, a ~models.vae.DecoderOutput is returned, otherwise a plain tuple is
returned.
فكّ تشفير دفعة من الصور.
encode
< source >( x: Tensorreturn_dict: bool = True )
ترميز دفعة من الصور إلى كامنات.
forward
< source >( sample: Tensorsample_posterior: bool = Falsereturn_dict: bool = Truegenerator: typing.Optional[torch.Generator] = None ) → ~models.vae.DecoderOutput or tuple
المعاملات
- sample (
torch.Tensor) — عينة الإدخال. - sample_posterior (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم أخذ عينة من التوزيع اللاحق. - return_dict (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاعDecoderOutputبدلاً من tuple عادي. - generator (
torch.Generator، اختياري) —torch.Generatorلجعل عملية أخذ العينات حتمية.
يعيد
~models.vae.DecoderOutput أو tuple
إذا كان return_dict صحيحًا، يُعاد ~models.vae.DecoderOutput، وإلا يُعاد tuple عادي.
يعطّل معالجات الانتباه المخصصة ويضبط تطبيق الانتباه الافتراضي.
tiled_decode
< source >( z: Tensorreturn_dict: bool = True ) → ~models.vae.DecoderOutput or tuple
المعاملات
- z (
torch.Tensor) — دفعة مدخلات من المتجهات الكامنة. - return_dict (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع~models.vae.DecoderOutputبدلاً من tuple عادي.
يعيد
~models.vae.DecoderOutput أو tuple
If return_dict is True, a ~models.vae.DecoderOutput is returned, otherwise a plain tuple is
returned.
فكّ تشفير دفعة من الصور باستخدام مُفكّك مُجزّأ.
tiled_encode
< source >( x: Tensorreturn_dict: bool = True ) → ~models.autoencoder_kl.AutoencoderKLOutput or tuple
المعاملات
- x (
torch.Tensor) — دفعة مدخلات من الصور. - return_dict (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع~models.autoencoder_kl.AutoencoderKLOutputبدلاً من tuple عادي.
يعيد
~models.autoencoder_kl.AutoencoderKLOutput أو tuple
If return_dict is True, a ~models.autoencoder_kl.AutoencoderKLOutput is returned, otherwise a plain
tuple is returned.
ترميز دفعة من الصور باستخدام مُرمِّز مُقسَّم إلى بلاطات.
عند تمكين هذا الخيار، سيقوم VAE بتقسيم المصفوفة المدخلة إلى بلاطات لحساب الترميز في عدة خطوات. وهذا مفيد للحفاظ على ثبات استخدام الذاكرة بغض النظر عن حجم الصورة. النتيجة النهائية للترميز المبطن تختلف عن الترميز غير المبطن لأن كل بلاطة تستخدم مشفراً مختلفاً. لتجنب آثار التبطين، تتداخل البلاطات وتُدمج معاً لتكوين مخرجات سلسة. قد لا تزال ترى تغييرات بحجم البلاطة في المخرجات، لكنها يجب أن تكون أقل وضوحاً بكثير.
يعطّل إسقاط QKV المدمج إذا كان مفعّلًا.
> هذه الواجهة البرمجية 🧪 تجريبية.
AutoencoderKLOutput
فئة diffusers.models.modeling_outputs.AutoencoderKLOutput
< source >( latent_dist: DiagonalGaussianDistribution )
مخرجات طريقة الترميز encoding في AutoencoderKL.
DecoderOutput
فئة diffusers.models.autoencoders.vae.DecoderOutput
< source >( sample: Tensorcommit_loss: typing.Optional[torch.FloatTensor] = None )
مخرجات طريقة فك الترميز.