Diffusers documentation
Kandinsky 6
Kandinsky 6
Kandinsky 6 là một họ các mô hình tạo video từ Kandinsky Lab. Mô hình chính tạo ra video và âm thanh đồng bộ từ văn bản hoặc một hình ảnh tham chiếu bằng một diffusion transformer đa phương thức duy nhất: các latent của video và âm thanh được khử nhiễu cùng nhau thông qua các khối hợp nhất (fused blocks) thực hiện cross-attend giữa hai phương thức, mỗi phương thức được điều kiện bởi nhánh văn bản Qwen2.5-VL riêng của nó và một embedding CLIP pooled. Một mô hình siêu phân giải riêng biệt sẽ tăng độ phân giải video đã tạo theo từng ô (tile) trong không gian latent của một K-VAE 3D nhân quả (causal).
Hãy xem tổ chức Kandinsky Lab trên Hub để có đầy đủ bộ checkpoint chính thức, bao gồm các biến thể flow-matching và distilled của cả mô hình base và super-resolution.
Các checkpoint đã được chưng cất được cung cấp kèm theo PiflowScheduler ít bước và phải được chạy với
guidance_scale=1.0.
Các model khả dụng
| Mô hình | Pipeline | Ghi chú |
|---|---|---|
kandinskylab/Kandinsky-6.0-Pro-5s-Diffusers | Kandinsky6TI2VAPipeline | Flow matching, guidance_scale=5.0, 50 bước |
kandinskylab/Kandinsky-6.0-Pro-distill-5s-Diffusers | Kandinsky6TI2VAPipeline | Đã chưng cất, guidance_scale=1.0, 10 bước |
kandinskylab/Kandinsky-6.0-Lite-5s-Diffusers | Kandinsky6TI2VAPipeline | Flow matching, guidance_scale=5.0, 50 bước |
kandinskylab/Kandinsky-6.0-Lite-distill-5s-Diffusers | Kandinsky6TI2VAPipeline | Đã chưng cất, guidance_scale=1.0, 10 bước |
kandinskylab/Kandinsky-6.0-Pro-pretrain-5s-Diffusers | Kandinsky6TI2VAPipeline | Flow matching, guidance_scale=5.0, 50 bước |
kandinskylab/Kandinsky-6.0-Lite-pretrain-5s-Diffusers | Kandinsky6TI2VAPipeline | Flow matching, guidance_scale=5.0, 50 bước |
kandinskylab/Kandinsky-6.0-VSR-5s-Diffusers | Kandinsky6SRPipeline | Siêu phân giải khớp dòng |
kandinskylab/Kandinsky-6.0-VSR-distilled2steps-5s-Diffusers | Kandinsky6SRPipeline | Siêu phân giải đã chưng cất, 2 bước |
Văn bản/hình ảnh-đến-video-và-âm-thanh
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,
)Truyền image= để điều kiện khung đầu tiên dựa trên một hình ảnh tham chiếu, sample_audio=False để chỉ tạo video, và expand_prompts=True để cho phép trình mã hóa văn bản Qwen2.5-VL viết lại các prompt ngắn thành các prompt chi tiết trước.
Nâng cao độ phân giải video
Kandinsky6SRPipeline nhận các khung hình do Kandinsky6TI2VAPipeline tạo ra và tăng độ phân giải của chúng lên 2, 4, hoặc 2.25 (gồm bước tiền tăng độ phân giải bilinear 1.125x sau đó đi theo đường dẫn 2x). Video được chia thành các ô chồng lấn lên nhau, mỗi ô được tinh chỉnh ở một trong các kích thước ô mà transformer SR được huấn luyện, và các ô được trộn lại với nhau bằng cửa sổ Hann.
# 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]Tối ưu hóa bộ nhớ
Tham khảo hướng dẫn Giảm mức sử dụng bộ nhớ cho bộ kỹ thuật chung. Cả Kandinsky6TI2VAPipeline và Kandinsky6SRPipeline đều hỗ trợ model offloading (được sử dụng ở trên) và, để có kích thước nhỏ hơn với cái giá là tốc độ, sequential CPU offloading:
pipe.enable_sequential_cpu_offload()
Video VAE của Kandinsky6TI2VAPipeline cũng hỗ trợ tiled decoding cho độ phân giải cao hoặc video dài:
pipe.vae.enable_tiling()
Ghi chú
heightvàwidthphải chia hết cho tỷ lệ nén không gian của VAE video nhân với kích thước patch của transformer —16với cấu hình mặc định của Kandinsky6TI2VAPipeline (AutoencoderKLHunyuanVideovới tỷ lệ nén là8,patch_size=(1, 2, 2)).480x864, được sử dụng trong ví dụ trên, thỏa mãn điều kiện này.- Đầu vào
videocủa Kandinsky6SRPipeline phải có1 + k * vae_scale_factor_temporalkhung hình với một số nguyênk(tỷ lệ nén theo thời gian là4với cấu hình K-VAE mặc định, do đó121khung hình hoạt động được nhưng120thì không) — hãy cắt bớt hoặc đệm một video chưa thỏa mãn điều kiện này trước khi tăng kích thước. expand_prompts=Truetái sử dụng text encoder của Qwen2.5-VL đã được nạp sẵn cho một lượt sinh bổ sung trước khi khử nhiễu, do đó làm tăng độ trễ nhưng không thêm trọng số mô hình.- Biên dịch các khối transformer lặp lại để suy luận lặp lại nhanh hơn:
pipe.transformer.compile_repeated_blocks(fullgraph=True)
Kandinsky6TI2VAPipeline
lớp 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 )
Tham số
- transformer (Kandinsky6Transformer3DModel) — Transformer đa phương thức khử nhiễu các ẩn (latents) của video và âm thanh.
- vae (AutoencoderKLHunyuanVideo) — VAE video được sử dụng để mã hóa hình ảnh tham chiếu và giải mã video được tạo ra.
- text_encoder (Qwen2_5_VLForConditionalGeneration) — Mô hình Qwen2.5-VL cung cấp các embedding văn bản ở cấp độ token và, tùy chọn, mở rộng prompt.
- tokenizer (Qwen2_5_VLProcessor) —
Bộ xử lý của
text_encoder. - text_encoder_2 (CLIPTextModel) — Bộ mã hóa văn bản CLIP cung cấp nhúng văn bản đã gộp (pooled text embedding).
- tokenizer_2 (CLIPTokenizer) —
Tokenizer của
text_encoder_2. - scheduler (FlowMatchEulerDiscreteScheduler hoặc PiflowScheduler) —
Scheduler được sử dụng cùng với
transformerđể khử nhiễu các latents. Các checkpoint đã được distilled đi kèm với PiflowScheduler và phải được chạy vớiguidance_scale=1.0. - audio_vae (MMAudioVAE, tùy chọn) —
Audio VAE được sử dụng để giải mã các audio latents đã tạo thành mel spectrogram. Chỉ cần khi
sample_audio=True. - vocoder (MMAudioVocoder, tùy chọn) —
Vocoder được dùng để chuyển đổi phổ mel mà
audio_vaegiải mã thành dạng sóng. Chỉ cần khisample_audio=True.
Pipeline để tạo video và âm thanh từ văn bản/ảnh với Kandinsky 6.
Latent của video và âm thanh được khử nhiễu cùng nhau bởi một transformer đa phương thức duy nhất, có điều kiện dựa trên các token văn bản của Qwen2.5-VL và một embedding pooled của CLIP. Một hình ảnh tham chiếu tùy chọn sẽ điều kiện khung hình đầu tiên.
Mô hình này kế thừa từ DiffusionPipeline. Xem tài liệu của lớp cha để biết các phương thức chung được triển khai cho tất cả các pipeline (tải xuống, lưu, chạy trên một thiết bị cụ thể, v.v.).
__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[str] = ['latents'] ) → Kandinsky6TI2VAPipelineOutput or tuple
Tham số
- prompt (
strhoặclist[str], tùy chọn) — Prompt hoặc các prompt để định hướng quá trình tạo. Bắt buộc trừ khiprompt_embedsđược cung cấp. - image (
PipelineImageInput, tùy chọn) — Hình ảnh tham chiếu điều kiện cho khung hình đầu tiên (image-to-video-and-audio). - negative_prompt (
strhoặclist[str], tùy chọn) — Prompt hoặc các prompt không dùng để định hướng quá trình tạo ảnh. Mặc định là prompt âm của Kandinsky 6. - height (
int, mặc định là512) — Chiều cao của video được tạo ra, tính bằng pixel. - width (
int, mặc định là768) — Chiều rộng của video được tạo ra, tính bằng pixel. - num_frames (
int, mặc định là121) — Số lượng khung hình được tạo ra. - frame_rate (
float, mặc định là24.0) — Tốc độ khung hình mà video được tạo ra; thiết lập độ dài của âm thanh đồng bộ. - num_inference_steps (
int, mặc định là50) — Số bước khử nhiễu. Sử dụng16với các checkpoint đã được chưng cất. - timesteps (
list[int], tùy chọn) — Các bước thời gian tùy chỉnh dành cho các trình lập lịch hỗ trợ chúng. - sigmas (
list[float], tùy chọn) — Các sigma tùy chỉnh dành cho các trình lập lịch hỗ trợ chúng. - guidance_scale (
float, mặc định là5.0) — Thang độ hướng dẫn không có bộ phân loại. Phải là1.0khi dùng PiflowScheduler. - num_videos_per_prompt (
int, mặc định là1) — Số lượng video cần tạo cho mỗi prompt. - generator (
torch.Generatorhoặclist[torch.Generator], tùy chọn) — Bộ sinh được sử dụng cho nhiễu ban đầu và mã hóa ảnh tham chiếu. - latents (
torch.Tensor, tùy chọn) — Các latents video được tạo trước có hình dạng(batch_size, channels, num_latent_frames, latent_height, latent_width). - audio_latents (
torch.Tensor, tùy chọn) — Các latents âm thanh đã được tạo trước, có hình dạng(batch_size, channels, audio_length). - prompt_embeds (
torch.Tensor, tùy chọn) — Các embedding văn bản Qwen2.5-VL đã được tạo trước. - pooled_prompt_embeds (
torch.Tensor, tùy chọn) — Các embedding văn bản pooled CLIP đã được tạo trước. - negative_prompt_embeds (
torch.Tensor, tùy chọn) — Các embedding văn bản Qwen2.5-VL âm đã được tạo trước. - negative_pooled_prompt_embeds (
torch.Tensor, tùy chọn) — Các embedding văn bản CLIP pooled âm đã được tạo trước. - sample_audio (
bool, mặc định làTrue) — Có tạo âm thanh đồng bộ hay không. Yêu cầu pipeline phải cóaudio_vaevàvocoder. - expand_prompts (
bool, mặc định làFalse) — Có nên viết lại các prompt bằng expand_prompts() trước khi mã hóa hay không. - max_sequence_length (
int, mặc định là1024) — Số lượng tối đa các token prompt sau mẫu chat. - output_type (
str, mặc định là"pil") — Định dạng đầu ra của video được tạo:"pil","np","pt"hoặc"latent". - return_dict (
bool, mặc định làTrue) — Có nên trả về một Kandinsky6TI2VAPipelineOutput thay vì một tuple thông thường hay không. - callback_on_step_end (
Callable, tùy chọn) — Một hàm được gọi vào cuối mỗi bước khử nhiễu vớicallback_on_step_end(self, step, timestep, callback_kwargs). Hàm này có thể trả về một dict ghi đè các tensor được liệt kê. - callback_on_step_end_tensor_inputs (
list[str], mặc định là["latents"]) — Các tensor đầu vào được truyền đếncallback_on_step_end; một tập con của_callback_tensor_inputs.
Trả về
Kandinsky6TI2VAPipelineOutput hoặc tuple
Video và âm thanh được tạo ra; một tuple (frames, audio) khi return_dict=False.
Hàm gọi call của pipeline để tạo nội dung.
Ví dụ:
>>> 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 )
Mã hóa ảnh tham chiếu thành latents của khung hình đầu tiên có hình dạng (batch_size, latent_height, latent_width, latent_channels), được nhân với scaling_factor của VAE. Ảnh PIL sẽ được thay đổi kích thước và cắt giữa thành height x width; tensor và mảng phải đã có kích thước đó. Các latents được lặp lại num_videos_per_prompt lần dọc theo chiều batch.
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 )
Tham số
- prompt (
strhoặclist[str]) — Prompt cần được mã hóa. - negative_prompt (
strhoặclist[str], tùy chọn) — Prompt không dùng để định hướng quá trình tạo. Bị bỏ qua khido_classifier_free_guidancelàFalse. - do_classifier_free_guidance (
bool, mặc định làTrue) — Có mã hóa cả prompt tiêu cực hay không. - num_videos_per_prompt (
int, mặc định là1) — Số lượng video được tạo cho mỗi prompt; các embeddings sẽ được lặp lại tương ứng. - prompt_embeds (
torch.Tensor, tùy chọn) — Các embedding văn bản Qwen2.5-VL đã được tạo trước. Bỏ qua việc mã hóaprompt. - pooled_prompt_embeds (
torch.Tensor, tùy chọn) — Các embedding văn bản pooled của CLIP đã được tạo trước. Phải được cung cấp cùng vớiprompt_embeds. - prompt_attention_mask (
torch.Tensor, tùy chọn) — Mặt nạ đệm Boolean củaprompt_embeds. - negative_prompt_embeds (
torch.Tensor, tùy chọn) — Các embedding văn bản Qwen2.5-VL âm đã được tạo trước. - negative_pooled_prompt_embeds (
torch.Tensor, tùy chọn) — Các embedding văn bản CLIP pooled âm đã được tạo trước. - negative_prompt_attention_mask (
torch.Tensor, tùy chọn) — Mặt nạ đệm Boolean củanegative_prompt_embeds. - max_sequence_length (
int, mặc định là1024) — Số lượng tối đa các token prompt sau mẫu chat. - device (
torch.device, tùy chọn) — Thiết bị để chạy các text encoder. - dtype (
torch.dtype, tùy chọn) — Dtype của các embedding được trả về.
Mã hóa prompt thành các trạng thái ẩn của text encoder.
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]
Tham số
- prompt (
strhoặclist[str]) — Prompt hoặc các prompt cần mở rộng. - tokenizer —
Bộ xử lý Qwen2.5-VL, ví dụ
pipe.tokenizer. - text_encoder —
Mô hình Qwen2.5-VL, ví dụ
pipe.text_encoder. - device (
torch.device) — Thiết bị để chạy text encoder. - image (
PIL.Image.Imagehoặclist[PIL.Image.Image], tùy chọn) — Hình ảnh tham chiếu cho một cuộc gọi image-to-video. - max_sequence_length (
int, mặc định là1024) — Số lượng token được tạo ra tối đa cho mỗi prompt. - generator (
torch.Generatorhoặclist[torch.Generator], tuỳ chọn) — Đặt hạt (seed) cho phần mở rộng được lấy mẫu; một danh sách phải khớp với độ dài củaprompt, mỗi phần tử tương ứng với một generator.generatelấy mẫu từ RNG toàn cục, do đó RNG toàn cục được đặt hạt từ hạt của generator này; các lời gọirandn_tensorsau đó tiếp tục sử dụng trực tiếpgenerator.
Trả về
str hoặc list[str]
Mẫu câu (prompt) đã được mở rộng.
Viết lại các prompt ngắn thành các prompt video+audio chi tiết bằng text encoder Qwen2.5-VL, dựa trên hình ảnh tham chiếu khi có. Là một staticmethod nên có thể sử dụng độc lập, trước khi chạy pipeline.
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 )
Trả về các audio latents theo bố cục (batch_size, audio_length, channels) của transformer. Tensor audio_latents do người dùng cung cấp được kỳ vọng theo bố cục (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 )
Trả về video latents theo bố cục (batch_size, num_frames, height, width, channels) của transformer.
Tensor latents do người dùng cung cấp được kỳ vọng theo bố cục (batch_size, channels, num_frames, height, width).
Kandinsky6SRPipeline
lớp 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 )
Tham số
- transformer (Kandinsky6SRTransformer3DModel) — Transformer tinh chỉnh các lát tiềm ẩn (latent tiles).
- vae (Kandinsky6SRVAE) — K-VAE video nhân quả được sử dụng để mã hóa video đầu vào và giải mã các ô đã tinh chỉnh.
- scheduler (FlowMatchEulerDiscreteScheduler hoặc PiflowScheduler) —
Trình lập lịch được sử dụng cùng với
transformerđể khử nhiễu các ô gạch. Các checkpoint đã chưng cất được cung cấp kèm theo một PiflowScheduler. - latent_upscaler (Kandinsky6SRLatentUpscalerBank, tùy chọn) — Bộ tăng độ phân giải latent cho các tỷ lệ được hỗ trợ.
Pipeline cho siêu phân giải video với Kandinsky 6.
Video được chia thành các ô không gian chồng lấn lên nhau, mỗi ô được tinh chỉnh bởi transformer SR ở một trong các kích thước ô mà mô hình đã được huấn luyện (transformer.config.tile_sizes), và các ô đã tinh chỉnh được trộn lại bằng cửa sổ Hann. Khi pipeline có latent_upscaler, các ô được cắt từ latents K-VAE của toàn bộ video và được tăng kích thước trong không gian latent; ngược lại, các ô pixel được tăng kích thước bằng nội suy hai tuyến tính và được mã hóa.
Mô hình này kế thừa từ DiffusionPipeline. Xem tài liệu của lớp cha để biết các phương thức chung được triển khai cho tất cả các pipeline (tải xuống, lưu, chạy trên một thiết bị cụ thể, v.v.).
__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
Tham số
- video (
list[PIL.Image.Image],np.ndarrayhoặctorch.Tensor) — Video độ phân giải thấp, ở bất kỳ định dạng nào mà preprocess_video() chấp nhận, với1 + k * 4khung hình. Kích thước được làm tròn xuống đến bội số của hệ số không gian của VAE. - resolution_scale (
float, mặc định là2.25) — Tổng tỷ lệ phóng lớn không gian:2,4hoặc2.25(phóng lớn trước 1.125x bằng bilinear, sau đó đi theo đường dẫn 2x). - num_inference_steps (
int, mặc định là4) — Số bước khử nhiễu cho mỗi tile. Sử dụng2với các checkpoint đã được chưng cất. - timesteps (
list[int], tùy chọn) — Các bước thời gian tùy chỉnh dành cho các trình lập lịch hỗ trợ chúng. - sigmas (
list[float], tùy chọn) — Các sigma tùy chỉnh dành cho các trình lập lịch hỗ trợ chúng. - lq_noise_scale (
float, mặc định là0.7) — Lượng nhiễu Gaussian được trộn vào các latent độ phân giải thấp (bảo toàn phương sai) trước khi khử nhiễu. - min_overlap (
float, mặc định là0.2) — Tỷ lệ chồng lấn tối thiểu giữa các ô gạch lân cận, tính theo kích thước của ô gạch. - tiles_batch_size (
int, mặc định là1) — Số lượng tile được khử nhiễu trong mỗi lần gọi transformer. - generator (
torch.Generatorhoặclist[torch.Generator], tùy chọn) — Bộ sinh được sử dụng cho nhiễu được trộn vào các ô. - output_type (
str, mặc định là"pil") — Định dạng đầu ra của video được tạo:"pil","np"hoặc"pt". - return_dict (
bool, mặc định làTrue) — Có nên trả về một Kandinsky6SRPipelineOutput thay vì một tuple thông thường hay không.
Trả về
Kandinsky6SRPipelineOutput hoặc tuple
Video siêu phân giải; một tuple một phần tử khi return_dict=False.
Hàm gọi call của pipeline cho siêu phân giải.
Ví dụ:
>>> 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)Giải mã các latents K-VAE đã được scale thành video (batch_size, channels, num_frames, height, width) trong [-1, 1].
Mã hóa video (batch_size, channels, num_frames, height, width) trong [-1, 1] thành các latents K-VAE được nhân với scaling_factor của 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 )
Tham số
- in_channels (
int, mặc định là64) — Số lượng kênh tiềm ẩn. - stage_channels (
tuple[int, int, int], mặc định là(2048, 1024, 512)) — Độ rộng đặc trưng của ba giai đoạn trong cascade. - num_pre_blocks (
int, mặc định là5) — Các khối residual trước bước upsample đầu tiên của mô hình x4. - num_mid_blocks (
int, mặc định là3) — Các khối residual giữa hai bước upsampling. - num_post_blocks (
int, mặc định là3) — Các khối residual sau bước upsample cuối cùng. - num_x2_adapter_blocks (
int, mặc định là2) — Các khối dư (residual blocks) của adapter trong mô hình x2. - scales (
tuple[int, ...], mặc định là(2, 4)) — Các tỷ lệ không gian mà ngân hàng cung cấp bộ tăng tỷ lệ (upscaler) cho. - scaling_factor (
float, mặc định là0.910344) — Hệ số mà các latents đầu vào được kỳ vọng mang theo (tức làscaling_factorcủa K-VAE).
Ngân hàng các bộ tăng độ phân giải tiềm ẩn (latent upscaler) được sử dụng bởi Kandinsky6SRPipeline: một Kandinsky6SRLatentUpscaler cho mỗi tỷ lệ không gian được hỗ trợ, hoạt động trên các latent của K-VAE.
forward
< source >( latents: Tensorscale: intreturn_dict: bool = True )
Tham số
- latents (
torch.Tensorcó hình dạng(batch_size, in_channels, num_frames, height, width)) — Latents của K-VAE đã được nhân vớiscaling_factor. - scale (
int) — Hệ số phóng to không gian; một trong sốscales. - return_dict (
bool, mặc định làTrue) — Có nên trả về một~models.autoencoder_kl.DecoderOutputthay vì một tuple thông thường hay không.
Kandinsky6TI2VAPipelineOutput
lớp diffusers.Kandinsky6TI2VAPipelineOutput
< source >( frames: typing.Union[torch.Tensor, numpy.ndarray, list[list[PIL.Image.Image]]]audio: typing.Union[torch.Tensor, numpy.ndarray, NoneType] = None )
Tham số
- frames (
torch.Tensor,np.ndarray, hoặclist[list[PIL.Image.Image]]) — Video đã được tạo. Một danh sách lồng nhau có độ dàibatch_size, mỗi phần tử chứanum_frameshình ảnh PIL, hoặc một mảng NumPy hoặc tensor torch có hình dạng(batch_size, num_frames, height, width, channels)/(batch_size, num_frames, channels, height, width). Vớioutput_type="latent", các latent của video có hình dạng(batch_size, channels, num_latent_frames, latent_height, latent_width). - audio (
torch.Tensorhoặcnp.ndarray, tùy chọn) — Các dạng sóng được tạo ra có hình dạng(batch_size, num_samples)trong khoảng[-1, 1]ở tốc độ lấy mẫu của VAE âm thanh, hoặcNonekhi âm thanh không được lấy mẫu. Vớioutput_type="latent", các latent âm thanh có hình dạng(batch_size, channels, audio_length).
Lớp đầu ra cho Kandinsky6TI2VAPipeline.
Kandinsky6SRPipelineOutput
lớp diffusers.Kandinsky6SRPipelineOutput
< source >( frames: typing.Union[torch.Tensor, numpy.ndarray, list[list[PIL.Image.Image]]] )
Tham số
- frames (
torch.Tensor,np.ndarray, hoặclist[list[PIL.Image.Image]]) — Video đã được siêu phân giải. Một danh sách lồng nhau có độ dàibatch_size, mỗi phần tử chứanum_frameshình ảnh PIL, hoặc một mảng NumPy hoặc tensor torch có hình dạng(batch_size, num_frames, height, width, channels)/(batch_size, num_frames, channels, height, width).
Lớp đầu ra cho Kandinsky6SRPipeline.