Buckets:
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]]
diffusers.Kandinsky6TI2VAPipeline[[diffusers.Kandinsky6TI2VAPipeline]]
diffusers.Kandinsky6TI2VAPipeline(transformer: Kandinsky6Transformer3DModel, vae: AutoencoderKLHunyuanVideo, text_encoder: Qwen2_5_VLForConditionalGeneration, tokenizer: Qwen2_5_VLProcessor, text_encoder_2: CLIPTextModel, tokenizer_2: CLIPTokenizer, scheduler: diffusers.schedulers.scheduling_flow_match_euler_discrete.FlowMatchEulerDiscreteScheduler | diffusers.schedulers.scheduling_piflow.PiflowScheduler, audio_vae: diffusers.models.autoencoders.autoencoder_mmaudio.MMAudioVAE | None = None, vocoder: diffusers.models.autoencoders.mmaudio_vocoder.MMAudioVocoder | None = None)
المعاملات:
transformer (Kandinsky6Transformer3DModel) : محوّل متعدد الوسائط يقوم بإزالة الضوضاء من الكمونيات (latents) الخاصة بالفيديو والصوت.
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، اختياري) : مُصوِّت (Vocoder) يُستخدم لتحويل مطياف الميل (mel spectrogram) الذي يفكّكه audio_vae إلى موجة صوتية. لا يُحتاج إليه إلا عند تعيين sample_audio=True.
خط أنابيب لتوليد الفيديو والصوت من النص/الصورة باستخدام Kandinsky 6.
تتم إزالة الضوضاء من البيانات الكامنة للفيديو والصوت معًا بواسطة محوّل متعدد الوسائط واحد، مشروطًا على رموز النص من Qwen2.5-VL وتضمين مجمّع من CLIP. كما يمكن لصورة مرجعية اختيارية أن تشترط الإطار الأول.
يرث هذا النموذج من DiffusionPipeline. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة المُنفَّذة لجميع خطوط الأنابيب (التنزيل، الحفظ، التشغيل على جهاز معين، إلخ).
call[[diffusers.Kandinsky6TI2VAPipeline.call]]
__call__(prompt: str | list[str] | None = None, image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, negative_prompt: str | list[str] | None = None, height: int = 512, width: int = 768, num_frames: int = 121, frame_rate: float = 24.0, num_inference_steps: int = 50, timesteps: list[int] | None = None, sigmas: list[float] | None = None, guidance_scale: float = 5.0, num_videos_per_prompt: int = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, audio_latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, sample_audio: bool = True, expand_prompts: bool = False, max_sequence_length: int = 1024, output_type: str = 'pil', return_dict: bool = True, callback_on_step_end: collections.abc.Callable[[int, int, dict], None] | None = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'])
المعاملات:
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]، اختياري) : قيم سيجما مخصصة للمجدولين الذين يدعمونها.
guidance_scale (float، القيمة الافتراضية 5.0) : مقياس التوجيه الحر من التصنيف. يجب أن يكون 1.0 مع PiflowScheduler.
num_videos_per_prompt (int، القيمة الافتراضية 1) : عدد مقاطع الفيديو التي سيتم توليدها لكل موجه.
generator (torch.Generator أو list[torch.Generator]، اختياري) : المولّدات المستخدمة للضوضاء الأولية وتشفير الصورة المرجعية.
latents (torch.Tensor، اختياري) : كامنات فيديو مُولّدة مسبقًا على شكل (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]، القيمة الافتراضية هي ["latents"]) : مدخلات المصفوفات التي تُمرَّر إلى callback_on_step_end؛ وهي مجموعة فرعية من _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[[diffusers.Kandinsky6TI2VAPipeline.encode_image]]
encode_image(image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], height: int, width: int, device: device, dtype: dtype, num_videos_per_prompt: int = 1, generator: 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[[diffusers.Kandinsky6TI2VAPipeline.encode_prompt]]
encode_prompt(prompt: str | list[str], negative_prompt: str | list[str] | None = None, do_classifier_free_guidance: bool = True, num_videos_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_attention_mask: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, max_sequence_length: int = 1024, device: typing.Optional[torch.device] = None, dtype: 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[[diffusers.Kandinsky6TI2VAPipeline.expand_prompts]]
expand_prompts(prompt: str | list[str], tokenizer, text_encoder, device: device, image: PIL.Image.Image | list[PIL.Image.Image] | None = None, max_sequence_length: int = 1024, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None)
المعاملات:
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[[diffusers.Kandinsky6TI2VAPipeline.prepare_audio_latents]]
prepare_audio_latents(batch_size: int, num_channels_latents: int, audio_length: int, dtype: dtype, device: device, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType], audio_latents: typing.Optional[torch.Tensor] = None)
يعيد الكامنات الصوتية في تخطيط (batch_size, audio_length, channels) الخاص بالمحوّل. يُتوقع أن يكون متجه audio_latents الذي يوفّره المستخدم في تخطيط (batch_size, channels, audio_length).
prepare_latents[[diffusers.Kandinsky6TI2VAPipeline.prepare_latents]]
prepare_latents(batch_size: int, num_channels_latents: int, height: int, width: int, num_frames: int, dtype: dtype, device: device, generator: 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]]
diffusers.Kandinsky6SRPipeline[[diffusers.Kandinsky6SRPipeline]]
diffusers.Kandinsky6SRPipeline(transformer: Kandinsky6SRTransformer3DModel, vae: Kandinsky6SRVAE, scheduler: diffusers.schedulers.scheduling_flow_match_euler_discrete.FlowMatchEulerDiscreteScheduler | diffusers.schedulers.scheduling_piflow.PiflowScheduler, latent_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[[diffusers.Kandinsky6SRPipeline.call]]
__call__(video: typing.Union[list[PIL.Image.Image], list[list[PIL.Image.Image]], numpy.ndarray, torch.Tensor], resolution_scale: float = 2.25, num_inference_steps: int = 4, timesteps: list[int] | None = None, sigmas: list[float] | None = None, lq_noise_scale: float = 0.7, min_overlap: float = 0.2, tiles_batch_size: int = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, output_type: str = 'pil', return_dict: bool = True)
المعاملات:
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]، اختياري) : قيم سيجما مخصصة للمجدولين الذين يدعمونها.
lq_noise_scale (float، القيمة الافتراضية 0.7) : كمية الضوضاء الغاوسية الممزوجة مع الكمون منخفض الدقة (مع الحفاظ على التباين) قبل إزالة الضوضاء.
min_overlap (float، القيمة الافتراضية 0.2) : الحد الأدنى من التداخل بين البلاطات المتجاورة كنسبة من حجم البلاطة.
tiles_batch_size (int، القيمة الافتراضية 1) : عدد البلاطات التي تتم إزالة الضوضاء منها في كل استدعاء لمحوّل.
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[[diffusers.Kandinsky6SRPipeline.decode_latents]]
decode_latents(latents: Tensor)
يفكّك كود K-VAE المُقيَّم إلى فيديو بأبعاد (batch_size, channels, num_frames, height, width) ضمن المدى [-1, 1].
encode_video[[diffusers.Kandinsky6SRPipeline.encode_video]]
encode_video(video: Tensor)
يقوم بتشفير فيديو بأبعاد (batch_size, channels, num_frames, height, width) بقيم ضمن المدى [-1, 1] إلى متغيرات K-VAE مُقيّمة بمعامل scaling_factor الخاص بـ VAE.
Kandinsky6SRLatentUpscalerBank[[diffusers.Kandinsky6SRLatentUpscalerBank]]
diffusers.Kandinsky6SRLatentUpscalerBank[[diffusers.Kandinsky6SRLatentUpscalerBank]]
diffusers.Kandinsky6SRLatentUpscalerBank(in_channels: int = 64, stage_channels: tuple[int, int, int] = (2048, 1024, 512), num_pre_blocks: int = 5, num_mid_blocks: int = 3, num_post_blocks: int = 3, num_x2_adapter_blocks: int = 2, scales: 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[[diffusers.Kandinsky6SRLatentUpscalerBank.forward]]
forward(latents: Tensor, scale: int, return_dict: bool = True)
المعاملات:
latents (torch.Tensor من الشكل (batch_size, in_channels, num_frames, height, width)) : كامنات K-VAE مُقيّمة بواسطة scaling_factor.
scale (int) : عامل التكبير المكاني؛ أحد قيم scales.
return_dict (bool، القيمة الافتراضية True) : ما إذا كان يجب إرجاع ~models.autoencoder_kl.DecoderOutput بدلاً من tuple عادي.
يعيد:
المتغيرات المُصعَّدة (upscaled latents) ذات الشكل (batch_size, in_channels, num_frames, height * scale, width * scale).
Kandinsky6TI2VAPipelineOutput[[diffusers.Kandinsky6TI2VAPipelineOutput]]
diffusers.Kandinsky6TI2VAPipelineOutput[[diffusers.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]]
diffusers.Kandinsky6SRPipelineOutput[[diffusers.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.
Xet Storage Details
- Size:
- 42.9 kB
- Xet hash:
- ceac584ec1e292688d99db1cc28e973b9d654d2315436018be2cdc2109376e0d
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.