Buckets:

mishig's picture
|
download
raw
46.8 kB

النص إلى صورة

تم إنشاء نموذج Stable Diffusion من قبل باحثين ومهندسين من CompVis وStability AI وRunway وLAION. يمكن لـ StableDiffusionPipeline توليد صور واقعية بدقة عالية بناءً على أي مدخل نصي. تم تدريبه على صور بمقاس 512x512 من مجموعة فرعية من مجموعة بيانات LAION-5B. يستخدم هذا نموذج مشفّر نصوص CLIP ViT-L/14 مجمّدًا لتكييف النموذج على أوامر النص. ومع وجود UNet بحجم 860 مليون ومشفّر نصوص بحجم 123 مليون، يُعد النموذج خفيفًا نسبيًا ويمكن تشغيله على وحدات معالجة الرسومات المخصصة للمستهلكين. يُعد الانتشار الكامن (Latent diffusion) هو البحث الذي بُني Stable Diffusion عليه. وقد تم اقتراحه في High-Resolution Image Synthesis with Latent Diffusion Models بواسطة Robin Rombach وAndreas Blattmann وDominik Lorenz وPatrick Esser وBjörn Ommer.

ملخص الورقة البحثية هو:

من خلال تفكيك عملية تكوين الصورة إلى تطبيق متسلسل لمشفّرات إزالة الضوضاء، تحقق نماذج الانتشار (DMs) من نتائج تركيب متقدمة على بيانات الصور وما وراءها. بالإضافة إلى ذلك، يتيح صياغتها آلية توجيه للتحكم في عملية توليد الصور دون إعادة التدريب. ومع ذلك، نظرًا لأن هذه النماذج تعمل عادةً مباشرةً في فضاء البكسلات، فإن تحسين نماذج الانتشار القوية يستهلك غالبًا مئات أيام وحدات معالجة الرسوميات (GPU)، ويكون الاستدلال مكلفًا بسبب التقييمات المتسلسلة. لتمكين تدريب نماذج الانتشار على موارد حاسوبية محدودة مع الحفاظ على جودتها ومرونتها، نطبقها في الفضاء الكامن لمشفّرات إزالة الضوضاء القوية المدربة مسبقًا. على عكس الأعمال السابقة، يتيح تدريب نماذج الانتشار على مثل هذا التمثيل الوصول لأول مرة إلى نقطة شبه مثالية بين تقليل التعقيد والحفاظ على التفاصيل، مما يعزز الوفاء البصري بشكل كبير. من خلال إدخال طبقات الانتباه المتقاطع في بنية النموذج، نحوّل نماذج الانتشار إلى مولدات قوية ومرنة لإدخالات التكييف العامة مثل النص أو صناديق الحدود، ويصبح تركيب الدقة العالية ممكنًا بطريقة تلافيفية. تحقق نماذج الانتشار الكامنة (LDMs) من مستوى جديد من التقدم في ترميم الصور وأداء تنافسي للغاية في مهام متنوعة، بما في ذلك توليد الصور غير المشروطة، وتركيب المشاهد الدلالية، والدقة الفائقة، مع تقليل كبير في المتطلبات الحسابية مقارنةً بنماذج الانتشار القائمة على البكسلات. الكود متاح على https://github.com/CompVis/latent-diffusion.

تأكد من الاطلاع على قسم نصائح الخاصة بـ Stable Diffusion لمعرفة كيفية استكشاف التوازن بين سرعة المجدول وجودة النتائج، وكيفية إعادة استخدام مكونات خط الأنابيب بكفاءة!

إذا كنت مهتمًا باستخدام أحد نقاط التفتيش الرسمية لمهمة معينة، فاستكشف منظمات CompVis وStability AI على Hub!

StableDiffusionPipeline[[diffusers.StableDiffusionPipeline]]

diffusers.StableDiffusionPipeline[[diffusers.StableDiffusionPipeline]]

diffusers.StableDiffusionPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, tokenizer: CLIPTokenizer, unet: UNet2DConditionModel, scheduler: KarrasDiffusionSchedulers, safety_checker: StableDiffusionSafetyChecker, feature_extractor: CLIPImageProcessorPil, image_encoder: CLIPVisionModelWithProjection = None, requires_safety_checker: bool = True)

المصدر

المعاملات:

vae (AutoencoderKL) : نموذج الترميز التحويلي التبايني (VAE) لتشفير وفك تشفير الصور إلى تمثيلات كامنة ومنها.

text_encoder (CLIPTextModel) : مُشفِّر نص ثابت (clip-vit-large-patch14).

tokenizer (CLIPTokenizer) : CLIPTokenizer لتجزئة النص.

unet (UNet2DConditionModel) : نموذج UNet2DConditionModel لإزالة الضوضاء من الكامنات المُرمّزة للصورة.

scheduler (SchedulerMixin) : مُجدول يُستخدم بالاقتران مع unet لإزالة الضوضاء من كائنات الصورة المُرمّزة. يمكن أن يكون أحد DDIMScheduler أو LMSDiscreteScheduler أو PNDMScheduler.

safety_checker (StableDiffusionSafetyChecker) : وحدة تصنيف تُقدّر ما إذا كان يمكن اعتبار الصور المولّدة مسيئة أو ضارة. يُرجى الرجوع إلى بطاقة النموذج لمزيد من التفاصيل حول الأضرار المحتملة التي قد يسببها النموذج.

feature_extractor (CLIPImageProcessor) : مُعالج صور CLIPImageProcessor لاستخراج الميزات من الصور المولّدة؛ يُستخدم كمدخلات لـ safety_checker.

خط أنابيب لتوليد الصور من النص باستخدام Stable Diffusion.

يرث هذا النموذج من DiffusionPipeline. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة المُنفَّذة لجميع خطوط الأنابيب (التنزيل، الحفظ، التشغيل على جهاز معين، إلخ).

تورث خط الأنابيب أيضًا طرق التحميل التالية:

call[[diffusers.StableDiffusionPipeline.call]]

__call__(prompt: str | list[str] = None, height: int | None = None, width: int | None = None, num_inference_steps: int = 50, timesteps: list[int] = None, sigmas: list[float] = None, guidance_scale: float = 7.5, negative_prompt: str | list[str] | None = None, num_images_per_prompt: int | None = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: list[torch.Tensor] | None = None, output_type: str | None = 'pil', return_dict: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, guidance_rescale: float = 0.0, clip_skip: int | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], **kwargs)

المصدر

المعاملات:

prompt (str أو list[str]، اختياري) : الأمر أو الأوامر التي تُوجّه توليد الصورة. إذا لم تُعرَّف، يجب عليك تمرير prompt_embeds.

height (int، اختياري، القيمة الافتراضية هي self.unet.config.sample_size * self.vae_scale_factor) : ارتفاع الصورة المولّدة بالبكسل.

width (int، اختياري، القيمة الافتراضية هي self.unet.config.sample_size * self.vae_scale_factor) : عرض الصورة المولدة بالبكسل.

num_inference_steps (int، اختياري، القيمة الافتراضية 50) : عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة ذات جودة أعلى على حساب بطء الاستدلال.

timesteps (list[int]، اختياري) : خطوات زمنية مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معامل timesteps في طريقة set_timesteps الخاصة بهم. إذا لم يُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمرير num_inference_steps. يجب أن تكون بترتيب تنازلي.

sigmas (list[float]، اختياري) : قيم sigmas مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معامل sigmas في طريقة set_timesteps الخاصة بهم. إذا لم تُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمرير num_inference_steps.

guidance_scale (float, اختياري, القيمة الافتراضية 7.5) : كلما زادت قيمة مقياس التوجيه، شجّع النموذج على توليد صور مرتبطة ارتباطًا وثيقًا بنص prompt على حساب انخفاض جودة الصورة. يتم تفعيل مقياس التوجيه عندما يكون guidance_scale > 1.

negative_prompt (str أو list[str]، اختياري) : الأمر أو الأوامر التي توجّه ما يجب عدم تضمينه في توليد الصورة. إذا لم يُعرَّف، يجب عليك تمرير negative_prompt_embeds بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (guidance_scale < 1).

num_images_per_prompt (int، اختياري، القيمة الافتراضية 1) : عدد الصور التي سيتم توليدها لكل موجه.

eta (float، اختياري، القيمة الافتراضية 0.0) : يتوافق مع المعامل eta (η) من ورقة DDIM. ينطبق فقط على DDIMScheduler، ويُتجاهل في جدولة أخرى.

generator (torch.Generator أو list[torch.Generator]، اختياري) : torch.Generator لجعل التوليد حتميًا.

latents (torch.Tensor، اختياري) : كامنات ضجيج مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، يتم توليد كامنات من خلال الاستخراج باستخدام generator العشوائي المُقدَّم.

prompt_embeds (torch.Tensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة (وزن الأوامر). إذا لم تُقدَّم، يتم توليد تمثيلات النص من معامل الإدخال prompt.

negative_prompt_embeds (torch.Tensor، اختياري) : تمثيلات نصية سالبة مُولّدة مسبقًا. يمكن استخدامها لضبط مدخلات النص بسهولة (وزن الموجه). إذا لم تُقدَّم، يتم توليد negative_prompt_embeds من معامل الإدخال negative_prompt.

ip_adapter_image : (PipelineImageInput، اختياري): إدخال صورة اختياري للعمل مع IP Adapters.

ip_adapter_image_embeds (list[torch.Tensor], اختياري) : تمثيلات صور مُولّدة مسبقًا لـ IP-Adapter. يجب أن يكون قائمة بطول يساوي عدد وحدات IP-adapter. يجب أن يكون كل عنصر منها متجهًا (tensor) بشكل (batch_size, num_images, emb_dim). يجب أن يحتوي على تمثيل الصورة السلبية إذا كان do_classifier_free_guidance مضبوطًا على True. إذا لم يُقدَّم، تُحسب التمثيلات من معامل الإدخال ip_adapter_image.

output_type (str، اختياري، الافتراضي "pil") : صيغة الصورة المولّدة. اختر بين PIL.Image أو np.array.

return_dict (bool، اختياري، القيمة الافتراضية True) : ما إذا كان يجب إرجاع StableDiffusionPipelineOutput بدلاً من tuple عادي.

cross_attention_kwargs (dict، اختياري) : قاموس kwargs يُمرَّر إلى AttentionProcessor إذا تم تحديده، كما هو معرّف في self.processor.

guidance_rescale (float, optional, defaults to 0.0) : Guidance rescale factor from Common Diffusion Noise Schedules and Sample Steps are Flawed. Guidance rescale factor should fix overexposure when using zero terminal SNR.

clip_skip (int, اختياري) : عدد الطبقات التي سيتم تجاوزها من CLIP أثناء حساب تمثيلات الموجه. القيمة 1 تعني أنه سيتم استخدام مخرجات الطبقة قبل الأخيرة لحساب تمثيلات الموجه.

callback_on_step_end (Callable، PipelineCallback، MultiPipelineCallbacks، اختياري) : دالة أو فئة فرعية من PipelineCallback أو MultiPipelineCallbacks تُستدعى في نهاية كل خطوة إزالة ضوضاء أثناء الاستدلال، مع الحُجج التالية: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). ستتضمن callback_kwargs قائمة بجميع المصفوفات كما حددتها callback_on_step_end_tensor_inputs.

callback_on_step_end_tensor_inputs (list، اختياري) : قائمة مدخلات المصفوفات (tensors) لدالة callback_on_step_end. سيتم تمرير المصفوفات المحددة في القائمة كحجة callback_kwargs. لن تتمكن من تضمين سوى المتغيرات المدرجة في خاصية ._callback_tensor_inputs لفئة خط الأنابيب (pipeline) الخاص بك.

يعيد: StableDiffusionPipelineOutput أو tuple

إذا كان return_dict هو True، يُعاد StableDiffusionPipelineOutput، وإلا يُعاد tuple حيث يكون العنصر الأول قائمة بالصور المولّدة والعنصر الثاني قائمة من قيم bool تشير إلى ما إذا كانت الصورة المولّدة المقابلة تحتوي على محتوى "غير آمن للعمل" (nsfw).

دالة الاستدعاء call لخط الأنابيب pipeline الخاص بالتوليد.

أمثلة:

>>> import torch
>>> from diffusers import StableDiffusionPipeline

>>> pipe = StableDiffusionPipeline.from_pretrained(
...     "stable-diffusion-v1-5/stable-diffusion-v1-5", torch_dtype=torch.float16
... )
>>> pipe = pipe.to("cuda")

>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> image = pipe(prompt).images[0]

enable_attention_slicing[[diffusers.StableDiffusionPipeline.enable_attention_slicing]]

enable_attention_slicing(slice_size: str | int = 'auto')

المصدر

المعاملات:

slice_size (str أو int، اختياري، القيمة الافتراضية "auto") : عند تعيين "auto"، يُنصَّف المدخل إلى رؤوس الانتباه، بحيث يُحسب الانتباه في خطوتين. إذا كانت القيمة "max"، فسيتم توفير أقصى قدر من الذاكرة من خلال تشغيل شريحة واحدة في كل مرة. إذا تم تقديم رقم، فسيتم استخدام عدد من الشرائح يساوي attention_head_dim // slice_size. في هذه الحالة، يجب أن يكون attention_head_dim مضاعفًا لـ slice_size.

تفعيل حساب الانتباه المقطّع. عند تفعيل هذا الخيار، يقسم وحدة الانتباه المصفوفة المدخلة إلى شرائح لحساب الانتباه على عدة خطوات. في حالة وجود أكثر من رأس انتباه، يتم تنفيذ الحساب بشكل تسلسلي على كل رأس. وهذا مفيد لتوفير بعض الذاكرة مقابل انخفاض طفيف في السرعة.

> ⚠️ لا تفعّل تقطيع الانتباه إذا كنت تستخدم بالفعل scaled_dot_product_attention (SDPA) من PyTorch > 2.0 أو xFormers. عمليات حساب الانتباه هذه فعّالة جداً من حيث الذاكرة، لذا لن تحتاج إلى تفعيل > هذه الوظيفة. إذا قمت بتفعيل تقطيع الانتباه مع SDPA أو xFormers، فقد يؤدي ذلك إلى تباطؤات جسيمة!

أمثلة:

>>> import torch
>>> from diffusers import StableDiffusionPipeline

>>> pipe = StableDiffusionPipeline.from_pretrained(
...     "stable-diffusion-v1-5/stable-diffusion-v1-5",
...     dtype=torch.float16,
...     use_safetensors=True,
... )

>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> pipe.enable_attention_slicing()
>>> image = pipe(prompt).images[0]

disable_attention_slicing[[diffusers.StableDiffusionPipeline.disable_attention_slicing]]

disable_attention_slicing()

المصدر

تعطيل حساب الانتباه المقطّع. إذا كان enable_attention_slicing قد تم استدعاؤه سابقًا، يتم حساب الانتباه في خطوة واحدة.

enable_xformers_memory_efficient_attention[[diffusers.StableDiffusionPipeline.enable_xformers_memory_efficient_attention]]

enable_xformers_memory_efficient_attention(attention_op: typing.Optional[typing.Callable] = None)

المصدر

المعاملات:

attention_op (Callable، اختياري) : تجاوز المشغّل الافتراضي None لاستخدامه كحجة op في دالة memory_efficient_attention() الخاصة بـ xFormers.

تفعيل الانتباه الموفّر للذاكرة من xFormers. عند تفعيل هذا الخيار، يجب أن تلاحظ انخفاضًا في استخدام ذاكرة وحدة معالجة الرسوميات (GPU) وتسريعًا محتملًا أثناء الاستدلال. لا يُضمن التسريع أثناء التدريب.

> ⚠️ عند تفعيل كل من الانتباه الموفّر للذاكرة والانتباه المقطّع، يكون الانتباه الموفّر تتمتع attention بأولوية أعلى.

أمثلة:

>>> import torch
>>> from diffusers import DiffusionPipeline
>>> from xformers.ops import MemoryEfficientAttentionFlashAttentionOp

>>> pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1", dtype=torch.float16)
>>> pipe = pipe.to("cuda")
>>> pipe.enable_xformers_memory_efficient_attention(attention_op=MemoryEfficientAttentionFlashAttentionOp)
>>> # Workaround for not accepting attention shape using VAE for Flash Attention
>>> pipe.vae.enable_xformers_memory_efficient_attention(attention_op=None)

disable_xformers_memory_efficient_attention[[diffusers.StableDiffusionPipeline.disable_xformers_memory_efficient_attention]]

disable_xformers_memory_efficient_attention()

المصدر

تعطيل الانتباه الموفّر للذاكرة من xFormers.

load_textual_inversion[[diffusers.StableDiffusionPipeline.load_textual_inversion]]

load_textual_inversion(pretrained_model_name_or_path: str | list[str] | dict[str, torch.Tensor] | list[dict[str, torch.Tensor]], token: str | list[str] | None = None, tokenizer: 'PreTrainedTokenizer' | None = None, text_encoder: 'PreTrainedModel' | None = None, **kwargs)

المصدر

المعاملات:

pretrained_model_name_or_path (str أو os.PathLike أو list[str or os.PathLike] أو Dict أو list[Dict]) : يمكن أن يكون أيًا مما يلي أو قائمة به: - نص، وهو معرف النموذج (مثل sd-concepts-library/low-poly-hd-logos-icons) لنموذج مُدرَّب مسبقًا مستضاف على Hub. - مسار إلى مجلد (مثل ./my_text_inversion_directory/) يحتوي على أوزان العكس النصي. - مسار إلى ملف (مثل ./my_text_inversions.pt) يحتوي على أوزان العكس النصي. - قاموس حالة torch.

token (str أو list[str]، اختياري) : تجاوز الرمز المستخدم لأوزان الانعكاس النصي. إذا كان pretrained_model_name_or_path قائمة، فيجب أن يكون token أيضًا قائمة بطول متساوٍ.

text_encoder (CLIPTextModel، اختياري) : مُشفِّر نص ثابت (clip-vit-large-patch14). إذا لم يُحدد، ستأخذ الدالة self.tokenizer.

tokenizer (CLIPTokenizer، اختياري) : CLIPTokenizer لتجزئة النص. إذا لم يُحدد، ستأخذ الدالة self.tokenizer.

weight_name (str، اختياري) : اسم ملف الأوزان المخصص. يجب استخدام هذا عند: - كان ملف الانعكاس النصي المحفوظ بصيغة 🤗 Diffusers، لكنه حُفظ باسم أوزان محدد مثل text_inv.bin. - كان ملف الانعكاس النصي المحفوظ بصيغة Automatic1111.

cache_dir (str | os.PathLike، اختياري) : مسار إلى مجلد حيث تُخزَّن مؤقتًا إعدادات النموذج المُسبق التحميل المُحمَّل إذا لم يُستخدم التخزين المؤقت القياسي.

force_download (bool، اختياري، القيمة الافتراضية False) : ما إذا كان يجب إجبار إعادة تنزيل أوزان النموذج وملفات الإعداد، مع تجاوز النسخ المخزنة مؤقتًا إذا كانت موجودة.

proxies (dict[str, str]، اختياري) : قاموس لخوادم الوكيل (proxy servers) للاستخدام حسب البروتوكول أو نقطة النهاية، على سبيل المثال، {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. تُستخدم هذه الوكلاء في كل طلب.

local_files_only (bool، اختياري، القيمة الافتراضية False) : ما إذا كان سيتم تحميل أوزان النموذج المحلية وملفات الإعداد فقط أم لا. إذا تم ضبطه على True، فلن يتم تنزيل النموذج من Hub.

hf_token (str أو bool، اختياري) : الرمز الذي يُستخدم كتوكن مصادقة HTTP bearer للملفات البعيدة. إذا كان True، يُستخدم التوكن المولّد من diffusers-cli login (المخزَّن في ~/.huggingface).

revision (str، اختياري، القيمة الافتراضية "main") : إصدار النموذج المحدد الذي سيتم استخدامه. يمكن أن يكون اسم فرع، أو اسم وسم، أو معرف التزامن، أو أي معرّف مسموح به بواسطة Git.

subfolder (str، اختياري، القيمة الافتراضية "") : موقع المجلد الفرعي لملف النموذج داخل مستودع نموذج أكبر على Hub أو محليًا.

mirror (str، اختياري) : مصدر مرآة لحل مشاكل إمكانية الوصول إذا كنت تقوم بتنزيل نموذج في الصين. نحن لا نضمن حداثة المصدر أو أمانه، وينبغي لك الرجوع إلى موقع المرآة لمزيد من المعلومات.

حمّل ترميزات Textual Inversion في مُشفِّر النص الخاص بـ StableDiffusionPipeline (يُؤمَّن دعم كلا الصيغتين: 🤗 Diffusers وAutomatic1111).

مثال:

لتحميل متجه تضمين Textual Inversion بصيغة 🤗 Diffusers:

from diffusers import StableDiffusionPipeline
import torch

model_id = "stable-diffusion-v1-5/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16).to("cuda")

pipe.load_textual_inversion("sd-concepts-library/cat-toy")

prompt = "A <cat-toy> backpack"

image = pipe(prompt, num_inference_steps=50).images[0]
image.save("cat-backpack.png")

لتحميل متجه تضمين Textual Inversion بصيغة Automatic1111، تأكد أولاً من تنزيل المتجه (على سبيل المثال من civitAI) ثم قم بتحميل المتجه

محليًا:

from diffusers import StableDiffusionPipeline
import torch

model_id = "stable-diffusion-v1-5/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16).to("cuda")

pipe.load_textual_inversion("./charturnerv2.pt", token="charturnerv2")

prompt = "charturnerv2, multiple views of the same character in the same outfit, a character turnaround of a woman wearing a black jacket and red shirt, best quality, intricate details."

image = pipe(prompt, num_inference_steps=50).images[0]
image.save("character.png")

from_single_file[[diffusers.StableDiffusionPipeline.from_single_file]]

from_single_file(pretrained_model_link_or_path, **kwargs)

المصدر

المعاملات:

pretrained_model_link_or_path (str أو os.PathLike، اختياري) : يمكن أن يكون أحد ما يلي: - رابط إلى ملف .ckpt (على سبيل المثال "https://huggingface.co/<repo_id>/blob/main/<path_to_file>.ckpt") على Hub. - مسار إلى ملف يحتوي على جميع أوزان خط المعالجة.

dtype (str أو torch.dtype، اختياري) : تجاوز torch.dtype الافتراضي وتحميل النموذج بنوع بيانات آخر.

force_download (bool، اختياري، القيمة الافتراضية False) : ما إذا كان يجب إجبار إعادة تنزيل أوزان النموذج وملفات الإعداد، مع تجاوز النسخ المخزنة مؤقتًا إذا كانت موجودة.

cache_dir (str | os.PathLike، اختياري) : مسار إلى مجلد حيث تُخزَّن مؤقتًا إعدادات النموذج المُسبق التحميل المُحمَّل إذا لم يُستخدم التخزين المؤقت القياسي.

proxies (dict[str, str]، اختياري) : قاموس لخوادم الوكيل (proxy servers) للاستخدام حسب البروتوكول أو نقطة النهاية، على سبيل المثال، {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. تُستخدم هذه الوكلاء في كل طلب.

local_files_only (bool، اختياري، القيمة الافتراضية False) : ما إذا كان سيتم تحميل أوزان النموذج المحلية وملفات الإعداد فقط أم لا. إذا تم ضبطه على True، فلن يتم تنزيل النموذج من Hub.

token (str أو bool، اختياري) : الرمز الذي يُستخدم كتوكن مصادقة HTTP bearer للملفات البعيدة. إذا كان True، يُستخدم التوكن المولّد من diffusers-cli login (المخزَّن في ~/.huggingface).

revision (str، اختياري، القيمة الافتراضية "main") : إصدار النموذج المحدد الذي سيتم استخدامه. يمكن أن يكون اسم فرع، أو اسم وسم، أو معرف التزامن، أو أي معرّف مسموح به بواسطة Git.

original_config_file (str، اختياري) : المسار إلى ملف الإعداد الأصلي الذي تم استخدامه لتدريب النموذج. إذا لم يُقدَّم، فسيتم استنتاج ملف الإعداد من ملف نقطة التفتيش.

config (str, اختياري) : يمكن أن يكون أحد ما يلي: - نص، وهو repo id (على سبيل المثال CompVis/ldm-text2im-large-256) لخط أنابيب مُدرَّب مسبقًا مستضاف على Hub. - مسار إلى مجلد (على سبيل المثال ./my_pipeline_directory/) يحتوي على تكوينات مكوّنات خط الأنابيب بصيغة Diffusers.

disable_mmap ('bool', اختياري, القيمة الافتراضية هي 'False') : ما إذا كان سيتم تعطيل mmap عند تحميل نموذج Safetensors. يمكن أن يؤدي هذا الخيار إلى أداء أفضل عندما يكون النموذج على وحدة تخزين شبكية أو قرص صلب.

kwargs (باقي قاموس من معاملات الكلمات المفتاحية، اختياري) : يمكن استخدامه لتجاوز متغيرات التحميل والحفظ (مكونات خط الأنابيب الخاصة بفئة خط الأنابيب المحددة). تُمرَّر المكونات المُتجاوزة مباشرةً إلى طريقة __init__ لخط الأنابيب. راجع المثال أدناه لمزيد من المعلومات.

أنشئ كائن DiffusionPipeline من أوزان خط الأنابيب المُسبقة التدريب المحفوظة بصيغة .ckpt أو .safetensors. يتم ضبط خط الأنابيب في وضع التقييم (model.eval()) افتراضيًا.

أمثلة:

>>> from diffusers import StableDiffusionPipeline

>>> # Download pipeline from huggingface.co and cache.
>>> pipeline = StableDiffusionPipeline.from_single_file(
...     "https://huggingface.co/WarriorMama777/OrangeMixs/blob/main/Models/AbyssOrangeMix/AbyssOrangeMix.safetensors"
... )

>>> # Download pipeline from local file
>>> # file is downloaded under ./v1-5-pruned-emaonly.ckpt
>>> pipeline = StableDiffusionPipeline.from_single_file("./v1-5-pruned-emaonly.ckpt")

>>> # Enable float16 and move to GPU
>>> pipeline = StableDiffusionPipeline.from_single_file(
...     "https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5/blob/main/v1-5-pruned-emaonly.ckpt",
...     torch_dtype=torch.float16,
... )
>>> pipeline.to("cuda")

load_lora_weights[[diffusers.StableDiffusionPipeline.load_lora_weights]]

load_lora_weights(pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor], adapter_name: str | None = None, hotswap: bool = False, **kwargs)

المصدر

المعاملات:

pretrained_model_name_or_path_or_dict (str أو os.PathLike أو dict) : راجع lora_state_dict().

adapter_name (str، اختياري) : اسم المُكيّف (Adapter) الذي سيُستخدم للإشارة إلى نموذج المُكيّف المُحمّل. إذا لم يُحدد، فسيُستخدم default_{i} حيث i هو العدد الإجمالي للمُكيّفات قيد التحميل.

low_cpu_mem_usage (bool، اختياري) : تسريع تحميل النموذج من خلال تحميل أوزان LoRA المُسبقة التدريب فقط دون تهيئة الأوزان العشوائية.

hotswap (bool, اختياري) : القيمة الافتراضية هي False. ما إذا كان يجب استبدال مُكيّف (LoRA) موجود بمُكيّف جديد تم تحميله في مكانه. وهذا يعني أنه، بدلاً من تحميل مُكيّف إضافي، سيتم أخذ أوزان المُكيّف الحالي واستبدالها بأوزان المُكيّف الجديد. يمكن أن يكون هذا أسرع وأكثر كفاءة في استخدام الذاكرة. ومع ذلك، فإن الميزة الرئيسية للاستبدال الساخن هي أنه عند تجميع النموذج باستخدام torch.compile، فإن تحميل المُكيّف الجديد لا يتطلب إعادة تجميع النموذج. عند استخدام الاستبدال الساخن، يجب أن يكون adapter_name المُمرَّر هو اسم مُكيّف تم تحميله بالفعل. إذا كان للمُكيّف الجديد والمُكيّف القديم رتب مختلفة و/أو قيم LoRA alpha (أي التوسع)، فستحتاج إلى استدعاء طريقة إضافية قبل تحميل المُكيّف: py pipeline = ... # load diffusers pipeline max_rank = ... # the highest rank among all LoRAs that you want to load # call *before* compiling and loading the LoRA adapter pipeline.enable_lora_hotswap(target_rank=max_rank) pipeline.load_lora_weights(file_name) # optionally compile the model now لاحظ أن استبدال مُكيّفات مُشفّر النص غير مدعوم بعد. هناك بعض القيود الإضافية على هذه التقنية، وهي موثقة هنا: https://huggingface.co/docs/peft/main/en/package_reference/hotswap

kwargs (dict، اختياري) : راجع lora_state_dict().

حمّل أوزان LoRA المحددة في pretrained_model_name_or_path_or_dict إلى self.unet وself.text_encoder.

تُمرَّر جميع معاملات kwargs إلى self.lora_state_dict.

راجع lora_state_dict() لمزيد من التفاصيل حول كيفية تحميل قاموس الحالة.

راجع load_lora_into_unet() لمزيد من التفاصيل حول كيفية تحميل قاموس الحالة في self.unet.

راجع load_lora_into_text_encoder() لمزيد من التفاصيل حول كيفية تحميل state dict في self.text_encoder.

save_lora_weights[[diffusers.StableDiffusionPipeline.save_lora_weights]]

save_lora_weights(save_directory: str | os.PathLike, unet_lora_layers: dict[str, typing.Union[torch.nn.Module, torch.Tensor]] = None, text_encoder_lora_layers: dict[str, torch.nn.Module] = None, is_main_process: bool = True, weight_name: str = None, save_function: typing.Callable = None, safe_serialization: bool = True, unet_lora_adapter_metadata = None, text_encoder_lora_adapter_metadata = None)

المصدر

المعاملات:

save_directory (str أو os.PathLike) : المجلد الذي سيتم حفظ معلمات LoRA فيه. سيتم إنشاؤه إذا لم يكن موجودًا.

unet_lora_layers (dict[str, torch.nn.Module] أو dict[str, torch.Tensor]) : قاموس الحالة (State dict) لطبقات LoRA المقابلة لـ unet.

text_encoder_lora_layers (dict[str, torch.nn.Module] أو dict[str, torch.Tensor]) : قاموس الحالة (State dict) لطبقات LoRA المقابلة لـ text_encoder. يجب تمرير قاموس حالة LoRA الخاص بمشفر النص صراحةً لأنه يأتي من 🤗 Transformers.

is_main_process (bool، اختياري، القيمة الافتراضية True) : ما إذا كان العملية التي تستدعي هذا هي العملية الرئيسية أم لا. مفيد أثناء التدريب الموزع عندما تحتاج إلى استدعاء هذه الدالة على جميع العمليات. في هذه الحالة، اضبط is_main_process=True على العملية الرئيسية فقط لتجنب حالات السباق.

save_function (Callable) : الدالة المستخدمة لحفظ قاموس الحالة. مفيدة أثناء التدريب الموزع عندما تحتاج إلى استبدال torch.save بطريقة أخرى. يمكن ضبطها باستخدام متغير البيئة DIFFUSERS_SAVE_MODE.

safe_serialization (bool، اختياري، الافتراضي True) : ما إذا كان سيتم حفظ النموذج باستخدام safetensors أو بالطريقة التقليدية الخاصة بـ PyTorch باستخدام pickle.

unet_lora_adapter_metadata : بيانات الوصف (metadata) الخاصة بمحوّل LoRA المرتبط بـ unet والتي سيتم تسلسلها مع state dict.

text_encoder_lora_adapter_metadata : بيانات الوصف (البيانات الوصفية) الخاصة بمحوّل LoRA المرتبط بترميز النص، والتي سيتم تسلسلها مع قاموس الحالة.

احفظ معاملات LoRA المقابلة لـ UNet ومشفّر النص.

encode_prompt[[diffusers.StableDiffusionPipeline.encode_prompt]]

encode_prompt(prompt, device, num_images_per_prompt, do_classifier_free_guidance, negative_prompt = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None, clip_skip: int | None = None)

المصدر

المعاملات:

prompt (str أو list[str]، اختياري) : النص الذي سيتم ترميزه

device : (torch.device): جهاز torch

num_images_per_prompt (int) : عدد الصور التي يجب توليدها لكل موجه

do_classifier_free_guidance (bool) : ما إذا كان سيتم استخدام التوجيه الحر للتصنيف أم لا

negative_prompt (str أو list[str]، اختياري) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة بها. إذا لم يُعرَّف، يجب تمرير negative_prompt_embeds بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا كان guidance_scale أقل من 1).

prompt_embeds (torch.Tensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال prompt.

negative_prompt_embeds (torch.Tensor, اختياري) : تمثيلات نصية سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخال negative_prompt.

lora_scale (float، اختياري) : مقياس LoRA سيُطبَّق على جميع طبقات LoRA في مُشفِّر النص إذا كانت طبقات LoRA محمَّلة.

clip_skip (int, اختياري) : عدد الطبقات التي سيتم تجاوزها من CLIP أثناء حساب تمثيلات الموجه. القيمة 1 تعني أنه سيتم استخدام مخرجات الطبقة قبل الأخيرة لحساب تمثيلات الموجه.

يقوم بتشفير الموجه إلى حالات مخفية لمشفّر النص.

get_guidance_scale_embedding[[diffusers.StableDiffusionPipeline.get_guidance_scale_embedding]]

get_guidance_scale_embedding(w: Tensor, embedding_dim: int = 512, dtype: dtype = torch.float32)

المصدر

المعاملات:

w (torch.Tensor) : توليد متجهات تضمين بمقياس توجيه محدد لتُثري متضمينات خطوات الزمن اللاحقة.

embedding_dim (int، اختياري، القيمة الافتراضية 512) : بُعد التضمينات (embeddings) التي سيتم توليدها.

dtype (torch.dtype، اختياري، الافتراضي torch.float32) : نوع البيانات للتضمينات المولّدة.

يعيد: torch.Tensor

متجهات تضمين بشكل (len(w), embedding_dim).

انظر إلى https://github.com/google-research/vdm/blob/dc27b98a554f65cdc654b800da5aa1846545d41b/model_vdm.py#L298

StableDiffusionPipelineOutput[[diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput]]

diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput[[diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput]]

diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput(images: list[PIL.Image.Image] | numpy.ndarray, nsfw_content_detected: list[bool] | None)

المصدر

المعاملات:

images (list[PIL.Image.Image] أو np.ndarray) : قائمة من صور PIL منزوعة الضوضاء بطول batch_size أو مصفوفة NumPy بأبعاد (batch_size, height, width, num_channels).

nsfw_content_detected (list[bool]) : قائمة تُبيّن ما إذا كانت الصورة المولّدة المقابلة تحتوي على محتوى "غير آمن للعمل" (nsfw) أو None إذا تعذّر إجراء فحص الأمان.

فئة الإخراج لخطوط أنابيب Stable Diffusion.

Xet Storage Details

Size:
46.8 kB
·
Xet hash:
13c891aa52a99510b8091765fd60959cbaa8e225275eabf56743b53c7795b575

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.