Diffusers documentation

Framepack

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

Framepack

LoRA

تعبئة سياق إطار الإدخال في نماذج التنبؤ بالإطار التالي لتوليد الفيديو بقلم Lvmin Zhang و Maneesh Agrawala.

نقدّم بنية شبكة عصبية، FramePack، لتدريب نماذج التنبؤ بالإطار التالي (أو قسم الإطار التالي) لتوليد الفيديو. تقوم FramePack بضغط الإطارات المدخلة لجعل طول سياق المحوّل (transformer) رقمًا ثابتًا بغض النظر عن طول الفيديو. ونتيجةً لذلك، أصبح بإمكاننا معالجة عدد كبير من الإطارات باستخدام الانتشار (diffusion) للفيديو مع عنق زجاجة حسابية مماثلة لتلك الموجودة في انتشار الصور. كما يؤدي ذلك إلى رفع أحجام دفعات التدريب للفيديو بشكل كبير (حيث تصبح أحجام الدفعات قابلة للمقارنة مع تدريب انتشار الصور). كما نقترح طريقة أخذ عينات مضادة للانجراف (anti-drifting) تولّد الإطارات بترتيب زمني معكوس مع نقاط نهاية تُحدَّد مبكرًا لتجنب تحيز التعرض (تراكم الأخطاء عبر التكرارات). أخيرًا، نوضح أنه يمكن ضبط نماذج انتشار الفيديو الحالية باستخدام FramePack، وقد تتحسن جودتها البصرية لأن التنبؤ بالإطار التالي يدعم جدولة انتشار أكثر توازنًا مع خطوات زمن (timesteps) لإزاحة التدفق أقل تطرفًا.

تأكد من الاطلاع على دليل المجدولين لمعرفة كيفية استكشاف التوازن بين سرعة المجدول وجودة النتائج، واطّلع على قسم إعادة استخدام المكونات عبر خطوط الأنابيب لمعرفة كيفية تحميل نفس المكونات بكفاءة في خطوط أنابيب متعددة.

النماذج المتاحة

اسم النموذجالوصف
- lllyasviel/FramePackI2V_HYتم تدريبه باستخدام استراتيجية "منع الانحراف المعكوس" كما هو موصوف في الورقة البحثية. يتطلب الاستدلال ضبط sampling_type="inverted_anti_drifting" عند تشغيل خط الأنابيب.
- lllyasviel/FramePack_F1_I2V_HY_20250503تم تدريب النموذج باستخدام استراتيجية جديدة لمكافحة الانحراف، لكن الاستدلال يتم باستخدام الاستراتيجية "الصافية" كما هو موضح في الورقة البحثية. يتطلب الاستدلال تعيين sampling_type="vanilla" عند تشغيل خط الأنابيب.

الاستخدام

راجع توثيق خط الأنابيب لمزيد من أمثلة الاستخدام الأساسية. يحتوي القسم التالي على أمثلة على تفريغ الأحمال، وطرق أخذ العينات المختلفة، والتكميم، والمزيد.

الإطار الأول والأخير إلى فيديو

يُظهر المثال التالي كيفية استخدام Framepack مع عناصر التحكم في صورة البداية وصورة النهاية، باستخدام نموذج أخذ العينات المعكوس المضاد للانجراف.

import torch
from diffusers import HunyuanVideoFramepackPipeline, HunyuanVideoFramepackTransformer3DModel
from diffusers.utils import export_to_video, load_image
from transformers import SiglipImageProcessor, SiglipVisionModel

transformer = HunyuanVideoFramepackTransformer3DModel.from_pretrained(
    "lllyasviel/FramePackI2V_HY", dtype=torch.bfloat16
)
feature_extractor = SiglipImageProcessor.from_pretrained(
    "lllyasviel/flux_redux_bfl", subfolder="feature_extractor"
)
image_encoder = SiglipVisionModel.from_pretrained(
    "lllyasviel/flux_redux_bfl", subfolder="image_encoder", dtype=torch.float16
)
pipe = HunyuanVideoFramepackPipeline.from_pretrained(
    "hunyuanvideo-community/HunyuanVideo",
    transformer=transformer,
    feature_extractor=feature_extractor,
    image_encoder=image_encoder,
    dtype=torch.float16,
)

# Enable memory optimizations
pipe.enable_model_cpu_offload()
pipe.vae.enable_tiling()

prompt = "CG animation style, a small blue bird takes off from the ground, flapping its wings. The bird's feathers are delicate, with a unique pattern on its chest. The background shows a blue sky with white clouds under bright sunshine. The camera follows the bird upward, capturing its flight and the vastness of the sky from a close-up, low-angle perspective."
first_image = load_image(
    "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/flf2v_input_first_frame.png"
)
last_image = load_image(
    "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/flf2v_input_last_frame.png"
)
output = pipe(
    image=first_image,
    last_image=last_image,
    prompt=prompt,
    height=512,
    width=512,
    num_frames=91,
    num_inference_steps=30,
    guidance_scale=9.0,
    generator=torch.Generator().manual_seed(0),
    sampling_type="inverted_anti_drifting",
).frames[0]
export_to_video(output, "output.mp4", fps=30)

العينة الأساسية

يُظهر المثال التالي كيفية استخدام Framepack مع نموذج F1 المُدرَّب باستخدام العينة الأساسية (vanilla sampling) لكن مع نهج تنظيم جديد لمنع الانجراف (anti-drifting).

import torch
from diffusers import HunyuanVideoFramepackPipeline, HunyuanVideoFramepackTransformer3DModel
from diffusers.utils import export_to_video, load_image
from transformers import SiglipImageProcessor, SiglipVisionModel

transformer = HunyuanVideoFramepackTransformer3DModel.from_pretrained(
    "lllyasviel/FramePack_F1_I2V_HY_20250503", dtype=torch.bfloat16
)
feature_extractor = SiglipImageProcessor.from_pretrained(
    "lllyasviel/flux_redux_bfl", subfolder="feature_extractor"
)
image_encoder = SiglipVisionModel.from_pretrained(
    "lllyasviel/flux_redux_bfl", subfolder="image_encoder", dtype=torch.float16
)
pipe = HunyuanVideoFramepackPipeline.from_pretrained(
    "hunyuanvideo-community/HunyuanVideo",
    transformer=transformer,
    feature_extractor=feature_extractor,
    image_encoder=image_encoder,
    dtype=torch.float16,
)

# Enable memory optimizations
pipe.enable_model_cpu_offload()
pipe.vae.enable_tiling()

image = load_image(
    "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/penguin.png"
)
output = pipe(
    image=image,
    prompt="A penguin dancing in the snow",
    height=832,
    width=480,
    num_frames=91,
    num_inference_steps=30,
    guidance_scale=9.0,
    generator=torch.Generator().manual_seed(0),
    sampling_type="vanilla",
).frames[0]
export_to_video(output, "output.mp4", fps=30)

تفريغ المجموعات

توفر ميزة تفريغ المجموعات (apply_group_offloading()) تحسينات ذاكرة جذرية لتفريغ الأجزاء الداخلية لأي نموذج إلى وحدة المعالجة المركزية (CPU)، مع احتمال عدم وجود أي تكلفة إضافية على زمن التوليد. إذا كان لديك ذاكرة عرضية (VRAM) منخفضة جداً، فقد يكون هذا النهج مناسباً لك اعتماداً على كمية ذاكرة الوصول العشوائي (RAM) المتاحة في وحدة المعالجة المركزية.

import torch
from diffusers import HunyuanVideoFramepackPipeline, HunyuanVideoFramepackTransformer3DModel
from diffusers.hooks import apply_group_offloading
from diffusers.utils import export_to_video, load_image
from transformers import SiglipImageProcessor, SiglipVisionModel

transformer = HunyuanVideoFramepackTransformer3DModel.from_pretrained(
    "lllyasviel/FramePack_F1_I2V_HY_20250503", dtype=torch.bfloat16
)
feature_extractor = SiglipImageProcessor.from_pretrained(
    "lllyasviel/flux_redux_bfl", subfolder="feature_extractor"
)
image_encoder = SiglipVisionModel.from_pretrained(
    "lllyasviel/flux_redux_bfl", subfolder="image_encoder", dtype=torch.float16
)
pipe = HunyuanVideoFramepackPipeline.from_pretrained(
    "hunyuanvideo-community/HunyuanVideo",
    transformer=transformer,
    feature_extractor=feature_extractor,
    image_encoder=image_encoder,
    dtype=torch.float16,
)

# Enable group offloading
onload_device = torch.device("cuda")
offload_device = torch.device("cpu")
list(map(
    lambda x: apply_group_offloading(x, onload_device, offload_device, offload_type="leaf_level", use_stream=True, low_cpu_mem_usage=True),
    [pipe.text_encoder, pipe.text_encoder_2, pipe.transformer]
))
pipe.image_encoder.to(onload_device)
pipe.vae.to(onload_device)
pipe.vae.enable_tiling()

image = load_image(
    "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/penguin.png"
)
output = pipe(
    image=image,
    prompt="A penguin dancing in the snow",
    height=832,
    width=480,
    num_frames=91,
    num_inference_steps=30,
    guidance_scale=9.0,
    generator=torch.Generator().manual_seed(0),
    sampling_type="vanilla",
).frames[0]
print(f"Max memory: {torch.cuda.max_memory_allocated() / 1024**3:.3f} GB")
export_to_video(output, "output.mp4", fps=30)

HunyuanVideoFramepackPipeline

فئة diffusers.HunyuanVideoFramepackPipeline

< >

( text_encoder: LlamaModeltokenizer: LlamaTokenizertransformer: HunyuanVideoFramepackTransformer3DModelvae: AutoencoderKLHunyuanVideoscheduler: FlowMatchEulerDiscreteSchedulertext_encoder_2: CLIPTextModeltokenizer_2: CLIPTokenizerimage_encoder: SiglipVisionModelfeature_extractor: SiglipImageProcessorPil )

المعاملات

  • text_encoder (LlamaModel) — Llava Llama3-8B.
  • tokenizer (LlamaTokenizer) — مُقسِّم من Llava Llama3-8B.
  • transformer (HunyuanVideoTransformer3DModel) — نموذج Transformer مشروط لإزالة الضوضاء من كامنات الصورة المُرمّزة.
  • scheduler (FlowMatchEulerDiscreteScheduler) — جدول زمني يُستخدم بالاقتران مع transformer لإزالة الضوضاء من كائنات الصورة المُرمّزة.
  • vae (AutoencoderKLHunyuanVideo) — نموذج الترميز التبايني التلقائي (VAE) لتشفير وفك تشفير مقاطع الفيديو إلى تمثيلات كامنة ومنها.
  • text_encoder_2 (CLIPTextModel) — CLIP، وتحديداً التنوع clip-vit-large-patch14.
  • tokenizer_2 (CLIPTokenizer) — مُقسِّم من الفئة CLIPTokenizer.

خط أنابيب لتوليد الفيديو من النص باستخدام HunyuanVideo.

يرث هذا النموذج من DiffusionPipeline. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة المُنفَّذة لجميع خطوط الأنابيب (التنزيل، الحفظ، التشغيل على جهاز معين، إلخ).

__call__

< >

( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]last_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneprompt: str | list[str] = Noneprompt_2: str | list[str] = Nonenegative_prompt: str | list[str] = Nonenegative_prompt_2: str | list[str] = Noneheight: int = 720width: int = 1280num_frames: int = 129latent_window_size: int = 9num_inference_steps: int = 50sigmas: list = Nonetrue_cfg_scale: float = 1.0guidance_scale: float = 6.0num_videos_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Noneimage_latents: typing.Optional[torch.Tensor] = Nonelast_image_latents: typing.Optional[torch.Tensor] = Noneprompt_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] = Noneoutput_type: str | None = 'pil'return_dict: bool = Trueattention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']prompt_template: dict = {'template': '<|start_header_id|>system<|end_header_id|>\n\nDescribe the video by detailing the following aspects: 1. The main content and theme of the video.2. The color, shape, size, texture, quantity, text, and spatial relationships of the objects.3. Actions, events, behaviors temporal relationships, physical movement changes of the objects.4. background environment, light, style and atmosphere.5. camera angles, movements, and transitions used in the video:<|eot_id|><|start_header_id|>user<|end_header_id|>\n\n{}<|eot_id|>', 'crop_start': 95}max_sequence_length: int = 256sampling_type: FramepackSamplingType = <FramepackSamplingType.INVERTED_ANTI_DRIFTING: 'inverted_anti_drifting'> ) → ~HunyuanVideoFramepackPipelineOutput or tuple

المعاملات

  • image (PIL.Image.Image أو np.ndarray أو torch.Tensor) — الصورة التي سيتم استخدامها كنقطة انطلاق لتوليد الفيديو.
  • last_image (PIL.Image.Image أو np.ndarray أو torch.Tensor، اختياري) — الصورة الأخيرة الاختيارية التي تُستخدم كنقطة نهاية لتوليد الفيديو. هذا مفيد لتوليد انتقالات بين صورتين.
  • prompt (str أو list[str]، اختياري) — الموجّه أو الموجّهات التي توجّه توليد الصورة. إذا لم يُعرَّف، يجب تمرير prompt_embeds بدلاً من ذلك.
  • prompt_2 (str أو list[str]، اختياري) — الموجّه أو الموجّهات المرسل إلى tokenizer_2 وtext_encoder_2. إذا لم يُعرَّف، فسيتم استخدام prompt بدلاً منه.
  • negative_prompt (str أو list[str]، اختياري) — الموجّه أو الموجّهات التي لا ينبغي استخدامها لتوجيه توليد الصورة. إذا لم يُعرَّف، يجب تمرير negative_prompt_embeds بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا لم يكن true_cfg_scale أكبر من 1).
  • negative_prompt_2 (str أو list[str]، اختياري) — الموجّه أو الموجّهات التي لا ينبغي توجيه توليد الصورة إليها، والتي تُرسل إلى tokenizer_2 و text_encoder_2. إذا لم يُعرَّف، يُستخدم negative_prompt في جميع مُشفّرات النص.
  • height (int، القيمة الافتراضية 720) — ارتفاع الصورة المولّدة بالبكسل.
  • width (int، القيمة الافتراضية 1280) — عرض الصورة المولّدة بالبكسل.
  • num_frames (int، القيمة الافتراضية 129) — عدد الإطارات في الفيديو المولّد.
  • latent_window_size (int، القيمة الافتراضية 9) — عدد إطارات الكامنة (latent frames) التي يتم إنتاجها لكل نافذة أخذ عينات Framepack.
  • num_inference_steps (int، القيمة الافتراضية 50) — عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة بجودة أعلى على حساب بطء الاستدلال.
  • sigmas (list[float]، اختياري) — قيم sigmas مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معامل sigmas في طريقة set_timesteps الخاصة بهم. إذا لم يُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمرير num_inference_steps.
  • true_cfg_scale (float، اختياري، القيمة الافتراضية 1.0) — عندما تكون القيمة > 1.0 مع توفير negative_prompt، يتم تفعيل التوجيه الحر الحقيقي من التصنيف.
  • guidance_scale (float، القيمة الافتراضية 6.0) — مقياس التوجيه كما هو مُعرَّف في Classifier-Free Diffusion Guidance. يُعرَّف guidance_scale على أنه w في المعادلة 2 من Imagen Paper. يتم تفعيل مقياس التوجيه عن طريق تعيين guidance_scale > 1. كلما زاد مقياس التوجيه، شجّع ذلك على توليد صور مرتبطة ارتباطًا وثيقًا بـ prompt النصي، وعادةً على حساب انخفاض جودة الصورة. لاحظ أن النموذج الوحيد المتاح لـ HunyuanVideo هو نموذج مُقطَّر CFG، مما يعني أنه لا يُطبَّق التوجيه التقليدي بين الحالة الكامنة غير الشرطية والحالة الكامنة الشرطية.
  • num_videos_per_prompt (int، اختياري، القيمة الافتراضية 1) — عدد الصور التي سيتم توليدها لكل موجه.
  • generator (torch.Generator أو list[torch.Generator]، اختياري) — torch.Generator لجعل التوليد حتميًا.
  • image_latents (torch.Tensor، اختياري) — كائنات الصورة المُرمّزة مسبقًا. إذا لم تُقدَّم، فسيتم ترميز الصورة باستخدام VAE.
  • last_image_latents (torch.Tensor، اختياري) — كائنات الصورة الأخيرة المُرمّزة مسبقًا. إذا لم تُقدَّم، فسيتم ترميز الصورة الأخيرة باستخدام VAE.
  • prompt_embeds (torch.Tensor، اختياري) — تضمينات نصية مُولَّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة (مثل وزن الموجهات). إذا لم تُقدَّم، يتم توليد التضمينات النصية من معامل الإدخال prompt.
  • pooled_prompt_embeds (torch.FloatTensor، اختياري) — تضمينات نصية مجمّعة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الموجه. إذا لم تُقدَّم، فسيتم توليد تضمينات النص المجمّعة من معامل الإدخال prompt.
  • negative_prompt_embeds (torch.FloatTensor، اختياري) — تضمينات نصية سلبية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الموجه. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخال negative_prompt.
  • negative_pooled_prompt_embeds (torch.FloatTensor، اختياري) — تضمينات نصية مجمعة سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن المحفّز. إذا لم تُقدَّم، فسيتم توليد تضمينات negative_prompt_embeds المجمعة من معامل الإدخال negative_prompt.
  • prompt_attention_mask (torch.Tensor، اختياري) — قناع الانتباه (Attention mask) الخاص بـprompt_embeds. مطلوب عند تمرير prompt_embeds مباشرة.
  • negative_prompt_attention_mask (torch.Tensor، اختياري) — قناع الانتباه (Attention mask) الخاص بـnegative_prompt_embeds. مطلوب عند تمرير negative_prompt_embeds مباشرة.
  • output_type (str، اختياري، الافتراضي "pil") — صيغة مخرجات الصورة المولّدة. اختر بين PIL.Image أو np.array.
  • return_dict (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب إرجاع HunyuanVideoFramepackPipelineOutput بدلاً من tuple عادي.
  • attention_kwargs (dict، اختياري) — قاموس kwargs يُمرَّر إلى AttentionProcessor إذا تم تحديده، كما هو معرَّف تحت self.processor في diffusers.models.attention_processor.
  • prompt_template (dict, اختياري) — القالب المستخدم لتنسيق الموجه قبل الترميز. الافتراضي هو قالب النموذج الافتراضي.
  • max_sequence_length (int، اختياري، القيمة الافتراضية 256) — أقصى طول تسلسل يُستخدم لمشفّر الاستعلام.
  • sampling_type (FramepackSamplingType، اختياري) — استراتيجية أخذ العينات Framepack المستخدمة عند التكرار على نوافذ الكامنة.
  • callback_on_step_end (Callable، PipelineCallback، MultiPipelineCallbacks، اختياري) — دالة أو فئة فرعية من PipelineCallback أو MultiPipelineCallbacks تُستدعى في نهاية كل خطوة إزالة ضوضاء أثناء الاستدلال، مع الحُجج التالية: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). ستتضمن callback_kwargs قائمة بجميع المصفوفات كما حددتها callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list، اختياري) — قائمة مدخلات المصفوفات (tensors) لدالة callback_on_step_end. سيتم تمرير المصفوفات المحددة في القائمة كحجة callback_kwargs. لن تتمكن من تضمين متغيرات غير مدرجة في خاصية ._callback_tensor_inputs لفئة خط الأنابيب (pipeline) الخاص بك.

يعيد

~HunyuanVideoFramepackPipelineOutput أو tuple

إذا كان return_dict هو True، يُعاد HunyuanVideoFramepackPipelineOutput، وإلا يُعاد tuple يكون عنصره الأول قائمة بالصور المولّدة وعنصره الثاني قائمة من قيم bool تشير إلى ما إذا كانت الصورة المولّدة المقابلة تحتوي على محتوى “غير آمن للعمل” (nsfw).

دالة الاستدعاء call لخط الأنابيب pipeline الخاص بالتوليد.

أمثلة:

من الصورة إلى الفيديو
>>> import torch
>>> from diffusers import HunyuanVideoFramepackPipeline, HunyuanVideoFramepackTransformer3DModel
>>> from diffusers.utils import export_to_video, load_image
>>> from transformers import SiglipImageProcessor, SiglipVisionModel

>>> transformer = HunyuanVideoFramepackTransformer3DModel.from_pretrained(
...     "lllyasviel/FramePackI2V_HY", torch_dtype=torch.bfloat16
... )
>>> feature_extractor = SiglipImageProcessor.from_pretrained(
...     "lllyasviel/flux_redux_bfl", subfolder="feature_extractor"
... )
>>> image_encoder = SiglipVisionModel.from_pretrained(
...     "lllyasviel/flux_redux_bfl", subfolder="image_encoder", torch_dtype=torch.float16
... )
>>> pipe = HunyuanVideoFramepackPipeline.from_pretrained(
...     "hunyuanvideo-community/HunyuanVideo",
...     transformer=transformer,
...     feature_extractor=feature_extractor,
...     image_encoder=image_encoder,
...     torch_dtype=torch.float16,
... )
>>> pipe.vae.enable_tiling()
>>> pipe.to("cuda")

>>> image = load_image(
...     "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/penguin.png"
... )
>>> output = pipe(
...     image=image,
...     prompt="A penguin dancing in the snow",
...     height=832,
...     width=480,
...     num_frames=91,
...     num_inference_steps=30,
...     guidance_scale=9.0,
...     generator=torch.Generator().manual_seed(0),
...     sampling_type="inverted_anti_drifting",
... ).frames[0]
>>> export_to_video(output, "output.mp4", fps=30)
صورة البداية وصورة النهاية إلى فيديو
>>> import torch
>>> from diffusers import HunyuanVideoFramepackPipeline, HunyuanVideoFramepackTransformer3DModel
>>> from diffusers.utils import export_to_video, load_image
>>> from transformers import SiglipImageProcessor, SiglipVisionModel

>>> transformer = HunyuanVideoFramepackTransformer3DModel.from_pretrained(
...     "lllyasviel/FramePackI2V_HY", torch_dtype=torch.bfloat16
... )
>>> feature_extractor = SiglipImageProcessor.from_pretrained(
...     "lllyasviel/flux_redux_bfl", subfolder="feature_extractor"
... )
>>> image_encoder = SiglipVisionModel.from_pretrained(
...     "lllyasviel/flux_redux_bfl", subfolder="image_encoder", torch_dtype=torch.float16
... )
>>> pipe = HunyuanVideoFramepackPipeline.from_pretrained(
...     "hunyuanvideo-community/HunyuanVideo",
...     transformer=transformer,
...     feature_extractor=feature_extractor,
...     image_encoder=image_encoder,
...     torch_dtype=torch.float16,
... )
>>> pipe.to("cuda")

>>> prompt = "CG animation style, a small blue bird takes off from the ground, flapping its wings. The bird's feathers are delicate, with a unique pattern on its chest. The background shows a blue sky with white clouds under bright sunshine. The camera follows the bird upward, capturing its flight and the vastness of the sky from a close-up, low-angle perspective."
>>> first_image = load_image(
...     "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/flf2v_input_first_frame.png"
... )
>>> last_image = load_image(
...     "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/flf2v_input_last_frame.png"
... )
>>> output = pipe(
...     image=first_image,
...     last_image=last_image,
...     prompt=prompt,
...     height=512,
...     width=512,
...     num_frames=91,
...     num_inference_steps=30,
...     guidance_scale=9.0,
...     generator=torch.Generator().manual_seed(0),
...     sampling_type="inverted_anti_drifting",
... ).frames[0]
>>> export_to_video(output, "output.mp4", fps=30)

HunyuanVideoPipelineOutput

فئة diffusers.pipelines.hunyuan_video.pipeline_output.HunyuanVideoPipelineOutput

< >

( frames: Tensor )

المعاملات

  • frames (torch.Tensor أو np.ndarray أو قائمة[قائمة[PIL.Image.Image]]) — قائمة من مخرجات الفيديو - يمكن أن تكون قائمة متداخلة بطول batch_size, حيث تحتوي كل قائمة فرعية على سلاسل صور PIL منزوعة الضوضاء بطول num_frames. كما يمكن أن تكون مصفوفة NumPy أو متجه Torch بشكل (batch_size, num_frames, channels, height, width).

فئة الإخراج لخطوط أنابيب HunyuanVideo.

Update on GitHub