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

Alibaba PAI tarafından geliştirilen EasyAnimate.

GitHub sayfasındaki açıklama: EasyAnimate, Diffusion Transformer için temel modellerin ve Lora modellerinin eğitimi ile yapay zeka görsel ve video üretimi için tasarlanmış, transformer mimarisine dayalı bir iş akışıdır. Ön-eğitilmiş EasyAnimate modellerinden doğrudan tahmin yapmayı destekliyoruz; bu sayede çeşitli çözünürlüklerde, yaklaşık 6 saniye uzunluğunda ve 8fps hızında (EasyAnimateV5.1, 1 ila 49 kare) videolar üretilebilir. Ayrıca kullanıcılar, belirli stil dönüşümleri için kendi temel ve Lora modellerini eğitebilir.

Bu pipeline bubbliiiing tarafından katkı sağlanmıştır. Orijinal kod tabanı burada bulunabilir. Orijinal ağırlıklar hf.co/alibaba-pai altında bulunabilir.

Metinden videoya ve videodan videoya dönüştürme için EasyAnimate'ın iki resmi kontrol noktası (checkpoint) bulunmaktadır.

kontrol noktalarıönerilen çıkarım veri türü
alibaba-pai/EasyAnimateV5.1-12b-zhtorch.float16
alibaba-pai/EasyAnimateV5.1-12b-zh-InPtorch.float16

Görselden videoya ve videodan videoya dönüştürme için kullanılabilir tek resmi EasyAnimate kontrol noktası bulunmaktadır.

kontrol noktalarıönerilen çıkarım veri türü
alibaba-pai/EasyAnimateV5.1-12b-zh-InPtorch.float16

Kontrolten videoya dönüştürme için EasyAnimate için iki resmi checkpoint mevcuttur.

kontrol noktalarıönerilen çıkarım veri türü
alibaba-pai/EasyAnimateV5.1-12b-zh-Controltorch.float16
alibaba-pai/EasyAnimateV5.1-12b-zh-Control-Cameratorch.float16

EasyAnimateV5.1 serisi için:

  • Metinden videoya (T2V) ve görüntüden videoya (I2V) birden çok çözünürlükte çalışır. Genişlik ve yükseklik 256 ile 1024 arasında değişebilir.
  • Hem T2V hem de I2V modelleri 1~49 kare ile üretim destekler ve bu değerlerde en iyi sonucu verir. Videoların 8 FPS olarak dışa aktarılması önerilir.

Kantizasyon

Kantizasyon, model ağırlıklarını daha düşük hassasiyetli bir veri türünde saklayarak çok büyük modellerin bellek gereksinimlerini azaltmaya yardımcı olur. Ancak kantizasyonun video kalitesi üzerindeki etkisi, video modeline göre değişebilir.

Desteklenen kuantizasyon arka uçları ve kullanım durumunu destekleyen bir kuantizasyon arka ucunu seçme hakkında daha fazla bilgi edinmek için Quantization genel bakışına başvurun. Aşağıdaki örnek, bitsandbytes ile çıkarım için kuantize edilmiş bir EasyAnimatePipeline yüklemenin nasıl yapılacağını göstermektedir.

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

sınıf 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 )

Parametreler

  • vae (AutoencoderKLMagvit) — Videoyu latent temsillere kodlamak ve bu temsillerden çözmek için kullanılan Varyasyonel Oto-Kodlayıcı (VAE) Modeli.
  • text_encoder (~transformers.Qwen2VLForConditionalGeneration, ~transformers.BertModel | None) — EasyAnimate, V5.1 sürümünde qwen2 vl kullanır.
  • tokenizer (~transformers.Qwen2Tokenizer, ~transformers.BertTokenizer | None) — Metni tokenleştirmek için bir Qwen2Tokenizer veya BertTokenizer.
  • transformer (EasyAnimateTransformer3DModel) — EasyAnimate Team tarafından tasarlanan EasyAnimate modeli.
  • scheduler (FlowMatchEulerDiscreteScheduler) — EasyAnimate ile birlikte kullanılarak kodlanmış görüntü latentlerinin gürültüsünü azaltmak için kullanılacak bir zamanlayıcı.

EasyAnimate kullanılarak metinden videoya üretim için Pipeline.

Bu model DiffusionPipeline sınıfından devralır. Kütüphanenin tüm pipeline'lar için uyguladığı genel yöntemler (indirme veya kaydetme, belirli bir cihazda çalıştırma vb.) için üst sınıf belgelendirmesine bakın.

EasyAnimate, V5.1'de qwen2 vl adlı tek bir metin kodlayıcı kullanır.

__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

Parametreler

  • prompt (str veya list[str], isteğe bağlı) — Görsel veya video üretimini yönlendirmek için metin istemleri. Sağlanmazsa bunun yerine prompt_embeds kullanılır.
  • num_frames (int, isteğe bağlı) — Oluşturulan videonun uzunluğu (kare cinsinden).
  • height (int, isteğe bağlı) — Oluşturulan görüntünün piksel cinsinden yüksekliği.
  • width (int, isteğe bağlı) — Oluşturulan görüntünün piksel cinsinden genişliği.
  • num_inference_steps (int, isteğe bağlı, varsayılan 50) — Üretim sırasında gürültü azaltma adım sayısı. Daha fazla adım genellikle daha yüksek kaliteli görüntüler üretir ancak çıkarımı yavaşlatır.
  • guidance_scale (float, isteğe bağlı, varsayılan 5.0) — Modelin çıktıları istemlerle hizalamasını teşvik eder. Daha yüksek bir değer, görüntü kalitesini düşürebilir.
  • negative_prompt (str veya list[str], isteğe bağlı) — Üretimde nelerin hariç tutulacağını gösteren istemler. Belirtilmezse negative_prompt_embeds kullanılır.
  • num_images_per_prompt (int, isteğe bağlı, varsayılan 1) — Her istem için oluşturulacak görsel sayısı.
  • eta (float, isteğe bağlı, varsayılan 0.0) — DDIM zamanlamasına uygulanır. İlgili literatürdeki eta parametresi tarafından kontrol edilir.
  • generator (torch.Generator veya list[torch.Generator], isteğe bağlı) — Görsel üretiminde tekrarlanabilirliği sağlamak için bir üreteç.
  • latents (torch.Tensor, isteğe bağlı) — Üretimi koşullandırmak için önceden tanımlanmış latent tensörler.
  • prompt_embeds (torch.Tensor, isteğe bağlı) — İfadeler için metin gömme değerleri. Daha fazla esneklik için ifade girdilerini geçersiz kılar.
  • negative_prompt_embeds (torch.Tensor, isteğe bağlı) — Negatif istemler için gömme değerleri. Tanımlıysa, dize girdilerini geçersiz kılar.
  • prompt_attention_mask (torch.Tensor, isteğe bağlı) — Birincil istek gömme vektörleri için dikkat maskesi.
  • negative_prompt_attention_mask (torch.Tensor, isteğe bağlı) — Negatif prompt gömme verileri için dikkat maskesi.
  • output_type (str, isteğe bağlı, varsayılan “latent”) — Oluşturulan çıktının biçimi, PIL görüntüsü veya NumPy dizisi olarak.
  • return_dict (bool, isteğe bağlı, varsayılan True) — True ise yapılandırılmış bir çıktı döndürür. Aksi halde basit bir demet döndürür.
  • callback_on_step_end (Callable, isteğe bağlı) — Her gürültü azaltma adımının sonunda çağrılan işlevler.
  • callback_on_step_end_tensor_inputs (list[str], isteğe bağlı) — Callback fonksiyon çağrılarında dahil edilecek tensor adları.
  • guidance_rescale (float, isteğe bağlı, varsayılan 0.0) — Rehberlik ölçeğine göre gürültü seviyelerini ayarlar.
  • timesteps (list[int], isteğe bağlı) — Gürültü azaltma süreci için kullanılacak özel zaman adımları. Tanımlanmamışsa, num_inference_steps için zamanlayıcının varsayılan zamanlaması kullanılır.

Dönüş değeri

StableDiffusionPipelineOutput veya tuple

return_dict True ise StableDiffusionPipelineOutput döndürülür, aksi halde bir tuple döndürülür; bu tuple'ın ilk öğesi üretilen görsellerin listesini, ikinci öğesi ise üretile görselin “not-safe-for-work” (nsfw) içerip içermediğini gösteren bool değerlerinin listesini içerir.

Sağlanan istemlere dayanarak EasyAnimate hattını kullanarak görüntü veya video üretir.

Örnekler:

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

Parametreler

  • prompt (str veya list[str], isteğe bağlı) — kodlanacak prompt
  • device — (torch.device): torch cihazı
  • dtype (torch.dtype) — torch veri türü
  • num_images_per_prompt (int) — her prompt için oluşturulacak görsel sayısı
  • do_classifier_free_guidance (bool) — classifier free guidance kullanılacak mı
  • negative_prompt (str veya list[str], isteğe bağlı) — Görsel üretimini yönlendirmemek için kullanılan istem veya istemler. Tanımlanmamışsa, bunun yerine negative_prompt_embeds parametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında (yani guidance_scale değeri 1'den küçükse) yok sayılır.
  • prompt_embeds (torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. prompt ağırlıklandırma. Sağlanmazsa, metin gömme değerleri prompt girdi argümanından oluşturulur.
  • negative_prompt_embeds (torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş negatif metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, negative_prompt_embeds, negative_prompt girdi argümanından oluşturulur.
  • prompt_attention_mask (torch.Tensor, isteğe bağlı) — Prompt için dikkat maskesi. prompt_embeds doğrudan geçirildiğinde gereklidir.
  • negative_prompt_attention_mask (torch.Tensor, isteğe bağlı) — Negatif prompt için dikkat maskesi. negative_prompt_embeds doğrudan geçirildiğinde gereklidir.
  • max_sequence_length (int, isteğe bağlı) — istem için kullanılacak maksimum dizi uzunluğu.

İsteği metin kodlayıcı gizli durumlarına kodlar.

EasyAnimatePipelineOutput

sınıf diffusers.pipelines.easyanimate.pipeline_output.EasyAnimatePipelineOutput

< >

( frames: Tensor )

Parametreler

  • frames (torch.Tensor, np.ndarray veya list[list[PIL.Image.Image]]) — video çıktıları listesi - batch_size, uzunluğunda iç içe geçmiş bir liste olabilir; her alt liste, num_frames. uzunluğunda gürültüsü azaltılmış PIL görüntü dizileri içerir. Ayrıca (batch_size, num_frames, channels, height, width) biçiminde bir NumPy dizisi veya Torch tensörü de olabilir.

EasyAnimate pipeline'leri için çıktı sınıfı.

Update on GitHub