Buckets:

mishig's picture
|
download
raw
16.8 kB
#
# 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](https://github.com/aigc-apps/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](https://github.com/bubbliiiing) tarafından katkı sağlanmıştır. Orijinal kod tabanı [burada](https://huggingface.co/alibaba-pai) bulunabilir. Orijinal ağırlıklar [hf.co/alibaba-pai](https://huggingface.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`](https://huggingface.co/alibaba-pai/EasyAnimateV5.1-12b-zh) | torch.float16 |
| [`alibaba-pai/EasyAnimateV5.1-12b-zh-InP`](https://huggingface.co/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`](https://huggingface.co/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`](https://huggingface.co/alibaba-pai/EasyAnimateV5.1-12b-zh-Control) | torch.float16 |
| [`alibaba-pai/EasyAnimateV5.1-12b-zh-Control-Camera`](https://huggingface.co/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](../../quantization/overview) genel bakışına başvurun. Aşağıdaki örnek, bitsandbytes ile çıkarım için kuantize edilmiş bir [EasyAnimatePipeline](/docs/diffusers/main/tr/api/pipelines/easyanimate#diffusers.EasyAnimatePipeline) yüklemenin nasıl yapılacağını göstermektedir.
```py
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]]
```python
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)
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/easyanimate/pipeline_easyanimate.py#L186)
**Parametreler:**
vae ([AutoencoderKLMagvit](/docs/diffusers/main/tr/api/models/autoencoderkl_magvit#diffusers.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](https://huggingface.co/Qwen/Qwen2-VL-7B-Instruct) kullanır.
tokenizer (`~transformers.Qwen2Tokenizer`, `~transformers.BertTokenizer` | None) : Metni tokenleştirmek için bir `Qwen2Tokenizer` veya `BertTokenizer`.
transformer ([EasyAnimateTransformer3DModel](/docs/diffusers/main/tr/api/models/easyanimate_transformer3d#diffusers.EasyAnimateTransformer3DModel)) : EasyAnimate Team tarafından tasarlanan EasyAnimate modeli.
scheduler ([FlowMatchEulerDiscreteScheduler](/docs/diffusers/main/tr/api/schedulers/flow_match_euler_discrete#diffusers.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](/docs/diffusers/main/tr/api/pipelines/overview#diffusers.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](https://huggingface.co/Qwen/Qwen2-VL-7B-Instruct) adlı tek bir metin kodlayıcı kullanır.
#### __call__[[diffusers.EasyAnimatePipeline.__call__]]
```python
__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)
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/easyanimate/pipeline_easyanimate.py#L524)
**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](/docs/diffusers/main/tr/api/pipelines/stable_diffusion/img2img#diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput) veya `tuple`
`return_dict` `True` ise [StableDiffusionPipelineOutput](/docs/diffusers/main/tr/api/pipelines/stable_diffusion/img2img#diffusers.pipelines.stable_diffusion.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:
```python
>>> 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]]
```python
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)
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/easyanimate/pipeline_easyanimate.py#L241)
**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]]
```python
diffusers.pipelines.easyanimate.pipeline_output.EasyAnimatePipelineOutput(frames: Tensor)
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/easyanimate/pipeline_output.py#L9)
**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.