Buckets:
مرخّص بموجب ترخيص Apache الإصدار 2.0 (المسمى "الترخيص")
لا يجوز لك استخدام هذا الملف إلا وفقاً لشروط الترخيص.
يمكنك الحصول على نسخة من الترخيص في
http://www.apache.org/licenses/LICENSE-2.0
ما لم يقتضِ ذلك القانون المعمول به أو ما اتُّفق عليه كتابياً، البرمجيات
تُوزَّع بموجب الرخصة على أساس "كما هي"،
بلا أي ضمانات أو شروط من أي نوع، سواء صريحة أو ضمنية.
راجع الترخيص لمعرفة اللغة المحددة التي تحكم الصلاحيات و
الشروط المحددة في الترخيص.
-->
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-zh |
torch.float16 |
alibaba-pai/EasyAnimateV5.1-12b-zh-InP |
torch.float16 |
يتوفر نقطة تفتيش رسمية واحدة لـ EasyAnimate مخصصة لتحويل الصور إلى فيديو وتحويل الفيديو إلى فيديو.
| نقاط التفتيش | نوع البيانات الموصى به للاستدلال |
|---|---|
alibaba-pai/EasyAnimateV5.1-12b-zh-InP |
torch.float16 |
يتوفر نقطتا تفتيش رسميتان لـ EasyAnimate للتحكم في الفيديو.
| نقاط التفتيش | نوع البيانات الموصى به للاستدلال |
|---|---|
alibaba-pai/EasyAnimateV5.1-12b-zh-Control |
torch.float16 |
alibaba-pai/EasyAnimateV5.1-12b-zh-Control-Camera |
torch.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]]
diffusers.EasyAnimatePipeline[[diffusers.EasyAnimatePipeline]]
diffusers.EasyAnimatePipeline(vae: AutoencoderKLMagvit, text_encoder: transformers.models.qwen2_vl.modeling_qwen2_vl.Qwen2VLForConditionalGeneration | transformers.models.bert.modeling_bert.BertModel, tokenizer: transformers.models.qwen2.tokenization_qwen2.Qwen2Tokenizer | transformers.models.bert.tokenization_bert.BertTokenizer, transformer: EasyAnimateTransformer3DModel, scheduler: 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[[diffusers.EasyAnimatePipeline.call]]
__call__(prompt: str | list[str] = None, num_frames: int | None = 49, height: int | None = 512, width: int | None = 512, num_inference_steps: int | None = 50, guidance_scale: float | None = 5.0, negative_prompt: str | list[str] | None = None, num_images_per_prompt: int | None = 1, eta: float | None = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, timesteps: list[int] | None = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_attention_mask: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], guidance_rescale: float = 0.0)
المعاملات:
prompt (str أو list[str]، اختياري) : نصوص إرشادية لتوجيه توليد الصورة أو الفيديو. إذا لم تُقدَّم، فاستخدم 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، اختياري) : تمثيلات نصية (embeddings) للأوامر (prompts). يتجاوز مدخلات نصوص الأوامر لمنح مرونة أكبر.
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]، اختياري) : أسماء الموترات التي سيتم تضمينها في استدعاءات دالة الاستدعاء.
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[[diffusers.EasyAnimatePipeline.encode_prompt]]
encode_prompt(prompt: str | list[str], num_images_per_prompt: int = 1, do_classifier_free_guidance: bool = True, negative_prompt: str | list[str] | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_attention_mask: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, device: typing.Optional[torch.device] = None, dtype: typing.Optional[torch.dtype] = None, max_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) : ما إذا كان سيتم استخدام التوجيه الحر للتصنيف أم لا
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]]
diffusers.pipelines.easyanimate.pipeline_output.EasyAnimatePipelineOutput[[diffusers.pipelines.easyanimate.pipeline_output.EasyAnimatePipelineOutput]]
diffusers.pipelines.easyanimate.pipeline_output.EasyAnimatePipelineOutput(frames: Tensor)
المعاملات:
frames (torch.Tensor أو np.ndarray أو list[list[PIL.Image.Image]]) : قائمة من مخرجات الفيديو - يمكن أن تكون قائمة متداخلة بطول batch_size, حيث تحتوي كل قائمة فرعية على تسلسلات من صور PIL منزوعة الضوضاء بطول num_frames. كما يمكن أن تكون مصفوفة NumPy أو متجه Torch بشكل (batch_size, num_frames, channels, height, width).
فئة الإخراج لخطوط أنابيب EasyAnimate.
Xet Storage Details
- Size:
- 19.3 kB
- Xet hash:
- 78952d45b7103c0da51fb17b6011be0557084a0f8475dd58446d6ea82545156b
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.