Buckets:
Apache Lisansı, 2.0 Sürümü ("Lisans") altında lisanslanmıştır;
bu dosyayı, Lisansa uygun olarak kullanabilirsiniz.
Lisansın bir kopyasını şu adresten edinebilirsiniz
http://www.apache.org/licenses/LICENSE-2.0
Uygulanabilir yasa gerektirmedikçe veya yazılı olarak anlaşılmadıkça, yazılım
Lisans kapsamında dağıtılan, "OLDUĞU GİBİ" esasına göre dağıtılır,
HİÇBİR TÜR AÇIK VEYA ZIMMİ GARANTİ VEYA ŞART İÇERMEZ.
İzinleri ve
Lisans kapsamındaki kısıtlamalar.
-->
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[[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)
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) : Kodlanmış görüntü latentlerini gürültüden arındırmak için EasyAnimate ile birlikte 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[[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 = ['latents'], guidance_rescale: float = 0.0)
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ı) : Üretilen videonun uzunluğu (kare cinsinden).
height (int, isteğe bağlı) : Üretilen görüntünün piksel cinsinden yüksekliği.
width (int, isteğe bağlı) : Üretilen 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örseller ü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, opsiyonel, 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 dizgi 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 istem 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") : Üretilen çı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 takdirde 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ı) : Geri çağrı fonksiyonu çağrılarında dahil edilecek tensör adları.
guidance_rescale (float, isteğe bağlı, varsayılan 0.0) : Gürültü seviyelerini yönlendirme ölçeğine göre 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 zaman çizelgesi kullanılır.
Dönüş: StableDiffusionPipelineOutput veya tuple
return_dict True ise StableDiffusionPipelineOutput döndürülür, aksi takdirde bir tuple döndürülür; bu yapının ilk öğesi üretilen görsellerin listesini, ikinci öğesi ise ilgili üretilen 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[[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)
Parametreler:
prompt (str veya list[str], isteğe bağlı) : kodlanacak istem
device : (torch.device): torch cihazı
dtype (torch.dtype) : torch veri türü
num_images_per_prompt (int) : her istem için oluşturulacak görsel sayısı
do_classifier_free_guidance (bool) : sınıflandırıcı serbest yönlendirmenin (classifier free guidance) kullanılıp kullanılmayacağı
negative_prompt (str veya list[str], isteğe bağlı) : Görsel üretimi yönlendirmemek için kullanılan istem veya istemler. Tanımlanmazsa, 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ı) : Ön oluşturulmuş metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, metin gömme değerleri prompt girdi argümanından oluşturulur.
negative_prompt_embeds (torch.Tensor, isteğe bağlı) : Ön 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ı) : İstek için dikkat maskesi. prompt_embeds doğrudan geçirildiğinde zorunludur.
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ı) : prompt için kullanılacak maksimum dizi uzunluğu.
İsteği metin kodlayıcı gizli durumlarına kodlar.
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)
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 dizi veya Torch tensörü de olabilir.
EasyAnimate pipeline'leri için çıktı sınıfı.
Xet Storage Details
- Size:
- 16.8 kB
- Xet hash:
- ceb252dbbd63a41a78ea33b41b96423c56f51ffbfb2223b8d2d51af3be7759c6
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.