Diffusers documentation
Kandinsky 6
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-Diffusers | Kandinsky6TI2VAPipeline | مطابقة التدفق، guidance_scale=5.0، 50 خطوة |
kandinskylab/Kandinsky-6.0-Pro-distill-5s-Diffusers | Kandinsky6TI2VAPipeline | مُقطَّر، guidance_scale=1.0، 10 خطوات |
kandinskylab/Kandinsky-6.0-Lite-5s-Diffusers | Kandinsky6TI2VAPipeline | مطابقة التدفق، guidance_scale=5.0، 50 خطوة |
kandinskylab/Kandinsky-6.0-Lite-distill-5s-Diffusers | Kandinsky6TI2VAPipeline | مُقطَّر، guidance_scale=1.0، 10 خطوات |
kandinskylab/Kandinsky-6.0-Pro-pretrain-5s-Diffusers | Kandinsky6TI2VAPipeline | مطابقة التدفق، guidance_scale=5.0، 50 خطوة |
kandinskylab/Kandinsky-6.0-Lite-pretrain-5s-Diffusers | Kandinsky6TI2VAPipeline | مطابقة التدفق، guidance_scale=5.0، 50 خطوة |
kandinskylab/Kandinsky-6.0-VSR-5s-Diffusers | Kandinsky6SRPipeline | الرفع الدقيق باستخدام مطابقة التدفق |
kandinskylab/Kandinsky-6.0-VSR-distilled2steps-5s-Diffusers | Kandinsky6SRPipeline | دقة فائقة مُقطّرة، خطوتان |
من نص/صورة إلى فيديو وصوت
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
< source >( 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__
< source >( 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 tocallback_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
< source >( 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
< source >( 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
< source >( 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
< source >( 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
< source >( 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
< source >( 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__
< source >( 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)يفكّك كود K-VAE المُقيَّم إلى فيديو بأبعاد (batch_size, channels, num_frames, height, width) ضمن المدى [-1, 1].
ترميز فيديو بأبعاد (batch_size, channels, num_frames, height, width) بقيم ضمن [-1, 1] إلى متغيرات K-VAE مُقيّمة بمعامل scaling_factor الخاص بـ VAE.
Kandinsky6SRLatentUpscalerBank
class diffusers.Kandinsky6SRLatentUpscalerBank
< source >( 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
< source >( 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
< source >( 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
< source >( 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.