Buckets:

hf-doc-build/doc / diffusers /main /id /using-diffusers /weighted_prompts.md
mishig's picture
|
download
raw
5.75 kB
# Prompting
Prompts menjelaskan apa yang harus dihasilkan oleh model. Prompt yang baik bersifat detail, spesifik, dan terstruktur, serta menghasilkan gambar dan video yang lebih baik.
Panduan ini menunjukkan cara menulis prompt yang efektif dan memperkenalkan teknik-teknik yang membuatnya lebih kuat.
## Menulis prompt yang baik
Setiap prompt yang efektif membutuhkan tiga elemen inti.
1. Subjek - apa yang ingin Anda hasilkan. Mulai prompt Anda di sini.
2. Gaya - medium atau estetika. Bagaimana seharusnya tampilannya?
3. Konteks - detail tentang tindakan, pengaturan, dan suasana.
Gunakan elemen-elemen ini sebagai narasi terstruktur, bukan daftar kata kunci. Model modern memahami bahasa dengan lebih baik daripada pencocokan kata kunci. Mulailah dengan sederhana, lalu tambahkan detail.
Konteks sangat penting untuk membuat prompt yang lebih baik. Coba tambahkan pencahayaan, detail artistik, dan suasana.
kucing lucu berbaring di atas daun di kolam pada sore hari musim panas yang tenang, dalam gaya seni lofi, ilustrasi.
Seekor kucing lucu bersantai di atas daun yang mengapung di kolam berkilau pada sore musim panas yang tenang. Pantulan jernih beriak di permukaan air, dengan sinar matahari yang memancarkan sorotan lembut dan halus. Ilustrasi ini detail dan rapi, dengan garis-garis elegan dan warna-warna yang harmonis, membangkitkan suasana lofi yang santai, tenang, dan penuh imajinasi, terinspirasi anime dan menenangkan secara visual.
Jadilah spesifik dan tambahkan konteks. Gunakan istilah fotografi seperti jenis lensa, panjang fokus, sudut kamera, dan kedalaman bidang.
> [!TIP]
> Coba gunakan [prompt enhancer](https://huggingface.co/models?sort=downloads&search=prompt+enhancer) untuk membantu meningkatkan struktur prompt Anda.
## Panduan dan negatif
Sebagian besar pipeline Diffusers masih mengarahkan sampling dengan classifier-free guidance dan `negative_prompt` opsional.
Pada pipeline keluarga Stable Diffusion, berikan `guidance_scale` dan `negative_prompt`. Nilai `guidance_scale` yang lebih tinggi akan mengikuti prompt dengan lebih ketat. Nilai yang terlalu tinggi dapat menghasilkan tampilan yang tidak alami atau terlalu jenuh.
```py
import torch
from diffusers import DiffusionPipeline
pipeline = DiffusionPipeline.from_pretrained(
"stable-diffusion-v1-5/stable-diffusion-v1-5", dtype=torch.float16, device_map="cuda" # or "mps", "xpu", "cpu"
)
image = pipeline(
prompt="a cozy reading nook with afternoon light",
negative_prompt="blurry, low quality, distorted",
guidance_scale=7.5,
).images[0]
```
Pada checkpoint yang lebih baru seperti Qwen-Image dan Flux, CFG klasik biasanya `true_cfg_scale` bersama dengan `negative_prompt`. Negatif tetap berlaku ketika true CFG diaktifkan (`true_cfg_scale > 1` dan `negative_prompt`). Argumen `guidance_scale` mereka adalah guidance yang di-distil atau tertanam ketika transformer mendukungnya, yang tidak sama. Periksa API pipeline untuk model yang Anda muat.
Modular Diffusers dapat mengganti algoritma panduan dengan guider. Lihat [Guiders](./guiders).
## Penimbangan prompt
Prompt weighting membuat beberapa kata lebih kuat dan yang lain lebih lemah. Ini menskalakan skor perhatian sehingga Anda dapat mengontrol seberapa besar pengaruh setiap konsep.
Diffusers menangani hal ini melalui argumen `prompt_embeds` dan `pooled_prompt_embeds` yang menerima vektor embedding teks yang telah diskalakan. Gunakan pustaka [sd_embed](https://github.com/xhinker/sd_embed) untuk menghasilkan embedding ini. Ia juga mendukung prompt yang lebih panjang. Untuk penimbangan keluarga Stable Diffusion dengan sintaks yang lebih sederhana, Anda juga dapat menggunakan [Compel](https://github.com/damian0815/compel).
> [!NOTE]
> Perpustakaan sd_embed hanya mendukung Stable Diffusion, Stable Diffusion XL, Stable Diffusion 3, Stable Cascade, dan Flux. Pemberian bobot pada prompt tidak selalu membantu pada model kelas Flux, yang memang sudah mengikuti prompt dengan ketat.
```shell
uv pip install git+https://github.com/xhinker/sd_embed.git@main
```
Format teks berbobot dengan pengali numerik atau tanda kurung. Semakin banyak tanda kurung, semakin kuat pembobotannya.
| format | pengali |
|---|---|
| `(cat)` | meningkat 1,1x |
| `((cat))` | meningkat 1,21x |
| `(cat:1.5)` | meningkat 1,5x |
| `(cat:0.5)` | set weight menjadi 0.5× |
Buat prompt berbobot dan teruskan ke [get_weighted_text_embeddings_sdxl](https://github.com/xhinker/sd_embed/blob/4a47f71150a22942fa606fb741a1c971d95ba56f/src/sd_embed/embedding_funcs.py#L405) untuk menghasilkan embeddings.
> [!TIP]
> Anda juga dapat meneruskan prompt negatif ke `negative_prompt_embeds` dan `negative_pooled_prompt_embeds`.
```py
import torch
from diffusers import DiffusionPipeline
from sd_embed.embedding_funcs import get_weighted_text_embeddings_sdxl
pipeline = DiffusionPipeline.from_pretrained(
"Lykon/dreamshaper-xl-1-0", dtype=torch.bfloat16, device_map="cuda" # or "mps", "xpu", "cpu"
)
prompt = """
A (cute cat:1.4) lounges on a (floating leaf:1.2) in a (sparkling pool:1.1) during a peaceful summer afternoon.
Gentle ripples reflect pastel skies, while (sunlight:1.1) casts soft highlights. The illustration is smooth and polished
with elegant, sketchy lines and subtle gradients, evoking a ((whimsical, nostalgic, dreamy lofi atmosphere:2.0)),
(anime-inspired:1.6), calming, comforting, and visually serene.
"""
prompt_embeds, _, pooled_prompt_embeds, *_ = get_weighted_text_embeddings_sdxl(pipeline, prompt=prompt)
```
Lewatkan embeddings ke `prompt_embeds` dan `pooled_prompt_embeds` untuk menghasilkan gambar Anda.
```py
image = pipeline(prompt_embeds=prompt_embeds, pooled_prompt_embeds=pooled_prompt_embeds).images[0]
```

Xet Storage Details

Size:
5.75 kB
·
Xet hash:
7255148789f94644a71efe0cc3a958a9de72301c74f3149d8886940e690a4144

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.