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, Video ve Image üretimi için bir difüzyon modeli ailesidir.

Kandinsky 5.0 Lite, sınıfındaki açık kaynaklı modeller arasında 1. sırada yer alan, hafif video üretimi modelleri (2B parametre) serisidir. Daha büyük modellerden üstün performans gösterir ve açık kaynaklı ekosistemde Rus kavramlarının en iyi anlaşıldığı modeldir.

Kandinsky 5.0 Pro, yüksek kaliteli büyük video üretim modelleri (19B parametre) serisidir. HD'de yüksek kaliteli üretim ve I2V gibi daha fazla üretim formatı sunar.

Model, birkaç temel yenilik sunar:

  • Daha iyi eğitim kararlılığı için Flow Matching ile Latent diffusion pipeline
  • Metin gömme vektörlerine çapraz dikkat (cross-attention) uygulayan Diffusion Transformer (DiT) ana üretken omurga olarak
  • Kapsamlı metin anlama için Qwen2.5-VL ve CLIP kullanılarak çift metin kodlama
  • Verimli video kodlama ve çözümlüme için HunyuanVideo 3D VAE
  • Verimli uzun dizi işleme için Sparse attention mechanisms (NABLA)

Orijinal kod tabanı kandinskylab/Kandinsky-5 adresinde bulunabilir.

Metinten videoya üretim için resmi model kontrol noktalarını, ön eğitilmiş, SFT, no-CFG ve damıtılmış varyantları dahil olmak üzere, Hub'daki Kandinsky Lab kuruluşunu inceleyin.

Mevcut Modeller

Kandinsky 5.0 T2V Pro:

model_idAçıklamaKullanım Senaryoları
kandinskylab/Kandinsky-5.0-T2V-Pro-sft-5s-Diffusers5 saniyelik Metinden Videoya Pro modeliYüksek kaliteli metinden videoya üretim
kandinskylab/Kandinsky-5.0-I2V-Pro-sft-5s-Diffusers5 saniyelik Görüntüden Videoya Pro modeliYüksek kaliteli görüntüden videoya üretim

Kandinsky 5.0 T2V Lite: | model_id | Açıklama | Kullanım Alanları | |------------|-------------|-----------| | kandinskylab/Kandinsky-5.0-T2V-Lite-sft-5s-Diffusers | 5 saniyelik Gözetimli İnce Ayarlı model | En yüksek üretim kalitesi | | kandinskylab/Kandinsky-5.0-T2V-Lite-sft-10s-Diffusers | 10 saniyelik Gözetimli İnce Ayarlı model | En yüksek üretim kalitesi | | kandinskylab/Kandinsky-5.0-T2V-Lite-nocfg-5s-Diffusers | 5 saniyelik Classifier-Free Guidance damıtılmış | 2× daha hızlı çıkarım | | kandinskylab/Kandinsky-5.0-T2V-Lite-nocfg-10s-Diffusers | 10 saniyelik Classifier-Free Guidance damıtılmış | 2× daha hızlı çıkarım | | kandinskylab/Kandinsky-5.0-T2V-Lite-distilled16steps-5s-Diffusers | 16 adıma damıtılmış 5 saniyelik Diffusion | 6× daha hızlı çıkarım, minimal kalite kaybı | | kandinskylab/Kandinsky-5.0-T2V-Lite-distilled16steps-10s-Diffusers | 16 adıma damıtılmış 10 saniyelik Diffusion | 6× daha hızlı çıkarım, minimal kalite kaybı | | kandinskylab/Kandinsky-5.0-T2V-Lite-pretrain-5s-Diffusers | 5 saniyelik Temel ön eğitilmiş model | Araştırma ve ince ayar | | kandinskylab/Kandinsky-5.0-T2V-Lite-pretrain-10s-Diffusers | 10 saniyelik Temel ön eğitilmiş model | Araştırma ve ince ayar |

Kullanım Örnekleri

Temel Metinden Videoya Üretim

Pro

⚠️ Uyarı! tüm Pro modelleri pipeline.enable_model_cpu_offload() ile çıkarılmalıdır

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)

Lite

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 saniyelik Modeller

⚠️ Uyarı! tüm 10 saniyelik modeller, Flex attention ve max-autotune-no-cudagraphs derlemesiyle kullanılmalıdır:

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)

Diffusion Distilled modeli

⚠️ Uyarı! tüm nocfg ve diffusion distilled modeller CFG olmadan çıkarılmalıdır (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)

Temel Görüntüden Video Üretimi

⚠️ Uyarı! tüm Pro modelleri pipeline.enable_model_cpu_offload() ile çıkarılmalıdır

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 Yan Yana Değerlendirme

imageimage
Veo 3 ile karşılaştırmaVeo 3 fast ile karşılaştırma
imageimage
Wan 2.2 A14B Metinden Videoya moduyla karşılaştırmaWan 2.2 A14B Görselden Videoya moduyla karşılaştırma

Kandinsky 5.0 Lite Yan Yana Değerlendirme

Değerlendirme, Movie Gen benchmark'dan genişletilmiş istemlere dayanmaktadır ve bu istemler, benchmark/moviegen_bench.csv dosyasının expanded_prompt sütununda mevcuttur.

Kandinsky 5.0 Lite Distill Yan Yana değerlendirme

Kandinsky5T2VPipeline

sınıf diffusers.Kandinsky5T2VPipeline

< >

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

Parametreler

  • transformer (Kandinsky5Transformer3DModel) — Kodlanmış video latentlerini gürültüden arındırmak için kullanılan Koşullu Transformer.
  • vae (AutoencoderKLHunyuanVideo) — Video'ları latent temsillere kodlamak ve bu temsillerden video'ları çözmek için kullanılan Varyasyonel Oto-Kodlayıcı Modeli hunyuanvideo-community/HunyuanVideo (vae).
  • text_encoder (Qwen2_5_VLForConditionalGeneration) — Donmuş metin kodlayıcı Qwen2.5-VL.
  • tokenizer (AutoProcessor) — Qwen2.5-VL için Tokenizer.
  • text_encoder_2 (CLIPTextModel) — Donmuş CLIP, özellikle clip-vit-large-patch14 varyantı.
  • tokenizer_2 (CLIPTokenizer) — CLIP için tokenizer.
  • scheduler (FlowMatchEulerDiscreteScheduler) — Kodlanmış video latentlerini gürültüden arındırmak için transformer ile birlikte kullanılacak bir zamanlayıcı.

Kandinsky 5.0 kullanılarak metinden videoya üretim için Pipeline.

Bu model DiffusionPipeline sınıfından devralır. Tüm pipeline'lar için uygulanan genel yöntemlerin (indirme, kaydetme, belirli bir cihazda çalıştırma vb.) belgelerini üst sınıfın dokümantasyonunda bulabilirsiniz.

__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

Parametreler

  • prompt (str veya list[str], isteğe bağlı) — Video üretimini yönlendirmek için istem veya istemler. Tanımlanmadıysa bunun yerine prompt_embeds geçirin.
  • negative_prompt (str veya list[str], isteğe bağlı) — Video üretimi sırasında kaçınılması istenen istem veya istemler. Tanımlanmamışsa bunun yerine negative_prompt_embeds geçirin. Rehberlik kullanılmadığında (guidance_scale < 1) yok sayılır.
  • height (int, varsayılan 512) — Oluşturulan videonun piksel cinsinden yüksekliği.
  • width (int, varsayılan 768) — Oluşturulan videonun piksel cinsinden genişliği.
  • num_frames (int, varsayılan 25) — Oluşturulan videodaki kare sayısı.
  • num_inference_steps (int, varsayılan 50) — Gürültü azaltma adım sayısı.
  • guidance_scale (float, varsayılan 5.0) — Sınıflandırıcı-özgür yönlendirmede (classifier-free guidance) tanımlandığı gibi yönlendirme ölçeği.
  • num_videos_per_prompt (int, isteğe bağlı, varsayılan 1) — Her prompt için üretilecek video sayısı.
  • generator (torch.Generator veya list[torch.Generator], isteğe bağlı) — Üretimi deterministik hale getirmek için bir torch üreteci.
  • latents (torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş gürültülü latentler.
  • prompt_embeds_qwen (torch.Tensor, isteğe bağlı) — Qwen metin kodlayıcısından önceden oluşturulmuş metin gömme değerleri.
  • prompt_embeds_clip (torch.Tensor, isteğe bağlı) — CLIP metin kodlayıcısından önceden oluşturulmuş metin gömme değerleri.
  • negative_prompt_embeds_qwen (torch.Tensor, isteğe bağlı) — Qwen metin kodlayıcısından önceden oluşturulmuş negatif metin gömme değerleri.
  • negative_prompt_embeds_clip (torch.Tensor, isteğe bağlı) — CLIP metin kodlayıcısından önceden oluşturulmuş negatif metin gömme değerleri.
  • prompt_cu_seqlens (torch.Tensor, isteğe bağlı) — Qwen prompt gömmelemeleri için kümülatif dizi uzunlukları, değişken uzunluklu dikkat için kullanılır.
  • negative_prompt_cu_seqlens (torch.Tensor, isteğe bağlı) — Qwen negatif istem gömme verileri için kümülatif dizi uzunlukları, değişken uzunluklu dikkat için kullanılır.
  • output_type (str, isteğe bağlı, varsayılan "pil") — Oluşturulan videonun çıktı biçimi.
  • return_dict (bool, isteğe bağlı, varsayılan True) — KandinskyPipelineOutput döndürülüp döndürülmemeye karar verir.
  • callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, isteğe bağlı) — Her gürültü azaltma adımının sonunda çağrılan bir işlev.
  • callback_on_step_end_tensor_inputs (list, isteğe bağlı) — callback_on_step_end işlevi için girdi tensörlerinin listesi.
  • max_sequence_length (int, varsayılan 512) — Metin kodlama için maksimum dizi uzunluğu.

Dönüş değeri

~KandinskyPipelineOutput veya tuple

return_dict True ise KandinskyPipelineOutput döndürülür, aksi halde ilk öğesi üretilen görsellerin listesini içeren bir tuple döndürülür.

Üretim için pipeline'ın çağrı fonksiyonu.

Örnekler:

>>> 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 )

Parametreler

  • prompt — Girdi istemi
  • negative_prompt — Yönlendirme için negatif prompt
  • height — Video yüksekliği
  • width — Video genişliği
  • prompt_embeds_qwen — Ön hesaplanmış Qwen istek gömme değerleri
  • prompt_embeds_clip — Ön hesaplanmış CLIP istem gömme değerleri
  • negative_prompt_embeds_qwen — Ön hesaplanmış Qwen negatif istem gömüleri
  • negative_prompt_embeds_clip — Ön hesaplanmış CLIP negatif istem gömüleri
  • prompt_cu_seqlens — Qwen olumlu istemi için önceden hesaplanmış kümülatif dizi uzunlukları
  • negative_prompt_cu_seqlens — Qwen negatif istemi için önceden hesaplanmış kümülatif dizi uzunlukları
  • callback_on_step_end_tensor_inputs — Geri çağrı girdi tensörleri

Yükseltilen

ValueError

  • ValueError — Girdiler geçersizse

Hattın girdi parametrelerini doğrulayın.

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]

Parametreler

  • prompt (str veya list[str]) — Kodlanacak istem.
  • num_videos_per_prompt (int, isteğe bağlı, varsayılan 1) — Her istem için üretilecek video sayısı.
  • max_sequence_length (int, isteğe bağlı, varsayılan 512) — Metin kodlama için maksimum dizi uzunluğu.
  • device (torch.device, isteğe bağlı) — Torch cihazı.
  • dtype (torch.dtype, isteğe bağlı) — Torch dtype.

Dönüş değeri

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

  • Şekli (batch_size * num_videos_per_prompt, sequence_length, embedding_dim) olan Qwen metin gömme değerleri
  • CLIP havuzlanmış gömme değerleri, şekli (batch_size * num_videos_per_prompt, clip_embedding_dim)
  • Qwen gömmelemeleri için kümülatif dizi uzunlukları (cu_seqlens), şekli (batch_size * num_videos_per_prompt + 1,)

Tek bir istemi (pozitif veya negatif) metin kodlayıcı gizli durumlarına kodlar.

Bu yöntem, video üretimi için kapsamlı metin temsilleri oluşturmak üzere hem Qwen2.5-VL hem de CLIP metin kodlayıcılarından gelen gömme (embedding) değerlerini birleştirir.

fast_sta_nabla

< >

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

Parametreler

  • T (int) — Zaman çerçevesi sayısı
  • H (int) — Gizli uzaydaki yükseklik
  • W (int) — Gizli uzaydaki genişlik
  • wT (int) — Zaman dikkat penceresi boyutu
  • wH (int) — Yükseklik dikkat pencere boyutu
  • wW (int) — Genişlik dikkat pencere boyutu
  • device (str) — Tensörün oluşturulacağı cihaz

Dönüş değeri

torch.Tensor

(THW, THW) biçiminde seyrek dikkat maskesi

Verimli video üretimi için seyrek zamansal dikkat (STA) maskesi oluşturun.

Bu yöntem, dikkati yakın karelere ve uzamsal konumlara sınırlayan bir maske oluşturarak video üretimi için hesaplama karmaşıklığını azaltır.

get_sparse_params

< >

( sampledevice ) → Dict

Parametreler

  • sample (torch.Tensor) — Girdi örnek tensörü
  • device (torch.device) — Tensörlerin yerleştirileceği cihaz

Dönüş değeri

Dict

Seyrek dikkat parametrelerini içeren sözlük

Örnek boyutlarına dayalı olarak dönüştürücü için seyrek dikkat parametreleri oluşturun.

Bu yöntem, dönüştürücü modelde verimli video işleme için gereken seyrek dikkat yapılandırmasını hesaplar.

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

Parametreler

  • batch_size (int) — Üretilecek video sayısı
  • num_channels_latents (int) — Gizli uzaydaki kanal sayısı
  • height (int) — Üretilen videonun yüksekliği
  • width (int) — Üretilen videonun genişliği
  • num_frames (int) — Videodaki kare sayısı
  • dtype (torch.dtype) — Latentler için veri tipi
  • device (torch.device) — Latent'lerin oluşturulacağı cihaz
  • generator (torch.Generator) — Rastgele sayı üreteci
  • latents (torch.Tensor) — Kullanılacak mevcut latentler

Dönüş değeri

torch.Tensor

Hazırlanmış latent tensör

Video üretimi için başlangıç gizli değişkenlerini hazırlar.

Bu yöntem, gürültü azaltma sürecinin başlangıç noktası olarak rastgele gürültü latentleri oluşturur veya sağlanan latentleri kullanır.

Kandinsky5I2VPipeline

sınıf diffusers.Kandinsky5I2VPipeline

< >

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

Parametreler

  • transformer (Kandinsky5Transformer3DModel) — Kodlanmış video latentlerini gürültüden arındırmak için kullanılan Koşullu Transformer.
  • vae (AutoencoderKLHunyuanVideo) — Video'ları latent temsillere kodlamak ve bu temsillerden video'ları çözmek için kullanılan Varyasyonel Oto-Kodlayıcı Modeli hunyuanvideo-community/HunyuanVideo (vae).
  • text_encoder (Qwen2_5_VLForConditionalGeneration) — Donmuş metin kodlayıcı Qwen2.5-VL.
  • tokenizer (AutoProcessor) — Qwen2.5-VL için Tokenizer.
  • text_encoder_2 (CLIPTextModel) — Donmuş CLIP, özellikle clip-vit-large-patch14 varyantı.
  • tokenizer_2 (CLIPTokenizer) — CLIP için tokenizer.
  • scheduler (FlowMatchEulerDiscreteScheduler) — Kodlanmış video latentlerini gürültüden arındırmak için transformer ile birlikte kullanılacak bir zamanlayıcı.

Kandinsky 5.0 kullanılarak görüntüden videoya üretim için Pipeline.

Bu model DiffusionPipeline sınıfından devralır. Tüm pipeline'lar için uygulanan genel yöntemlerin (indirme, kaydetme, belirli bir cihazda çalıştırma vb.) belgelerini üst sınıfın dokümantasyonunda bulabilirsiniz.

__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

Parametreler

  • image (PipelineImageInput) — Üretimin koşullandırılacağı girdi görüntüsü. Bir görüntü, görüntü listesi veya torch.Tensor olmalıdır.
  • prompt (str veya list[str], isteğe bağlı) — Video üretimini yönlendirmek için istem veya istemler. Tanımlanmadıysa bunun yerine prompt_embeds geçirin.
  • negative_prompt (str veya list[str], isteğe bağlı) — Video üretimi sırasında kaçınılması istenen istem veya istemler. Tanımlanmamışsa bunun yerine negative_prompt_embeds geçirin. Rehberlik kullanılmadığında (guidance_scale < 1) yok sayılır.
  • height (int, varsayılan 512) — Oluşturulan videonun piksel cinsinden yüksekliği.
  • width (int, varsayılan 768) — Oluşturulan videonun piksel cinsinden genişliği.
  • num_frames (int, varsayılan 121) — Oluşturulan videodaki kare sayısı.
  • num_inference_steps (int, varsayılan 50) — Gürültü azaltma adım sayısı.
  • guidance_scale (float, varsayılan 5.0) — Sınıflandırıcı-özgür yönlendirmede (classifier-free guidance) tanımlandığı gibi yönlendirme ölçeği.
  • num_videos_per_prompt (int, isteğe bağlı, varsayılan 1) — Her prompt için üretilecek video sayısı.
  • generator (torch.Generator veya list[torch.Generator], isteğe bağlı) — Üretimi deterministik hale getirmek için bir torch üreteci.
  • latents (torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş gürültülü latentler.
  • prompt_embeds_qwen (torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş Qwen metin gömümeleri.
  • prompt_embeds_clip (torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş CLIP metin gömümeleri.
  • negative_prompt_embeds_qwen (torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş Qwen negatif metin gömme değerleri.
  • negative_prompt_embeds_clip (torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş CLIP negatif metin gömümleri.
  • prompt_cu_seqlens (torch.Tensor, isteğe bağlı) — Qwen olumlu istemi için önceden oluşturulmuş kümülatif dizi uzunlukları.
  • negative_prompt_cu_seqlens (torch.Tensor, isteğe bağlı) — Qwen negatif istemi için önceden oluşturulmuş kümülatif dizi uzunlukları.
  • output_type (str, isteğe bağlı, varsayılan "pil") — Oluşturulan videonun çıktı biçimi.
  • return_dict (bool, isteğe bağlı, varsayılan True) — KandinskyPipelineOutput döndürülüp döndürülmemeye karar verir.
  • callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, isteğe bağlı) — Her gürültü azaltma adımının sonunda çağrılan bir işlev.
  • callback_on_step_end_tensor_inputs (List, isteğe bağlı) — callback_on_step_end işlevi için girdi tensörlerinin listesi.
  • max_sequence_length (int, varsayılan 512) — Metin kodlama için maksimum dizi uzunluğu.

Dönüş değeri

~KandinskyPipelineOutput veya tuple

return_dict True ise KandinskyPipelineOutput döndürülür, aksi halde ilk öğesi üretilen videoların listesini içeren bir tuple döndürülür.

Görselden video üretimi için pipeline'ın çağrı fonksiyonu.

Örnekler:

>>> 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 )

Parametreler

  • prompt — Girdi istemi
  • negative_prompt — Yönlendirme için negatif prompt
  • image — Koşullandırma için girdi görüntüsü
  • height — Video yüksekliği
  • width — Video genişliği
  • prompt_embeds_qwen — Ön hesaplanmış Qwen istek gömme değerleri
  • prompt_embeds_clip — Ön hesaplanmış CLIP istem gömme değerleri
  • negative_prompt_embeds_qwen — Ön hesaplanmış Qwen negatif istem gömüleri
  • negative_prompt_embeds_clip — Ön hesaplanmış CLIP negatif istem gömüleri
  • prompt_cu_seqlens — Qwen olumlu istemi için önceden hesaplanmış kümülatif dizi uzunlukları
  • negative_prompt_cu_seqlens — Qwen negatif istemi için önceden hesaplanmış kümülatif dizi uzunlukları
  • callback_on_step_end_tensor_inputs — Geri çağrı girdi tensörleri

Yükseltilen

ValueError

  • ValueError — Girdiler geçersizse

Hattın girdi parametrelerini doğrulayın.

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]

Parametreler

  • prompt (str veya list[str]) — Kodlanacak istem.
  • num_videos_per_prompt (int, isteğe bağlı, varsayılan 1) — Her istem için üretilecek video sayısı.
  • max_sequence_length (int, isteğe bağlı, varsayılan 512) — Metin kodlama için maksimum dizi uzunluğu.
  • device (torch.device, isteğe bağlı) — Torch cihazı.
  • dtype (torch.dtype, isteğe bağlı) — Torch dtype.

Dönüş değeri

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

  • Şekli (batch_size * num_videos_per_prompt, sequence_length, embedding_dim) olan Qwen metin gömme değerleri
  • CLIP havuzlanmış gömme değerleri, şekli (batch_size * num_videos_per_prompt, clip_embedding_dim)
  • Qwen gömmelemeleri için kümülatif dizi uzunlukları (cu_seqlens), şekli (batch_size * num_videos_per_prompt + 1,)

Tek bir istemi (pozitif veya negatif) metin kodlayıcı gizli durumlarına kodlar.

Bu yöntem, video üretimi için kapsamlı metin temsilleri oluşturmak üzere hem Qwen2.5-VL hem de CLIP metin kodlayıcılarından gelen gömme (embedding) değerlerini birleştirir.

fast_sta_nabla

< >

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

Parametreler

  • T (int) — Zaman çerçevesi sayısı
  • H (int) — Gizli uzaydaki yükseklik
  • W (int) — Gizli uzaydaki genişlik
  • wT (int) — Zaman dikkat penceresi boyutu
  • wH (int) — Yükseklik dikkat pencere boyutu
  • wW (int) — Genişlik dikkat pencere boyutu
  • device (str) — Tensörün oluşturulacağı cihaz

Dönüş değeri

torch.Tensor

(THW, THW) biçiminde seyrek dikkat maskesi

Verimli video üretimi için seyrek zamansal dikkat (STA) maskesi oluşturun.

Bu yöntem, dikkati yakın karelere ve uzamsal konumlara sınırlayan bir maske oluşturarak video üretimi için hesaplama karmaşıklığını azaltır.

get_sparse_params

< >

( sampledevice ) → Dict

Parametreler

  • sample (torch.Tensor) — Girdi örnek tensörü
  • device (torch.device) — Tensörlerin yerleştirileceği cihaz

Dönüş değeri

Dict

Seyrek dikkat parametrelerini içeren sözlük

Örnek boyutlarına dayalı olarak dönüştürücü için seyrek dikkat parametreleri oluşturun.

Bu yöntem, dönüştürücü modelde verimli video işleme için gereken seyrek dikkat yapılandırmasını hesaplar.

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

Parametreler

  • image (PipelineImageInput) — Üretimi koşullandırmak için girdi olarak kullanılan görüntü
  • batch_size (int) — Üretilecek video sayısı
  • num_channels_latents (int) — Gizli uzaydaki kanal sayısı
  • height (int) — Üretilen videonun yüksekliği
  • width (int) — Üretilen videonun genişliği
  • num_frames (int) — Videodaki kare sayısı
  • dtype (torch.dtype) — Latentler için veri tipi
  • device (torch.device) — Latent'lerin oluşturulacağı cihaz
  • generator (torch.Generator) — Rastgele sayı üreteci
  • latents (torch.Tensor) — Kullanılacak mevcut latentler

Dönüş değeri

torch.Tensor

İlk kare kodlanmış görüntü olarak hazırlanmış latent tensör

Görselden video üretiminde başlangıç gizli değişkenlerini hazırlar.

Bu yöntem, ilk kare hariç tüm kareler için rastgele gürültü latentleri oluşturur; ilk kare, kodlanmış giriş görseliyle değiştirilir.

Atıf

@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