Buckets:
الرفع الدقيق
تم إنشاء نموذج الانتشار الخاص بمكبّر دقة Stable Diffusion من قبل الباحثين والمهندسين في CompVis وStability AI وLAION. يُستخدم هذا النموذج لتحسين دقة الصور المدخلة بمعامل قدره 4.
تأكد من الاطلاع على قسم نصائح الخاصة بـ Stable Diffusion لمعرفة كيفية استكشاف التوازن بين سرعة المجدول وجودة النتائج، وكيفية إعادة استخدام مكونات خط الأنابيب بكفاءة!
إذا كنت مهتمًا باستخدام أحد نقاط التفتيش الرسمية لمهمة معينة، فاستكشف منظمات CompVis وStability AI على Hub!
StableDiffusionUpscalePipeline[[diffusers.StableDiffusionUpscalePipeline]]
diffusers.StableDiffusionUpscalePipeline[[diffusers.StableDiffusionUpscalePipeline]]
diffusers.StableDiffusionUpscalePipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, tokenizer: CLIPTokenizer, unet: UNet2DConditionModel, low_res_scheduler: DDPMScheduler, scheduler: KarrasDiffusionSchedulers, safety_checker: typing.Any | None = None, feature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = None, watermarker: typing.Any | None = None, max_noise_level: int = 350)
المعاملات:
vae (AutoencoderKL) : نموذج الترميز التحويلي التبايني (VAE) لتشفير وفك تشفير الصور إلى تمثيلات كامنة ومنها.
text_encoder (CLIPTextModel) : مُشفِّر نص ثابت (clip-vit-large-patch14).
tokenizer (CLIPTokenizer) : CLIPTokenizer لتجزئة النص.
unet (UNet2DConditionModel) : نموذج UNet2DConditionModel لإزالة الضوضاء من الكامنات المُرمّزة للصورة.
low_res_scheduler (SchedulerMixin) : مُجدول يُستخدم لإضافة ضوضاء أولية إلى صورة الشرط منخفضة الدقة. يجب أن يكون مثيلًا من DDPMScheduler.
scheduler (SchedulerMixin) : مُجدول يُستخدم بالاقتران مع unet لإزالة الضوضاء من كائنات الصورة المُرمّزة. يمكن أن يكون أحد DDIMScheduler أو LMSDiscreteScheduler أو PNDMScheduler.
خط أنابيب لرفع دقة الصور الموجّه بالنص باستخدام Stable Diffusion 2.
يرث هذا النموذج من DiffusionPipeline. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة المُنفَّذة لجميع خطوط الأنابيب (التنزيل، الحفظ، التشغيل على جهاز معين، إلخ).
تورث خط الأنابيب أيضًا طرق التحميل التالية:
- load_textual_inversion() لتحميل تضمينات الانعكاس النصي
- load_lora_weights() لتحميل أوزان LoRA
- save_lora_weights() لحفظ أوزان LoRA
- from_single_file() لتحميل ملفات
.ckpt
call[[diffusers.StableDiffusionUpscalePipeline.call]]
__call__(prompt: str | list[str] = None, image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, num_inference_steps: int = 75, guidance_scale: float = 9.0, noise_level: int = 20, 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, output_type: str | None = 'pil', return_dict: bool = True, callback: typing.Optional[typing.Callable[[int, int, torch.Tensor], NoneType]] = None, callback_steps: int = 1, cross_attention_kwargs: dict[str, typing.Any] | None = None, clip_skip: int = None)
المعاملات:
prompt (str أو list[str]، اختياري) : الأمر أو الأوامر التي تُوجّه توليد الصورة. إذا لم تُعرَّف، يجب عليك تمرير prompt_embeds.
image (torch.Tensor، PIL.Image.Image، np.ndarray، list[torch.Tensor]، list[PIL.Image.Image]، أو list[np.ndarray]) : Image أو tensor يمثل دفعة من الصور المراد زيادة حجمها.
num_inference_steps (int، اختياري، القيمة الافتراضية 50) : عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة ذات جودة أعلى على حساب بطء الاستدلال.
guidance_scale (float, اختياري, القيمة الافتراضية 7.5) : كلما زادت قيمة مقياس التوجيه، شجّع النموذج على توليد صور مرتبطة ارتباطًا وثيقًا بنص prompt على حساب انخفاض جودة الصورة. يتم تفعيل مقياس التوجيه عندما يكون guidance_scale > 1.
noise_level (int، اختياري، القيمة الافتراضية 20) : كمية الضوضاء المضافة إلى صورة الإدخال المُكبَّرة. يجب أن تكون ضمن المدى [0, max_noise_level] حيث يُعرَّف max_noise_level بواسطة المجدول. كلما زادت قيمة noise_level، زادت كمية الضوضاء المضافة إلى الإدخال، مما يزيد من التنوع لكنه يقلل من الدقة مقارنةً بالصورة الأصلية.
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.
output_type (str، اختياري، الافتراضي "pil") : صيغة الصورة المولّدة. اختر بين PIL.Image أو np.array.
return_dict (bool، اختياري، القيمة الافتراضية True) : ما إذا كان يجب إرجاع StableDiffusionPipelineOutput بدلاً من tuple عادي.
callback (Callable، اختياري) : دالة تُستدعى كل callback_steps خطوات أثناء الاستدلال. تُستدعى الدالة بالحجج التالية: callback(step: int, timestep: int, latents: torch.Tensor).
callback_steps (int، اختياري، القيمة الافتراضية 1) : التكرار الذي تُستدعى فيه دالة callback. إذا لم يُحدد، تُستدعى الدالة في كل خطوة.
cross_attention_kwargs (dict، اختياري) : قاموس kwargs يُمرَّر إلى AttentionProcessor إذا تم تحديده، كما هو معرّف في self.processor.
clip_skip (int, اختياري) : عدد الطبقات التي سيتم تجاوزها من CLIP أثناء حساب تمثيلات الموجه. القيمة 1 تعني أنه سيتم استخدام مخرجات الطبقة قبل الأخيرة لحساب تمثيلات الموجه.
يعيد: StableDiffusionPipelineOutput أو tuple
إذا كان return_dict هو True، يُعاد StableDiffusionPipelineOutput، وإلا يُعاد tuple حيث يكون العنصر الأول قائمة بالصور المولّدة والعنصر الثاني قائمة من قيم bool تشير إلى ما إذا كانت الصورة المولّدة المقابلة تحتوي على محتوى "غير آمن للعمل" (nsfw).
دالة الاستدعاء call لخط الأنابيب pipeline الخاص بالتوليد.
أمثلة:
>>> import requests
>>> from PIL import Image
>>> from io import BytesIO
>>> from diffusers import StableDiffusionUpscalePipeline
>>> import torch
>>> # load model and scheduler
>>> model_id = "stabilityai/stable-diffusion-x4-upscaler"
>>> pipeline = StableDiffusionUpscalePipeline.from_pretrained(
... model_id, variant="fp16", torch_dtype=torch.float16
... )
>>> pipeline = pipeline.to("cuda")
>>> # let's download an image
>>> url = "https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/sd2-upscale/low_res_cat.png"
>>> response = requests.get(url)
>>> low_res_img = Image.open(BytesIO(response.content)).convert("RGB")
>>> low_res_img = low_res_img.resize((128, 128))
>>> prompt = "a white cat"
>>> upscaled_image = pipeline(prompt=prompt, image=low_res_img).images[0]
>>> upscaled_image.save("upsampled_cat.png")
enable_attention_slicing[[diffusers.StableDiffusionUpscalePipeline.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.StableDiffusionUpscalePipeline.disable_attention_slicing]]
disable_attention_slicing()
تعطيل حساب الانتباه المقطّع. إذا كان enable_attention_slicing قد تم استدعاؤه سابقًا، يتم حساب الانتباه في خطوة واحدة.
enable_xformers_memory_efficient_attention[[diffusers.StableDiffusionUpscalePipeline.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.StableDiffusionUpscalePipeline.disable_xformers_memory_efficient_attention]]
disable_xformers_memory_efficient_attention()
تعطيل الانتباه الموفّر للذاكرة من xFormers.
encode_prompt[[diffusers.StableDiffusionUpscalePipeline.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 تعني أنه سيتم استخدام مخرجات الطبقة قبل الأخيرة لحساب تمثيلات الموجه.
يقوم بتشفير الموجه إلى حالات مخفية لمشفّر النص.
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:
- 21.7 kB
- Xet hash:
- 1715becee564f5a5b815d1cbcd2c2e033ff3849c7fc11deaed0ff1102fc3f0dc
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.