Diffusers documentation

CogView3Plus

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

CogView3Plus

CogView3: Finer and Faster Text-to-Image Generation via Relay Diffusion dari Tsinghua University & ZhipuAI, oleh Wendi Zheng, Jiayan Teng, Zhuoyi Yang, Weihan Wang, Jidong Chen, Xiaotao Gu, Yuxiao Dong, Ming Ding, Jie Tang.

Abstrak dari makalah tersebut adalah:

Perkembangan terbaru dalam sistem generatif teks-ke-gambar sebagian besar didorong oleh model difusi. Namun, model difusi teks-ke-gambar satu tahap masih menghadapi tantangan, baik dari segi efisiensi komputasi maupun penyempurnaan detail gambar. Untuk mengatasi masalah ini, kami mengusulkan CogView3, sebuah framework kaskade inovatif yang meningkatkan kinerja difusi teks-ke-gambar. CogView3 adalah model pertama yang menerapkan relay diffusion di bidang generasi teks-ke-gambar, dengan mengeksekusi tugas tersebut melalui pembuatan gambar resolusi rendah terlebih dahulu, kemudian menerapkan super-resolution berbasis relay. Metodologi ini tidak hanya menghasilkan output teks-ke-gambar yang kompetitif, tetapi juga sangat mengurangi biaya pelatihan dan inferensi. Hasil eksperimen kami menunjukkan bahwa CogView3 melampaui SDXL, model difusi teks-ke-gambar open-source state-of-the-art saat ini, dengan selisih 77,0% dalam evaluasi manusia, sementara hanya membutuhkan sekitar 1/2 dari waktu inferensi. Varian terdistil dari CogView3 mencapai kinerja yang sebanding dengan hanya memanfaatkan 1/10 dari waktu inferensi SDXL.

Pastikan untuk melihat panduan Schedulers untuk mempelajari cara mengeksplorasi tradeoff antara kecepatan dan kualitas scheduler, serta lihat bagian reuse components across pipelines untuk mempelajari cara memuat komponen yang sama secara efisien ke dalam beberapa pipeline.

Pipeline ini disumbangkan oleh zRzRzRzRzRzRzR. Basis kode asli dapat ditemukan di sini. Bobot asli dapat ditemukan di bawah hf.co/THUDM.

CogView3PlusPipeline

kelas diffusers.CogView3PlusPipeline

< >

( tokenizer: T5Tokenizertext_encoder: T5EncoderModelvae: AutoencoderKLtransformer: CogView3PlusTransformer2DModelscheduler: diffusers.schedulers.scheduling_ddim_cogvideox.CogVideoXDDIMScheduler | diffusers.schedulers.scheduling_dpm_cogvideox.CogVideoXDPMScheduler )

Parameter

  • vae (AutoencoderKL) — Model Variational Auto-Encoder (VAE) untuk mengodekan dan mendekodekan gambar ke dan dari representasi laten.
  • text_encoder (T5EncoderModel) — Text-encoder yang dibekukan. CogView3Plus menggunakan T5; khususnya varian t5-v1_1-xxl.
  • tokenizer (T5Tokenizer) — Tokenizer dari kelas T5Tokenizer.
  • transformer (CogView3PlusTransformer2DModel) — CogView3PlusTransformer2DModel yang dikondisikan teks untuk mendenois latens gambar yang telah dikodekan.
  • scheduler (SchedulerMixin) — Scheduler yang digunakan bersama transformer untuk menghilangkan noise pada latens gambar yang telah dikodekan.

Pipeline untuk generasi teks-ke-gambar menggunakan CogView3Plus.

Model ini mewarisi dari DiffusionPipeline. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua pipeline (seperti mengunduh atau menyimpan, menjalankan pada perangkat tertentu, dll.)

__call__

< >

( prompt: str | list[str] | None = Nonenegative_prompt: str | list[str] | None = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 50timesteps: list[int] | None = Noneguidance_scale: float = 5.0num_images_per_prompt: int = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.FloatTensor] = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneoriginal_size: tuple[int, int] | None = Nonecrops_coords_top_left: tuple = (0, 0)output_type: str = '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']max_sequence_length: int = 224 ) → CogView3PipelineOutput or tuple

Parameter

  • prompt (str atau list[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskan prompt_embeds.
  • negative_prompt (str atau list[str], opsional) — Prompt atau prompt-prompt yang tidak digunakan untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskan negative_prompt_embeds sebagai gantinya. Diabaikan jika tidak menggunakan guidance (yaitu, diabaikan jika guidance_scale kurang dari 1).
  • height (int, opsional, defaultnya self.transformer.config.sample_size * self.vae_scale_factor) — Tinggi gambar yang dihasilkan dalam piksel. Jika tidak diberikan, nilainya diatur ke 1024.
  • width (int, opsional, defaultnya self.transformer.config.sample_size * self.vae_scale_factor) — Lebar gambar yang dihasilkan dalam piksel. Jika tidak diberikan, nilainya diatur ke 1024.
  • num_inference_steps (int, opsional, default 50) — Jumlah langkah denoising. Semakin banyak langkah denoising, biasanya menghasilkan gambar dengan kualitas lebih tinggi, namun dengan biaya inferensi yang lebih lambat.
  • timesteps (list[int], opsional) — Timesteps kustom untuk digunakan dalam proses denoising dengan scheduler yang mendukung argumen timesteps di metode set_timesteps mereka. Jika tidak didefinisikan, perilaku default saat num_inference_steps dilewatkan akan digunakan. Harus dalam urutan menurun.
  • guidance_scale (float, optional, defaults to 5.0) — Guidance scale as defined in Classifier-Free Diffusion Guidance. guidance_scale is defined as w of equation 2. of Imagen Paper. Guidance scale is enabled by setting guidance_scale > 1. Higher guidance scale encourages to generate images that are closely linked to the text prompt, usually at the expense of lower image quality.
  • num_images_per_prompt (int, opsional, defaultnya 1) — Jumlah gambar yang akan dihasilkan per prompt.
  • eta (float, opsional, default 0.0) — Bersesuaian dengan parameter eta (η) dari paper DDIM. Hanya berlaku untuk DDIMScheduler, dan diabaikan pada scheduler lainnya.
  • generator (torch.Generator atau list[torch.Generator], opsional) — Satu atau daftar generator torch untuk membuat proses generasi menjadi deterministik.
  • latents (torch.FloatTensor, opsional) — Latents berisik yang telah dibuat sebelumnya, diambil dari distribusi Gaussian, untuk digunakan sebagai input untuk generasi gambar. Dapat digunakan untuk menyesuaikan generasi yang sama dengan prompt yang berbeda. Jika tidak disediakan, tensor latents akan dibuat dengan pengambilan sampel menggunakan generator acak yang diberikan.
  • prompt_embeds (torch.FloatTensor, opsional) — Embedding teks yang sudah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya pemberatan prompt. Jika tidak disediakan, embedding teks akan dihasilkan dari argumen input prompt.
  • negative_prompt_embeds (torch.FloatTensor, opsional) — Embedding teks negatif yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds akan dibuat dari argumen input negative_prompt.
  • original_size (tuple[int], opsional, default (1024, 1024)) — Jika original_size tidak sama dengan target_size, gambar akan tampak di-downsample atau di-upsample. original_size default ke (height, width) jika tidak ditentukan. Bagian dari micro-conditioning SDXL seperti dijelaskan di bagian 2.2 dari https://huggingface.co/papers/2307.01952.
  • crops_coords_top_left (tuple[int], opsional, default (0, 0)) — crops_coords_top_left dapat digunakan untuk menghasilkan gambar yang tampak “dipotong” dari posisi crops_coords_top_left ke bawah. Gambar yang bagus dan terpusat biasanya dicapai dengan mengatur crops_coords_top_left ke (0, 0). Bagian dari micro-conditioning SDXL seperti dijelaskan di bagian 2.2 dari https://huggingface.co/papers/2307.01952.
  • output_type (str, opsional, defaultnya "pil") — Format output dari generate image. Pilih antara PIL: PIL.Image.Image atau np.array.
  • return_dict (bool, opsional, default True) — Apakah akan mengembalikan ~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput alih-alih tuple biasa.
  • callback_on_step_end (Callable, opsional) — Fungsi yang dipanggil di akhir setiap langkah denoising selama inferensi. Fungsi ini dipanggil dengan argumen berikut: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs akan berisi daftar semua tensor sesuai yang ditentukan oleh callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, opsional) — Daftar input tensor untuk fungsi callback_on_step_end. Tensor yang ditentukan dalam daftar akan diteruskan sebagai argumen callback_kwargs. Anda hanya dapat menyertakan variabel yang tercantum dalam atribut ._callback_tensor_inputs dari kelas pipeline Anda.
  • max_sequence_length (int, defaultnya 224) — Panjang maksimum urutan dalam prompt yang terenkripsi. Dapat diatur ke nilai lain, tetapi dapat menghasilkan kualitas yang lebih buruk.

Mengembalikan

CogView3PipelineOutput atau tuple

CogView3PipelineOutput jika return_dict bernilai True, selain itu berupa tuple. Saat mengembalikan tuple, elemen pertama adalah daftar berisi gambar yang dihasilkan.

Fungsi yang dipanggil saat memanggil pipeline untuk generasi.

Contoh:

>>> import torch
>>> from diffusers import CogView3PlusPipeline

>>> pipe = CogView3PlusPipeline.from_pretrained("THUDM/CogView3-Plus-3B", torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")

>>> prompt = "A photo of an astronaut riding a horse on mars"
>>> image = pipe(prompt).images[0]
>>> image.save("output.png")

encode_prompt

< >

( prompt: str | list[str]negative_prompt: str | list[str] | None = Nonedo_classifier_free_guidance: bool = Truenum_images_per_prompt: int = 1prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int = 224device: typing.Optional[torch.device] = Nonedtype: typing.Optional[torch.dtype] = None )

Parameter

  • prompt (str atau list[str], opsional) — prompt yang akan dienkod
  • negative_prompt (str atau list[str], opsional) — Prompt atau prompt-prompt yang tidak digunakan untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskan negative_prompt_embeds sebagai gantinya. Diabaikan jika tidak menggunakan guidance (yaitu, diabaikan jika guidance_scale kurang dari 1).
  • do_classifier_free_guidance (bool, opsional, default True) — Apakah akan menggunakan classifier free guidance atau tidak.
  • num_images_per_prompt (int, opsional, default 1) — Jumlah gambar yang harus dihasilkan per prompt. perangkat torch untuk menempatkan embedding yang dihasilkan
  • prompt_embeds (torch.Tensor, opsional) — Embedding teks yang sudah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya pembobotan prompt. Jika tidak disediakan, embedding teks akan dihasilkan dari argumen input prompt.
  • negative_prompt_embeds (torch.Tensor, opsional) — Embedding teks negatif yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds akan dibuat dari argumen input negative_prompt.
  • max_sequence_length (int, defaultnya 224) — Panjang maksimum urutan dalam prompt yang terenkripsi. Dapat diatur ke nilai lain, tetapi dapat menghasilkan kualitas yang lebih buruk.
  • device — (torch.device, opsional): perangkat torch
  • dtype — (torch.dtype, opsional): torch dtype

Mengkodekan prompt menjadi hidden states dari text encoder.

CogView3PipelineOutput

kelas diffusers.pipelines.cogview3.pipeline_output.CogView3PipelineOutput

< >

( images: list[PIL.Image.Image] | numpy.ndarray )

Parameter

  • images (list[PIL.Image.Image] atau np.ndarray) — daftar gambar PIL yang telah didenoise dengan panjang batch_size atau array numpy dengan bentuk (batch_size, height, width, num_channels). Gambar PIL atau array numpy menyajikan gambar-gambar yang telah didenoise dari pipeline difusi.

Kelas output untuk pipeline CogView3.

Update on GitHub