Diffusers documentation

EasyAnimate

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

EasyAnimate

EasyAnimate من Alibaba PAI.

الوصف من صفحتها على GitHub: EasyAnimate هو خط أنابيب مبني على بنية transformer، مصمم لتوليد الصور والفيديوهات بالذكاء الاصطناعي، ولتدريب النماذج الأساسية ونماذج Lora الخاصة بـ Diffusion Transformer. ندعم التنبؤ المباشر من النماذج EasyAnimate المُدرَّبة مسبقًا، مما يتيح توليد فيديوهات بدقة مختلفة، بطول يقارب 6 ثوانٍ، بمعدل 8fps (EasyAnimateV5.1، من 1 إلى 49 إطارًا). بالإضافة إلى ذلك، يمكن للمستخدمين تدريب نماذجهم الأساسية ونماذج Lora الخاصة بهم لتحويلات أنماط محددة.

تمت مساهمة خط المعالجة هذا بواسطة bubbliiiing. يمكن العثور على قاعدة الكود الأصلية هنا. يمكن العثور على الأوزان الأصلية تحت hf.co/alibaba-pai.

توجد نقطتا تفتيش رسميتان لـ EasyAnimate، إحداهما لتحويل النص إلى فيديو والأخرى لتحويل الفيديو إلى فيديو.

نقاط التفتيشنوع البيانات الموصى به للاستدلال
alibaba-pai/EasyAnimateV5.1-12b-zhtorch.float16
alibaba-pai/EasyAnimateV5.1-12b-zh-InPtorch.float16

يتوفر نقطة تفتيش رسمية واحدة لـ EasyAnimate مخصصة لتحويل الصور إلى فيديو وتحويل الفيديو إلى فيديو.

نقاط التفتيشنوع البيانات الموصى به للاستدلال
alibaba-pai/EasyAnimateV5.1-12b-zh-InPtorch.float16

يتوفر نقطتا تفتيش رسميتان لـ EasyAnimate للتحكم في الفيديو.

نقاط التفتيشنوع البيانات الموصى به للاستدلال
alibaba-pai/EasyAnimateV5.1-12b-zh-Controltorch.float16
alibaba-pai/EasyAnimateV5.1-12b-zh-Control-Cameratorch.float16

لسلسلة EasyAnimateV5.1:

  • يعمل توليد الفيديو من النص (T2V) وتوليد الفيديو من الصورة (I2V) على دقات متعددة. يمكن أن تتراوح الأبعاد (العرض والارتفاع) بين 256 و1024.
  • تدعم كلٌّ من نماذج T2V وI2V التوليد بعدد إطارات يتراوح بين 1 و49، وتعمل بشكل أفضل عند هذا العدد. يُنصح بتصدير الفيديوهات بمعدل 8 إطارات في الثانية.

التكميم

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

راجع نظرة عامة حول التكميم لمعرفة المزيد حول محركات التكميم المدعومة واختيار محرك تكميم يدعم حالتك الاستخدامية. يوضح المثال أدناه كيفية تحميل EasyAnimatePipeline مُكمَّم للاستدلال باستخدام bitsandbytes.

import torch
from diffusers import BitsAndBytesConfig as DiffusersBitsAndBytesConfig, EasyAnimateTransformer3DModel, EasyAnimatePipeline
from diffusers.utils import export_to_video

quant_config = DiffusersBitsAndBytesConfig(load_in_8bit=True)
transformer_8bit = EasyAnimateTransformer3DModel.from_pretrained(
    "alibaba-pai/EasyAnimateV5.1-12b-zh",
    subfolder="transformer",
    quantization_config=quant_config,
    dtype=torch.float16,
)

pipeline = EasyAnimatePipeline.from_pretrained(
    "alibaba-pai/EasyAnimateV5.1-12b-zh",
    transformer=transformer_8bit,
    dtype=torch.float16,
    device_map="balanced",
)

prompt = "A cat walks on the grass, realistic style."
negative_prompt = "bad detailed"
video = pipeline(prompt=prompt, negative_prompt=negative_prompt, num_frames=49, num_inference_steps=30).frames[0]
export_to_video(video, "cat.mp4", fps=8)

EasyAnimatePipeline

فئة diffusers.EasyAnimatePipeline

< >

( vae: AutoencoderKLMagvittext_encoder: transformers.models.qwen2_vl.modeling_qwen2_vl.Qwen2VLForConditionalGeneration | transformers.models.bert.modeling_bert.BertModeltokenizer: transformers.models.qwen2.tokenization_qwen2.Qwen2Tokenizer | transformers.models.bert.tokenization_bert.BertTokenizertransformer: EasyAnimateTransformer3DModelscheduler: FlowMatchEulerDiscreteScheduler )

المعاملات

  • vae (AutoencoderKLMagvit) — نموذج الترميز التحويلي التلقائي (VAE) لتشفير وفك تشفير الفيديو إلى تمثيلات كامنة ومنها.
  • text_encoder (~transformers.Qwen2VLForConditionalGeneration، ~transformers.BertModel | None) — يستخدم EasyAnimate qwen2 vl في الإصدار V5.1.
  • tokenizer (~transformers.Qwen2Tokenizer, ~transformers.BertTokenizer | None) — Qwen2Tokenizer أو BertTokenizer لتجزئة النص.
  • transformer (EasyAnimateTransformer3DModel) — نموذج EasyAnimate الذي صممه فريق EasyAnimate.
  • scheduler (FlowMatchEulerDiscreteScheduler) — جدول زمني يُستخدم بالاقتران مع EasyAnimate لإزالة الضوضاء من كائنات الصورة المُرمّزة.

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

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

يستخدم EasyAnimate مُشفّر نص واحد qwen2 vl في الإصدار V5.1.

__call__

< >

( prompt: str | list[str] = Nonenum_frames: int | None = 49height: int | None = 512width: int | None = 512num_inference_steps: int | None = 50guidance_scale: float | None = 5.0negative_prompt: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float | None = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonetimesteps: list[int] | None = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_attention_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecallback_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']guidance_rescale: float = 0.0 ) → StableDiffusionPipelineOutput or tuple

المعاملات

  • prompt (str أو list[str]، اختياري) — نصوص التوجيه (Prompts) التي تُوجّه توليد الصورة أو الفيديو. إذا لم تُقدَّم، فاستخدم prompt_embeds بدلاً منها.
  • num_frames (int, اختياري) — طول الفيديو المولّد (بالإطارات).
  • height (int، اختياري) — ارتفاع الصورة المولّدة بالبكسل.
  • width (int، اختياري) — عرض الصورة المولدة بالبكسل.
  • num_inference_steps (int، اختياري، القيمة الافتراضية 50) — عدد خطوات إزالة الضوضاء أثناء التوليد. تؤدي زيادة عدد الخطوات بشكل عام إلى صور بجودة أعلى، لكنها تُبطئ الاستدلال.
  • guidance_scale (float، اختياري، القيمة الافتراضية 5.0) — يشجّع النموذج على مواءمة المخرجات مع الأوامر النصية. قد يؤدي رفع القيمة إلى انخفاض جودة الصورة.
  • negative_prompt (str أو list[str]، اختياري) — موجّهات تُحدّد ما يجب استبعاده في التوليد. إذا لم يُحدَّد، يُستخدم negative_prompt_embeds.
  • num_images_per_prompt (int، اختياري، القيمة الافتراضية 1) — عدد الصور التي سيتم توليدها لكل موجه.
  • eta (float، اختياري، القيمة الافتراضية 0.0) — ينطبق على جدولة DDIM. يتحكم به معامل eta من الأدبيات ذات الصلة.
  • generator (torch.Generator أو list[torch.Generator]، اختياري) — مولّد لضمان قابلية التكرار في توليد الصور.
  • latents (torch.Tensor، اختياري) — مصفوفات كامنة محددة مسبقًا لتوجيه عملية التوليد.
  • prompt_embeds (torch.Tensor، اختياري) — تضمينات النص للموجّهات. تتجاوز مدخلات نصوص الموجّهات لمنح مرونة أكبر.
  • negative_prompt_embeds (torch.Tensor، اختياري) — تضمينات (Embeddings) للأوامر السلبية. تتجاوز المدخلات النصية إذا تم تعريفها.
  • prompt_attention_mask (torch.Tensor، اختياري) — قناع الانتباه لتضمينات الموجه الأساسي.
  • negative_prompt_attention_mask (torch.Tensor، اختياري) — قناع الانتباه لتضمينات الموجه السلبي.
  • output_type (str، اختياري، الافتراضي “latent”) — صيغة المخرجات المولّدة، إما كصورة PIL أو كمصفوفة NumPy.
  • return_dict (bool، اختياري، القيمة الافتراضية True) — إذا كانت True، تُرجع مخرجات منظمة. وإلا تُرجع مجموعة بسيطة.
  • callback_on_step_end (Callable، اختياري) — الدوال التي تُستدعى في نهاية كل خطوة إزالة ضوضاء.
  • callback_on_step_end_tensor_inputs (list[str]، اختياري) — أسماء المصفوفات (Tensors) التي يجب تضمينها في استدعاءات دالة الاستدعاء (callback).
  • guidance_rescale (float، اختياري، القيمة الافتراضية 0.0) — يُعدّل مستويات الضوضاء بناءً على مقياس التوجيه.
  • timesteps (list[int]، اختياري) — خطوات زمنية مخصصة لاستخدامها في عملية إزالة الضوضاء. إذا لم تُعرَّف، يتم استخدام الجدول الافتراضي للمجدول لـ num_inference_steps.

يعيد

StableDiffusionPipelineOutput أو tuple

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

يولّد صورًا أو فيديو باستخدام خط أنابيب EasyAnimate بناءً على الأوامر النصية المقدمة.

أمثلة:

>>> import torch
>>> from diffusers import EasyAnimatePipeline
>>> from diffusers.utils import export_to_video

>>> # Models: "alibaba-pai/EasyAnimateV5.1-12b-zh"
>>> pipe = EasyAnimatePipeline.from_pretrained(
...     "alibaba-pai/EasyAnimateV5.1-7b-zh-diffusers", torch_dtype=torch.float16
... ).to("cuda")
>>> prompt = (
...     "A panda, dressed in a small, red jacket and a tiny hat, sits on a wooden stool in a serene bamboo forest. "
...     "The panda's fluffy paws strum a miniature acoustic guitar, producing soft, melodic tunes. Nearby, a few other "
...     "pandas gather, watching curiously and some clapping in rhythm. Sunlight filters through the tall bamboo, "
...     "casting a gentle glow on the scene. The panda's face is expressive, showing concentration and joy as it plays. "
...     "The background includes a small, flowing stream and vibrant green foliage, enhancing the peaceful and magical "
...     "atmosphere of this unique musical performance."
... )
>>> sample_size = (512, 512)
>>> video = pipe(
...     prompt=prompt,
...     guidance_scale=6,
...     negative_prompt="bad detailed",
...     height=sample_size[0],
...     width=sample_size[1],
...     num_inference_steps=50,
... ).frames[0]
>>> export_to_video(video, "output.mp4", fps=8)

encode_prompt

< >

( prompt: str | list[str]num_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_attention_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.Tensor] = Nonedevice: typing.Optional[torch.device] = Nonedtype: typing.Optional[torch.dtype] = Nonemax_sequence_length: int = 256 )

المعاملات

  • prompt (str أو list[str]، اختياري) — الموجّه الذي سيتم ترميزه
  • device — (torch.device): جهاز torch
  • dtype (torch.dtype) — نوع بيانات torch
  • num_images_per_prompt (int) — عدد الصور التي يجب توليدها لكل موجه
  • do_classifier_free_guidance (bool) — ما إذا كان سيتم استخدام classifier free guidance أم لا
  • negative_prompt (str أو list[str]، اختياري) — الموجّه أو الموجّهات التي لا ينبغي استخدامها لتوجيه توليد الصورة. إذا لم يُعرَّف، يجب تمرير negative_prompt_embeds بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا كان guidance_scale أقل من 1).
  • prompt_embeds (torch.Tensor، اختياري) — تضمينات نصية مُولَّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الموجه. إذا لم تُقدَّم، فسيتم توليد تضمينات النص من معامل الإدخال prompt.
  • negative_prompt_embeds (torch.Tensor، اختياري) — تضمينات نصية سلبية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الموجه. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخال negative_prompt.
  • prompt_attention_mask (torch.Tensor، اختياري) — قناع الانتباه للموجّه. مطلوب عند تمرير prompt_embeds مباشرةً.
  • negative_prompt_attention_mask (torch.Tensor، اختياري) — قناع الانتباه (Attention mask) الخاص بالموجّه السلبي. مطلوب عند تمرير negative_prompt_embeds مباشرةً.
  • max_sequence_length (int، اختياري) — أقصى طول تسلسل يُستخدم للموجّه.

يقوم بتشفير الموجه إلى حالات مخفية لمشفّر النص.

EasyAnimatePipelineOutput

فئة diffusers.pipelines.easyanimate.pipeline_output.EasyAnimatePipelineOutput

< >

( frames: Tensor )

المعاملات

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

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

Update on GitHub