Diffusers documentation

Pika H3 Flex

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

Pika H3 Flex

LoRA

Pika H3 Flex هو تدريب ما بعد التدريب الذي أجرته Pika على MiniMax-H3 ليصبح مولّدًا للفيديو والصوت في ست خطوات. يحتفظ بترتيب MiniMax-H3 المكدّس، ومشروط Qwen3-VL الخاص به، ووحدي VAE الخاصين به، ويغيّر شيئين: العيّّان، وهو جدول ثابت من ست خطوات يعيد الضجيج للتنبؤ النظيف في كل خطوة بدلًا من تحديث Euler، والأوزان، وهي زوج من محوّلات LoRA ذات رتبة 128 فوق قسمي محوّل MiniMax-H3. يخرج الفيديو وموسيقاه الصوتية المجسّمة المتزامنة من نفس التمريرات الأمامية الست.

الإصدار هو المحوِّلات: محوِّل FL2VA (fl2va/adapter.safetensors) يقود قسم transformer/ لتكييف النص وإطار النهاية، ومحوِّل Ref2VA (ref2va/adapter.safetensors) يقود transformer_ref/ للإحالات متعددة الوسائط. المكوّنات الأساسية هي مكوّنات MiniMaxAI/MiniMax-H3 دون تغيير، ويحمل المستودع نسخة منها حتى يتم تحميله بشكل مستقل.

يُدمج Pika H3 Flex على شكل كتل Modular Diffusers فقط، تمامًا مثل MiniMax-H3: فالكُتل وPikaH3FlexModularPipeline الخاصة بها هي التكامل بأكمله، ولا يوجد نصف DiffusionPipeline.

جارٍ التحميل

يُجمَّع خط الأنابيب في خطوتين: تُحمَّل المكونات عبر modular_model_index.json الذي يحدد مكونات MiniMax-H3 الأساسية وإعدادات المجدولَين، ثم يُحمَّل مُكيِّف سير العمل المحدد فوقها باستخدام load_lora_weights(). المكيِّفات هي تصريفات PEFT عادية لأسماء وحدات diffusers وتُحمَّل بمقياسها المُدرَّب (alpha == rank، 1.0).

سير العملالمدخلاتتقسيم Transformerمحوّل
t2vaprompttransformer/fl2va/adapter.safetensors
fl2vaprompt وimage و/أو last_imagetransformer/fl2va/adapter.safetensors
ref2vaprompt وreferencestransformer_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")

عند تمرير سير العمل، يتم تقليم الكتل إلى تلك المهمة، بحيث يُجلب فقط قسم الترانسفورمر الخاص بها، ويوجّه المُكيّف (adapter) إلى القسم الوحيد الموجود، ويقبل خط الأنابيب (pipeline) طلبات تلك المهمة وحدها — فخط أنابيب fl2va يحتاج إلى إطار رئيسي (keyframe)، بينما لا يتطلب خط أنابيب t2va أي إطار. أما خط الأنابيب الذي يحتفظ بكلا القسمين (المحمّل دون workflow=) فيحتاج إلى تحديد مكان وضع مُكيّف Ref2VA: pipe.load_lora_weights(..., weight_name="ref2va/adapter.safetensors", load_into_transformer_ref=True). تُصدر كلا نموذجي VAE بدقة float32 ويُفكّ تشفيرهما بدقة float32، تمامًا كما يفعل الحزمة المُصدَرة؛ بينما يعمل كل ما عدا ذلك بدقة bfloat16.

pipe.doc يطبع ما يستقبله خط المعالجة أمامك وما يعيده — كل مدخل مع قيمته الافتراضية، والمكونات التي يتوقعها، والمخرجات التي ينتجها.

إعادة استخدام نموذج MiniMax-H3 المحمّل

المكوّنات الأساسية هي مكوّنات MiniMax-H3، لذا فإن خط أنابيب MiniMax-H3 المحمّل مسبقاً يحتفظ بكل شيء باستثناء المجدولين (Schedulers) والمُكيّفات (Adapters). يجمع هذا القسم خط أنابيب Pika H3 Flex من تلك المكوّنات المحمّلة، ويُبقي كلا الخطين جاهزين جنباً إلى جنب: حيث يحتفظ ComponentsManager بكل مكوّن مرة واحدة ويُحمّله (Offloads) لكلا الخطين، ويضيف خط أنابيب Pika H3 Flex مجديّه فقط، بينما تُقرر المُكيّفات أيّ نموذجين من النموذجين المشتركين ستشغّل محوّلات (Transformers) مشتركة.

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) يعرض النتيجة: يُذكر كل مكوّن مشترك مرة واحدة وينتمي إلى المجموعتين، وتضيف مجموعة Pika H3 Flex مجدولَيها، وتحمل التحوّلتان (transformers) مكيّفًا (adapter).

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

تحدد المُكيّفات النموذج الذي تتبناه وحدات التحويل المشتركة. للعودة إلى MiniMax-H3، استدعِ pika.disable_lora()، وهذا كل ما يلزم: فطلب minimax(...) التالي سيقوم بتشغيل النموذج الأساسي. يُعيد pika.enable_lora() تفعيل Pika H3 Flex. لا يتم إعادة تحميل أي شيء في الفترة الفاصلة؛ بل يقوم المُدير بنقل كل مكوّن إلى المُسرّع أو إزالته عنه كلما وصلت إحدى المسارات إليه.

ما يختلف عن MiniMax-H3

  • ست خطوات، بدون num_inference_steps. يعمل كلا مثيلي MiniMaxH3Scheduler (shift=12.0 للفيديو، shift=3.0 للصوت) مع stochastic_sampling عبر إعداد denoising_step_list في خط المعالجة، وهو الجدول المنشور [1000, 750, 500, 250, 100, 40, 0]: تتنبأ كل خطوة بالعينة النظيفة، وتُعاد إضافة الضوضاء إليها بضوضاء جديدة حتى سيجما التالية في جميع الخطوات عدا الأخيرة. عدد الخطوات هو عقد المكيّف وليس مدخلاً.
  • ضوضاء جديدة في كل خطوة. يستخرج الطلب من generator بترتيب ثابت: سحب واحد لكل إطار مرجعي أو مرجع بصري لضوضاء الشرط، وضوضاء الفيديو، وضوضاء الصوت، ثم سحب إعادة الضوضاء للفيديو والصوت لكل من الخطوات الخمس الأولى. تمرير latents أو audio_latents يستبدل السحبين الأوليين ويُبقي الباقي كما هو.
  • تُقتطع الإطارات الرئيسية ولا يتم تمديدها. يتم اقتطاع إطار رئيسي من نوع fl2va من المنتصف ليتناسب مع نسبة أبعاد اللوحة عند دقته الخاصة، ثم يُعاد تحجيمه ليملأ اللوحة.
  • تتبع المراجع فئة دقة اللوحة. يولّد Pika H3 Flex على جدول دلاء — فئة 480p وفئة 768p، مع أحد عشر نسبة عرض إلى ارتفاع لكل فئة — ويخضع طلب ref2va لشرط فئة لوحته: تُرمَّز صورة المرجع بحافة قصيرة 1024 بكسل تحت فئة 768 و2048 بكسل من تلك الفئة فما فوق، بينما يُوضع مرجع الفيديو على قاعدة اللوحة الخاصة بتلك الفئة. كل مرجع فيديو أو صوت مستقل يعمل لمدة تتراوح بين ثانيتين و15 ثانية، ومجموع مدد الفيديو ومدد الصوت المستقل لا يتجاوز 15 ثانية لكل منهما.

التوليد

الدلاء المُطلقة هي لوحات الرسم التي تم التحقق من Pika H3 Flex عليها. مرر أحدها كـheight وwidth:

21:916:93:24:35:41:14:53:42:39:169:21
480p960x416832x480704x480640x480608x480480x480480x608480x640480x704480x832416x960
768p1536x6721344x7681152x7681024x768960x768768x768768x960768x1024768x1152768x1344672x1536
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"],
)

يتعامل سير عمل ref2va مع قائمة مرتبة من المراجع — تصل إلى 9 صور، و3 مقاطع فيديو، و3 مقاطع صوتية، أي 12 عنصرًا إجمالًا — بالطريقة التي يتعامل بها MiniMax-H3، مع فئة مرجعية واحدة لكل نمط. وهو أيضًا الطلب الذي يتطلب أكبر قدر من الذاكرة: إذ تضيف المراجع صفوفها الخاصة إلى التسلسل، وعند دقة 768p يملأ المحول (transformer) وحده بطاقة ذاكرة سعتها 80 جيجابايت. لذلك، يبث المثال أدناه كتل المحول من ذاكرة المعالج المركزي (CPU) واحدة تلو الأخرى، بينما ينقل المدير المكونات الأخرى إلى الجهاز ومنه كما كان يفعل سابقًا. ينفذ هذا الطلب المرجعي بدقة 768p على بطاقة واحدة سعتها 80 جيجابايت؛ وبدون البث، ابقَ عند دقة 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

فئة diffusers.PikaH3FlexModularPipeline

< >

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

خط أنابيب ModularPipeline لتوليد الفيديو والصوت معًا باستخدام Pika H3 Flex، وهو نموذج MiniMax-H3 المدرّب بعد التدريب على ست خطوات: مسارات العمل t2va (نص فقط) وfl2va (إطار رئيسي أول و/أو أخير) مقابل نقطة التفتيش transformer/ مع مُكيّف fl2va، ومسار العمل ref2va (مرجع شامل) مقابل transformer_ref/ مع مُكيّف ref2va.

المكوّنات الأساسية هي مكوّنات MiniMax-H3، وإصدار Pika H3 Flex عبارة عن زوج من محوِّلات LoRA ذات رتبة 128 فوق تقسيمَي transformer، لذا يتم تجميع خط المعالجة في خطوتين: يتم تحميل المكوّنات عبر modular_model_index.json الذي يسمّي المكوّنات الأساسية والمجدولين اثنين، ويتم تحميل المحوّل الخاص بعملية العمل المختارة باستخدام 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")

على غرار MiniMax-H3، يقوم Pika H3 Flex بإزالة الضوضاء من تسلسل واحد مُجمَّع يحتضن في آنٍ واحد شروط النص، وكامنات شروط الإطار الرئيسي أو المرجع، وكامنات الصوت، وكامنات الفيديو، ولهذا السبب تمرر الكتل تخطيط صف بدلاً من متجهات لكل نمط، ولهذا السبب أيضاً يحمل خط الأنابيب مجدولين اثنين (shift = 12.0 للفيديو، وshift = 3.0 للصوت) يتم تشغيلهما داخل استدعاء واحد لتحويل الشبكات العصبية التحويلية. وعلى عكس MiniMax-H3، فإن المجدولين الاثنين هما من نوع MiniMaxH3Scheduler مع stochastic_sampling فوق قائمة خطوات إزالة الضوضاء الثابتة المكونة من ستة خطوات denoising_step_list: فلا يوجد num_inference_steps، بل يسحب كل خطوة ضوضاء جديدة من مولّد الطلب.

المُكيِّفات مُقطَّرة التوجيه مثل أساسها: لا يوجد موجِّه، ولا negative_prompt، ولا guidance_scale، وتُنفَّذ في كل خطوة تمريرة أمامية واحدة بالضبط.

يحمل هذا الوحدة حقائق النموذج التي تعتمد عليها كل وحدة فرعية — الهندسة المشتقة من الإعدادات كخصائص، والحسابات المتعلقة باللوحة والمستوى وعدد الإطارات كدوال — بينما تعيش عقود التكييف والتشفيش والضوضاء على الوحدات الفرعية نفسها.

PikaH3FlexBlocks

فئة diffusers.PikaH3FlexBlocks

< >

( )

كتل خط أنابيب Auto Modular لتوليد الفيديو والصوت معًا باستخدام Pika H3 Flex: مسارات العمل t2va (نص فقط)، وfl2va (إطار رئيسي أول و/أو أخير)، وref2va (مرجع شامل)، يتم اختيارها بناءً على مدخلات references والإطارات الرئيسية. تعمل مسارات العمل t2va وfl2va على قسم transformer باستخدام محوّل fl2va، بينما تعمل ref2va على قسم transformer_ref باستخدام محوّل ref2va، لذا حمّل المحوّل الخاص بمسار العمل الذي يتخذه الطلب. بدون تحديد workflow=، يؤدي تحميل المكونات إلى سحب كلا قسمي التحويل بحجم 61.7GB — مرّر أحد القسمين لتحميل ما يحتاجه المهمة فقط.

سير العمل المدعومة:

  • t2va: يتطلب prompt
  • fl2va: يتطلب prompt أو image أو prompt وlast_image
  • ref2va: يتطلب prompt، references

المكوّنات: 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)

الإعدادات: canvas_short_edge (الافتراضي: 768) canvas_max_pixels (الافتراضي: 1032192) denoising_step_list (الافتراضي: [1000, 750, 500, 250, 100, 40, 0])

المدخلات: references (list, اختياري): المراجع التي يُشترط عليها، بترتيب القراءة الذي يجب أن يتبعه النموذج: فترتيبها هو ما يحدد تسمياتها في عرض الموجّه ويحدد توزيعها على الساعة الدوّارة المشتركة، وبالتالي فإن أي ترتيب مختلف يُعد طلبًا مختلفًا. كل وحدة بيانات (dataclass) تتوافق مع نمط (modality) واحد، وكلها تحتفظ بوسائط في الذاكرة — إما PikaH3FlexImageReference (بحد أقصى 9)، أو PikaH3FlexVideoReference بمعدل إطارات fps خاص بها (بحد أقصى 3، حيث يُشترط أيضًا على المسار الصوتي audio الخاص بها)، أو PikaH3FlexAudioReference بمعدل أخذ عينات sample_rate خاص بها (بحد أقصى 3) — بإجمالي لا يتجاوز 12 مرجعًا، ولا يمكن أن تكون مراجع الصوت هي الوحيدة. كل مرجع فيديو أو مرجع صوت مستقل مدته من ثانيتين إلى 15 ثانية، ومجموع مدد الفيديو ومجموع مدد الصوت المستقل لا يتجاوز كل منهما 15 ثانية. هذه الكتل لا تفتح ملف وسائط أبدًا: استخدم طريقة الفئة from_file الخاصة بكل فئة لفك الترميز، وهي التي تجلب المعدلات معها. height (int, اختياري): ارتفاع الفيديو المولّد بالبكسل، ويجب أن يكون مضاعفًا للرقم 32. width (int, اختياري): عرض الفيديو المولّد بالبكسل، ويجب أن يكون مضاعفًا للرقم 32. num_frames (int, اختياري): عدد الإطارات التي سيتم توليدها، بمعدل ثابت 24 إطارًا في الثانية: من 120 إلى 360، أي من 5 إلى 15 ثانية، مع تقريبها لأعلى إلى أقرب قيمة من الشكل 17 * n + 5 يمكن لفك ترميز VAE للفيديو التعامل معها. لتوليد فيديو بطول المسار الصوتي المرجعي، مرّر round(samples / sample_rate * 24). image (Image, اختياري): الإطار المفتاحي الذي يبدأ منه الفيديو. يتم اقتطاعه من المنتصف ليتناسب مع نسبة أبعاد اللوحة (canvas) ثم يُعاد تحجيمه عليها؛ واللوحة مشتقة افتراضيًا من نسبة أبعاده الخاصة. last_image (Image, اختياري): الإطار المفتاحي الذي ينتهي عنده الفيديو. يمكن تمريره بمفرده لتوليد حتى إطار معين. يتم اقتطاعه من المنتصف ليتناسب مع نسبة أبعاد اللوحة ثم يُعاد تحجيمه عليها، تمامًا مثل image. prompt (str): الموجّه الذي يوجه عملية التوليد، وهو نص واحد. normalized_references (list, اختياري): المراجع بعد تطبيعها في خطوة الإعداد، بترتيب الحزم. keyframes (list, اختياري): الإطارات المفتاحية الموضوعة على لوحة الهدف، بترتيب الحزم. condition_latents (list, اختياري): متغيرات (latents) التكييف المرمزة للفيديو، واحدة لكل مرجع صورة وفيديو بترتيب الحزم. شكلها هو المصدر الذي تأتي منه هندسة كل كتلة مراجع. audio_condition_latents (list, اختياري): صفوف التكييف الصوتية المرمزة، واحدة لكل مرجع يحمل صوتًا بترتيب الحزم. generator (Generator, اختياري): المولّد الخاص بالطلب. يُسحب ضوضاء التكييف منه أولًا، بسحب واحد لكل شرط، قبل سحب ضوضاء الصفوف المولّدة. latents (Tensor): ضوضاء فيديو مولّدة مسبقًا بشكل (1, 24, num_latent_frames, latent_height, latent_width)، تُستخدم بدلًا من السحب. audio_latents (Tensor): ضوضاء صوت مولّدة مسبقًا بشكل (2, 32, num_audio_latents). *denoiser_input_fields (None,اختياري): الوصف الهيكلي للتسلسل المحزوم الذي يقرأه المحول (transformer) بالاسم: token_tags وposition_ids والمتجهات الثلاثة لمؤشرات الصفوف. attention_kwargs (dict,اختياري): معلمات إضافية لمعالجات الانتباه (attention processors). keyframe_anchors (tuple,اختياري, الافتراضي ()): أي طرف من الفيديو يُثبَّت عليه كل إطار مفتاحي، بترتيب الحزم. output_type (str,اختياري*، الافتراضي pil): صيغة الإخراج: ‘pil’ أو ‘np’ أو ‘pt’.

المخرجات: فيديوهات (list): الفيديو المولّد. صوت (Tensor): الموسيقى التصويرية المولّدة، ذات الشكل (1, 2, num_samples). معدل العينة (int): معدل عينة الموسيقى التصويرية المولّدة بالهرتز.

PikaH3FlexImageReference

class diffusers.modular_pipelines.pika_h3_flex.PikaH3FlexImageReference

< >

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

المعاملات

  • image (PIL.Image.Image أو np.ndarray أو torch.Tensor) — الصورة المرجعية: صورة، أو مصفوفة بأبعاد (height, width, 3)، أو متجه بأبعاد (3, height, width)، بنوع uint8 أو نقاط عائمة ضمن المدى [0, 1]. لا تُقيّد هذه الصورة أبداً الهندسة المولّدة — إذ يتم ترميزها على حافة قصيرة خاصة بها، بمقدار 2048 للنقطة المرجعية المُصدَرة، بغض النظر عن حجم اللوحة الذي تولّده الطلبات.

مرجع للموضوع أو الأسلوب أو المشهد: بحد أقصى 9 لكل طلب.

from_file

< >

( media )

المعاملات

  • media (str أو os.PathLike) — مسار الصورة أو رابطها.

حمّل ملف صورة إلى PikaH3FlexImageReference من خلال load_image().

PikaH3FlexVideoReference

class diffusers.modular_pipelines.pika_h3_flex.PikaH3FlexVideoReference

< >

( frames: typing.Union[list[PIL.Image.Image], numpy.ndarray, torch.Tensor]fps: float | None = Noneaudio: typing.Optional[torch.Tensor] = Nonesample_rate: int | None = None )

المعاملات

  • frames (list[PIL.Image.Image] أو np.ndarray أو torch.Tensor) — الإطارات المرجعية: قائمة من الصور، أو مصفوفة بأبعاد (num_frames, height, width, 3)، أو متجه بأبعاد (num_frames, 3, height, width)، من نوع uint8 أو أرقام عشرية ضمن المدى [0, 1].
  • fps (float, اختياري، القيمة الافتراضية 24.0) — معدل الإطارات الذي تحمله frames، وهو ما يحدد موضع كتل الرؤية الخاصة بالمرجع على شبكة 2 fps الخاصة بالمشروط. الساعة الداخلية الخاصة بـ MiniMax-H3 هي 24 fps، لذا يتم إعادة أخذ عينات أي معدل آخر عليها عن طريق حذف وتكرار إطارات كاملة — مما يجعل هذا الحقل هو ما يجب ضبطه بشكل صحيح عندما تكون الإطارات قد جاءت من ملف.
  • audio (torch.Tensor من الشكل (channels, num_samples)، اختياري) — موسيقى هذا الفيديو، أحادية أو ستيريو، تُشترط كمرجع خاص بها وليس كمرجع مستقل. عند إهمالها، يُشترط المرجع على الحركة فقط.
  • sample_rate (int, اختياري) — المعدل الذي تنقل به audio عيناتها. إذا تُرك دون تحديد، فهو معدل VAE الصوتي نفسه، مما يترك العينات دون تغيير؛ أما أي معدل آخر فيتم إعادة أخذ عينات الصوت عليه.

مرجع للحركة والكاميرا: بحد أقصى 3 لكل طلب، مشروطًا معًا مع موسيقاه الخاصة.

from_file

< >

( media ) → PikaH3FlexVideoReference

المعاملات

  • media (str أو os.PathLike) — مسار أو عنوان URL للفيديو.

يعيد

PikaH3FlexVideoReference

الإطارات (num_frames, height, width, 3) من نوع uint8 بمعدل الإطارات الذي يبلّغ عنه الحاوية، مع حملها لمسار الصوت ومعدل عينات ذلك المسار عندما يحتوي على تدفق صوتي.

فكّ ترميز ملف فيديو إلى PikaH3FlexVideoReference، بالدقة ومعدل الإطارات والموسيقى التصويرية التي يحملها.

تستقر المعدّلات على المرجع، وهذا هو الهدف من فك الترميز بهذه الطريقة بدلاً من load_video(): يعيد MiniMax-H3 أخذ عينات من المرجع بمعدّل 24 إطاراً في الثانية الخاص به، لذا فإن معدل الإطارات المفقود أثناء الإدخال هو طلب مشروط بسرعة خاطئة، ولا يوجد ما يُثار بشأنه. يتم تصحيح الحاوية التي بياناتها الوصفية خاطئة عن طريق تجاوز fps أو sample_rate على المرجع المُعاد.

يتطلب PyAV.

PikaH3FlexAudioReference

class diffusers.modular_pipelines.pika_h3_flex.PikaH3FlexAudioReference

< >

( audio: Tensorsample_rate: int | None = None )

المعاملات

  • audio (torch.Tensor من الشكل (channels, num_samples)) — الموجة المرجعية، أحادية أو ستيريو.
  • sample_rate (int, اختياري) — المعدل الذي تنقل به audio عيناتها. إذا تُرك دون تحديد، فهو معدل VAE الصوتي نفسه، مما يترك العينات دون تغيير؛ أما أي معدل آخر فيتم إعادة أخذ عينات الصوت عليه.

مرجع صوتي أو موسيقي: بحد أقصى 3 لكل طلب، ولا يُستخدم أبدًا بمفرده — إذ يجب أن يُقرن المرجع الصوتي بمرجع صورة أو فيديو واحد على الأقل. لا يصل هذا المرجع إلى المُشكِّل (conditioner) بل يُرمَّز بواسطة VAE الصوتي وحده.

from_file

< >

( media ) → PikaH3FlexAudioReference

المعاملات

  • media (str أو os.PathLike) — مسار أو عنوان URL للصوت، أو لفيديو يُستخرج منه المسار الصوتي.

يعيد

PikaH3FlexAudioReference

موجة الصوت (channels, num_samples) من نوع float32 عند معدل العينة الذي يبلّغ عنه الحاوية.

فكّ ترميز ملف صوتي إلى PikaH3FlexAudioReference، بمعدل العينة الذي يحمله.

يتطلب PyAV.

Update on GitHub