Diffusers documentation

Kandinsky 6

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 6

Kandinsky 6은 Kandinsky Lab에서 개발한 비디오 생성 모델 계열입니다. 주요 모델은 단일 멀티모달 확산 변환기를 사용하여 텍스트 또는 참조 이미지로부터 비디오와 동기화된 오디오를 생성합니다. 비디오와 오디오 잠재 변수는 두 모달리티 간에 교차 주의를 수행하는 융합 블록을 통해 함께 노이즈 제거되며, 각각 자체 Qwen2.5-VL 텍스트 분기 및 CLIP 풀링 임베딩에 조건부화됩니다. 별도의 초해상도 모델은 인과적 3D K-VAE의 잠재 공간에서 생성된 비디오를 타일별로 업스케일링합니다.

Hub의 Kandinsky Lab 조직에서 base 모델과 super-resolution 모델의 flow-matching 및 distilled 변형을 포함한 공식 체크포인트 전체를 확인해 보세요.

Distilled checkpoints에는 few-step PiflowScheduler가 함께 제공되며, guidance_scale=1.0로 실행해야 합니다.

사용 가능한 모델

모델PipelineThe input is a single word "Notes". 참고
kandinskylab/Kandinsky-6.0-Pro-5s-DiffusersKandinsky6TI2VAPipelineFlow matching, guidance_scale=5.0, 50단계
kandinskylab/Kandinsky-6.0-Pro-distill-5s-DiffusersKandinsky6TI2VAPipelineDistilled, guidance_scale=1.0, 10단계
kandinskylab/Kandinsky-6.0-Lite-5s-DiffusersKandinsky6TI2VAPipelineFlow matching, guidance_scale=5.0, 50단계
kandinskylab/Kandinsky-6.0-Lite-distill-5s-DiffusersKandinsky6TI2VAPipelineDistilled, guidance_scale=1.0, 10단계
kandinskylab/Kandinsky-6.0-Pro-pretrain-5s-DiffusersKandinsky6TI2VAPipelineFlow matching, guidance_scale=5.0, 50단계
kandinskylab/Kandinsky-6.0-Lite-pretrain-5s-DiffusersKandinsky6TI2VAPipelineFlow matching, guidance_scale=5.0, 50단계
kandinskylab/Kandinsky-6.0-VSR-5s-DiffusersKandinsky6SRPipelineFlow matching 초고해상도
kandinskylab/Kandinsky-6.0-VSR-distilled2steps-5s-DiffusersKandinsky6SRPipeline디스틸드 초고해상도, 2단계

텍스트/이미지-비디오-오디오

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 경로 적용). 비디오는 겹치는 타일로 분할되며, 각 타일은 SR transformer가 학습된 타일 크기 중 하나로 정제된 후 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]

메모리 최적화

일반적인 기법 집합에 대해서는 메모리 사용량 줄이기 가이드를 참조하세요. Kandinsky6TI2VAPipeline과 Kandinsky6SRPipeline 모두 모델 오프로딩(위에서 사용됨)을 지원하며, 속도를 희생하여 더 작은 footprint를 원할 경우 순차적 CPU 오프로딩도 지원합니다:

pipe.enable_sequential_cpu_offload()

Kandinsky6TI2VAPipeline의 비디오 VAE도 고해상도 또는 긴 비디오를 위한 tiled decoding을 지원합니다:

pipe.vae.enable_tiling()

The input is a single word "Notes". 참고

  • height와 width는 비디오 VAE의 공간 압축 비율과 transformer의 patch size의 곱으로 나누어떨어져야 합니다. 기본 Kandinsky6TI2VAPipeline 구성에서는 이 값이 16입니다(8의 압축 비율을 가진 AutoencoderKLHunyuanVideo, patch_size=(1, 2, 2)). 위 예제에서 사용한 480x864는 이 조건을 충족합니다.
  • Kandinsky6SRPipeline의 입력 video는 정수 k에 대해 1 + k * vae_scale_factor_temporal 프레임이어야 합니다(기본 K-VAE 구성에서 시간 축 압축 비율이 4이므로 121 프레임은 가능하지만 120 프레임은 불가합니다). — 업스케일링 전에 이 조건을 이미 충족하지 않는 비디오는 잘라내거나 패딩을 적용하세요.
  • expand_prompts=True는 노이즈 제거 전에 추가 생성 패스를 위해 이미 로드된 Qwen2.5-VL 텍스트 인코더를 재사용하므로 지연 시간은 증가하지만 추가 모델 가중치는 필요하지 않습니다.
  • 반복 추론을 더 빠르게 수행하기 위해 반복되는 transformer 블록을 컴파일합니다:
    pipe.transformer.compile_repeated_blocks(fullgraph=True)

Kandinsky6TI2VAPipeline

class diffusers.Kandinsky6TI2VAPipeline

< >

( transformer: Kandinsky6Transformer3DModelvae: AutoencoderKLHunyuanVideotext_encoder: Qwen2_5_VLForConditionalGenerationtokenizer: Qwen2_5_VLProcessortext_encoder_2: CLIPTextModeltokenizer_2: CLIPTokenizerscheduler: diffusers.schedulers.scheduling_flow_match_euler_discrete.FlowMatchEulerDiscreteScheduler | diffusers.schedulers.scheduling_piflow.PiflowScheduleraudio_vae: diffusers.models.autoencoders.autoencoder_mmaudio.MMAudioVAE | None = Nonevocoder: diffusers.models.autoencoders.mmaudio_vocoder.MMAudioVocoder | None = None )

매개변수

  • transformer (Kandinsky6Transformer3DModel) — 비디오와 오디오 잠재를 디노이즈하는 멀티모달 transformer입니다.
  • 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와 함께 latents의 노이즈를 제거하는 데 사용되는 스케줄러입니다. Distilled 체크포인트에는 PiflowScheduler가 포함되어 있으며, guidance_scale=1.0으로 실행해야 합니다.
  • audio_vae (MMAudioVAE, 선택 사항) — 생성된 오디오 latents를 mel spectrogram으로 디코딩하는 데 사용되는 오디오 VAE입니다. sample_audio=True인 경우에만 필요합니다.
  • vocoder (MMAudioVocoder, 선택) — audio_vae가 디코딩한 멜 스펙트로그램을 웨이브폼으로 변환하는 데 사용되는 Vocoder. sample_audio=True인 경우에만 필요합니다.

Kandinsky 6을 사용한 텍스트/이미지-비디오-오디오 생성을 위한 Pipeline

Video와 audio latents는 Qwen2.5-VL 텍스트 토큰과 CLIP pooled embedding에 조건부화된 단일 multimodal transformer에 의해 함께 denoise됩니다. 선택 사항인 reference image는 첫 번째 프레임에 조건을 부여합니다.

이 모델은 DiffusionPipeline에서 상속됩니다. 모든 파이프라인에 대해 구현된 일반적 메서드(다운로드, 저장, 특정 디바이스에서 실행 등)에 대해서는 상위 클래스 문서를 확인하세요.

__call__

< >

( prompt: str | list[str] | None = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Nonenegative_prompt: str | list[str] | None = Noneheight: int = 512width: int = 768num_frames: int = 121frame_rate: float = 24.0num_inference_steps: int = 50timesteps: list[int] | None = Nonesigmas: list[float] | None = Noneguidance_scale: float = 5.0num_videos_per_prompt: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneaudio_latents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonesample_audio: bool = Trueexpand_prompts: bool = Falsemax_sequence_length: int = 1024output_type: str = 'pil'return_dict: bool = Truecallback_on_step_end: collections.abc.Callable[[int, int, dict], None] | None = Nonecallback_on_step_end_tensor_inputs: list = ['latents'] ) → Kandinsky6TI2VAPipelineOutput or tuple

매개변수

  • prompt (str 또는 list[str], 선택 사항) — 생성을 안내할 프롬프트입니다. prompt_embeds가 제공되지 않는 한 필수입니다.
  • image (PipelineImageInput, 선택 사항) — 첫 번째 프레임을 조건화하는 참조 이미지(이미지-비디오-오디오 변환).
  • negative_prompt (str 또는 list[str], 선택 사항) — 생성을 안내하지 않을 프롬프트입니다. 기본값은 Kandinsky 6의 negative prompt입니다.
  • height (int, 기본값 512) — 생성된 비디오의 픽셀 단위 높이입니다.
  • width (int, 기본값 768) — 생성된 비디오의 픽셀 단위 너비입니다.
  • num_frames (int, 기본값 121) — 생성할 프레임 수.
  • frame_rate (float, 기본값 24.0) — 동영상이 생성되는 프레임 레이트입니다. 동기화 오디오의 길이를 설정합니다.
  • num_inference_steps (int, 기본값 50) — 디노이징 단계 수입니다. 증류된 체크포인트를 사용할 경우 16을(를) 사용하세요.
  • timesteps (list[int], 선택 사항) — 이를 지원하는 스케줄러에 사용할 커스텀 timesteps입니다.
  • sigmas (list[float], 선택 사항) — 지원하는 스케줄러에 사용할 커스텀 sigmas입니다.
  • guidance_scale (float, 기본값 5.0) — Classifier-free guidance scale. PiflowScheduler를 사용할 경우 1.0이어야 합니다.
  • num_videos_per_prompt (int, 기본값 1) — 프롬프트당 생성할 비디오의 수입니다.
  • generator (torch.Generator 또는 list[torch.Generator], 선택 사항) — 초기 노이즈 및 참조 이미지 인코딩에 사용되는 Generator입니다.
  • latents (torch.Tensor, 선택 사항) — (batch_size, channels, num_latent_frames, latent_height, latent_width) 모양의 사전 생성된 비디오 latents입니다.
  • audio_latents (torch.Tensor, 선택 사항) — (batch_size, channels, audio_length) 형태의 사전 생성된 오디오 잠재 변수(latents).
  • prompt_embeds (torch.Tensor, 선택 사항) — 미리 생성된 Qwen2.5-VL 텍스트 임베딩입니다.
  • pooled_prompt_embeds (torch.Tensor, 선택) — 미리 생성된 CLIP 풀링 텍스트 임베딩입니다.
  • negative_prompt_embeds (torch.Tensor, 선택 사항) — 미리 생성된 negative Qwen2.5-VL 텍스트 임베딩입니다.
  • negative_pooled_prompt_embeds (torch.Tensor, 선택 사항) — 미리 생성된 negative CLIP pooled text embeddings입니다.
  • 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를 반환할지 여부.
  • callback_on_step_end (Callable, 선택 사항) — callback_on_step_end(self, step, timestep, callback_kwargs)를 인수로 받는 함수로, 각 디노이징 단계의 끝에서 호출됩니다. 나열된 텐서를 오버라이드하는 딕을 반환할 수 있습니다.
  • callback_on_step_end_tensor_inputs (list[str], 기본값 ["latents"]) — callback_on_step_end에 전달되는 텐서 입력. _callback_tensor_inputs의 부분 집합입니다.

반환값

Kandinsky6TI2VAPipelineOutput 또는 tuple

생성된 비디오와 오디오; return_dict=False인 경우 (frames, audio) 튜플.

생성을 위한 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

< >

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

참조 이미지를 VAE의 scaling_factor로 스케일링된 (batch_size, latent_height, latent_width, latent_channels) 형태의 첫 프레임 latents로 인코딩합니다. PIL 이미지는 height x width로 리사이즈 및 중앙 크롭됩니다. 텐서와 배열은 이미 해당 크기를 가져야 합니다. latents는 배치 차원 방향으로 num_videos_per_prompt회 반복됩니다.

encode_prompt

< >

( prompt: str | list[str]negative_prompt: str | list[str] | None = Nonedo_classifier_free_guidance: bool = Truenum_videos_per_prompt: int = 1prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_attention_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int = 1024device: typing.Optional[torch.device] = Nonedtype: typing.Optional[torch.dtype] = None )

매개변수

  • prompt (str 또는 list[str]) — 인코딩할 프롬프트.
  • negative_prompt (str 또는 list[str], 선택 사항) — 생성을 유도하지 않을 프롬프트입니다. do_classifier_free_guidance가 False인 경우 무시됩니다.
  • do_classifier_free_guidance (bool, 기본값 True) — 부정 프롬프트도 인코딩할지 여부.
  • num_videos_per_prompt (int, 기본값 1) — 프롬프트당 생성되는 비디오의 수입니다. 임베딩은 이에 따라 반복됩니다.
  • prompt_embeds (torch.Tensor, 선택 사항) — 미리 생성된 Qwen2.5-VL 텍스트 임베딩입니다. prompt 인코딩을 건너뜁니다.
  • pooled_prompt_embeds (torch.Tensor, 선택) — 미리 생성된 CLIP 풀링 텍스트 임베딩입니다. prompt_embeds와 함께 제공해야 합니다.
  • prompt_attention_mask (torch.Tensor, 선택 사항) — prompt_embeds의 Boolean 패딩 마스크입니다.
  • negative_prompt_embeds (torch.Tensor, 선택 사항) — 미리 생성된 negative Qwen2.5-VL 텍스트 임베딩입니다.
  • negative_pooled_prompt_embeds (torch.Tensor, 선택 사항) — 미리 생성된 negative CLIP pooled text embeddings입니다.
  • negative_prompt_attention_mask (torch.Tensor, 선택 사항) — negative_prompt_embeds의 Boolean 패딩 마스크입니다.
  • max_sequence_length (int, 기본값 1024) — 채팅 템플릿 적용 후 프롬프트 토큰의 최대 개수입니다.
  • device (torch.device, 선택 사항) — 텍스트 인코더를 실행할 장치.
  • dtype (torch.dtype, 선택 사항) — 반환되는 임베딩의 Dtype입니다.

프롬프트를 텍스트 인코더의 히든 상태로 인코딩합니다.

expand_prompts

< >

( prompt: str | list[str]tokenizertext_encoderdevice: deviceimage: PIL.Image.Image | list[PIL.Image.Image] | None = Nonemax_sequence_length: int = 1024generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None ) → str or list[str]

매개변수

  • prompt (str 또는 list[str]) — 확장할 프롬프트 또는 프롬프트 목록.
  • tokenizer — Qwen2.5-VL 프로세서, 예: pipe.tokenizer.
  • text_encoder — 예를 들어 pipe.text_encoder인 Qwen2.5-VL 모델입니다.
  • device (torch.device) — 텍스트 인코더를 실행할 장치.
  • image (PIL.Image.Image 또는 list[PIL.Image.Image], 선택 사항) — 이미지-비디오 호출의 참조 이미지입니다.
  • max_sequence_length (int, 기본값 1024) — 프롬프트당 생성되는 최대 토큰 수.
  • generator (torch.Generator 또는 list[torch.Generator], 선택 사항) — 샘플링된 확장의 시드를 설정합니다. 리스트인 경우 prompt의 길이와 일치해야 하며, 항목별로 하나의 생성기를 사용합니다. generate 는 전역 RNG에서 값을 추출하므로, 전역 RNG는 이 생성기의 시드로 시드됩니다. 이후 randn_tensor 호출은 generator를 직접 계속 사용합니다.

반환값

str 또는 list[str]

확장된 프롬프트입니다.

Qwen2.5-VL 텍스트 인코더를 사용하여 짧은 프롬프트를 상세한 비디오+오디오 프롬프트로 재작성하며, 참조 이미지가 제공된 경우 이를 기반으로 합니다. 파이프라인 실행 전에 독립적으로 사용할 수 있도록 staticmethod로 구현되어 있습니다.

prepare_audio_latents

< >

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

transformer의 (batch_size, audio_length, channels) 레이아웃으로 오디오 latents를 반환합니다. 사용자가 제공한 audio_latents 텐서는 (batch_size, channels, audio_length) 레이아웃으로 예상됩니다.

prepare_latents

< >

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

transformer의 (batch_size, num_frames, height, width, channels) 레이아웃으로 비디오 latents를 반환합니다. 사용자가 제공한 latents 텐서는 (batch_size, channels, num_frames, height, width) 레이아웃으로 예상됩니다.

Kandinsky6SRPipeline

class diffusers.Kandinsky6SRPipeline

< >

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

매개변수

Kandinsky 6을 활용한 비디오 초해상도 파이프라인.

비디오는 겹치는 공간 타일로 분할되며, 각 타일은 모델이 학습된 타일 크기(transformer.config.tile_sizes) 중 하나에서 SR transformer에 의해 정제되고, 정제된 타일은 Hann 윈도우를 사용하여 다시 블렌딩됩니다. 파이프라인에 latent_upscaler가 있는 경우, 타일은 전체 비디오의 K-VAE 잠재 공간에서 잘라내어 잠재 공간에서 업스케일링됩니다. 그렇지 않으면 픽셀 타일이 이선형 보간으로 업스케일링된 후 인코딩됩니다.

이 모델은 DiffusionPipeline에서 상속됩니다. 모든 파이프라인에 대해 구현된 일반적 메서드(다운로드, 저장, 특정 디바이스에서 실행 등)에 대해서는 상위 클래스 문서를 확인하세요.

__call__

< >

( video: typing.Union[list[PIL.Image.Image], list[list[PIL.Image.Image]], numpy.ndarray, torch.Tensor]resolution_scale: float = 2.25num_inference_steps: int = 4timesteps: list[int] | None = Nonesigmas: list[float] | None = Nonelq_noise_scale: float = 0.7min_overlap: float = 0.2tiles_batch_size: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Noneoutput_type: str = 'pil'return_dict: bool = True ) → Kandinsky6SRPipelineOutput or tuple

매개변수

  • video (list[PIL.Image.Image], np.ndarray 또는 torch.Tensor) — 1 + k * 4개의 프레임을 가진 저해상도 비디오입니다. preprocess_video()가 허용하는 모든 형식을 사용할 수 있으며, 크기는 VAE 공간 계수의 배수로 아래로 반올림됩니다.
  • resolution_scale (float, 기본값 2.25) — 전체 공간 업스케일: 2, 4 또는 2.25 (1.125x 이중선형 사전 업스케일 후 2x 경로 적용).
  • num_inference_steps (int, 기본값 4) — 타일당 디노이징 단계 수입니다. 증류된 체크포인트를 사용할 때는 2를 사용하세요.
  • timesteps (list[int], 선택 사항) — 이를 지원하는 스케줄러에 사용할 커스텀 timesteps입니다.
  • sigmas (list[float], 선택 사항) — 지원하는 스케줄러에 사용할 커스텀 sigmas입니다.
  • lq_noise_scale (float, 기본값 0.7) — 디노이징 전에 저해상도 라텐트에 혼합되는 가우시안 노이즈의 양(분산 보존).
  • min_overlap (float, 기본값 0.2) — 타일 크기에 대한 인접 타일 간 최소 겹침 비율.
  • tiles_batch_size (int, 기본값 1) — transformer 호출마다 노이즈를 제거할 타일 수입니다.
  • generator (torch.Generator 또는 list[torch.Generator], 선택 사항) — 타일에 혼합되는 노이즈에 사용되는 생성기입니다.
  • output_type (str, 기본값 "pil") — 생성된 비디오의 출력 형식: "pil", "np" 또는 "pt".
  • return_dict (bool, 기본값 True) — 단순 튜플 대신 Kandinsky6SRPipelineOutput를 반환할지 여부.

반환값

Kandinsky6SRPipelineOutput 또는 tuple

초해상도 영상. return_dict=False인 경우 1개 요소의 튜플입니다.

슈퍼 레졸루션을 위한 파이프라인의 호출 함수.

예:

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

< >

( latents: Tensor )

스케일된 K-VAE latents를 [-1, 1] 범위의 (batch_size, channels, num_frames, height, width) 비디오로 디코딩합니다.

encode_video

< >

( video: Tensor )

(batch_size, channels, num_frames, height, width) 크기의 [-1, 1] 범위를 가진 비디오를 VAE의 scaling_factor로 스케일링된 K-VAE latents로 인코딩합니다.

Kandinsky6SRLatentUpscalerBank

class diffusers.Kandinsky6SRLatentUpscalerBank

< >

( in_channels: int = 64stage_channels: tuple[int, int, int] = (2048, 1024, 512)num_pre_blocks: int = 5num_mid_blocks: int = 3num_post_blocks: int = 3num_x2_adapter_blocks: int = 2scales: tuple[int, ...] = (2, 4)scaling_factor: float = 0.910344004631042 )

매개변수

  • in_channels (int, 기본값 64) — 잠재 채널의 수입니다.
  • stage_channels (tuple[int, int, int], 기본값 (2048, 1024, 512)) — 캐스케이드의 세 단계에 대한 특징 폭입니다.
  • num_pre_blocks (int, 기본값 5) — x4 모델의 첫 번째 업샘플링 이전의 잔차 블록 수.
  • num_mid_blocks (int, 기본값 3) — 두 업샘플링 사이에 위치하는 잔차 블록의 수.
  • num_post_blocks (int, 기본값 3) — 마지막 업샘플링 이후의 잔차 블록 수.
  • num_x2_adapter_blocks (int, 기본값 2) — x2 모델 어댑터의 잔차 블록 수.
  • scales (tuple[int, ...], 기본값 (2, 4)) — 해당 bank가 업스케일러를 제공하는 공간 스케일입니다.
  • scaling_factor (float, 기본값 0.910344) — 입력 latents가 가질 것으로 예상되는 스케일(K-VAE의 scaling_factor)입니다.

Kandinsky6SRPipeline에서 사용하는 잠재 업스케일러 뱅크: 지원되는 공간 스케일마다 Kandinsky6SRLatentUpscaler 하나씩, K-VAE 잠재 변수에서 동작합니다.

forward

< >

( latents: Tensorscale: intreturn_dict: bool = True )

매개변수

  • latents (torch.Tensor, shape (batch_size, in_channels, num_frames, height, width)) — scaling_factor로 스케일링된 K-VAE latents.
  • scale (int) — 공간 업스케일 팩터; scales 중 하나입니다.
  • return_dict (bool, 기본값 True) — 단순 튜플 대신 ~models.autoencoder_kl.DecoderOutput를 반환할지 여부.

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]]) — 생성된 비디오입니다. 각 요소에 num_frames개의 PIL 이미지를 포함하는 길이가 batch_size인 중첩 리스트이거나, (batch_size, num_frames, height, width, channels) / (batch_size, num_frames, channels, height, width) 모양의 NumPy 배열 또는 torch 텐서입니다. output_type="latent"인 경우, (batch_size, channels, num_latent_frames, latent_height, latent_width) 모양의 비디오 latent입니다.
  • audio (torch.Tensor 또는 np.ndarray, 선택 사항) — 오디오 VAE의 샘플 레이트에서 [-1, 1] 범위의 (batch_size, num_samples) 모양으로 생성된 웨이브폼, 또는 오디오가 샘플링되지 않은 경우 None. output_type="latent"인 경우 (batch_size, channels, audio_length) 모양의 오디오 라텐트.

Kandinsky6TI2VAPipeline의 출력 클래스입니다.

Kandinsky6SRPipelineOutput

class diffusers.Kandinsky6SRPipelineOutput

< >

( frames: typing.Union[torch.Tensor, numpy.ndarray, list[list[PIL.Image.Image]]] )

매개변수

  • frames (torch.Tensor, np.ndarray 또는 list[list[PIL.Image.Image]]) — 초해상도 처리된 비디오입니다. 각 요소에 num_frames개의 PIL 이미지를 포함하는 길이가 batch_size인 중첩 리스트이거나, (batch_size, num_frames, height, width, channels) 또는 (batch_size, num_frames, channels, height, width) 형태의 NumPy 배열 또는 torch 텐서입니다.

Kandinsky6SRPipeline의 출력 클래스입니다.

Update on GitHub