Diffusers documentation
EasyAnimate
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-zh | torch.float16 |
alibaba-pai/EasyAnimateV5.1-12b-zh-InP | torch.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-InP | torch.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-Control | torch.float16 |
alibaba-pai/EasyAnimateV5.1-12b-zh-Control-Camera | torch.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
< source >( 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 birQwen2TokenizerveyaBertTokenizer. - 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__
< source >( 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 (
strveyalist[str], isteğe bağlı) — Görsel veya video üretimini yönlendirmek için metin istemleri. Sağlanmazsa bunun yerineprompt_embedskullanı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 (
strveyalist[str], isteğe bağlı) — Üretimde nelerin hariç tutulacağını gösteren istemler. Belirtilmezsenegative_prompt_embedskullanı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.Generatorveyalist[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ılanTrue) —Trueise 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_stepsiç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
< source >( 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 (
strveyalist[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 (
strveyalist[str], isteğe bağlı) — Görsel üretimini yönlendirmemek için kullanılan istem veya istemler. Tanımlanmamışsa, bunun yerinenegative_prompt_embedsparametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında (yaniguidance_scaledeğeri1'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ğerleripromptgirdi 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_promptgirdi argümanından oluşturulur. - prompt_attention_mask (
torch.Tensor, isteğe bağlı) — Prompt için dikkat maskesi.prompt_embedsdoğrudan geçirildiğinde gereklidir. - negative_prompt_attention_mask (
torch.Tensor, isteğe bağlı) — Negatif prompt için dikkat maskesi.negative_prompt_embedsdoğ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
< source >( frames: Tensor )
Parametreler
- frames (
torch.Tensor,np.ndarrayveya 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ı.