Diffusers documentation

Kandinsky 5.0 Video

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 5.0 Video

Kandinsky 5.0 هي عائلة من نماذج الانتشار لتوليد الفيديو والصور.

تشكيلة Kandinsky 5.0 Lite من نماذج توليد الفيديو خفيفة الوزن (2 مليار معامل) التي تحتل المرتبة الأولى بين النماذج مفتوحة المصدر في فئتها. تتفوق على النماذج الأكبر حجمًا وتوفر أفضل فهم للمفاهيم الروسية في منظومة المصادر المفتوحة.

تشكيلة Kandinsky 5.0 Pro من نماذج توليد الفيديو الكبيرة عالية الجودة (19 مليار معامل). توفر توليدًا عالي الجودة بدقة HD بالإضافة إلى صيغ توليد أخرى مثل I2V.

يُقدّم النموذج عدة ابتكارات رئيسية:

  • خط أنابيب الانتشار الكامن مع Flow Matching لتحسين استقرار التدريب
  • Diffusion Transformer (DiT) كعمود فقري توليدي رئيسي مع انتباه متقاطع إلى تمثيلات النص
  • ترميز نصي مزدوج باستخدام Qwen2.5-VL و CLIP لفهم شامل للنص
  • HunyuanVideo 3D VAE لتشفير وفك ترميز الفيديو بكفاءة
  • آليات الانتباه المتناثر (NABLA) لمعالجة التسلسلات الطويلة بكفاءة

يمكن العثور على قاعدة الكود الأصلية في kandinskylab/Kandinsky-5.

اطّلع على منظمة Kandinsky Lab على Hub للحصول على نقاط التفتيش الرسمية للنماذج لتوليد الفيديو من النص، بما في ذلك النماذج المُسبقة التدريب، ونماذج SFT، ونماذج no-CFG، والنماذج المُقطّرة.

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

Kandinsky 5.0 T2V Pro:

model_idالوصفحالات الاستخدام
kandinskylab/Kandinsky-5.0-T2V-Pro-sft-5s-Diffusersنموذج Text-to-Video Pro لمدة 5 ثوانٍتوليد فيديو من نص عالي الجودة
kandinskylab/Kandinsky-5.0-I2V-Pro-sft-5s-Diffusersنموذج Pro لتحويل الصور إلى فيديو في 5 ثوانٍتوليد فيديو من صورة بجودة عالية

Kandinsky 5.0 T2V Lite: | model_id | الوصف | حالات الاستخدام | |------------|-------------|-----------| | kandinskylab/Kandinsky-5.0-T2V-Lite-sft-5s-Diffusers | نموذج مُدرب بدقة تحت الإشراف (Supervised Fine-Tuned) لمدة 5 ثوانٍ | أعلى جودة توليد | | kandinskylab/Kandinsky-5.0-T2V-Lite-sft-10s-Diffusers | نموذج مُدرب بدقة تحت الإشراف (Supervised Fine-Tuned) لمدة 10 ثوانٍ | أعلى جودة توليد | | kandinskylab/Kandinsky-5.0-T2V-Lite-nocfg-5s-Diffusers | مُقطّر (distilled) بتوجيه بدون مُصنّف (Classifier-Free Guidance) لمدة 5 ثوانٍ | استنتاج أسرع بمرتين | | kandinskylab/Kandinsky-5.0-T2V-Lite-nocfg-10s-Diffusers | مُقطّر (distilled) بتوجيه بدون مُصنّف (Classifier-Free Guidance) لمدة 10 ثوانٍ | استنتاج أسرع بمرتين | | kandinskylab/Kandinsky-5.0-T2V-Lite-distilled16steps-5s-Diffusers | مُقطّر (distilled) من Diffusion إلى 16 خطوة لمدة 5 ثوانٍ | استنتاج أسرع 6 مرات، مع فقدان جودة ضئيل | | kandinskylab/Kandinsky-5.0-T2V-Lite-distilled16steps-10s-Diffusers | مُقطّر (distilled) من Diffusion إلى 16 خطوة لمدة 10 ثوانٍ | استنتاج أسرع 6 مرات، مع فقدان جودة ضئيل | | kandinskylab/Kandinsky-5.0-T2V-Lite-pretrain-5s-Diffusers | نموذج أساسي مُدرّب مسبقاً (Base pretrained) لمدة 5 ثوانٍ | البحث والتدريب الدقيق | | kandinskylab/Kandinsky-5.0-T2V-Lite-pretrain-10s-Diffusers | نموذج أساسي مُدرّب مسبقاً (Base pretrained) لمدة 10 ثوانٍ | البحث والتدريب الدقيق |

أمثلة على الاستخدام

توليد النص إلى الفيديو الأساسي

احترافي

⚠️ تحذير! يجب استنتاج جميع نماذج Pro باستخدام pipeline.enable_model_cpu_offload()

import torch
from diffusers import Kandinsky5T2VPipeline
from diffusers.utils import export_to_video

# Load the pipeline
model_id = "kandinskylab/Kandinsky-5.0-T2V-Pro-sft-5s-Diffusers"
pipe = Kandinsky5T2VPipeline.from_pretrained(model_id, dtype=torch.bfloat16)

pipe = pipe.to("cuda")  # or "mps", "xpu", "cpu"
pipeline.transformer.set_attention_backend("flex")                            # <--- Set attention backend to Flex
pipeline.enable_model_cpu_offload()                                           # <--- Enable cpu offloading for single GPU inference
pipeline.transformer.compile(mode="max-autotune-no-cudagraphs", dynamic=True) # <--- Compile with max-autotune-no-cudagraphs

# Generate video
prompt = "A cat and a dog baking a cake together in a kitchen."
negative_prompt = "Static, 2D cartoon, cartoon, 2d animation, paintings, images, worst quality, low quality, ugly, deformed, walking backwards"

output = pipe(
    prompt=prompt,
    negative_prompt=negative_prompt,
    height=768,
    width=1024,
    num_frames=121,  # ~5 seconds at 24fps
    num_inference_steps=50,
    guidance_scale=5.0,
).frames[0]

export_to_video(output, "output.mp4", fps=24, quality=9)

خفيفة

import torch
from diffusers import Kandinsky5T2VPipeline
from diffusers.utils import export_to_video

# Load the pipeline
model_id = "kandinskylab/Kandinsky-5.0-T2V-Lite-sft-5s-Diffusers"
pipe = Kandinsky5T2VPipeline.from_pretrained(model_id, dtype=torch.bfloat16)
pipe = pipe.to("cuda")  # or "mps", "xpu", "cpu"

# Generate video
prompt = "A cat and a dog baking a cake together in a kitchen."
negative_prompt = "Static, 2D cartoon, cartoon, 2d animation, paintings, images, worst quality, low quality, ugly, deformed, walking backwards"

output = pipe(
    prompt=prompt,
    negative_prompt=negative_prompt,
    height=512,
    width=768,
    num_frames=121,  # ~5 seconds at 24fps
    num_inference_steps=50,
    guidance_scale=5.0,
).frames[0]

export_to_video(output, "output.mp4", fps=24, quality=9)

نماذج في 10 ثوانٍ

⚠️ تحذير! يجب استخدام جميع النماذج المدة 10 ثوانٍ مع Flex attention وتجميع max-autotune-no-cudagraphs:

pipe = Kandinsky5T2VPipeline.from_pretrained(
    "kandinskylab/Kandinsky-5.0-T2V-Lite-sft-10s-Diffusers", 
    dtype=torch.bfloat16
)
pipe = pipe.to("cuda")  # or "mps", "xpu", "cpu"

pipe.transformer.set_attention_backend(
    "flex"
)                                       # <--- Set attention backend to Flex
pipe.transformer.compile(
    mode="max-autotune-no-cudagraphs", 
    dynamic=True
)                                       # <--- Compile with max-autotune-no-cudagraphs

prompt = "A cat and a dog baking a cake together in a kitchen."
negative_prompt = "Static, 2D cartoon, cartoon, 2d animation, paintings, images, worst quality, low quality, ugly, deformed, walking backwards"

output = pipe(
    prompt=prompt,
    negative_prompt=negative_prompt,
    height=512,
    width=768,
    num_frames=241,
    num_inference_steps=50,
    guidance_scale=5.0,
).frames[0]

export_to_video(output, "output.mp4", fps=24, quality=9)

نموذج التوليف المُقطّر

⚠️ تحذير! يجب استنتاج جميع نماذج nocfg والنماذج المُقطّرة للانتشار دون CFG (guidance_scale=1.0):

model_id = "kandinskylab/Kandinsky-5.0-T2V-Lite-distilled16steps-5s-Diffusers"
pipe = Kandinsky5T2VPipeline.from_pretrained(model_id, dtype=torch.bfloat16)
pipe = pipe.to("cuda")  # or "mps", "xpu", "cpu"

output = pipe(
    prompt="A beautiful sunset over mountains",
    num_inference_steps=16,  # <--- Model is distilled in 16 steps
    guidance_scale=1.0,      # <--- no CFG
).frames[0]

export_to_video(output, "output.mp4", fps=24, quality=9)

توليد الفيديو من الصورة الأساسي

⚠️ تحذير! يجب استنتاج جميع نماذج Pro باستخدام pipeline.enable_model_cpu_offload()

import torch
from diffusers import Kandinsky5T2VPipeline
from diffusers.utils import export_to_video

# Load the pipeline
model_id = "kandinskylab/Kandinsky-5.0-I2V-Pro-sft-5s-Diffusers"
pipe = Kandinsky5T2VPipeline.from_pretrained(model_id, dtype=torch.bfloat16)

pipe = pipe.to("cuda")  # or "mps", "xpu", "cpu"
pipeline.transformer.set_attention_backend("flex")                            # <--- Set attention backend to Flex
pipeline.enable_model_cpu_offload()                                           # <--- Enable cpu offloading for single GPU inference
pipeline.transformer.compile(mode="max-autotune-no-cudagraphs", dynamic=True) # <--- Compile with max-autotune-no-cudagraphs

# Generate video
image = load_image(
    "https://huggingface.co/kandinsky-community/kandinsky-3/resolve/main/assets/title.jpg?download=true"
)
height = 896
width = 896
image = image.resize((width, height))

prompt = "An funny furry creture smiles happily and holds a sign that says 'Kandinsky'"
negative_prompt = ""

output = pipe(
    prompt=prompt,
    negative_prompt=negative_prompt,
    height=height,
    width=width,
    num_frames=121,  # ~5 seconds at 24fps
    num_inference_steps=50,
    guidance_scale=5.0,
).frames[0]

export_to_video(output, "output.mp4", fps=24, quality=9)

Kandinsky 5.0 Pro التقييم جنبًا إلى جنب

imageimage
المقارنة مع Veo 3المقارنة مع Veo 3 fast
imageimage
مقارنة مع وضع تحويل النص إلى فيديو في Wan 2.2 A14Bالمقارنة مع وضع تحويل الصورة إلى فيديو في Wan 2.2 A14B

Kandinsky 5.0 Lite تقييم جنبًا إلى جنب

تستند التقييم إلى الأوامر الموسّعة من Movie Gen benchmark، وهي متاحة في عمود expanded_prompt في الملف benchmark/moviegen_bench.csv.

Kandinsky 5.0 Lite Distill تقييم جنبًا إلى جنب

Kandinsky5T2VPipeline

فئة diffusers.Kandinsky5T2VPipeline

< >

( transformer: Kandinsky5Transformer3DModelvae: AutoencoderKLHunyuanVideotext_encoder: Qwen2_5_VLForConditionalGenerationtokenizer: Qwen2VLProcessortext_encoder_2: CLIPTextModeltokenizer_2: CLIPTokenizerscheduler: FlowMatchEulerDiscreteScheduler )

المعاملات

  • transformer (Kandinsky5Transformer3DModel) — نموذج Transformer مشروط لإزالة الضوضاء من متغيرات الفيديو المُرمّزة.
  • vae (AutoencoderKLHunyuanVideo) — نموذج الترميز التبايني التلقائي hunyuanvideo-community/HunyuanVideo (vae) لتشفير وفك تشفير مقاطع الفيديو إلى تمثيلات كامنة ومنها.
  • text_encoder (Qwen2_5_VLForConditionalGeneration) — مُشفِّر نص ثابت Qwen2.5-VL.
  • tokenizer (AutoProcessor) — مُقسِّم لـ Qwen2.5-VL.
  • text_encoder_2 (CLIPTextModel) — نموذج CLIP مجمّد، تحديداً النسخة clip-vit-large-patch14.
  • tokenizer_2 (CLIPTokenizer) — مُقسِّم لـ CLIP.
  • scheduler (FlowMatchEulerDiscreteScheduler) — جدول زمني يُستخدم بالاقتران مع transformer لإزالة الضوضاء من كائنات الفيديو المُرمّزة.

خط أنابيب لتوليد الفيديو من النص باستخدام Kandinsky 5.0.

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

__call__

< >

( prompt: str | list[str] = Nonenegative_prompt: str | list[str] | None = Noneheight: int = 512width: int = 768num_frames: int = 121num_inference_steps: int = 50guidance_scale: float = 5.0num_videos_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds_qwen: typing.Optional[torch.Tensor] = Noneprompt_embeds_clip: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_qwen: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_clip: typing.Optional[torch.Tensor] = Noneprompt_cu_seqlens: typing.Optional[torch.Tensor] = Nonenegative_prompt_cu_seqlens: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = '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 = 512 ) → ~KandinskyPipelineOutput or tuple

المعاملات

  • prompt (str أو list[str]، اختياري) — الموجّه أو الموجّهات التي توجّه توليد الفيديو. إذا لم يُعرَّف، فمرّر prompt_embeds بدلاً من ذلك.
  • negative_prompt (str أو list[str]، اختياري) — الموجّه أو الموجّهات التي يجب تجنّبها أثناء توليد الفيديو. إذا لم يُعرَّف، فمرّر negative_prompt_embeds بدلاً من ذلك. يُتجاهل عند عدم استخدام التوجيه (guidance_scale < 1).
  • height (int، القيمة الافتراضية 512) — ارتفاع الفيديو المولّد بالبكسلات.
  • width (int، القيمة الافتراضية 768) — عرض الفيديو المولّد بالبكسل.
  • num_frames (int، القيمة الافتراضية 25) — عدد الإطارات في الفيديو المولّد.
  • num_inference_steps (int، القيمة الافتراضية 50) — عدد خطوات إزالة الضوضاء.
  • guidance_scale (float، القيمة الافتراضية 5.0) — مقياس التوجيه كما هو مُعرَّف في التوجيه الحر من التصنيف.
  • num_videos_per_prompt (int، اختياري، القيمة الافتراضية 1) — عدد مقاطع الفيديو التي سيتم توليدها لكل موجه.
  • generator (torch.Generator أو list[torch.Generator]، اختياري) — مولّد torch لجعل التوليد حتميًا.
  • latents (torch.Tensor، اختياري) — كائنات latents ضجيجية مُولّدة مسبقًا.
  • prompt_embeds_qwen (torch.Tensor، اختياري) — تضمينات نصية مُولَّدة مسبقًا من مُشفِّر النص الخاص بـ Qwen.
  • prompt_embeds_clip (torch.Tensor، اختياري) — تضمينات نصية مُولَّدة مسبقًا من مُشفِّر النص في CLIP.
  • negative_prompt_embeds_qwen (torch.Tensor، اختياري) — تضمينات نصية سالبة مُولّدة مسبقًا من مُشفّر النص Qwen.
  • negative_prompt_embeds_clip (torch.Tensor، اختياري) — تضمينات نصية سالبة مُولّدة مسبقًا من مُشفّر النص في CLIP.
  • prompt_cu_seqlens (torch.Tensor، اختياري) — أطوال التسلسلات التراكمية لتضمينات موجه Qwen، وتُستخدم للانتباه بطول متغير.
  • negative_prompt_cu_seqlens (torch.Tensor, اختياري) — أطوال التسلسلات التراكمية لتضمينات موجه Qwen السلبي، وتُستخدم للانتباه بطول متغير.
  • output_type (str، اختياري، الافتراضي "pil") — صيغة مخرجات الفيديو المولّد.
  • return_dict (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب إرجاع KandinskyPipelineOutput أم لا.
  • callback_on_step_end (Callable، PipelineCallback، MultiPipelineCallbacks، اختياري) — دالة تُستدعى في نهاية كل خطوة إزالة ضوضاء.
  • callback_on_step_end_tensor_inputs (list، اختياري) — قائمة مدخلات المصفوفات (tensors) لدالة callback_on_step_end.
  • max_sequence_length (int، القيمة الافتراضية 512) — أقصى طول للسلسلة لتشفير النص.

يعيد

~KandinskyPipelineOutput أو tuple

إذا كان return_dict هو True، يُعاد KandinskyPipelineOutput، وإلا يُعاد tuple حيث يكون العنصر الأول قائمة بالصور المولّدة.

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

أمثلة:

>>> import torch
>>> from diffusers import Kandinsky5T2VPipeline
>>> from diffusers.utils import export_to_video

>>> # Available models:
>>> # kandinskylab/Kandinsky-5.0-T2V-Pro-sft-5s-Diffusers
>>> # kandinskylab/Kandinsky-5.0-T2V-Lite-sft-5s-Diffusers
>>> # kandinskylab/Kandinsky-5.0-T2V-Lite-nocfg-5s-Diffusers
>>> # kandinskylab/Kandinsky-5.0-T2V-Lite-distilled16steps-5s-Diffusers
>>> # kandinskylab/Kandinsky-5.0-T2V-Lite-pretrain-5s-Diffusers
>>> # kandinskylab/Kandinsky-5.0-T2V-Lite-sft-10s-Diffusers
>>> # kandinskylab/Kandinsky-5.0-T2V-Lite-nocfg-10s-Diffusers
>>> # kandinskylab/Kandinsky-5.0-T2V-Lite-distilled16steps-10s-Diffusers
>>> # kandinskylab/Kandinsky-5.0-T2V-Lite-pretrain-10s-Diffusers

>>> model_id = "kandinskylab/Kandinsky-5.0-T2V-Lite-sft-5s-Diffusers"
>>> pipe = Kandinsky5T2VPipeline.from_pretrained(model_id, torch_dtype=torch.bfloat16)
>>> pipe = pipe.to("cuda")

>>> prompt = "A cat and a dog baking a cake together in a kitchen."
>>> negative_prompt = "Static, 2D cartoon, cartoon, 2d animation, paintings, images, worst quality, low quality, ugly, deformed, walking backwards"

>>> output = pipe(
...     prompt=prompt,
...     negative_prompt=negative_prompt,
...     height=512,
...     width=768,
...     num_frames=121,
...     num_inference_steps=50,
...     guidance_scale=5.0,
... ).frames[0]

>>> export_to_video(output, "output.mp4", fps=24, quality=9)

check_inputs

< >

( promptnegative_promptheightwidthprompt_embeds_qwen = Noneprompt_embeds_clip = Nonenegative_prompt_embeds_qwen = Nonenegative_prompt_embeds_clip = Noneprompt_cu_seqlens = Nonenegative_prompt_cu_seqlens = Nonecallback_on_step_end_tensor_inputs = Nonemax_sequence_length = None )

المعاملات

  • prompt — موجه الإدخال
  • negative_prompt — موجه سلبي للإرشاد
  • height — ارتفاع الفيديو
  • width — عرض الفيديو
  • prompt_embeds_qwen — تمثيلات موجه Qwen محسوبة مسبقًا
  • prompt_embeds_clip — تمثيلات موجهات CLIP محسوبة مسبقًا
  • negative_prompt_embeds_qwen — تمثيلات سلبية مُسبقة الحساب لـ Qwen
  • negative_prompt_embeds_clip — تمثيلات سلبية مُسبقة الحساب لـ CLIP
  • prompt_cu_seqlens — أطوال التسلسلات التراكمية المحسوبة مسبقًا للموجّه الإيجابي في Qwen
  • negative_prompt_cu_seqlens — أطوال التسلسلات التراكمية المحسوبة مسبقًا لـ Qwen negative prompt
  • callback_on_step_end_tensor_inputs — مدخلات تينسور الدالة الاستدعائية

يرفع

ValueError

  • ValueError — إذا كانت المدخلات غير صالحة

تحقّق من معاملات الإدخال للخطّ الأنابيب.

encode_prompt

< >

( prompt: str | list[str]num_videos_per_prompt: int = 1max_sequence_length: int = 512device: typing.Optional[torch.device] = Nonedtype: typing.Optional[torch.dtype] = None ) → tuple[torch.Tensor, torch.Tensor, torch.Tensor]

المعاملات

  • prompt (str أو list[str]) — الموجّه الذي سيتم ترميزه.
  • num_videos_per_prompt (int، اختياري، القيمة الافتراضية 1) — عدد مقاطع الفيديو التي سيتم توليدها لكل موجه.
  • max_sequence_length (int، اختياري، القيمة الافتراضية 512) — أقصى طول للسلسلة لتشفير النص.
  • device (torch.device، اختياري) — جهاز Torch.
  • dtype (torch.dtype، اختياري) — نوع البيانات في Torch.

يعيد

tuple[torch.Tensor, torch.Tensor, torch.Tensor]

  • تضمينات نص Qwen ذات الشكل (batch_size * num_videos_per_prompt, sequence_length, embedding_dim)
  • تضمينات CLIP المجمّعة ذات الشكل (batch_size * num_videos_per_prompt, clip_embedding_dim)
  • الأطوال التراكمية للتسلسلات (cu_seqlens) لتضمينات Qwen من الشكل (batch_size * num_videos_per_prompt + 1,)

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

تجمع هذه الطريقة بين التضمينات (embeddings) المستخرجة من كلا مشفري النص في Qwen2.5-VL وCLIP لإنشاء تمثيلات نصية شاملة لتوليد الفيديو.

fast_sta_nabla

< >

( T: intH: intW: intwT: int = 3wH: int = 3wW: int = 3device = 'cuda' ) → torch.Tensor

المعاملات

  • T (int) — عدد الإطارات الزمنية
  • H (int) — الارتفاع في الفضاء الكامن
  • W (int) — العرض في الفضاء الكامن
  • wT (int) — حجم نافذة الانتباه الزمني
  • wH (int) — حجم نافذة الانتباه للارتفاع
  • wW (int) — حجم نافذة الانتباه العرضية
  • device (str) — الجهاز الذي سيتم إنشاء المصفوفة عليه

يعيد

torch.Tensor

قناع انتباه متناثر (Sparse attention mask) من الشكل (THW, THW)

أنشئ قناع انتباه زمني متناثر (STA) لتوليد الفيديو بكفاءة.

تولّد هذه الطريقة قناعاً يحدّ الانتباه إلى الإطارات والمواقع المكانية القريبة، مما يقلّل التعقيد الحسابي لتوليد الفيديو.

get_sparse_params

< >

( sampledevice ) → Dict

المعاملات

  • sample (torch.Tensor) — مُتجه العينة المُدخل
  • device (torch.device) — الجهاز الذي سيتم وضع المصفوفات عليه

يعيد

Dict

قاموس يحتوي على معاملات الانتباه المتناثر

توليد معاملات الانتباه المتناثر (sparse attention) للمحوّل (transformer) بناءً على أبعاد العينة.

تُحسب هذه الطريقة إعداد الانتباه المتناثر (sparse attention) اللازمة لمعالجة الفيديو بكفاءة في نموذج الترانسفورمر.

prepare_latents

< >

( batch_size: intnum_channels_latents: int = 16height: int = 480width: int = 832num_frames: int = 81dtype: typing.Optional[torch.dtype] = Nonedevice: typing.Optional[torch.device] = Nonegenerator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = None ) → torch.Tensor

المعاملات

  • batch_size (int) — عدد مقاطع الفيديو التي سيتم توليدها
  • num_channels_latents (int) — عدد القنوات في الفضاء الكامن
  • height (int) — ارتفاع الفيديو المولّد
  • width (int) — عرض الفيديو المولّد
  • num_frames (int) — عدد الإطارات في الفيديو
  • dtype (torch.dtype) — نوع البيانات للقيم الكامنة
  • device (torch.device) — الجهاز الذي سيتم إنشاء المتغيرات الكامنة عليه
  • generator (torch.Generator) — مولّد الأرقام العشوائية
  • latents (torch.Tensor) — كامنات موجودة مسبقًا للاستخدام

يعيد

torch.Tensor

موتر كامن مُعدّ

جهّز متغيرات كامنة أولية لتوليد الفيديو.

تُنشئ هذه الطريقة ضوضاء عشوائية في الفضاء الكامن أو تستخدم الفضاء الكامن المُقدَّم كنقطة انطلاق لعملية إزالة الضوضاء.

Kandinsky5I2VPipeline

فئة diffusers.Kandinsky5I2VPipeline

< >

( transformer: Kandinsky5Transformer3DModelvae: AutoencoderKLHunyuanVideotext_encoder: Qwen2_5_VLForConditionalGenerationtokenizer: Qwen2VLProcessortext_encoder_2: CLIPTextModeltokenizer_2: CLIPTokenizerscheduler: FlowMatchEulerDiscreteScheduler )

المعاملات

  • transformer (Kandinsky5Transformer3DModel) — نموذج Transformer مشروط لإزالة الضوضاء من متغيرات الفيديو المُرمّزة.
  • vae (AutoencoderKLHunyuanVideo) — نموذج الترميز التبايني التلقائي hunyuanvideo-community/HunyuanVideo (vae) لتشفير وفك تشفير مقاطع الفيديو إلى تمثيلات كامنة ومنها.
  • text_encoder (Qwen2_5_VLForConditionalGeneration) — مُشفِّر نص ثابت Qwen2.5-VL.
  • tokenizer (AutoProcessor) — مُقسِّم لـ Qwen2.5-VL.
  • text_encoder_2 (CLIPTextModel) — نموذج CLIP مجمّد، تحديداً النسخة clip-vit-large-patch14.
  • tokenizer_2 (CLIPTokenizer) — مُقسِّم لـ CLIP.
  • scheduler (FlowMatchEulerDiscreteScheduler) — جدول زمني يُستخدم بالاقتران مع transformer لإزالة الضوضاء من كائنات الفيديو المُرمّزة.

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

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

__call__

< >

( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]prompt: str | list[str] = Nonenegative_prompt: str | list[str] | None = Noneheight: int = 512width: int = 768num_frames: int = 121num_inference_steps: int = 50guidance_scale: float = 5.0num_videos_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds_qwen: typing.Optional[torch.Tensor] = Noneprompt_embeds_clip: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_qwen: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_clip: typing.Optional[torch.Tensor] = Noneprompt_cu_seqlens: typing.Optional[torch.Tensor] = Nonenegative_prompt_cu_seqlens: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecallback_on_step_end: typing.Optional[typing.Callable[[int, int, NoneType], diffusers.callbacks.PipelineCallback | diffusers.callbacks.MultiPipelineCallbacks]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 512 ) → ~KandinskyPipelineOutput or tuple

المعاملات

  • image (PipelineImageInput) — الصورة المدخلة التي تُشترط عليها عملية التوليد. يجب أن تكون صورة، أو قائمة من الصور، أو torch.Tensor.
  • prompt (str أو list[str]، اختياري) — الموجّه أو الموجّهات التي توجّه توليد الفيديو. إذا لم يُعرَّف، فمرّر prompt_embeds بدلاً من ذلك.
  • negative_prompt (str أو list[str]، اختياري) — الموجّه أو الموجّهات التي يجب تجنّبها أثناء توليد الفيديو. إذا لم يُعرَّف، فمرّر negative_prompt_embeds بدلاً من ذلك. يُتجاهل عند عدم استخدام التوجيه (guidance_scale < 1).
  • height (int، القيمة الافتراضية 512) — ارتفاع الفيديو المولّد بالبكسلات.
  • width (int، القيمة الافتراضية 768) — عرض الفيديو المولّد بالبكسل.
  • num_frames (int، القيمة الافتراضية 121) — عدد الإطارات في الفيديو المولّد.
  • num_inference_steps (int، القيمة الافتراضية 50) — عدد خطوات إزالة الضوضاء.
  • guidance_scale (float، القيمة الافتراضية 5.0) — مقياس التوجيه كما هو مُعرَّف في التوجيه الحر من التصنيف.
  • num_videos_per_prompt (int، اختياري، القيمة الافتراضية 1) — عدد مقاطع الفيديو التي سيتم توليدها لكل موجه.
  • generator (torch.Generator أو list[torch.Generator]، اختياري) — مولّد torch لجعل التوليد حتميًا.
  • latents (torch.Tensor، اختياري) — كائنات latents ضجيجية مُولّدة مسبقًا.
  • prompt_embeds_qwen (torch.Tensor، اختياري) — تضمينات نصية Qwen مُولّدة مسبقًا.
  • prompt_embeds_clip (torch.Tensor، اختياري) — تضمينات نصية CLIP مُولّدة مسبقًا.
  • negative_prompt_embeds_qwen (torch.Tensor، اختياري) — تضمينات نصية سلبية مُولّدة مسبقًا لنموذج Qwen.
  • negative_prompt_embeds_clip (torch.Tensor، اختياري) — تضمينات نصية سلبية مُولّدة مسبقًا بواسطة CLIP.
  • prompt_cu_seqlens (torch.Tensor، اختياري) — أطوال التسلسل التراكمية المُولَّدة مسبقًا للموجّه الإيجابي في Qwen.
  • negative_prompt_cu_seqlens (torch.Tensor، اختياري) — أطوال التسلسل التراكمية المُولَّدة مسبقًا لـ Qwen negative prompt.
  • output_type (str، اختياري، الافتراضي "pil") — صيغة مخرجات الفيديو المولّد.
  • return_dict (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب إرجاع KandinskyPipelineOutput أم لا.
  • callback_on_step_end (Callable، PipelineCallback، MultiPipelineCallbacks، اختياري) — دالة تُستدعى في نهاية كل خطوة إزالة ضوضاء.
  • callback_on_step_end_tensor_inputs (List, اختياري) — قائمة مدخلات المصفوفات لدالة callback_on_step_end.
  • max_sequence_length (int، القيمة الافتراضية 512) — أقصى طول للسلسلة لتشفير النص.

يعيد

~KandinskyPipelineOutput أو tuple

إذا كان return_dict هو True، يُعاد KandinskyPipelineOutput، وإلا يُعاد tuple حيث يكون العنصر الأول قائمة بالفيديوهات المولّدة.

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

أمثلة:

>>> import torch
>>> from diffusers import Kandinsky5I2VPipeline
>>> from diffusers.utils import export_to_video, load_image

>>> # Available models:
>>> # kandinskylab/Kandinsky-5.0-I2V-Pro-sft-5s-Diffusers

>>> model_id = "kandinskylab/Kandinsky-5.0-I2V-Pro-sft-5s-Diffusers"
>>> pipe = Kandinsky5I2VPipeline.from_pretrained(model_id, torch_dtype=torch.bfloat16)
>>> pipe = pipe.to("cuda")

>>> image = load_image(
...     "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/astronaut.jpg"
... )
>>> prompt = "An astronaut floating in space with Earth in the background, cinematic shot"
>>> negative_prompt = "Static, 2D cartoon, cartoon, 2d animation, paintings, images, worst quality, low quality, ugly, deformed, walking backwards"

>>> output = pipe(
...     image=image,
...     prompt=prompt,
...     negative_prompt=negative_prompt,
...     height=512,
...     width=768,
...     num_frames=121,
...     num_inference_steps=50,
...     guidance_scale=5.0,
... ).frames[0]

>>> export_to_video(output, "output.mp4", fps=24, quality=9)

check_inputs

< >

( promptnegative_promptimageheightwidthprompt_embeds_qwen = Noneprompt_embeds_clip = Nonenegative_prompt_embeds_qwen = Nonenegative_prompt_embeds_clip = Noneprompt_cu_seqlens = Nonenegative_prompt_cu_seqlens = Nonecallback_on_step_end_tensor_inputs = Nonemax_sequence_length = None )

المعاملات

  • prompt — موجه الإدخال
  • negative_prompt — موجه سلبي للإرشاد
  • image — صورة الإدخال للتكييف
  • height — ارتفاع الفيديو
  • width — عرض الفيديو
  • prompt_embeds_qwen — تمثيلات موجه Qwen محسوبة مسبقًا
  • prompt_embeds_clip — تمثيلات موجهات CLIP محسوبة مسبقًا
  • negative_prompt_embeds_qwen — تمثيلات سلبية مُسبقة الحساب لـ Qwen
  • negative_prompt_embeds_clip — تمثيلات سلبية مُسبقة الحساب لـ CLIP
  • prompt_cu_seqlens — أطوال التسلسلات التراكمية المحسوبة مسبقًا للموجّه الإيجابي في Qwen
  • negative_prompt_cu_seqlens — أطوال التسلسلات التراكمية المحسوبة مسبقًا لـ Qwen negative prompt
  • callback_on_step_end_tensor_inputs — مدخلات تينسور الدالة الاستدعائية

يرفع

ValueError

  • ValueError — إذا كانت المدخلات غير صالحة

تحقّق من معاملات الإدخال للخطّ الأنابيب.

encode_prompt

< >

( prompt: str | list[str]num_videos_per_prompt: int = 1max_sequence_length: int = 512device: typing.Optional[torch.device] = Nonedtype: typing.Optional[torch.dtype] = None ) → tuple[torch.Tensor, torch.Tensor, torch.Tensor]

المعاملات

  • prompt (str أو list[str]) — الموجّه الذي سيتم ترميزه.
  • num_videos_per_prompt (int، اختياري، القيمة الافتراضية 1) — عدد مقاطع الفيديو التي سيتم توليدها لكل موجه.
  • max_sequence_length (int، اختياري، القيمة الافتراضية 512) — أقصى طول للسلسلة لتشفير النص.
  • device (torch.device، اختياري) — جهاز Torch.
  • dtype (torch.dtype، اختياري) — نوع البيانات في Torch.

يعيد

tuple[torch.Tensor, torch.Tensor, torch.Tensor]

  • تضمينات نص Qwen ذات الشكل (batch_size * num_videos_per_prompt, sequence_length, embedding_dim)
  • تضمينات CLIP المجمّعة ذات الشكل (batch_size * num_videos_per_prompt, clip_embedding_dim)
  • الأطوال التراكمية للتسلسلات (cu_seqlens) لتضمينات Qwen من الشكل (batch_size * num_videos_per_prompt + 1,)

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

تجمع هذه الطريقة بين التضمينات (embeddings) المستخرجة من كلا مشفري النص في Qwen2.5-VL وCLIP لإنشاء تمثيلات نصية شاملة لتوليد الفيديو.

fast_sta_nabla

< >

( T: intH: intW: intwT: int = 3wH: int = 3wW: int = 3device = 'cuda' ) → torch.Tensor

المعاملات

  • T (int) — عدد الإطارات الزمنية
  • H (int) — الارتفاع في الفضاء الكامن
  • W (int) — العرض في الفضاء الكامن
  • wT (int) — حجم نافذة الانتباه الزمني
  • wH (int) — حجم نافذة الانتباه للارتفاع
  • wW (int) — حجم نافذة الانتباه العرضية
  • device (str) — الجهاز الذي سيتم إنشاء المصفوفة عليه

يعيد

torch.Tensor

قناع انتباه متناثر (Sparse attention mask) من الشكل (THW, THW)

أنشئ قناع انتباه زمني متناثر (STA) لتوليد الفيديو بكفاءة.

تولّد هذه الطريقة قناعاً يحدّ الانتباه إلى الإطارات والمواقع المكانية القريبة، مما يقلّل التعقيد الحسابي لتوليد الفيديو.

get_sparse_params

< >

( sampledevice ) → Dict

المعاملات

  • sample (torch.Tensor) — مُتجه العينة المُدخل
  • device (torch.device) — الجهاز الذي سيتم وضع المصفوفات عليه

يعيد

Dict

قاموس يحتوي على معاملات الانتباه المتناثر

توليد معاملات الانتباه المتناثر (sparse attention) للمحوّل (transformer) بناءً على أبعاد العينة.

تُحسب هذه الطريقة إعداد الانتباه المتناثر (sparse attention) اللازمة لمعالجة الفيديو بكفاءة في نموذج الترانسفورمر.

prepare_latents

< >

( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]batch_size: intnum_channels_latents: int = 16height: int = 480width: int = 832num_frames: int = 81dtype: typing.Optional[torch.dtype] = Nonedevice: typing.Optional[torch.device] = Nonegenerator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = None ) → torch.Tensor

المعاملات

  • image (PipelineImageInput) — الصورة المُدخلة التي تُشترط عليها عملية التوليد
  • batch_size (int) — عدد مقاطع الفيديو التي سيتم توليدها
  • num_channels_latents (int) — عدد القنوات في الفضاء الكامن
  • height (int) — ارتفاع الفيديو المولّد
  • width (int) — عرض الفيديو المولّد
  • num_frames (int) — عدد الإطارات في الفيديو
  • dtype (torch.dtype) — نوع البيانات للقيم الكامنة
  • device (torch.device) — الجهاز الذي سيتم إنشاء المتغيرات الكامنة عليه
  • generator (torch.Generator) — مولّد الأرقام العشوائية
  • latents (torch.Tensor) — كامنات موجودة مسبقًا للاستخدام

يعيد

torch.Tensor

موتر كامن مُعدّ مع الإطار الأول كصورة مُرمّزة

جهّز متغيرات كامنة أولية لتوليد الفيديو من الصورة.

ينشئ هذا الأسلوب ضوضاء عشوائية كحالات كامنة لجميع الإطارات باستثناء الإطار الأول، الذي يُستبدل بصورة الإدخال المُرمَّزة.

الاستشهاد

@misc{kandinsky2025,
    author = {Alexander Belykh and Alexander Varlamov and Alexey Letunovskiy and Anastasia Aliaskina and Anastasia Maltseva and Anastasiia Kargapoltseva and Andrey Shutkin and Anna Averchenkova and Anna Dmitrienko and Bulat Akhmatov and Denis Dimitrov and Denis Koposov and Denis Parkhomenko and Dmitrii and Ilya Vasiliev and Ivan Kirillov and Julia Agafonova and Kirill Chernyshev and Kormilitsyn Semen and Lev Novitskiy and Maria Kovaleva and Mikhail Mamaev and Mikhailov and Nikita Kiselev and Nikita Osterov and Nikolai Gerasimenko and Nikolai Vaulin and Olga Kim and Olga Vdovchenko and Polina Gavrilova and Polina Mikhailova and Tatiana Nikulina and Viacheslav Vasilev and Vladimir Arkhipkin and Vladimir Korviakov and Vladimir Polovnikov and Yury Kolabushin},
    title = {Kandinsky 5.0: A family of diffusion models for Video & Image generation},
    howpublished = {\url{https://github.com/kandinskylab/Kandinsky-5}},
    year = 2025
}
Update on GitHub