Diffusers documentation
Pika H3 Flex
Pika H3 Flex
Pika H3 Flex là phiên bản huấn luyện sau (post-training) của Pika dựa trên MiniMax-H3, biến nó thành bộ tạo video và âm thanh chỉ trong sáu bước. Mô hình giữ nguyên chuỗi đóng gói (packed sequence) của MiniMax-H3, bộ điều kiện Qwen3-VL và hai VAE, đồng thời thay đổi hai điểm: bộ lấy mẫu (sampler) là lịch trình sáu bước cố định, trong đó nhiễu lại (re-noise) dự đoán sạch tại mỗi bước thay vì cập nhật Euler, và trọng số là một cặp adapter LoRA rank-128 trên hai phân vùng transformer của MiniMax-H3. Video cùng bản nhạc nền stereo đồng bộ được tạo ra từ cùng sáu lần truyền thẳng (forward pass).
Bản phát hành chính là các adapter: adapter FL2VA (fl2va/adapter.safetensors) điều khiển phân vùng transformer/ cho điều kiện văn bản và khung đầu cuối, adapter Ref2VA (ref2va/adapter.safetensors) điều khiển transformer_ref/ cho các tham chiếu đa phương thức. Các thành phần cơ sở là của MiniMaxAI/MiniMax-H3, không thay đổi, và kho lưu trữ chứa một bản sao của chúng để có thể tải độc lập.
Pika H3 Flex được tích hợp dưới dạng các khối Modular Diffusers duy nhất, giống như MiniMax-H3: các khối và PikaH3FlexModularPipeline của chúng là toàn bộ phần tích hợp, và không có nửa DiffusionPipeline.
Đang tải
Một pipeline được lắp ráp qua hai bước: các thành phần được nạp thông qua modular_model_index.json trong đó liệt kê các thành phần cơ sở của MiniMax-H3 và hai cấu hình scheduler, sau đó adapter của workflow được chọn sẽ được nạp đè lên bằng load_lora_weights(). Các adapter là các bản dump PEFT thuần túy của tên module diffusers và được nạp ở tỷ lệ đã huấn luyện (alpha == rank, 1.0).
| Quy trình làm việc | Đầu vào | Chia nhỏ Transformer | Adapter |
|---|---|---|---|
t2va | prompt | transformer/ | fl2va/adapter.safetensors |
fl2va | prompt và image và/hoặc last_image | transformer/ | fl2va/adapter.safetensors |
ref2va | prompt và references | transformer_ref/ | ref2va/adapter.safetensors |
import torch
from diffusers import ModularPipeline
pipe = ModularPipeline.from_pretrained("Pika-Labs/Pika-H3-Flex", workflow="fl2va")
pipe.load_components(dtype={"vae": torch.float32, "audio_vae": torch.float32, "default": torch.bfloat16})
pipe.load_lora_weights("Pika-Labs/Pika-H3-Flex", weight_name="fl2va/adapter.safetensors")Việc truyền workflow sẽ cắt bỏ các khối không liên quan đến tác vụ đó, nên chỉ phân vùng transformer của chính tác vụ được tải về, adapter sẽ định tuyến đến phân vùng duy nhất hiện có, và pipeline chỉ chấp nhận các yêu cầu của tác vụ đó — pipeline fl2va cần một keyframe, còn t2va thì không. Một pipeline giữ cả hai phân vùng (được tải mà không có workflow=) cần được chỉ định vị trí đặt adapter Ref2VA: pipe.load_lora_weights(..., weight_name="ref2va/adapter.safetensors", load_into_transformer_ref=True). Hai VAE được phát hành ở float32 và giải mã ở float32, giống như gói đã phát hành; mọi thứ khác chạy ở bfloat16.
pipe.docin ra những gì pipeline trước mặt bạn nhận vào và trả về — mọi đầu vào cùng giá trị mặc định, các thành phần mà nó kỳ vọng và các đầu ra mà nó tạo ra.
Tái sử dụng MiniMax-H3 đã được tải
Các thành phần cơ bản là của MiniMax-H3, do đó một pipeline MiniMax-H3 đã được nạp sẵn sẽ chứa mọi thứ ngoại trừ hai bộ lập lịch và các bộ thích ứng. Phần này lắp ráp một pipeline Pika H3 Flex từ các thành phần đã nạp đó và giữ cả hai pipeline sẵn sàng song song: một ComponentsManager giữ mỗi thành phần một lần và chuyển chúng xuống bộ nhớ cho cả hai, pipeline Pika H3 Flex chỉ thêm hai bộ lập lịch của nó, và các bộ thích ứng quyết định xem các transformer dùng chung sẽ chạy mô hình nào trong hai mô hình.
import torch
from diffusers import ComponentsManager, ModularPipeline
dtype = {"vae": torch.float32, "audio_vae": torch.float32, "default": torch.bfloat16}
manager = ComponentsManager()
manager.enable_auto_cpu_offload(device="cuda")
# The MiniMax-H3 pipeline already in use, with every workflow loaded. `collection` registers its components in the
# manager under that name, so they can be fetched by it later.
minimax = ModularPipeline.from_pretrained("MiniMaxAI/MiniMax-H3", components_manager=manager, collection="minimax-h3")
minimax.load_components(dtype=dtype)
# The Pika H3 Flex pipeline, in its own collection. Only its own components are loaded: the two schedulers.
pika = ModularPipeline.from_pretrained("Pika-Labs/Pika-H3-Flex", components_manager=manager, collection="pika-h3-flex")
pika.load_components(names=["scheduler", "audio_scheduler"])
# The rest comes from the MiniMax-H3 collection, and `update_components` puts it in the Pika H3 Flex pipeline.
shared = ["text_encoder", "tokenizer", "processor", "vae", "audio_vae", "transformer", "transformer_ref"]
pika.update_components(**{name: manager.get_one(name=name, collection="minimax-h3") for name in shared})
# The adapters go into the shared transformers.
pika.load_lora_weights("Pika-Labs/Pika-H3-Flex", weight_name="fl2va/adapter.safetensors")
pika.load_lora_weights(
"Pika-Labs/Pika-H3-Flex", weight_name="ref2va/adapter.safetensors", load_into_transformer_ref=True
)print(manager) hiển thị kết quả: mỗi thành phần dùng chung được liệt kê một lần và thuộc về cả hai bộ sưu tập, bộ sưu tập Pika H3 Flex thêm hai trình lập lịch, và hai bộ chuyển đổi mang một bộ thích ứng.
Models:
Name_ID | Class | Size (GB) | Collection
transformer_1397... | MiniMaxH3Transformer3DModel | 63.02 | minimax-h3
| | | pika-h3-flex
transformer_ref_13... | MiniMaxH3Transformer3DModel | 63.02 | minimax-h3
| | | pika-h3-flex
text_encoder_1397... | Qwen3VLForConditionalGeneration | 62.13 | minimax-h3
| | | pika-h3-flex
vae_1397... | AutoencoderKLMiniMaxH3 | 9.70 | minimax-h3
| | | pika-h3-flex
audio_vae_1397... | AutoencoderKLMiniMaxH3Audio | 0.56 | minimax-h3
| | | pika-h3-flex
Other Components:
ID | Class | Collection
scheduler_1397... | MiniMaxH3Scheduler | minimax-h3
audio_scheduler_1397... | MiniMaxH3Scheduler | minimax-h3
scheduler_1397... | MiniMaxH3Scheduler | pika-h3-flex
audio_scheduler_1397... | MiniMaxH3Scheduler | pika-h3-flex
tokenizer_1397... | Qwen2Tokenizer | minimax-h3
| | pika-h3-flex
processor_1397... | Qwen3VLProcessor | minimax-h3
| | pika-h3-flex
Additional Component Info:
transformer_1397...:
Adapters: ['default_0']
transformer_ref_13...:
Adapters: ['default_0']Các adapter quyết định xem các transformers dùng chung là mô hình nào. Để quay lại MiniMax-H3, hãy gọi pika.disable_lora(), và đó là tất cả: yêu cầu minimax(...) tiếp theo sẽ chạy mô hình gốc. pika.enable_lora() sẽ bật lại Pika H3 Flex. Không có gì được nạp lại trong khoảng thời gian đó; trình quản lý sẽ di chuyển từng thành phần lên và xuống bộ tăng tốc khi bất kỳ pipeline nào đến lượt nó.
Điểm khác biệt so với MiniMax-H3
- Sáu bước, không có
num_inference_steps. Cả hai instance MiniMaxH3Scheduler (shift=12.0cho video,shift=3.0cho audio) đều chạy vớistochastic_samplingtrên cấu hìnhdenoising_step_listcủa pipeline, theo lịch đã phát hành[1000, 750, 500, 250, 100, 40, 0]: mỗi bước dự đoán mẫu sạch, và tất cả các bước trừ bước cuối cùng sẽ thêm nhiễu mới vào mẫu đó để đưa về sigma tiếp theo. Số lượng bước là cam kết của adapter và không phải là một đầu vào. - Nhầm mới ở mỗi bước. Một yêu cầu lấy mẫu từ
generatorcủa nó theo một thứ tự cố định: một lần lấy mẫu cho mỗi keyframe hoặc tham chiếu hình ảnh cho nhiễu điều kiện, nhiễu video, nhiễu âm thanh, và sau đó là các lần lấy mẫu tái nhiễu video và âm thanh của mỗi bước trong năm bước đầu tiên. Truyềnlatentshoặcaudio_latentssẽ thay thế hai lần lấy mẫu ban đầu và giữ nguyên các lần còn lại. - Keyframe được cắt, không bị kéo giãn. Một keyframe
fl2vasẽ được cắt theo tâm để khớp với tỷ lệ khung hình của canvas ở độ phân giải của chính nó, sau đó được thay đổi kích thước để vừa với canvas. - Tham chiếu tuân theo cấp độ độ phân giải của canvas. Pika H3 Flex tạo ra trên một bảng bucket — một cấp 480p và một cấp 768p, mỗi cấp có mười một tỷ lệ khung hình — và một yêu cầu
ref2vađược điều kiện hóa theo cấp của canvas của nó: một hình ảnh tham chiếu được mã hóa ở cạnh ngắn 1024 pixel dưới cấp 768 và 2048 từ cấp đó trở lên, và một video tham chiếu được đặt theo quy tắc canvas của chính cấp đó. Mọi video hoặc âm thanh độc lập tham chiếu đều có độ dài từ 2 đến 15 giây, và tổng độ dài của các video và tổng độ dài của các âm thanh độc lập mỗi loại đều không vượt quá 15 giây.
Sinh
Các bucket đã phát hành là những canvas mà Pika H3 Flex được xác thực trên đó. Truyền một bucket làm height và width:
| 21:9 | 16:9 | 3:2 | 4:3 | 5:4 | 1:1 | 4:5 | 3:4 | 2:3 | 9:16 | 9:21 | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 480p | 960x416 | 832x480 | 704x480 | 640x480 | 608x480 | 480x480 | 480x608 | 480x640 | 480x704 | 480x832 | 416x960 |
| 768p | 1536x672 | 1344x768 | 1152x768 | 1024x768 | 960x768 | 768x768 | 768x960 | 768x1024 | 768x1152 | 768x1344 | 672x1536 |
import torch
from diffusers import ComponentsManager, ModularPipeline
from diffusers.utils import load_image
from diffusers.utils.export_utils import encode_video
# 61.7GB of transformer and 62.1GB of conditioner do not sit on one accelerator, so the components are
# registered in a manager that moves each one on and off as the blocks reach it.
manager = ComponentsManager()
manager.enable_auto_cpu_offload(device="cuda") # or "mps", "xpu", "cpu"
# Create one pipeline for all supported workflows, then load the `fl2va` workflow's components, which is
# enough to run both the fl2va and t2va requests below.
pipe = ModularPipeline.from_pretrained("Pika-Labs/Pika-H3-Flex", components_manager=manager)
pipe.load_components(
workflow="fl2va", dtype={"vae": torch.float32, "audio_vae": torch.float32, "default": torch.bfloat16}
)
pipe.load_lora_weights("Pika-Labs/Pika-H3-Flex", weight_name="fl2va/adapter.safetensors")
prompt = (
"integrated_multimodal_description: A cinematic close shot of a red ceramic cup on a wooden table beside an "
"open window. A soft breeze moves a linen curtain. The camera slowly pushes toward the cup as warm morning "
"light crosses the table.\n"
"overall_soundscape: Gentle wind through the window and faint birdsong outside. No speech.\n"
"non_diegetic_music: None.\n"
)
outputs = ["videos", "audio", "sampling_rate"]
# Text to video + audio on the 480p 16:9 bucket, 5 seconds.
results = pipe(
prompt=prompt,
height=480,
width=832,
num_frames=124,
generator=torch.Generator("cuda").manual_seed(42),
output=outputs
)
# First frame (and optionally `last_image`) to video + audio. The keyframe is center-cropped onto the canvas and
# held as the first frame, so the prompt describes the keyframe and what happens from it.
image = load_image(
"https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/astronaut.jpg"
)
i2va_prompt = (
"For the target video, at 0.00 seconds into the target video, <Picture 1> (from [Shot 1]) is fully referenced.\n\n"
"integrated_multimodal_description: [Shot 1] Begin with the supplied image of a small toy astronaut figurine "
"standing on a grey rocky moon surface, holding a white egg-shaped object. Preserve the figurine, its orange "
"visor and the rocks. The astronaut slowly turns its helmet toward the camera and lifts the egg a little; fine "
"dust drifts up around its boots. The camera slowly pushes in in one continuous shot. By the end the astronaut "
"stands still, egg held up.\n\n"
"overall_soundscape: Soft low wind and faint crunch of dust under the boots. No speech.\n\n"
"non_diegetic_music: N/A\n"
)
results = pipe(
prompt=i2va_prompt,
image=image,
height=480,
width=832,
num_frames=124,
generator=torch.Generator("cuda").manual_seed(42),
output=outputs,
)
encode_video(
results["videos"][0],
fps=24,
output_path="pika_h3_flex_fl2va.mp4",
audio=results["audio"][0],
audio_sample_rate=results["sampling_rate"],
)Workflow ref2va nhận một danh sách các tham chiếu có thứ tự — tối đa 9 hình ảnh, 3 video và 3 đoạn âm thanh, tổng cộng 12 — theo cách mà MiniMax-H3 thực hiện, với một lớp tham chiếu cho mỗi loại dữ liệu. Đây cũng là yêu cầu cần nhiều bộ nhớ nhất: các tham chiếu thêm hàng của chúng vào chuỗi, và ở độ phân giải 768p, riêng transformer đã lấp đầy một card 80 GB. Do đó, ví dụ bên dưới sẽ stream các khối của transformer từ bộ nhớ CPU một lần một, trong khi manager di chuyển các thành phần khác vào và ra khỏi thiết bị như trước. Nó chạy một yêu cầu tham chiếu 768p trên một card 80 GB; nếu không dùng streaming, hãy giữ ở 480p.
import torch
from diffusers import ComponentsManager, ModularPipeline
from diffusers.modular_pipelines.pika_h3_flex import (
PikaH3FlexAudioReference,
PikaH3FlexImageReference,
PikaH3FlexVideoReference,
)
manager = ComponentsManager()
manager.enable_auto_cpu_offload(device="cuda") # or "mps", "xpu", "cpu"
pipe = ModularPipeline.from_pretrained(
"Pika-Labs/Pika-H3-Flex", workflow="ref2va", components_manager=manager
)
pipe.load_components(dtype={"vae": torch.float32, "audio_vae": torch.float32, "default": torch.bfloat16})
pipe.load_lora_weights("Pika-Labs/Pika-H3-Flex", weight_name="ref2va/adapter.safetensors")
# Keep the transformer in CPU memory and bring in one block at a time while it runs.
pipe.transformer_ref.enable_group_offload(
onload_device=torch.device("cuda"),
offload_device=torch.device("cpu"),
offload_type="block_level",
num_blocks_per_group=1,
use_stream=True,
)
results = pipe(
prompt="subject_definitions: <Subject 1> is the woman in <Picture 1>. summary: [reference generation] <Subject 1> waves at the camera.",
references=[
PikaH3FlexImageReference.from_file("subject.png"),
PikaH3FlexVideoReference.from_file("motion_ref.mp4"), # frames, their `fps` and the soundtrack
PikaH3FlexAudioReference.from_file("voice.wav"), # waveform and its `sample_rate`
],
height=768,
width=1344,
num_frames=124,
generator=torch.Generator("cuda").manual_seed(42),
output=["videos", "audio", "sampling_rate"],
)PikaH3FlexModularPipeline
lớp diffusers.PikaH3FlexModularPipeline
< source >( blocks: diffusers.modular_pipelines.modular_pipeline.ModularPipelineBlocks | None = Nonepretrained_model_name_or_path: str | os.PathLike | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = Noneworkflow: str | None = Nonemodular_config_dict: dict[str, typing.Any] | None = Noneconfig_dict: dict[str, typing.Any] | None = None**kwargs )
Một ModularPipeline để tạo video + âm thanh kết hợp với Pika H3 Flex, mô hình MiniMax-H3 sáu bước sau huấn luyện: các luồng công việc t2va (chỉ văn bản) và fl2va (khung hình chính đầu và/hoặc cuối) đối với checkpoint phân vùng transformer/ với adapter fl2va, và luồng công việc ref2va (tham chiếu toàn diện) đối với transformer_ref/ với adapter ref2va.
Các thành phần cơ bản là của MiniMax-H3, và bản phát hành Pika H3 Flex là một cặp adapter LoRA rank-128 nằm trên hai phân vùng transformer, do đó một pipeline được lắp ráp theo hai bước: các thành phần được tải thông qua modular_model_index.json có tên các thành phần cơ bản và hai scheduler, và adapter của workflow được chọn được tải bằng load_lora_weights().
import torch
from diffusers import ModularPipeline
pipe = ModularPipeline.from_pretrained("Pika-Labs/Pika-H3-Flex", workflow="fl2va")
pipe.load_components(dtype={"vae": torch.float32, "audio_vae": torch.float32, "default": torch.bfloat16})
pipe.load_lora_weights("Pika-Labs/Pika-H3-Flex", weight_name="fl2va/adapter.safetensors")Giống như MiniMax-H3, Pika H3 Flex khử nhiễu một chuỗi đã đóng gói chứa đồng thời điều kiện văn bản, các latent điều kiện từ khung hình chính hoặc tham chiếu, các latent âm thanh và các latent video. Đó là lý do tại sao các khối truyền một bố cục hàng (row layout) thay vì các tensor theo từng phương thức (modality), và lý do tại sao pipeline mang theo hai trình lập lịch (scheduler) (shift = 12.0 cho video, shift = 3.0 cho âm thanh) được thực hiện trong một lần gọi transformer duy nhất. Khác với MiniMax-H3, hai trình lập lịch này là các instance của MiniMaxH3Scheduler với stochastic_sampling trên danh sách sáu bước khử nhiễu cố định denoising_step_list: không có num_inference_steps, và mỗi bước sẽ lấy một nhiễu mới từ generator của yêu cầu.
Các adapter được chưng cất theo hướng dẫn giống như mô hình gốc của chúng: không có guider, không có negative_prompt và không có guidance_scale, và mỗi bước chỉ chạy đúng một lần truyền thẳng.
Module này chứa các thông tin mô hình mà mọi khối đều dựa vào — hình học suy ra từ cấu hình dưới dạng các thuộc tính, canvas, phép tính phân cấp và số khung dưới dạng các hàm — trong khi các hợp đồng điều kiện, mã hóa và nhiễu được đặt trực tiếp trên chính các khối.
PikaH3FlexBlocks
Các khối pipeline Auto Modular cho việc tạo video + âm thanh đồng thời với Pika H3 Flex: các workflow t2va (chỉ văn bản), fl2va (khung hình chính đầu và/hoặc cuối) và ref2va (tham chiếu toàn diện), được chọn dựa trên các đầu vào references và khung hình chính. Các workflow t2va và fl2va chạy phân vùng transformer với adapter fl2va, còn ref2va chạy phân vùng transformer_ref với adapter ref2va, do đó hãy nạp adapter của workflow mà yêu cầu sử dụng.
Nếu không có workflow=, việc nạp các thành phần sẽ kéo cả hai phân vùng transformer 61.7GB — hãy truyền một trong số chúng để chỉ nạp những gì nhiệm vụ cần.
Các quy trình làm việc được hỗ trợ:
t2va: yêu cầupromptfl2va: yêu cầuprompt,imagehoặcprompt,last_imageref2va: yêu cầuprompt,references
Các thành phần:
image_processor (VaeImageProcessor) text_encoder (Qwen3VLForConditionalGeneration) tokenizer
(Qwen2Tokenizer) processor (Qwen3VLProcessor) vae (AutoencoderKLMiniMaxH3) audio_vae
(AutoencoderKLMiniMaxH3Audio) scheduler (MiniMaxH3Scheduler) audio_scheduler (MiniMaxH3Scheduler)
transformer_ref (MiniMaxH3Transformer3DModel) transformer (MiniMaxH3Transformer3DModel) video_processor
(VideoProcessor)
Configs: canvas_short_edge (mặc định: 768) canvas_max_pixels (mặc định: 1032192) denoising_step_list (mặc định: [1000, 750, 500, 250, 100, 40, 0])
Inputs:
references (list, tùy chọn):
Các tham chiếu để điều kiện hóa, theo thứ tự mà mô hình nên đọc chúng: thứ tự này gắn nhãn cho chúng trong cách trình bày prompt và bố trí chúng trên đồng hồ rotary chung, do đó một thứ tự khác sẽ là một yêu cầu khác. Mỗi dataclass cho một chế độ (modality), tất cả đều giữ phương tiện trong bộ nhớ — một PikaH3FlexImageReference (tối đa 9), một PikaH3FlexVideoReference với fps riêng của nó (tối đa 3, trong đó bản nhạc nền audio cũng được điều kiện hóa), hoặc một PikaH3FlexAudioReference với sample_rate riêng của nó (tối đa 3) — tổng cộng tối đa 12 tham chiếu, và các tham chiếu audio không thể là duy nhất. Mỗi tham chiếu video hoặc audio độc lập có độ dài từ 2 đến 15 giây, và tổng độ dài của các video và tổng độ dài của các audio độc lập mỗi loại đều tối đa 15 giây. Các khối này không bao giờ mở tệp phương tiện: hãy giải mã bằng classmethod from_file của từng lớp, điều này sẽ mang theo các tần số.
height (int, tùy chọn):
Chiều cao của video được tạo ra tính bằng pixel, phải là bội số của 32.
width (int, tùy chọn):
Chiều rộng của video được tạo ra tính bằng pixel, phải là bội số của 32.
num_frames (int, tùy chọn):
Số khung hình cần tạo ra, ở tốc độ cố định 24 fps: từ 120 đến 360, tức là từ 5 đến 15 giây, được làm tròn lên đến 17 * n + 5 gần nhất mà VAE của video có thể giải mã. Để tạo một video có độ dài bằng với bản nhạc nền tham chiếu, hãy truyền round(samples / sample_rate * 24).
image (Image, tùy chọn):
Khung hình chính (keyframe) mà video bắt đầu từ đó. Nó sẽ được cắt theo tâm để khớp với tỷ lệ khung hình của canvas và được thay đổi kích thước lên canvas; canvas mặc định được suy ra từ tỷ lệ khung hình của chính nó.
last_image (Image, tùy chọn):
Khung hình chính mà video kết thúc ở đó. Có thể truyền riêng để tạo đến một khung hình. Nó được cắt theo tâm để khớp với tỷ lệ khung hình của canvas và được thay đổi kích thước lên canvas, giống như image.
prompt (str):
Prompt để hướng dẫn quá trình tạo ra, là một chuỗi duy nhất.
normalized_references (list, tùy chọn):
Các tham chiếu đã được chuẩn hóa bởi bước thiết lập, theo thứ tự đóng gói.
keyframes (list, tùy chọn):
Các khung hình chính được đặt lên canvas đích, theo thứ tự đóng gói.
condition_latents (list, tùy chọn):
Các latent điều kiện hóa video đã được mã hóa, một latent cho mỗi tham chiếu hình ảnh và video theo thứ tự đóng gói. Hình dạng của chúng là nơi mà hình học của mỗi khối tham chiếu bắt nguồn.
audio_condition_latents (list, tùy chọn):
Các hàng latent điều kiện hóa audio đã được mã hóa, một hàng cho mỗi tham chiếu chứa audio theo thứ tự đóng gói.
generator (Generator, tùy chọn):
Trình tạo (generator) của yêu cầu. Nhiễu điều kiện hóa được lấy từ nó trước tiên, một lần lấy cho mỗi điều kiện, trước khi lấy nhiễu của các hàng được tạo ra.
latents (Tensor):
Nhiễu video được tạo trước có hình dạng (1, 24, num_latent_frames, latent_height, latent_width), được sử dụng thay cho việc lấy ngẫu nhiên.
audio_latents (Tensor):
Nhiễu audio được tạo trước có hình dạng (2, 32, num_audio_latents).
*denoiser_input_fields (None,tùy chọn):
Mô tả cấu trúc của chuỗi đóng gói mà transformer đọc theo tên: token_tags, position_ids và ba tensor chỉ số hàng.
attention_kwargs (dict,tùy chọn):
Các kwargs bổ sung cho các bộ xử lý attention.
keyframe_anchors (tuple,tùy chọn, mặc định là ()):
Đầu nào của video mà mỗi khung hình chính được neo vào, theo thứ tự đóng gói.
output_type (str,tùy chọn*, mặc định là pil):
Định dạng đầu ra: ‘pil’, ‘np’ hoặc ‘pt’.
Outputs:
videos (list):
Video được tạo ra.
audio (Tensor):
Âm thanh được tạo ra, có hình dạng (1, 2, num_samples).
sampling_rate (int):
Tần số lấy mẫu của âm thanh được tạo ra, tính bằng Hz.
PikaH3FlexImageReference
class diffusers.modular_pipelines.pika_h3_flex.PikaH3FlexImageReference
< source >( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor] )
Tham số
- image (
PIL.Image.Image,np.ndarrayhoặctorch.Tensor) — Hình ảnh tham chiếu: một hình ảnh, một mảng(height, width, 3)hoặc một tensor(3, height, width),uint8hoặc số dấu phẩy động trong khoảng[0, 1]. Nó không bao giờ ràng buộc hình học được tạo ra — nó được mã hóa ở cạnh ngắn của chính nó, 2048 đối với checkpoint đã phát hành, bất kể canvas mà yêu cầu tạo ra là gì.
Tham chiếu chủ thể, phong cách hoặc cảnh: tối đa 9 tham chiếu mỗi yêu cầu.
from_file
< source >( media )
Tải tệp ảnh vào PikaH3FlexImageReference, thông qua load_image().
PikaH3FlexVideoReference
class diffusers.modular_pipelines.pika_h3_flex.PikaH3FlexVideoReference
< source >( frames: typing.Union[list[PIL.Image.Image], numpy.ndarray, torch.Tensor]fps: float | None = Noneaudio: typing.Optional[torch.Tensor] = Nonesample_rate: int | None = None )
Tham số
- frames (
list[PIL.Image.Image],np.ndarrayhoặctorch.Tensor) — Các khung tham chiếu: một danh sách các hình ảnh, một mảng(num_frames, height, width, 3)hoặc một tensor(num_frames, 3, height, width),uint8hoặc số dấu phẩy động trong khoảng[0, 1]. - fps (
float, tùy chọn, mặc định là 24.0) — Tốc độ khung hình màframesmang theo, đây là yếu tố quyết định việc đặt các khối thị giác của tham chiếu lên lưới 2 fps của bộ điều kiện. Đồng hồ riêng của MiniMax-H3 là 24 fps, do đó bất kỳ tốc độ nào khác đều được lấy mẫu lại lên 24 fps bằng cách loại bỏ và nhân bản toàn bộ các khung hình — điều này khiến trường này trở thành nơi cần thiết lập chính xác khi các khung hình được lấy từ một tệp. - audio (
torch.Tensorcó hình dạng(channels, num_samples), tùy chọn) — Bản nhạc nền của video này, đơn âm hoặc stereo, được điều kiện như bản thân của tham chiếu chứ không phải như một tham chiếu riêng. Nếu bỏ qua, tham chiếu sẽ chỉ điều kiện dựa trên chuyển động. - sample_rate (
int, tùy chọn) — Tốc độ màaudiomang các mẫu của nó. Nếu bỏ trống, giá trị này sẽ là tốc độ riêng của VAE audio, khiến các mẫu không bị thay đổi; bất kỳ tốc độ nào khác sẽ được lấy mẫu lại lên tốc độ đó.
Tham chiếu chuyển động và máy quay: tối đa 3 mỗi yêu cầu, được điều kiện cùng với bản nhạc nền riêng của nó.
from_file
< source >( media ) → PikaH3FlexVideoReference
Giải mã tệp video thành PikaH3FlexVideoReference, với độ phân giải, tốc độ khung hình và âm thanh đi kèm.
Các tỷ lệ được đặt lên reference, đây chính là mục đích của việc giải mã theo cách này thay vì dùng load_video(): MiniMax-H3 sẽ lấy lại mẫu reference lên 24 fps của chính nó, do đó tỷ lệ khung hình bị mất trong quá trình đưa vào sẽ là một yêu cầu được điều kiện ở tốc độ sai, và không có gì để cảnh báo về điều đó. Một container có metadata sai sẽ được sửa bằng cách ghi đè fps hoặc sample_rate trên reference được trả về.
Cần PyAV.
PikaH3FlexAudioReference
lớp diffusers.modular_pipelines.pika_h3_flex.PikaH3FlexAudioReference
< source >( audio: Tensorsample_rate: int | None = None )
Tham số
- audio (
torch.Tensorcó hình dạng(channels, num_samples)) — Đường sóng tham chiếu, đơn âm hoặc stereo. - sample_rate (
int, tùy chọn) — Tốc độ màaudiomang các mẫu của nó. Nếu bỏ trống, giá trị này sẽ là tốc độ riêng của VAE audio, khiến các mẫu không bị thay đổi; bất kỳ tốc độ nào khác sẽ được lấy mẫu lại lên tốc độ đó.
Tham chiếu giọng nói hoặc nhạc: tối đa 3 tham chiếu mỗi yêu cầu, và không bao giờ đứng một mình — một tham chiếu âm thanh phải được ghép với ít nhất một tham chiếu hình ảnh hoặc video. Tham chiếu này không bao giờ đến bộ điều kiện (conditioner) và chỉ được mã hóa bởi VAE âm thanh.
from_file
< source >( media ) → PikaH3FlexAudioReference
Giải mã tệp âm thanh thành PikaH3FlexAudioReference, ở tốc độ lấy mẫu mà tệp mang theo.
Cần PyAV.