Diffusers documentation
Gợi ý
Gợi ý
Prompts mô tả những gì một model nên tạo ra. Các prompt tốt thường chi tiết, cụ thể, có cấu trúc và giúp tạo ra hình ảnh và video chất lượng hơn.
Hướng dẫn này cho bạn thấy cách viết các prompt hiệu quả và giới thiệu các kỹ thuật giúp chúng mạnh mẽ hơn.
Viết các prompt tốt
Mọi prompt hiệu quả đều cần ba yếu tố cốt lõi.
- Chủ đề - thứ bạn muốn tạo. Bắt đầu prompt của bạn tại đây.
- Phong cách - phương tiện hoặc thẩm mỹ. Nó nên trông như thế nào?
- Bối cảnh - các chi tiết về hành động, bối cảnh và tâm trạng.
Hãy sử dụng các yếu tố này như một câu chuyện có cấu trúc, thay vì một danh sách từ khóa. Các mô hình hiện đại hiểu ngôn ngữ tốt hơn so với việc khớp từ khóa. Hãy bắt đầu đơn giản, sau đó thêm chi tiết.
Bối cảnh đặc biệt quan trọng để tạo ra các prompt tốt hơn. Hãy thử thêm ánh sáng, chi tiết nghệ thuật và tâm trạng.
Hãy cụ thể và thêm ngữ cảnh. Sử dụng các thuật ngữ nhiếp ảnh như loại ống kính, tiêu cự, góc máy và độ sâu trường ảnh.
Thử dùng prompt enhancer để giúp cải thiện cấu trúc prompt của bạn.
Hướng dẫn và tiêu cực
Hầu hết các pipeline của Diffusers vẫn điều hướng quá trình lấy mẫu bằng classifier-free guidance và một negative_prompt tùy chọn.
Với các pipeline thuộc họ Stable Diffusion, hãy truyền guidance_scale và negative_prompt. Giá trị guidance_scale cao hơn sẽ bám sát prompt hơn. Các giá trị quá cao có thể khiến kết quả trông không tự nhiên hoặc bị bão hòa màu.
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]Trên các checkpoint mới hơn như Qwen-Image và Flux, CFG cổ điển thường là true_cfg_scale kết hợp với negative_prompt. Các prompt âm vẫn được áp dụng khi true CFG được bật (true_cfg_scale > 1 và có negative_prompt). Tham số guidance_scale của chúng là guidance đã được chưng cất hoặc nhúng khi transformer hỗ trợ, điều này không giống nhau. Hãy kiểm tra API pipeline của mô hình bạn tải.
Modular Diffusers có thể thay thế thuật toán guidance bằng một guider. Xem Guiders.
Trọng số prompt
Trọng số prompt làm cho một số từ mạnh hơn và một số từ khác yếu hơn. Nó điều chỉnh điểm chú ý để bạn kiểm soát mức độ ảnh hưởng của từng khái niệm.
Diffusers xử lý điều này thông qua các đối số prompt_embeds và pooled_prompt_embeds nhận các vector nhúng văn bản đã được chuẩn hóa. Hãy sử dụng thư viện sd_embed để tạo ra các vector nhúng này. Nó cũng hỗ trợ các prompt dài hơn. Đối với việc gán trọng số cho các mô hình thuộc họ Stable Diffusion với cú pháp đơn giản hơn, bạn cũng có thể sử dụng Compel.
Thư viện sd_embed chỉ hỗ trợ Stable Diffusion, Stable Diffusion XL, Stable Diffusion 3, Stable Cascade và Flux. Việc gán trọng số cho prompt không phải lúc nào cũng hữu ích với các mô hình thuộc lớp Flux, vốn đã bám sát prompt ngay từ đầu.
uv pip install git+https://github.com/xhinker/sd_embed.git@main
Định dạng văn bản có trọng số bằng các hệ số nhân số hoặc dấu ngoặc. Càng nhiều dấu ngoặc thì trọng số càng mạnh.
| format | multiplier |
|---|---|
(cat) | tăng 1,1 lần |
((cat)) | tăng 1,21 lần |
(cat:1.5) | tăng 1,5 lần |
(cat:0.5) | đặt trọng số thành 0,5× |
Tạo một prompt có trọng số và truyền nó vào get_weighted_text_embeddings_sdxl để tạo ra các embeddings.
Bạn cũng có thể truyền các prompt âm vào
negative_prompt_embedsvànegative_pooled_prompt_embeds.
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)Truyền các embeddings vào prompt_embeds và pooled_prompt_embeds để tạo ảnh của bạn.
image = pipeline(prompt_embeds=prompt_embeds, pooled_prompt_embeds=pooled_prompt_embeds).images[0]