Buckets:
| # Ideogram 4 | |
| Ideogram 4 adalah model teks-ke-gambar berbasis flow-matching yang menggunakan encoder teks multimodal dan skema panduan bebas-klasifikasi asimetris: `unconditional_transformer` khusus menghasilkan cabang negatif dengan fitur teks yang dinolkan, sementara `transformer` utama mengonsumsi urutan teks + gambar yang dikemas penuh. | |
| Nilai bawaan pipeline adalah pengaturan yang direkomendasikan untuk kualitas terbaik, sehingga pemanggilan `pipe(prompt)` sederhana menghasilkan hasil berkualitas terbaik langsung dari awal: 48 langkah flow-matching pada jadwal logit-normal (`mu=0.0`, `std=1.5`) dengan classifier-free guidance dipertahankan pada 7.0 untuk langkah utama dan diturunkan ke 3.0 untuk 3 langkah "polish" terakhir. | |
| Parameter utama saat inferensi dapat diatur melalui panggilan pipeline: | |
| - `num_inference_steps`, `mu`, dan `std` mengontrol jadwal flow-matching logit-normal yang sadar resolusi. | |
| - `guidance_scale` (atau `guidance_schedule` lengkap per langkah) mencampurkan kecepatan kondisional dan non-kondisional. | |
| ## Teks-ke-gambar | |
| ```python | |
| import torch | |
| from diffusers import Ideogram4Pipeline | |
| pipe = Ideogram4Pipeline.from_pretrained("ideogram-ai/ideogram-v4", dtype=torch.bfloat16) | |
| pipe.to("cuda") # or "mps", "xpu", "cpu" | |
| prompt = "A photo of a cat holding a sign that says hello world" | |
| # The defaults are the recommended settings for best quality. | |
| image = pipe(prompt, height=1024, width=1024, generator=torch.Generator("cuda").manual_seed(0)).images[0] | |
| image.save("ideogram4.png") | |
| ``` | |
| ## Upsampling prompt | |
| Ideogram 4 dilatih pada caption JSON terstruktur, bukan prompt bebas, sehingga prompt pendek sebaiknya diperluas ke skema native tersebut sebelum generasi. Ada dua cara untuk menghasilkan caption. | |
| ### Remote (Ideogram API) | |
| Untuk hasil terbaik, perluas prompt dengan API magic-prompt yang dihosting oleh Ideogram dan lewati caption yang dikembalikan langsung ke pipeline (dapatkan kunci di [developer.ideogram.ai](https://developer.ideogram.ai/)): | |
| ```python | |
| import json | |
| import requests | |
| import torch | |
| from diffusers import Ideogram4Pipeline | |
| pipe = Ideogram4Pipeline.from_pretrained("ideogram-ai/ideogram-4-nf4", dtype=torch.bfloat16) | |
| pipe.to("cuda") # or "mps", "xpu", "cpu" | |
| # Expand the prompt into a structured JSON caption with Ideogram's hosted magic-prompt API. | |
| response = requests.post( | |
| "https://api.ideogram.ai/v1/ideogram-v4/magic-prompt", | |
| headers={"Api-Key": "your_ideogram_api_key"}, | |
| json={"text_prompt": "A photo of a cat holding a sign that says hello world", "aspect_ratio": "1x1"}, | |
| ).json() | |
| caption = json.dumps(response["json_prompt"]) | |
| # The caption is already upsampled, so pass it directly (no prompt_upsampling). | |
| image = pipe(caption, height=1024, width=1024, generator=torch.Generator("cuda").manual_seed(0)).images[0] | |
| image.save("ideogram4_upsampled.png") | |
| ``` | |
| ### Local (berjalan di perangkat) | |
| Untuk pipeline yang sepenuhnya lokal, muat [Ideogram4PromptEnhancerHead](/docs/diffusers/v0.43.0/id/api/pipelines/ideogram4#diffusers.Ideogram4PromptEnhancerHead) kecil (head LM Qwen3-VL) sebagai komponen opsional `prompt_enhancer_head` dan teruskan `prompt_upsampling=True`. Head ini disambungkan ke `text_encoder` yang dibagikan, sehingga tidak ada text encoder kedua yang dimuat. Instal `outlines` untuk caption dengan kendala skema (checkpoint nf4 juga membutuhkan `bitsandbytes`): | |
| ```python | |
| import torch | |
| from diffusers import Ideogram4Pipeline, Ideogram4PromptEnhancerHead | |
| prompt_enhancer_head = Ideogram4PromptEnhancerHead.from_pretrained( | |
| "diffusers/qwen3-vl-8b-instruct-lm-head", dtype=torch.bfloat16 | |
| ) | |
| pipe = Ideogram4Pipeline.from_pretrained( | |
| "ideogram-ai/ideogram-4-nf4", prompt_enhancer_head=prompt_enhancer_head, dtype=torch.bfloat16 | |
| ) | |
| pipe.to("cuda") # or "mps", "xpu", "cpu" | |
| prompt = "A photo of a cat holding a sign that says hello world" | |
| image = pipe( | |
| prompt, | |
| height=1024, | |
| width=1024, | |
| prompt_upsampling=True, | |
| generator=torch.Generator("cuda").manual_seed(0), | |
| ).images[0] | |
| image.save("ideogram4_upsampled.png") | |
| ``` | |
| ## Ideogram4Pipeline[[diffusers.Ideogram4Pipeline]] | |
| #### diffusers.Ideogram4Pipeline[[diffusers.Ideogram4Pipeline]] | |
| ```python | |
| diffusers.Ideogram4Pipeline(scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKLFlux2, text_encoder: PreTrainedModel, tokenizer: AutoTokenizer, transformer: Ideogram4Transformer2DModel, unconditional_transformer: Ideogram4Transformer2DModel, prompt_enhancer_head: diffusers.pipelines.ideogram4.prompt_enhancer.Ideogram4PromptEnhancerHead | None = None) | |
| ``` | |
| [Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/ideogram4/pipeline_ideogram4.py#L141) | |
| **Parameter:** | |
| scheduler ([FlowMatchEulerDiscreteScheduler](/docs/diffusers/v0.43.0/id/api/schedulers/flow_match_euler_discrete#diffusers.FlowMatchEulerDiscreteScheduler)) : Scheduler flow-matching. Pipeline ini menimpa jadwal sigma default dengan jadwal logit-normal yang sadar resolusi. | |
| vae (`AutoencoderKLFlux2`) : Variational auto-encoder yang digunakan untuk mendekode latents kembali menjadi gambar. | |
| text_encoder (`PreTrainedModel`) : Pengkode teks multimodal. Pipeline mengonsumsi hidden states dari himpunan lapisan decoder antara yang tetap (lihat `QWEN3_VL_ACTIVATION_LAYERS`). | |
| tokenizer (`AutoTokenizer`) : Tokenizer yang berpasangan dengan `text_encoder`. | |
| transformer ([Ideogram4Transformer2DModel](/docs/diffusers/v0.43.0/id/api/models/ideogram4_transformer2d#diffusers.Ideogram4Transformer2DModel)) : Transformer flow-matching bersyarat. | |
| unconditional_transformer ([Ideogram4Transformer2DModel](/docs/diffusers/v0.43.0/id/api/models/ideogram4_transformer2d#diffusers.Ideogram4Transformer2DModel)) : Transformer flow-matching tanpa syarat (asymmetric-CFG). | |
| Pipeline teks-ke-gambar untuk Ideogram4. | |
| Ideogram4 adalah model flow-matching yang dilatih dengan panduan classifier-free asimetris: sebuah `transformer` mengonsumsi fitur yang dikondisikan teks bersama dengan latens gambar, sementara `unconditional_transformer` yang terpisah melakukan denoising dengan fitur teks yang dinolkan. Kedua prediksi kecepatan tersebut dicampur secara linear pada setiap langkah. | |
| #### __call__[[diffusers.Ideogram4Pipeline.__call__]] | |
| ```python | |
| __call__(prompt: str | list[str] | None = None, height: int = 2048, width: int = 2048, num_inference_steps: int = 48, guidance_scale: float | None = None, guidance_schedule: typing.Union[list[float], torch.Tensor, NoneType] = (7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 3.0, 3.0, 3.0), mu: float = 0.0, std: float = 1.5, prompt_upsampling: bool = False, prompt_upsampling_temperature: float = 1.0, max_sequence_length: int = 2048, num_images_per_prompt: int = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, output_type: str = 'pil', return_dict: bool = True, attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Optional[typing.Callable[[ForwardRef('Ideogram4Pipeline'), int, int, dict[str, typing.Any]], dict[str, typing.Any]]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents']) | |
| ``` | |
| [Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/ideogram4/pipeline_ideogram4.py#L481) | |
| **Parameter:** | |
| prompt (`str` atau `list[str]`) : Prompt untuk memandu generasi gambar. | |
| height (`int`, *opsional*, default 2048) : Tinggi gambar output dalam piksel; harus merupakan kelipatan dari `vae_scale_factor * patch_size`. | |
| width (`int`, *opsional*, default 2048) : Lebar gambar keluaran dalam piksel; harus merupakan kelipatan dari `vae_scale_factor * patch_size`. | |
| num_inference_steps (`int`, *opsional*, default 48) : Jumlah langkah flow-matching. Default adalah pengaturan yang direkomendasikan untuk kualitas terbaik. | |
| guidance_scale (`float`, *opsional*) : Skala panduan klasifikasi bebas-panduan konstan yang diterapkan di setiap langkah. Prediksi kecepatan bersyarat dan tak bersyarat dicampur sebagai `v = guidance_scale * v_pos + (1 - guidance_scale) * v_neg`. Saling eksklusif dengan `guidance_schedule` (menetapkan keduanya akan memicu error). Bawaan adalah `None`. | |
| guidance_schedule (`list[float]` atau `torch.Tensor`, *opsional*) : Jadwal skala panduan per langkah; harus memiliki panjang `num_inference_steps`. Entri pertama sesuai dengan langkah pertama (tingkat kebisingan terbesar). Saling eksklusif dengan `guidance_scale`; tepat satu harus disetel. Secara bawaan menggunakan jadwal yang direkomendasikan (7,0 untuk langkah utama, turun menjadi 3,0 untuk 3 langkah "penyelesaian" terakhir). Untuk menggunakan skala konstan, berikan `guidance_scale` dan `guidance_schedule=None`. | |
| mu (`float`, *opsional*, default 0.0) : Rata-rata dasar dari jadwal flow-matching logit-normal. Rata-rata jadwal digeser sebesar setengah log dari rasio resolusi relatif terhadap 512x512. | |
| std (`float`, *opsional*, default 1.5) : Standar deviasi dari jadwal flow-matching logit-normal. | |
| prompt_upsampling (`bool`, *opsional*, defaultnya `False`) : Jika `True`, tulis ulang `prompt` menjadi caption JSON terstruktur native Ideogram4 melalui [upsample_prompt()](/docs/diffusers/v0.43.0/id/api/pipelines/ideogram4#diffusers.Ideogram4Pipeline.upsample_prompt) sebelum encoding. Memerlukan komponen opsional `prompt_enhancer_head`; pasang `outlines` untuk caption dengan kendala skema. `generator` digunakan kembali agar upsampling dapat direproduksi. | |
| prompt_upsampling_temperature (`float`, *opsional*, default 1.0) : Suhu sampling untuk upsampling prompt ketika `prompt_upsampling=True`. | |
| max_sequence_length (`int`, *opsional*, default 2048) : Jumlah maksimum token teks per prompt. | |
| num_images_per_prompt (`int`, *opsional*, default 1) : Jumlah gambar yang akan dihasilkan per prompt. | |
| generator (`torch.Generator` atau `list[torch.Generator]`, *opsional*) : Generator yang digunakan untuk membuat sampling menjadi deterministik. | |
| latents (`torch.Tensor`, *opsional*) : Noise yang telah dibuat sebelumnya dengan bentuk `(batch_size, num_image_tokens, latent_dim)`. | |
| output_type (`str`, *opsional*, defaultnya `"pil"`) : Salah satu dari `"pil"`, `"np"`, `"pt"`, atau `"latent"`. | |
| return_dict (`bool`, *opsional*, defaultnya `True`) : Apakah akan mengembalikan [Ideogram4PipelineOutput](/docs/diffusers/v0.43.0/id/api/pipelines/ideogram4#diffusers.pipelines.ideogram4.Ideogram4PipelineOutput). | |
| attention_kwargs (`dict`, *opsional*) : Kamus kwargs yang diteruskan ke pemroses perhatian dari setiap transformer. Entri `"scale"` menskalakan bobot LoRA yang dimuat (mis. `{"scale": 0.7}`) saat backend PEFT aktif. | |
| callback_on_step_end (`Callable`, *opsional*) : Callback yang dipanggil di akhir setiap langkah denoising. | |
| callback_on_step_end_tensor_inputs (`list[str]`, *opsional*) : Nama tensor yang akan diekspos ke callback melalui `callback_kwargs`. | |
| **Mengembalikan:** | |
| [Ideogram4PipelineOutput](/docs/diffusers/v0.43.0/id/api/pipelines/ideogram4#diffusers.pipelines.ideogram4.Ideogram4PipelineOutput) atau `tuple`. | |
| Jalankan generasi teks-ke-gambar. | |
| Contoh: | |
| ```py | |
| >>> import torch | |
| >>> from diffusers import Ideogram4Pipeline | |
| >>> pipe = Ideogram4Pipeline.from_pretrained("ideogram-ai/ideogram-v4", torch_dtype=torch.bfloat16) | |
| >>> pipe.to("cuda") | |
| >>> prompt = "A photo of a cat holding a sign that says hello world" | |
| >>> # The defaults are the recommended settings for best quality. | |
| >>> image = pipe(prompt, height=2048, width=2048, generator=torch.Generator("cuda").manual_seed(0)).images[0] | |
| >>> image.save("ideogram4.png") | |
| ``` | |
| #### encode_prompt[[diffusers.Ideogram4Pipeline.encode_prompt]] | |
| ```python | |
| encode_prompt(prompt: str | list[str], grid_h: int, grid_w: int, max_sequence_length: int, device: device) | |
| ``` | |
| [Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/ideogram4/pipeline_ideogram4.py#L335) | |
| Siapkan kondisioning untuk urutan teks+gambar yang dikemas (satu entri per prompt). | |
| Mengembalikan tuple datar `(prompt_embeds, position_ids, segment_ids, indicator)`. Cabang tanpa syarat tidak membawa teks, sehingga pipeline membangun inputnya (yang dinolkan) secara langsung alih-alih mengodekan prompt negatif. | |
| #### upsample_prompt[[diffusers.Ideogram4Pipeline.upsample_prompt]] | |
| ```python | |
| upsample_prompt(prompt: str | list[str], height: int = 2048, width: int = 2048, temperature: float = 1.0, max_new_tokens: int = 1024, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, device: typing.Optional[torch.device] = None) | |
| ``` | |
| [Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/ideogram4/pipeline_ideogram4.py#L204) | |
| Tulis ulang setiap prompt menjadi caption JSON terstruktur native Ideogram4. | |
| Memerlukan komponen opsional `prompt_enhancer_head`, yang disambungkan ke tubuh `text_encoder` bersama agar menjadi generatif. Generasi dibatasi oleh skema jika `outlines` terpasang, jika tidak, ia berjalan tanpa batasan. Sampaikan `generator` (yang sama dengan yang diterima oleh `__call__`) untuk membuat sampling dapat direproduksi. | |
| ## Ideogram4PromptEnhancerHead[[diffusers.Ideogram4PromptEnhancerHead]] | |
| #### diffusers.Ideogram4PromptEnhancerHead[[diffusers.Ideogram4PromptEnhancerHead]] | |
| ```python | |
| diffusers.Ideogram4PromptEnhancerHead(hidden_size: int = 4096, vocab_size: int = 151936) | |
| ``` | |
| [Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/ideogram4/prompt_enhancer.py#L42) | |
| LM head yang membuat `text_encoder` Qwen3-VL tanpa head menjadi generatif untuk upsampling prompt. | |
| Komponen pipeline opsional (`prompt_enhancer_head`): bobotnya dimuat melalui `from_pretrained` biasa (repo kecil miliknya sendiri, atau dibundel di repo model) alih-alih diunduh di dalam pipeline. Saat upsample, pipeline menggabungkannya dengan badan `text_encoder` bersama untuk membentuk model generatif. | |
| ## Ideogram4PipelineOutput[[diffusers.pipelines.ideogram4.Ideogram4PipelineOutput]] | |
| #### diffusers.pipelines.ideogram4.Ideogram4PipelineOutput[[diffusers.pipelines.ideogram4.Ideogram4PipelineOutput]] | |
| ```python | |
| diffusers.pipelines.ideogram4.Ideogram4PipelineOutput(images: list[PIL.Image.Image] | numpy.ndarray) | |
| ``` | |
| [Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/ideogram4/pipeline_output.py#L24) | |
| **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)`. | |
| Kelas output untuk pipeline Ideogram 4. | |
Xet Storage Details
- Size:
- 14.7 kB
- Xet hash:
- 35995ea03473c8dbe023bf7184465b1605fcdb68284efc8eb2e8737dbfe8bdb4
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.