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. --> | |
| # Latte | |
|  | |
| Monash Üniversitesi, Shanghai AI Lab, Nanjing Üniversitesi ve Nanyang Teknoloji Üniversitesi'nden [Latte: Latent Diffusion Transformer for Video Generation](https://huggingface.co/papers/2401.03048). | |
| Makalenin özeti şudur: | |
| *Video üretimi için yeni bir Latent Diffusion Transformer olan Latte'yi öneriyoruz. Latte, önce girdi videolarından uzamsal-zamansal jetonları çıkarır ve ardından latent uzayda video dağılımını modellemek için bir dizi Transformer bloğu kullanır. Videolardan çıkarılan önemli ölçüde fazla jetonu modellemek amacıyla, girdi videolarının uzamsal ve zamansal boyutlarını ayrıştırma perspektifinden dört verimli varyant tanıtılmıştır. Üretilen videoların kalitesini artırmak için Latte'nin en iyi uygulamalarını, video klipleri yama gömme (patch embedding), model varyantları, zaman adımı-sınıf bilgisi enjeksiyonu, zamansal konumsal gömme ve öğrenme stratejileri dahil olmak üzere titiz deneysel analizler yoluyla belirledik. Kapsamlı değerlendirmemiz, Latte'nin FaceForensics, SkyTimelapse, UCF101 ve Taichi-HD olmak üzere dört standart video üretimi veri setinde en iyi performansı (state-of-the-art) elde ettiğini göstermektedir. Ayrıca, Latte'yi metinden videoya üretim (T2V) görevine genişlettik; Latte, son T2V modelleriyle karşılaştırıldığında benzer sonuçlar elde etmektedir. Latte'nin, video üretimi için difüzyon modellerine Transformer entegrasyonu üzerine gelecekteki araştırmalar için değerli içgörüler sunduğuna güçlü bir şekilde inanıyoruz.* | |
| **Vurgular**: Latte, farklı modalları modellemek için bir omurga olarak önerilen bir latent difüzyon dönüştürücüsüdür (burada metinden videoya üretim için eğitilmiştir). Dört standart video benchmark'ında - [FaceForensics](https://huggingface.co/papers/1803.09179), [SkyTimelapse](https://huggingface.co/papers/1709.07592), [UCF101](https://huggingface.co/papers/1212.0402) ve [Taichi-HD](https://huggingface.co/papers/2003.00196) - en iyi performansı elde eder. Değerlendirme için veri setlerini hazırlamak ve indirmek için lütfen [bu https URL](https://github.com/Vchitect/Latte/blob/main/docs/datasets_evaluation.md)'ye bakın. | |
| Bu pipeline [maxin-cn](https://github.com/maxin-cn) tarafından katkı sağlanmıştır. Orijinal kod tabanı [burada](https://github.com/Vchitect/Latte) bulunabilir. Orijinal ağırlıklar [hf.co/maxin-cn](https://huggingface.co/maxin-cn) altında bulunabilir. | |
| > [!TIP] | |
| > Scheduler'lar [kılavuzunu](../../using-diffusers/schedulers) inceleyerek scheduler hızı ve kalitesi arasındaki ödünleşimi nasıl keşfedebileceğinizi öğrenin ve aynı bileşenleri birden fazla pipeline'a nasıl verimli bir şekilde yükleyebileceğinizi öğrenmek için [pipeline'lar arasında bileşenleri yeniden kullanma](../../using-diffusers/loading#reusing-models-in-multiple-pipelines) bölümüne göz atın. | |
| ### Çıkarım | |
| Çıkarım gecikmesini azaltmak için [`torch.compile`](https://huggingface.co/docs/diffusers/main/en/tutorials/fast_diffusion#torchcompile) kullanın. | |
| Önce hattı yükleyin: | |
| ```python | |
| import torch | |
| from diffusers import LattePipeline | |
| pipeline = LattePipeline.from_pretrained( | |
| "maxin-cn/Latte-1", dtype=torch.float16 | |
| ).to("cuda") # or "mps", "xpu", "cpu" | |
| ``` | |
| Ardından, `transformer` ve `vae` bileşenlerinin bellek yerleşimini `torch.channels-last` olarak değiştirin: | |
| ```python | |
| pipeline.transformer.to(memory_format=torch.channels_last) | |
| pipeline.vae.to(memory_format=torch.channels_last) | |
| ``` | |
| Son olarak, bileşenleri derleyin ve çıkarımı çalıştırın: | |
| ```python | |
| pipeline.transformer = torch.compile(pipeline.transformer) | |
| pipeline.vae.decode = torch.compile(pipeline.vae.decode) | |
| video = pipeline(prompt="A dog wearing sunglasses floating in space, surreal, nebulae in background").frames[0] | |
| ``` | |
| 80GB A100 makinedeki [benchmark](https://gist.github.com/a-r-r-o-w/4e1694ca46374793c0361d740a99ff19) sonuçları şunlardır: | |
| ``` | |
| Without torch.compile(): Average inference time: 16.246 seconds. | |
| With torch.compile(): Average inference time: 14.573 seconds. | |
| ``` | |
| ## 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 [LattePipeline](/docs/diffusers/main/tr/api/pipelines/latte#diffusers.LattePipeline) yüklemenin nasıl yapılacağını göstermektedir. | |
| ```py | |
| import torch | |
| from diffusers import BitsAndBytesConfig as DiffusersBitsAndBytesConfig, LatteTransformer3DModel, LattePipeline | |
| from diffusers.utils import export_to_gif | |
| from transformers import BitsAndBytesConfig as BitsAndBytesConfig, T5EncoderModel | |
| quant_config = BitsAndBytesConfig(load_in_8bit=True) | |
| text_encoder_8bit = T5EncoderModel.from_pretrained( | |
| "maxin-cn/Latte-1", | |
| subfolder="text_encoder", | |
| quantization_config=quant_config, | |
| dtype=torch.float16, | |
| ) | |
| quant_config = DiffusersBitsAndBytesConfig(load_in_8bit=True) | |
| transformer_8bit = LatteTransformer3DModel.from_pretrained( | |
| "maxin-cn/Latte-1", | |
| subfolder="transformer", | |
| quantization_config=quant_config, | |
| dtype=torch.float16, | |
| ) | |
| pipeline = LattePipeline.from_pretrained( | |
| "maxin-cn/Latte-1", | |
| text_encoder=text_encoder_8bit, | |
| transformer=transformer_8bit, | |
| dtype=torch.float16, | |
| device_map="balanced", | |
| ) | |
| prompt = "A small cactus with a happy face in the Sahara desert." | |
| video = pipeline(prompt).frames[0] | |
| export_to_gif(video, "latte.gif") | |
| ``` | |
| ## LattePipeline[[diffusers.LattePipeline]] | |
| #### diffusers.LattePipeline[[diffusers.LattePipeline]] | |
| ```python | |
| diffusers.LattePipeline(tokenizer: T5Tokenizer, text_encoder: T5EncoderModel, vae: AutoencoderKL, transformer: LatteTransformer3DModel, scheduler: KarrasDiffusionSchedulers) | |
| ``` | |
| [Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/latte/pipeline_latte.py#L145) | |
| **Parametreler:** | |
| vae ([AutoencoderKL](/docs/diffusers/main/tr/api/models/autoencoderkl#diffusers.AutoencoderKL)) : Video'ları latent temsillere kodlamak ve bu temsillerden video'ları çözmek için kullanılan Varyasyonel Oto-Kodlayıcı (VAE) Modeli. | |
| text_encoder (`T5EncoderModel`) : Donmuş metin kodlayıcı. Latte, [T5](https://huggingface.co/docs/transformers/model_doc/t5#transformers.T5EncoderModel)'i, özellikle de [t5-v1_1-xxl](https://huggingface.co/PixArt-alpha/PixArt-alpha/tree/main/t5-v1_1-xxl) varyantını kullanır. | |
| tokenizer (`T5Tokenizer`) : [T5Tokenizer](https://huggingface.co/docs/transformers/model_doc/t5#transformers.T5Tokenizer) sınıfının tokenizer'ı. | |
| transformer ([LatteTransformer3DModel](/docs/diffusers/main/tr/api/models/latte_transformer3d#diffusers.LatteTransformer3DModel)) : Kodlanmış video latentlerini gürültüden arındırmak için metin koşullu bir `LatteTransformer3DModel`. | |
| scheduler ([SchedulerMixin](/docs/diffusers/main/tr/api/schedulers/overview#diffusers.SchedulerMixin)) : Kodlanmış video latentlerini gürültüden arındırmak için `transformer` ile birlikte kullanılacak bir zamanlayıcı. | |
| Latte 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. | |
| #### __call__[[diffusers.LattePipeline.__call__]] | |
| ```python | |
| __call__(prompt: str | list[str] = None, negative_prompt: str = '', num_inference_steps: int = 50, timesteps: list[int] | None = None, guidance_scale: float = 7.5, num_images_per_prompt: int = 1, video_length: int = 16, height: int = 512, width: int = 512, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.FloatTensor] = None, prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_prompt_embeds: typing.Optional[torch.FloatTensor] = None, output_type: str = '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'], clean_caption: bool = True, mask_feature: bool = True, enable_temporal_attentions: bool = True, decode_chunk_size: int = 14) | |
| ``` | |
| [Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/latte/pipeline_latte.py#L613) | |
| **Parametreler:** | |
| prompt (`str` veya `list[str]`, *isteğe bağlı*) : Video üretimini yönlendirmek için istem veya istemler. Tanımlanmamışsa, bunun yerine `prompt_embeds` geçirilmelidir. | |
| negative_prompt (`str` veya `list[str]`, *isteğe bağlı*) : Video üretimini 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. | |
| num_inference_steps (`int`, *isteğe bağlı*, varsayılan 100) : Gürültü azaltma adım sayısı. Daha fazla gürültü azaltma adımı genellikle daha yavaş çıkarım pahasına daha yüksek kaliteli bir videoya yol açar. | |
| timesteps (`list[int]`, *isteğe bağlı*) : Gürültü azaltma süreci için kullanılacak özel zaman adımları. Tanımlanmamışsa, eşit aralıklı `num_inference_steps` zaman adımı kullanılır. Azalan sırada olmalıdır. | |
| guidance_scale (`float`, *isteğe bağlı*, varsayılan 7.0) : [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598)'de tanımlandığı gibi yönlendirme ölçeği. `guidance_scale`, [Imagen Paper](https://huggingface.co/papers/2205.11487)'deki 2. denklemindeki `w` olarak tanımlanır. Yönlendirme ölçeği, `guidance_scale > 1` olarak ayarlanarak etkinleştirilir. Daha yüksek yönlendirme ölçeği, genellikle daha düşük video kalitesi pahasına, metin `prompt`'u ile yakından ilişkili videoların üretilmesini teşvik eder. | |
| video_length (`int`, *isteğe bağlı*, varsayılan 16) : Üretilen video karelerinin sayısı. Varsayılan olarak saniyede 8 kare hızında 16 karedir | |
| num_images_per_prompt (`int`, *isteğe bağlı*, varsayılan 1) : Her istem için üretilecek video sayısı. | |
| height (`int`, *isteğe bağlı*, varsayılan: self.unet.config.sample_size) : Üretilen videonun piksel cinsinden yüksekliği. | |
| width (`int`, *isteğe bağlı*, varsayılan: self.unet.config.sample_size) : Üretilen videonun piksel cinsinden genişliği. | |
| eta (`float`, *isteğe bağlı*, varsayılan 0.0) : DDIM makalesindeki eta (η) parametresine karşılık gelir: https://huggingface.co/papers/2010.02502. Yalnızca [schedulers.DDIMScheduler](/docs/diffusers/main/tr/api/schedulers/ddim#diffusers.DDIMScheduler) için geçerlidir, diğerlerinde yok sayılır. | |
| generator (`torch.Generator` veya `list[torch.Generator]`, *isteğe bağlı*) : Üretimi deterministik hale getirmek için bir veya [torch üreteci(leri)](https://pytorch.org/docs/stable/generated/torch.Generator.html) listesi. | |
| latents (`torch.FloatTensor`, *isteğe bağlı*) : Video üretimi için girdi olarak kullanılacak, Gauss dağılımından örneklenmiş önceden oluşturulmuş gürültülü latentler. Farklı istemlerle aynı üretimi ayarlamak için kullanılabilir. Sağlanmazsa, sağlanan rastgele `generator` kullanılarak örneklemeye dayalı bir latent tensörü oluşturulur. | |
| prompt_embeds (`torch.FloatTensor`, *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.FloatTensor`, *isteğe bağlı*) : Önceden oluşturulmuş negatif metin gömme değerleri. Latte için bu negatif istem "" olmalıdır. Sağlanmazsa, negative_prompt_embeds, `negative_prompt` girdi argümanından oluşturulur. | |
| output_type (`str`, *isteğe bağlı*, varsayılan `"pil"`) : Üretilen videonun çıktı biçimi. [PIL](https://pillow.readthedocs.io/en/stable/): `PIL.Image.Image` veya `np.array` arasında seçim yapın. | |
| return_dict (`bool`, *isteğe bağlı*, varsayılan `True`) : Düz bir tuple yerine `~pipelines.stable_diffusion.IFPipelineOutput` döndürülecek mi? | |
| callback_on_step_end (`Callable[[int, int], None]`, `PipelineCallback`, `MultiPipelineCallbacks`, *isteğe bağlı*) : Her gürültü azaltma adımının sonunda çağrılacak bir geri çağrı işlevi veya geri çağrı işlevleri listesi. | |
| callback_on_step_end_tensor_inputs (`list[str]`, *isteğe bağlı*) : Geri çağrı fonksiyonuna iletilmesi gereken gergilik girdilerinin listesi. Tanımlanmazsa, tüm gergilik girdileri iletilir. | |
| clean_caption (`bool`, *isteğe bağlı*, varsayılan `True`) : Embedding oluşturulmadan önce başlığın temizlenip temizlenmeyeceğini belirtir. Bunun için `beautifulsoup4` ve `ftfy` paketlerinin yüklü olması gerekir. Bağımlılıklar yüklü değilse, embedding'ler ham istemden oluşturulur. | |
| mask_feature (`bool` varsayılan olarak `True`) : `True` olarak ayarlanırsa, metin gömlemeleri maskeleme işlemine tabi tutulur. | |
| enable_temporal_attentions (`bool`, *isteğe bağlı*, varsayılan `True`) : Zamanlı dikkat mekanizmalarının etkinleştirilip etkinleştirilmeyeceği | |
| decode_chunk_size (`int`, *isteğe bağlı*) : Bir seferde çözümlenecek kare sayısı. Daha yüksek parça boyutu, daha fazla bellek kullanımı pahasına daha iyi zamansal tutarlılık sağlar. Varsayılan olarak, çözücü en yüksek kalite için tüm kareleri bir seferde çözümler. Daha düşük bellek kullanımı için `decode_chunk_size` değerini azaltın. | |
| **Dönüş:** `LattePipelineOutput` veya `tuple` | |
| `return_dict` `True` ise `LattePipelineOutput` döndürülür, aksi halde ilk öğesi üretilen görsellerin listesini içeren bir `tuple` döndürülür | |
| Üretim için pipeline çağrıldığında tetiklenen işlev. | |
| Örnekler: | |
| ```py | |
| >>> import torch | |
| >>> from diffusers import LattePipeline | |
| >>> from diffusers.utils import export_to_gif | |
| >>> # You can replace the checkpoint id with "maxin-cn/Latte-1" too. | |
| >>> pipe = LattePipeline.from_pretrained("maxin-cn/Latte-1", torch_dtype=torch.float16) | |
| >>> # Enable memory optimizations. | |
| >>> pipe.enable_model_cpu_offload() | |
| >>> prompt = "A small cactus with a happy face in the Sahara desert." | |
| >>> videos = pipe(prompt).frames[0] | |
| >>> export_to_gif(videos, "latte.gif") | |
| ``` | |
| #### encode_prompt[[diffusers.LattePipeline.encode_prompt]] | |
| ```python | |
| encode_prompt(prompt: str | list[str], do_classifier_free_guidance: bool = True, negative_prompt: str = '', num_images_per_prompt: int = 1, device: typing.Optional[torch.device] = None, prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_prompt_embeds: typing.Optional[torch.FloatTensor] = None, clean_caption: bool = False, mask_feature: bool = True, dtype = None) | |
| ``` | |
| [Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/latte/pipeline_latte.py#L206) | |
| **Parametreler:** | |
| prompt (`str` veya `list[str]`, *isteğe bağlı*) : kodlanacak istem | |
| negative_prompt (`str` veya `list[str]`, *isteğe bağlı*) : Video üretimini yönlendirmemek için kullanılan istem. Tanımlanmamışsa bunun yerine `negative_prompt_embeds` geçirilmelidir. Yönlendirme kullanılmadığında yok sayılır (yani `guidance_scale` `1`'den küçükse yok sayılır). Latte için bu değer "" olmalıdır. | |
| do_classifier_free_guidance (`bool`, *isteğe bağlı*, varsayılan `True`) : sınıflandırıcı serbest yönlendirmenin (classifier free guidance) kullanılıp kullanılmayacağı | |
| num_images_per_prompt (`int`, *isteğe bağlı*, varsayılan 1) : her istem başına oluşturulacak video sayısı | |
| device : (`torch.device`, *isteğe bağlı*): Sonuç olarak elde edilen gömme vektörlerinin yerleştirileceği torch cihazı | |
| prompt_embeds (`torch.FloatTensor`, *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.FloatTensor`, *isteğe bağlı*) : Önceden oluşturulmuş negatif metin gömme değerleri. Latte için, "" dizisinin gömme değerleri olmalıdır. | |
| clean_caption (bool, varsayılan `False`) : `True` ise, fonksiyon kodlamadan önce sağlanan başlığı ön işler ve temizler. | |
| mask_feature : (bool, varsayılan `True`): `True` ise, işlev metin gömme değerlerini maskeleyecektir. | |
| İsteği metin kodlayıcı gizli durumlarına kodlar. | |
Xet Storage Details
- Size:
- 17.9 kB
- Xet hash:
- 4168171d01f1a3b03ceeb4c0bb7b633fa5ece228a1411b48ab8b65beb6e77bbe
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.