Diffusers documentation

Kandinsky 6

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Kandinsky 6

Kandinsky 6 هي عائلة من نماذج توليد الفيديو من Kandinsky Lab. يقوم النموذج الرئيسي بتوليد فيديو وصوت متزامن من نص أو صورة مرجعية باستخدام محوّل انتشار متعدد الوسائط واحد: حيث يتم إزالة الضوضاء عن كامنات الفيديو والصوت معًا عبر كتل مدمجة تتقاطع في الانتباه بين الوسائطتين، حيث يُشترط كل منهما على فرع نصي خاص به من Qwen2.5-VL وعلى تضمين مجمّع من CLIP. كما يوجد نموذج منفصل لرفع الدقة يقوم بزيادة حجم الفيديو المولّد قطعةً قطعة في فضاء الكامن الخاص بـ K-VAE السببي ثلاثي الأبعاد.

اطّلع على منظمة Kandinsky Lab على Hub للحصول على مجموعة كاملة من نقاط التفتيش الرسمية، بما في ذلك متغيرات مطابقة التدفق والمتكثفة لكل من النموذج الأساسي ونموذج رفع الدقة.

تأتي نقاط التفتيش المُصغَّرة مع PiflowScheduler ذي الخطوات القليلة، ويجب تشغيلها مع guidance_scale=1.0.

النماذج المتاحة

النموذجخط أنابيبملاحظات
kandinskylab/Kandinsky-6.0-Pro-5s-DiffusersKandinsky6TI2VAPipelineمطابقة التدفق، guidance_scale=5.0، 50 خطوة
kandinskylab/Kandinsky-6.0-Pro-distill-5s-DiffusersKandinsky6TI2VAPipelineمُقطَّر، guidance_scale=1.0، 10 خطوات
kandinskylab/Kandinsky-6.0-Lite-5s-DiffusersKandinsky6TI2VAPipelineمطابقة التدفق، guidance_scale=5.0، 50 خطوة
kandinskylab/Kandinsky-6.0-Lite-distill-5s-DiffusersKandinsky6TI2VAPipelineمُقطَّر، guidance_scale=1.0، 10 خطوات
kandinskylab/Kandinsky-6.0-Pro-pretrain-5s-DiffusersKandinsky6TI2VAPipelineمطابقة التدفق، guidance_scale=5.0، 50 خطوة
kandinskylab/Kandinsky-6.0-Lite-pretrain-5s-DiffusersKandinsky6TI2VAPipelineمطابقة التدفق، guidance_scale=5.0، 50 خطوة
kandinskylab/Kandinsky-6.0-VSR-5s-DiffusersKandinsky6SRPipelineالرفع الدقيق باستخدام مطابقة التدفق
kandinskylab/Kandinsky-6.0-VSR-distilled2steps-5s-DiffusersKandinsky6SRPipelineدقة فائقة مُقطّرة، خطوتان

من نص/صورة إلى فيديو وصوت

import torch
from diffusers import Kandinsky6TI2VAPipeline
from diffusers.utils import encode_video

pipe = Kandinsky6TI2VAPipeline.from_pretrained(
    "kandinskylab/Kandinsky-6.0-Pro-distill-5s-Diffusers", torch_dtype=torch.bfloat16
)
pipe.enable_model_cpu_offload()

output = pipe(
    prompt="A cat and a dog baking a cake together in a kitchen.",
    height=480,
    width=864,
    num_frames=121,
    num_inference_steps=10,
    guidance_scale=1.0,
)
encode_video(
    output.frames[0],
    fps=24,
    output_path="output.mp4",
    audio=output.audio[0][None],
    audio_sample_rate=pipe.audio_sample_rate,
)

مرّر image= لتكييف الإطار الأول على صورة مرجعية، وsample_audio=False لتوليد الفيديو فقط، وexpand_prompts=True للسماح لمشفّر النصوص Qwen2.5-VL بإعادة كتابة الأوامر النصية القصيرة إلى أوامر مفصّلة أولاً.

تحسين دقة الفيديو

يقوم Kandinsky6SRPipeline بأخذ الإطارات التي ينتجها Kandinsky6TI2VAPipeline ورفع دقتها بمقدار 2 أو 4 أو 2.25 (رفع مسبق ثنائي الخطية بمقدار 1.125x يليه مسار الرفع بمقدار 2x). يتم تقسيم الفيديو إلى بلاطات متداخلة، حيث تُحسَّن كل بلاطة عند إحدى أحجام البلاطات التي تم تدريب محوّل رفع الدقة عليها، ثم تُدمج البلاطات معاً باستخدام نوافذ هان.

# required: lets inductor pick flex-attention tiles that fit the SR block mask
torch._inductor.config.max_autotune = True  

sr_pipe = Kandinsky6SRPipeline.from_pretrained(
    "kandinskylab/Kandinsky-6.0-VSR-distilled2steps-5s-Diffusers", torch_dtype=torch.bfloat16
)
# The SR transformer always runs NABLA sparse attention on the `flex` backend. Compile it, otherwise flex falls
# back to an eager implementation that needs far more memory at video resolutions.
sr_pipe.enable_model_cpu_offload()
sr_pipe.transformer.set_attention_backend("flex")
sr_pipe.transformer.compile_repeated_blocks(fullgraph=True)

upscaled = sr_pipe(video=output.frames[0], resolution_scale=2.25, num_inference_steps=2).frames[0]

تحسين الذاكرة

راجع دليل تقليل استهلاك الذاكرة للاطلاع على مجموعة التقنيات العامة. يدعم كل من Kandinsky6TI2VAPipeline و Kandinsky6SRPipeline ميزة نقل النموذج (المستخدمة أعلاه) و، للحصول على بصمة أصغر على حساب السرعة، نقل المعالج المركزي التسلسلي:

pipe.enable_sequential_cpu_offload()

يدعم VAE الخاص بالفيديو في Kandinsky6TI2VAPipeline أيضًا فك الترميز المُجزّأ للدقات العالية أو الفيديوهات الطويلة:

pipe.vae.enable_tiling()

ملاحظات

  • يجب أن تكون قيمتا height وwidth قابلة للقسمة على نسبة الضغط المكاني الخاصة بـ VAE للفيديو مضروبة في حجم الباتش الخاص بالترانسفورمر — أي 16 مع إعداد Kandinsky6TI2VAPipeline الافتراضي (AutoencoderKLHunyuanVideo بنسبة ضغط 8، وpatch_size=(1, 2, 2)). القيمة 480x864، المستخدمة في المثال أعلاه، تحقق من هذا الشرط.
  • يجب أن يحتوي مدخل video الخاص بـ Kandinsky6SRPipeline على عدد من الإطارات يساوي 1 + k * vae_scale_factor_temporal لبعض الأعداد الصحيحة k (مع نسبة ضغط زمنية قدرها 4 في إعداد K-VAE الافتراضي، لذا فإن 121 إطارًا تعمل بينما لا تعمل 120) — قم بقص أو ملء الفيديو الذي لا يحقق هذا الشرط مسبقًا قبل تكبيره.
  • expand_prompts=True يعيد استخدام مُشفِّر النص Qwen2.5-VL المُحمَّل مسبقًا لمرحلة توليد إضافية قبل إزالة الضوضاء، مما يضيف زمن استجابة دون إضافة أوزان نموذج إضافية.
  • اجمع كتل التحويل المتكررة للحصول على استدلال متكرر أسرع:
    pipe.transformer.compile_repeated_blocks(fullgraph=True)

Kandinsky6TI2VAPipeline

فئة diffusers.Kandinsky6TI2VAPipeline

< >

( transformer: Kandinsky6Transformer3DModelvae: AutoencoderKLHunyuanVideotext_encoder: Qwen2_5_VLForConditionalGenerationtokenizer: Qwen2_5_VLProcessortext_encoder_2: CLIPTextModeltokenizer_2: CLIPTokenizerscheduler: diffusers.schedulers.scheduling_flow_match_euler_discrete.FlowMatchEulerDiscreteScheduler | diffusers.schedulers.scheduling_piflow.PiflowScheduleraudio_vae: diffusers.models.autoencoders.autoencoder_mmaudio.MMAudioVAE | None = Nonevocoder: diffusers.models.autoencoders.mmaudio_vocoder.MMAudioVocoder | None = None )

المعاملات

  • transformer (Kandinsky6Transformer3DModel) — محوّل متعدد الوسائط يقوم بإزالة الضوضاء من الكامنات الخاصة بالفيديو والصوت.
  • vae (AutoencoderKLHunyuanVideo) — نموذج VAE للفيديو يُستخدم لتشفير الصورة المرجعية وفك تشفير الفيديو المُولَّد.
  • text_encoder (Qwen2_5_VLForConditionalGeneration) — نموذج Qwen2.5-VL الذي يوفر تضمينات النص على مستوى الرموز، وخيارياً، توسيع الأوامر.
  • tokenizer (Qwen2_5_VLProcessor) — معالج text_encoder.
  • text_encoder_2 (CLIPTextModel) — مُشفِّر نصوص CLIP الذي يوفر تضمين النص المُجمَّع.
  • tokenizer_2 (CLIPTokenizer) — مُقسِّم text_encoder_2.
  • scheduler (FlowMatchEulerDiscreteScheduler أو PiflowScheduler) — المجدول المستخدم مع transformer لإزالة الضوضاء من الكمونيات. نقاط التفتيش المُقطّرة تأتي مع PiflowScheduler ويجب تشغيلها مع guidance_scale=1.0.
  • audio_vae (MMAudioVAE، اختياري) — نموذج VAE الصوتي المستخدم لفك ترميز الكامنات الصوتية المولدة إلى طيف ميل. لا يُحتاج إليه إلا عند sample_audio=True.
  • vocoder (MMAudioVocoder، اختياري) — المُصوِّت المستخدم لتحويل طيف الميّل الذي يفكّكه audio_vae إلى موجة صوتية. لا يُستلزم إلا عند sample_audio=True.

خط أنابيب لتوليد الفيديو والصوت من النص/الصورة باستخدام Kandinsky 6.

تتم إزالة الضوضاء من البيانات الكامنة للفيديو والصوت معًا بواسطة محوّل متعدد الوسائط واحد، مشروطًا برمزات النص من Qwen2.5-VL وتضمين مجمّع من CLIP. كما يمكن لصورة مرجعية اختيارية أن تشترط الإطار الأول.

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

__call__

< >

( prompt: str | list[str] | None = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Nonenegative_prompt: str | list[str] | None = Noneheight: int = 512width: int = 768num_frames: int = 121frame_rate: float = 24.0num_inference_steps: int = 50timesteps: list[int] | None = Nonesigmas: list[float] | None = Noneguidance_scale: float = 5.0num_videos_per_prompt: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneaudio_latents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonesample_audio: bool = Trueexpand_prompts: bool = Falsemax_sequence_length: int = 1024output_type: str = 'pil'return_dict: bool = Truecallback_on_step_end: collections.abc.Callable[[int, int, dict], None] | None = Nonecallback_on_step_end_tensor_inputs: list = ['latents'] ) → Kandinsky6TI2VAPipelineOutput or tuple

المعاملات

  • prompt (str أو list[str]، اختياري) — الموجّه أو الموجّهات التي توجّه عملية التوليد. مطلوب ما لم يُقدَّم prompt_embeds.
  • image (PipelineImageInput، اختياري) — صورة مرجعية أو صور مرجعية تُشكّل شرط الإطار الأول (من صورة إلى فيديو وصوت).
  • negative_prompt (str أو list[str]، اختياري) — الموجّه أو الموجّهات التي لا ينبغي استخدامها لتوجيه التوليد. القيمة الافتراضية هي الموجّه السلبي الخاص بـ Kandinsky 6.
  • height (int)، القيمة الافتراضية 512) — ارتفاع الفيديو المولّد بالبكسلات.
  • width (int، القيمة الافتراضية 768) — عرض الفيديو المولّد بالبكسلات.
  • num_frames (int، القيمة الافتراضية 121) — عدد الإطارات المولّدة.
  • frame_rate (float، القيمة الافتراضية 24.0) — معدل الإطارات الذي يتم توليد الفيديو به؛ يحدد طول الصوت المتزامن.
  • num_inference_steps (int، القيمة الافتراضية 50) — عدد خطوات إزالة الضوضاء. استخدم 16 مع نقاط التفتيش المُقطّرة.
  • timesteps (list[int]، اختياري) — خطوات زمنية مخصصة للمجدولين الذين يدعمونها.
  • sigmas (list[float]، اختياري) — قيم sigmas مخصصة للمجدولين الذين يدعمونها.
  • guidance_scale (float، القيمة الافتراضية 5.0) — مقياس التوجيه الحر من التصنيف. يجب أن يكون 1.0 مع PiflowScheduler.
  • num_videos_per_prompt (int، القيمة الافتراضية 1) — عدد مقاطع الفيديو التي سيتم توليدها لكل موجه.
  • generator (torch.Generator أو list[torch.Generator]، اختياري) — المولّدات المستخدمة للضوضاء الأولية وتشفير الصورة المرجعية.
  • latents (torch.Tensor، اختياري) — كائنات فيديو مُولّدة مسبقًا (latents) ذات الشكل (batch_size, channels, num_latent_frames, latent_height, latent_width).
  • audio_latents (torch.Tensor، اختياري) — كائنات صوتية مولّدة مسبقًا بأبعاد (batch_size, channels, audio_length).
  • prompt_embeds (torch.Tensor، اختياري) — تضمينات نصية مُولّدة مسبقًا لنموذج Qwen2.5-VL.
  • pooled_prompt_embeds (torch.Tensor، اختياري) — تضمينات نصية مجمعة من CLIP تم توليدها مسبقًا.
  • negative_prompt_embeds (torch.Tensor، اختياري) — تضمينات نصية سلبية مُولّدة مسبقًا لنموذج Qwen2.5-VL.
  • negative_pooled_prompt_embeds (torch.Tensor، اختياري) — تضمينات نصية مجمعة سلبية مُولّدة مسبقًا من CLIP.
  • sample_audio (bool، القيمة الافتراضية True) — ما إذا كان سيتم توليد صوت متزامن. يتطلب أن يحتوي خط المعالجة على audio_vae وvocoder.
  • expand_prompts (bool، القيمة الافتراضية False) — ما إذا كان يجب إعادة كتابة الأوامر باستخدام expand_prompts() قبل الترميز.
  • max_sequence_length (int، القيمة الافتراضية 1024) — الحد الأقصى لعدد رموز الاستعلام بعد قالب المحادثة.
  • output_type (str، الافتراضي "pil") — صيغة مخرجات الفيديو المولّد: "pil" أو "np" أو "pt" أو "latent".
  • return_dict (bool، القيمة الافتراضية True) — ما إذا كان يجب إرجاع Kandinsky6TI2VAPipelineOutput بدلاً من tuple عادي.
  • callback_on_step_end (Callable، اختياري) — دالة تُستدعى في نهاية كل خطوة إزالة ضوضاء عبر callback_on_step_end(self, step, timestep, callback_kwargs). قد تُرجع قاموسًا (dict) يُغني عن الموترات (tensors) المذكورة.
  • callback_on_step_end_tensor_inputs (list[str], defaults to ["latents"]) — Tensor inputs passed to callback_on_step_end; a subset of _callback_tensor_inputs.

يعيد

Kandinsky6TI2VAPipelineOutput أو tuple

الفيديو والصوت المولّدان؛ مجموعة (frames, audio) عندما يكون return_dict=False.

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

أمثلة:

>>> import torch
>>> from diffusers import Kandinsky6TI2VAPipeline
>>> from diffusers.utils import encode_video

>>> pipe = Kandinsky6TI2VAPipeline.from_pretrained(
...     "kandinskylab/Kandinsky-6.0-Pro-distill-5s-Diffusers", torch_dtype=torch.bfloat16
... )
>>> pipe.enable_model_cpu_offload()

>>> output = pipe(
...     prompt="A cat and a dog baking a cake together in a kitchen.",
...     height=480,
...     width=864,
...     num_frames=121,
...     num_inference_steps=16,
...     guidance_scale=1.0,
... )
>>> encode_video(
...     output.frames[0],
...     fps=24,
...     output_path="output.mp4",
...     audio=output.audio[0][None],
...     audio_sample_rate=pipe.audio_sample_rate,
... )

encode_image

< >

( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]height: intwidth: intdevice: devicedtype: dtypenum_videos_per_prompt: int = 1generator: typing.Optional[torch.Generator] = None )

ترمز الصور المرجعية إلى كامنات الإطار الأول ذات الشكل (batch_size, latent_height, latent_width, latent_channels)، مضروبة بمعامل scaling_factor الخاص بـ VAE. يتم تغيير حجم صور PIL وقصّها من المنتصف إلى height x width؛ بينما يجب أن تكون الموترات والمصفوفات بهذا الحجم مسبقاً. يتم تكرار الكامنات num_videos_per_prompt مرات على طول بُعد الدفعة.

encode_prompt

< >

( prompt: str | list[str]negative_prompt: str | list[str] | None = Nonedo_classifier_free_guidance: bool = Truenum_videos_per_prompt: int = 1prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_attention_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int = 1024device: typing.Optional[torch.device] = Nonedtype: typing.Optional[torch.dtype] = None )

المعاملات

  • prompt (str أو list[str]) — الموجّه الذي سيتم ترميزه.
  • negative_prompt (str أو list[str]، اختياري) — الموجّه الذي لا يُستخدم لتوجيه التوليد. يُتجاهل عندما يكون do_classifier_free_guidance هو False.
  • do_classifier_free_guidance (bool، القيمة الافتراضية True) — ما إذا كان سيتم ترميز الموجه السلبي أيضًا.
  • num_videos_per_prompt (int، القيمة الافتراضية 1) — عدد مقاطع الفيديو المولّدة لكل موجه؛ حيث تُكرَّر التضمينات (embeddings) وفقًا لذلك.
  • prompt_embeds (torch.Tensor، اختياري) — تضمينات نصية مُولّدة مسبقًا لنموذج Qwen2.5-VL. يتخطى ترميز prompt.
  • pooled_prompt_embeds (torch.Tensor، اختياري) — تضمينات نصية مجمّعة مُولّدة مسبقًا من CLIP. يجب تقديمها معًا مع prompt_embeds.
  • prompt_attention_mask (torch.Tensor، اختياري) — قناع تعبئة منطقي لـprompt_embeds.
  • negative_prompt_embeds (torch.Tensor، اختياري) — تضمينات نصية سلبية مُولّدة مسبقًا لنموذج Qwen2.5-VL.
  • negative_pooled_prompt_embeds (torch.Tensor، اختياري) — تضمينات نصية مجمعة سلبية مُولّدة مسبقًا من CLIP.
  • negative_prompt_attention_mask (torch.Tensor، اختياري) — قناع تعبئة منطقي لـnegative_prompt_embeds.
  • max_sequence_length (int، القيمة الافتراضية 1024) — الحد الأقصى لعدد رموز الاستعلام بعد قالب المحادثة.
  • device (torch.device، اختياري) — الجهاز الذي تُشغَّل عليه مُشفِّرات النص.
  • dtype (torch.dtype، اختياري) — نوع البيانات (Dtype) للتضمينات المُعادَة.

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

expand_prompts

< >

( prompt: str | list[str]tokenizertext_encoderdevice: deviceimage: PIL.Image.Image | list[PIL.Image.Image] | None = Nonemax_sequence_length: int = 1024generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None ) → str or list[str]

المعاملات

  • prompt (str أو list[str]) — الموجّه أو الموجّهات التي سيتم توسيعها.
  • tokenizer — معالج Qwen2.5-VL، مثل pipe.tokenizer.
  • text_encoder — نموذج Qwen2.5-VL، على سبيل المثال pipe.text_encoder.
  • device (torch.device) — الجهاز الذي يعمل عليه مُشفِّر النص.
  • image (PIL.Image.Image أو list[PIL.Image.Image]، اختياري) — صورة مرجعية أو صور مرجعية لاستدعاء تحويل الصورة إلى فيديو.
  • max_sequence_length (int، القيمة الافتراضية 1024) — الحد الأقصى لعدد الرموز المولّدة لكل موجه.
  • generator (torch.Generator أو list[torch.Generator]، اختياري) — يُهيّئ البذرة للتوسعة المُستخرجة؛ يجب أن يطابق طول القائمة طول prompt، مع مولّد واحد لكل عنصر. تستخلص generate من مولّد الأرقام العشوائية العام، لذا تُهيَّأ بذرة المولّد العام من بذرة هذا المولّد؛ وتبقى استدعاءات randn_tensor اللاحقة تستخدم generator مباشرة.

يعيد

str أو list[str]

الموجّهات الموسّعة.

يعيد كتابة الموجزات القصيرة إلى موجزات فيديو وصوت مفصلة باستخدام مُشفّر النص Qwen2.5-VL، مع الارتكاز على الصورة المرجعية عند توفرها. وهو staticmethod بحيث يمكن استخدامه بشكل مستقل، قبل تشغيل خط المعالجة.

prepare_audio_latents

< >

( batch_size: intnum_channels_latents: intaudio_length: intdtype: dtypedevice: devicegenerator: typing.Union[torch.Generator, list[torch.Generator], NoneType]audio_latents: typing.Optional[torch.Tensor] = None )

يعيد كامنات الصوت (audio latents) بتخطيط (batch_size, audio_length, channels) الخاص بالمحوّل (transformer). يُتوقع أن يكون متجه audio_latents الذي يوفّره المستخدم بتخطيط (batch_size, channels, audio_length).

prepare_latents

< >

( batch_size: intnum_channels_latents: intheight: intwidth: intnum_frames: intdtype: dtypedevice: devicegenerator: typing.Union[torch.Generator, list[torch.Generator], NoneType]latents: typing.Optional[torch.Tensor] = None )

يعيد كامنات الفيديو في تخطيط (batch_size, num_frames, height, width, channels) الخاص بالمحوّل. يُتوقع أن يكون متجه latents الذي يوفّره المستخدم في تخطيط (batch_size, channels, num_frames, height, width).

Kandinsky6SRPipeline

فئة diffusers.Kandinsky6SRPipeline

< >

( transformer: Kandinsky6SRTransformer3DModelvae: Kandinsky6SRVAEscheduler: diffusers.schedulers.scheduling_flow_match_euler_discrete.FlowMatchEulerDiscreteScheduler | diffusers.schedulers.scheduling_piflow.PiflowSchedulerlatent_upscaler: diffusers.models.latent_upscaler.latent_upscaler_kandinsky6_sr.Kandinsky6SRLatentUpscalerBank | None = None )

المعاملات

  • transformer (Kandinsky6SRTransformer3DModel) — نموذج Transformer يُحسّن البلاطات الكامنة.
  • vae (Kandinsky6SRVAE) — K-VAE سببي للفيديو يُستخدم لتشفير الفيديو المدخل وفك تشفير البلاطات المُحسَّنة.
  • scheduler (FlowMatchEulerDiscreteScheduler أو PiflowScheduler) — المجدول المستخدم مع transformer لإزالة الضوضاء من البلاطات. تأتي نقاط التفتيش المُقطّرة مع PiflowScheduler.
  • latent_upscaler (Kandinsky6SRLatentUpscalerBank، اختياري) — مُحسِّنات الكامنة (Latent upscalers) للمقاييس المدعومة.

خط أنابيب لرفع دقة الفيديو باستخدام Kandinsky 6.

يُقسَّم الفيديو إلى بلاطات مكانية متداخلة، حيث تُحسَّن كل بلاطة بواسطة محوّل SR عند إحدى أحجام البلاطات التي تم تدريب النموذج عليها (transformer.config.tile_sizes)، ثم تُدمج البلاطات المحسَّنة مرة أخرى باستخدام نوافذ هان. عندما يحتوي خط المعالجة على latent_upscaler، تُقطع البلاطات من كامنات K-VAE للفيديو بأكمله وتُكبَّر في فضاء الكامنة؛ وإلا تُكبَّر بلاطات البكسلات بطريقة الاستيفاء ثنائي الخطية ثم تُرمَّز.

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

__call__

< >

( video: typing.Union[list[PIL.Image.Image], list[list[PIL.Image.Image]], numpy.ndarray, torch.Tensor]resolution_scale: float = 2.25num_inference_steps: int = 4timesteps: list[int] | None = Nonesigmas: list[float] | None = Nonelq_noise_scale: float = 0.7min_overlap: float = 0.2tiles_batch_size: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Noneoutput_type: str = 'pil'return_dict: bool = True ) → Kandinsky6SRPipelineOutput or tuple

المعاملات

  • video (list[PIL.Image.Image] أو np.ndarray أو torch.Tensor) — فيديو منخفض الدقة، بأي صيغة يقبلها preprocess_video()، ويتضمن 1 + k * 4 إطارًا. يتم تقريب الأبعاد إلى أقرب مضاعف كامل لعامل VAE المكاني.
  • resolution_scale (float، القيمة الافتراضية 2.25) — التكبير المكاني الكلي: 2 أو 4 أو 2.25 (تكبير مسبق ثنائي الخطية بنسبة 1.125x يليه مسار التكبير 2x).
  • num_inference_steps (int، القيمة الافتراضية 4) — عدد خطوات إزالة الضوضاء لكل بلاطة. استخدم 2 مع نقاط التفتيش المُقطّرة.
  • timesteps (list[int]، اختياري) — خطوات زمنية مخصصة للمجدولين الذين يدعمونها.
  • sigmas (list[float]، اختياري) — قيم sigmas مخصصة للمجدولين الذين يدعمونها.
  • lq_noise_scale (float، القيمة الافتراضية 0.7) — كمية الضوضاء الغاوسية الممزوجة مع الكمون منخفض الدقة (مع الحفاظ على التباين) قبل إزالة الضوضاء.
  • min_overlap (float، القيمة الافتراضية 0.2) — أدنى تداخل بين البلاطات المتجاورة كنسبة من حجم البلاطة.
  • tiles_batch_size (int، القيمة الافتراضية 1) — عدد البلاطات التي تتم إزالة الضوضاء عنها في كل استدعاء لتحوّل (transformer).
  • generator (torch.Generator أو list[torch.Generator]، اختياري) — المولّدات المستخدمة للضوضاء الممزوجة في البلاطات.
  • output_type (str، القيمة الافتراضية "pil") — صيغة مخرجات الفيديو المولّد: "pil" أو "np" أو "pt".
  • return_dict (bool، القيمة الافتراضية True) — ما إذا كان يجب إرجاع Kandinsky6SRPipelineOutput بدلاً من tuple عادي.

يعيد

Kandinsky6SRPipelineOutput أو tuple

الفيديو المُعالج بدقة فائقة؛ مجموعة (tuple) بعنصر واحد عند return_dict=False.

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

أمثلة:

>>> import torch
>>> from diffusers import Kandinsky6SRPipeline, Kandinsky6TI2VAPipeline
>>> from diffusers.utils import export_to_video

>>> pipe = Kandinsky6TI2VAPipeline.from_pretrained(
...     "kandinskylab/Kandinsky-6.0-Pro-distill-5s-Diffusers", torch_dtype=torch.bfloat16
... )
>>> pipe.enable_model_cpu_offload()
>>> video = pipe(
...     prompt="A cat and a dog baking a cake together in a kitchen.",
...     height=480,
...     width=864,
...     num_inference_steps=16,
...     guidance_scale=1.0,
...     sample_audio=False,
... ).frames[0]

>>> sr_pipe = Kandinsky6SRPipeline.from_pretrained(
...     "kandinskylab/Kandinsky-6.0-VSR-distilled2steps-5s-Diffusers", torch_dtype=torch.bfloat16
... )
>>> # The transformer always runs attention through the `flex` backend; compiling avoids the eager
>>> # fallback's much higher memory use at video resolutions.
>>> sr_pipe.transformer.compile_repeated_blocks(fullgraph=True)
>>> sr_pipe.enable_model_cpu_offload()
>>> output = sr_pipe(video=video, resolution_scale=2.25, num_inference_steps=2)
>>> export_to_video(output.frames[0], "output_sr.mp4", fps=24)

decode_latents

< >

( latents: Tensor )

يفكّك كود K-VAE المُقيَّم إلى فيديو بأبعاد (batch_size, channels, num_frames, height, width) ضمن المدى [-1, 1].

encode_video

< >

( video: Tensor )

ترميز فيديو بأبعاد (batch_size, channels, num_frames, height, width) بقيم ضمن [-1, 1] إلى متغيرات K-VAE مُقيّمة بمعامل scaling_factor الخاص بـ VAE.

Kandinsky6SRLatentUpscalerBank

class diffusers.Kandinsky6SRLatentUpscalerBank

< >

( in_channels: int = 64stage_channels: tuple[int, int, int] = (2048, 1024, 512)num_pre_blocks: int = 5num_mid_blocks: int = 3num_post_blocks: int = 3num_x2_adapter_blocks: int = 2scales: tuple[int, ...] = (2, 4)scaling_factor: float = 0.910344004631042 )

المعاملات

  • in_channels (int، القيمة الافتراضية 64) — عدد قنوات الكمون.
  • stage_channels (tuple[int, int, int])، القيمة الافتراضية (2048, 1024, 512)) — عرض الميزات للمراحل الثلاث في السلسلة المتسلسلة.
  • num_pre_blocks (int، القيمة الافتراضية 5) — كتل متبقية قبل أول عملية رفع عينة في نموذج x4.
  • num_mid_blocks (int، القيمة الافتراضية 3) — كتل متبقية بين عمليتي رفع الدقة.
  • num_post_blocks (int، القيمة الافتراضية 3) — كتل متبقية بعد آخر عملية رفع عينة.
  • num_x2_adapter_blocks (int، القيمة الافتراضية 2) — كتل متبقية (Residual blocks) لمحوّل (adapter) نموذج x2.
  • scales (tuple[int, ...]، القيمة الافتراضية (2, 4)) — المقاييس المكانية التي يوفر البنك مُكبِّراً لها.
  • scaling_factor (float، القيمة الافتراضية 0.910344) — المعامل الذي يُتوقع أن تحمله الكامنات المدخلة (معامل scaling_factor الخاص بـ K-VAE).

بنك مُعظِّمات كامنة (latent upscalers) تستخدمه Kandinsky6SRPipeline: مُعظِّم كامن واحد Kandinsky6SRLatentUpscaler لكل مقياس مكاني مدعوم، ويعمل على الكمونات (latents) الخاصة بـ K-VAE.

forward

< >

( latents: Tensorscale: intreturn_dict: bool = True )

المعاملات

  • latents (torch.Tensor من الشكل (batch_size, in_channels, num_frames, height, width)) — قيم latents الخاصة بـ K-VAE مضروبة في scaling_factor.
  • scale (int) — معامل التكبير المكاني؛ أحد قيم scales.
  • return_dict (bool، القيمة الافتراضية True) — ما إذا كان يجب إرجاع ~models.autoencoder_kl.DecoderOutput بدلاً من tuple عادي.

Kandinsky6TI2VAPipelineOutput

فئة diffusers.Kandinsky6TI2VAPipelineOutput

< >

( frames: typing.Union[torch.Tensor, numpy.ndarray, list[list[PIL.Image.Image]]]audio: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None )

المعاملات

  • frames (torch.Tensor أو np.ndarray أو list[list[PIL.Image.Image]]) — الفيديو المولّد. قائمة متداخلة بطول batch_size تحتوي على num_frames صور PIL لكل عنصر، أو مصفوفة NumPy أو متجه torch بأبعاد (batch_size, num_frames, height, width, channels) / (batch_size, num_frames, channels, height, width). عند استخدام output_type="latent"، تكون أبعاد كامنات الفيديو (batch_size, channels, num_latent_frames, latent_height, latent_width).
  • audio (torch.Tensor أو np.ndarray، اختياري) — الموجات الصوتية المولّدة ذات الشكل (batch_size, num_samples) ضمن [-1, 1] بمعدل أخذ العينات الخاص بـ VAE الصوتي، أو None عندما لم يتم أخذ عينات من الصوت. مع output_type="latent"، تكون الكامنات الصوتية ذات الشكل (batch_size, channels, audio_length).

فئة الإخراج الخاصة بـ Kandinsky6TI2VAPipeline.

Kandinsky6SRPipelineOutput

فئة diffusers.Kandinsky6SRPipelineOutput

< >

( frames: typing.Union[torch.Tensor, numpy.ndarray, list[list[PIL.Image.Image]]] )

المعاملات

  • frames (torch.Tensor أو np.ndarray أو list[list[PIL.Image.Image]]) — الفيديو المُعالَج بتقنية رفع الدقة. قائمة متداخلة طولها batch_size تحتوي على num_frames صورة بصيغة PIL لكل عنصر، أو مصفوفة NumPy أو متجه torch بأبعاد (batch_size, num_frames, height, width, channels) / (batch_size, num_frames, channels, height, width).

فئة الإخراج الخاصة بـ Kandinsky6SRPipeline.

Update on GitHub