Diffusers documentation
CogView3Plus
CogView3Plus
كوج فيو 3: توليد صور أدق وأسرع من النص عبر الانتشار المتتابع من جامعة تسينغهوا و ZhipuAI، بقلم Wendi Zheng و Jiayan Teng و Zhuoyi Yang و Weihan Wang و Jidong Chen و Xiaotao Gu و Yuxiao Dong و Ming Ding و Jie Tang.
ملخص الورقة البحثية هو:
دفع التقدم الأخير في أنظمة توليد الصور من النص إلى الصورة بشكل كبير بواسطة نماذج الانتشار. ومع ذلك، لا تزال نماذج الانتشار أحادية المرحلة لتوليد الصور من النص تواجه تحديات من حيث الكفاءة الحسابية وتحسين تفاصيل الصورة. لمعالجة هذه المشكلة، نقترح CogView3، وهو إطار متسلسل مبتكر يعزز أداء توليد الصور من النص إلى الصورة عبر الانتشار. CogView3 هو أول نموذج يطبّق الانتشار المتتابع في مجال توليد الصور من النص، حيث ينفذ المهمة أولاً بإنشاء صور منخفضة الدقة، ثم تطبيق فائق الدقة القائم على التتابع. لا تؤدي هذه المنهجية فقط إلى مخرجات تنافسية لتوليد الصور من النص، بل تقلل أيضاً بشكل كبير من تكاليف التدريب والاستدلال. تُظهر نتائجنا التجريبية أن CogView3 يتفوق على SDXL، وهو نموذج الانتشار المفتوح المصدر الحالي لتوليد الصور من النص الذي يمثل أحدث ما توصلت إليه التقنية، بنسبة 77.0% في التقييمات البشرية، بينما يتطلب فقط حوالي 1/2 من وقت الاستدلال. يحقق المتغير المُقطّر من CogView3 أداءً مماثلاً بينما يستخدم فقط 1/10 من وقت الاستدلال الذي يتطلبه SDXL.
تأكد من الاطلاع على دليل المجدولين لمعرفة كيفية استكشاف التوازن بين سرعة المجدول وجودة النتائج، واطّلع على قسم إعادة استخدام المكونات عبر خطوط الأنابيب لمعرفة كيفية تحميل نفس المكونات بكفاءة في خطوط أنابيب متعددة.
تمت مساهمة خط المعالجة هذا بواسطة zRzRzRzRzRzRzR. يمكن العثور على قاعدة الكود الأصلية هنا. يمكن العثور على الأوزان الأصلية تحت hf.co/THUDM.
CogView3PlusPipeline
فئة diffusers.CogView3PlusPipeline
< source >( tokenizer: T5Tokenizertext_encoder: T5EncoderModelvae: AutoencoderKLtransformer: CogView3PlusTransformer2DModelscheduler: diffusers.schedulers.scheduling_ddim_cogvideox.CogVideoXDDIMScheduler | diffusers.schedulers.scheduling_dpm_cogvideox.CogVideoXDPMScheduler )
المعاملات
- vae (AutoencoderKL) — نموذج الترميز التبايني التلقائي (VAE) لتشفير وفك تشفير الصور إلى تمثيلات كامنة ومنها.
- text_encoder (
T5EncoderModel) — مُشفِّر نص ثابت. يستخدم CogView3Plus T5؛ وتحديداً النسخة t5-v1_1-xxl. - tokenizer (
T5Tokenizer) — مُقسِّم من الفئة T5Tokenizer. - transformer (CogView3PlusTransformer2DModel) —
نموذج
CogView3PlusTransformer2DModelمشروط بالنص، يُستخدم لإزالة الضوضاء من الكامنات المُرمّزة للصورة. - scheduler (SchedulerMixin) —
مجدول يُستخدم بالاقتران مع
transformerلإزالة الضوضاء من الكامنات المُرمّزة للصورة.
خط أنابيب لتوليد الصور من النص باستخدام CogView3Plus.
يرث هذا النموذج من DiffusionPipeline. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع خطوط الأنابيب (مثل التنزيل أو الحفظ، أو التشغيل على جهاز معين، وما إلى ذلك).
__call__
< source >( prompt: str | list[str] | None = Nonenegative_prompt: str | list[str] | None = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 50timesteps: list[int] | None = Noneguidance_scale: float = 5.0num_images_per_prompt: int = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.FloatTensor] = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneoriginal_size: tuple[int, int] | None = Nonecrops_coords_top_left: tuple = (0, 0)output_type: str = 'pil'return_dict: bool = Truecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 224 ) → CogView3PipelineOutput or tuple
المعاملات
- prompt (
strأوlist[str]، اختياري) — الموجّه أو الموجّهات التي تُوجّه توليد الصورة. إذا لم يُعرَّف، يجب تمريرprompt_embeds. - negative_prompt (
strأوlist[str]، اختياري) — الموجّه أو الموجّهات التي لا ينبغي استخدامها لتوجيه توليد الصورة. إذا لم يُعرَّف، يجب تمريرnegative_prompt_embedsبدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا كانguidance_scaleأقل من1). - height (
int، اختياري، القيمة الافتراضية هي self.transformer.config.sample_size * self.vae_scale_factor) — ارتفاع الصورة المولّدة بالبكسلات. إذا لم يُقدَّم، يتم ضبطه على 1024. - width (
int، اختياري، القيمة الافتراضية هي self.transformer.config.sample_size * self.vae_scale_factor) — عرض الصورة المولدة بالبكسلات. إذا لم يُحدد، فسيتم ضبطه على 1024. - num_inference_steps (
int، اختياري، القيمة الافتراضية50) — عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة بجودة أعلى على حساب بطء الاستدلال. - timesteps (
list[int], اختياري) — خطوات زمنية مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معاملtimestepsفي طريقةset_timestepsالخاصة بهم. إذا لم يُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمريرnum_inference_steps. يجب أن تكون بترتيب تنازلي. - guidance_scale (
float، اختياري، القيمة الافتراضية5.0) — مقياس التوجيه كما هو مُعرَّف في Classifier-Free Diffusion Guidance. يُعرَّفguidance_scaleعلى أنهwفي المعادلة 2 من Imagen Paper. يتم تفعيل مقياس التوجيه عن طريق تعيينguidance_scale > 1. كلما زاد مقياس التوجيه، شجّع ذلك على توليد صور مرتبطة ارتباطًا وثيقًا بـpromptالنصي، وعادةً على حساب انخفاض جودة الصورة. - num_images_per_prompt (
int، اختياري، القيمة الافتراضية1) — عدد الصور التي سيتم توليدها لكل موجه. - eta (
float، اختياري، القيمة الافتراضية 0.0) — يتوافق مع المعامل eta (η) من ورقة DDIM. ينطبق فقط على DDIMScheduler، ويُتجاهل في المجدولين الآخرين. - generator (
torch.Generatorأوlist[torch.Generator]، اختياري) — مولّد واحد أو قائمة من مولّدات torch لجعل التوليد حتميًا. - latents (
torch.FloatTensor، اختياري) — كائنات latents ضجيجية مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، سيتم توليد كائن latents عن طريق الاستخراج باستخدام مولّد الأرقام العشوائيةgeneratorالمُقدَّم. - prompt_embeds (
torch.FloatTensor, اختياري) — تضمينات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الموجه. إذا لم تُقدَّم، فسيتم توليد تضمينات النص من معامل الإدخالprompt. - negative_prompt_embeds (
torch.FloatTensor، اختياري) — تضمينات نصية سلبية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الموجه. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخالnegative_prompt. - original_size (
tuple[int], اختياري، القيمة الافتراضية (1024, 1024)) — إذا لم تكنoriginal_sizeمطابقة لـtarget_size، فسيبدو أن الصورة قد خضعت لتقليل أو زيادة في الدقة. تكون القيمة الافتراضية لـoriginal_sizeهي(height, width)إذا لم يتم تحديدها. وهي جزء من micro-conditioning في SDXL كما هو موضح في القسم 2.2 من https://huggingface.co/papers/2307.01952. - crops_coords_top_left (
tuple[int], اختياري، القيمة الافتراضية (0, 0)) — يمكن استخدامcrops_coords_top_leftلتوليد صورة تبدو وكأنها “مقتطعة” من الموضعcrops_coords_top_leftإلى الأسفل. عادةً ما يتم تحقيق صور جيدة ومركزة بشكل مفضل عن طريق تعيينcrops_coords_top_leftإلى (0, 0). جزء من التكييف الدقيق (micro-conditioning) الخاص بـ SDXL كما هو موضح في القسم 2.2 من https://huggingface.co/papers/2307.01952. - output_type (
str، اختياري، القيمة الافتراضية"pil") — صيغة مخرجات توليد الصورة. اختر بين PIL:PIL.Image.Imageأوnp.array. - return_dict (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutputبدلاً من tuple عادي. - callback_on_step_end (
Callable، اختياري) — دالة تُستدعى في نهاية كل خطوة إزالة ضوضاء أثناء الاستدلال. تُستدعى الدالة بالحجج التالية: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) الخاص بك. - max_sequence_length (
int، القيمة الافتراضية224) — الحد الأقصى لطول التسلسل في الموجه المُرمَّز. يمكن ضبطه على قيم أخرى، لكن قد يؤدي ذلك إلى نتائج أقل جودة.
يعيد
CogView3PipelineOutput أو tuple
CogView3PipelineOutput إذا كان return_dict صحيحًا، وإلا فسيكون tuple. عند إرجاع tuple، يكون العنصر الأول قائمة تحتوي على الصور المولّدة.
الدالة التي تُستدعى عند استدعاء خط الأنابيب للتوليد.
أمثلة:
>>> import torch
>>> from diffusers import CogView3PlusPipeline
>>> pipe = CogView3PlusPipeline.from_pretrained("THUDM/CogView3-Plus-3B", torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")
>>> prompt = "A photo of an astronaut riding a horse on mars"
>>> image = pipe(prompt).images[0]
>>> image.save("output.png")encode_prompt
< source >( prompt: str | list[str]negative_prompt: str | list[str] | None = Nonedo_classifier_free_guidance: bool = Truenum_images_per_prompt: int = 1prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int = 224device: typing.Optional[torch.device] = Nonedtype: typing.Optional[torch.dtype] = None )
المعاملات
- prompt (
strأوlist[str]، اختياري) — الموجّه الذي سيتم ترميزه - negative_prompt (
strأوlist[str]، اختياري) — الموجّه أو الموجّهات التي لا ينبغي استخدامها لتوجيه توليد الصورة. إذا لم يُعرَّف، يجب تمريرnegative_prompt_embedsبدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا كانguidance_scaleأقل من1). - do_classifier_free_guidance (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان سيتم استخدام classifier free guidance أم لا. - num_images_per_prompt (
int، اختياري، القيمة الافتراضية 1) — عدد الصور التي يجب توليدها لكل موجه. جهاز torch الذي سيتم وضع التضمينات الناتجة عليه - prompt_embeds (
torch.Tensor، اختياري) — تضمينات نصية مُولَّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الموجه. إذا لم تُقدَّم، فسيتم توليد تضمينات النص من معامل الإدخالprompt. - negative_prompt_embeds (
torch.Tensor، اختياري) — تضمينات نصية سلبية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الموجه. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخالnegative_prompt. - max_sequence_length (
int، القيمة الافتراضية224) — الحد الأقصى لطول التسلسل في الموجه المُرمَّز. يمكن ضبطه على قيم أخرى، لكن قد يؤدي ذلك إلى نتائج أقل جودة. - device — (
torch.device، اختياري): جهاز torch - dtype — (
torch.dtype، اختياري): نوع بيانات torch
يقوم بتشفير الموجه إلى حالات مخفية لمشفّر النص.
CogView3PipelineOutput
فئة diffusers.pipelines.cogview3.pipeline_output.CogView3PipelineOutput
< source >( images: list[PIL.Image.Image] | numpy.ndarray )
فئة الإخراج لخطوط أنابيب CogView3.