Buckets:

mishig's picture
|
download
raw
5.7 kB

Prompting

Prompts descrevem o que um modelo deve gerar. Bons prompts são detalhados, específicos e estruturados, e geram imagens e vídeos melhores.

Este guia mostra como escrever prompts eficazes e apresenta técnicas que os tornam mais fortes.

Escrevendo bons prompts

Todo prompt eficaz precisa de três elementos centrais.

  1. Assunto - o que você deseja gerar. Comece seu prompt aqui.
  2. Estilo - o meio ou a estética. Como deve ser a aparência?
  3. Contexto - detalhes sobre ações, cenário e humor.

Use esses elementos como uma narrativa estruturada, não como uma lista de palavras-chave. Modelos modernos compreendem melhor a linguagem do que a correspondência de palavras-chave. Comece simples e, em seguida, adicione detalhes.

O contexto é especialmente importante para criar prompts melhores. Tente adicionar iluminação, detalhes artísticos e atmosfera.

gato fofo relaxa em uma folha em uma piscina durante uma tranquila tarde de verão, em estilo de arte lofi, ilustração.



Um gato fofo se deita em uma folha flutuante em uma piscina cintilante durante uma tranquila tarde de verão. Reflexos claros ondulam na superfície da água, com a luz do sol projetando destaques suaves e delicados. A ilustração é detalhada e polida, com linhas elegantes e cores harmoniosas, evocando um clima lofi relaxante, sereno e lúdico, inspirado no anime e visualmente acolhedor.

Seja específico e adicione contexto. Use termos de fotografia, como tipo de lente, distância focal, ângulos da câmera e profundidade de campo.

Experimente um prompt enhancer para ajudar a melhorar a estrutura do seu prompt.

Orientação e negativos

A maioria dos pipelines do Diffusers ainda controla a amostragem com classifier-free guidance e um negative_prompt opcional.

Em pipelines da família Stable Diffusion, passe guidance_scale e negative_prompt. Valores maiores de guidance_scale seguem o prompt com mais fidelidade. Valores muito altos podem resultar em aparência não natural ou super saturada.

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]

Em checkpoints mais recentes, como Qwen-Image e Flux, o CFG clássico geralmente é true_cfg_scale junto com negative_prompt. Os negativos ainda se aplicam quando o true CFG está habilitado (true_cfg_scale > 1 e um negative_prompt). O argumento guidance_scale é um guidance destilado ou embutido quando o transformer o suporta, o que não é a mesma coisa. Verifique a API do pipeline para o modelo que você carrega.

Modular Diffusers pode substituir o algoritmo de orientação por um guiar. Veja Guias.

Ponderação de prompts

O ponderamento de prompts torna algumas palavras mais fortes e outras mais fracas. Ele escala as pontuações de atenção para que você controle a influência de cada conceito.

Diffusers lida com isso por meio dos argumentos prompt_embeds e pooled_prompt_embeds, que aceitam vetores de incorporação de texto escalados. Use a biblioteca sd_embed para gerar essas incorporações. Ele também suporta prompts mais longos. Para ponderação de famílias Stable Diffusion com uma sintaxe mais simples, você também pode usar Compel.

A biblioteca sd_embed suporta apenas Stable Diffusion, Stable Diffusion XL, Stable Diffusion 3, Stable Cascade e Flux. A ponderação de prompts nem sempre é útil em modelos da classe Flux, que já seguem os prompts de perto.

uv pip install git+https://github.com/xhinker/sd_embed.git@main

Formate texto ponderado com multiplicadores numéricos ou parênteses. Mais parênteses significam ponderação mais forte.

format multiplicador
(cat) aumentar em 1,1x
((cat)) aumentar em 1,21x
(cat:1.5) aumentar em 1,5x
(cat:0.5) defina o peso para 0,5×

Crie um prompt ponderado e passe-o para get_weighted_text_embeddings_sdxl para gerar embeddings.

Você também pode passar prompts negativos para negative_prompt_embeds e 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)

Passe os embeddings para prompt_embeds e pooled_prompt_embeds para gerar sua imagem.

image = pipeline(prompt_embeds=prompt_embeds, pooled_prompt_embeds=pooled_prompt_embeds).images[0]

Xet Storage Details

Size:
5.7 kB
·
Xet hash:
78da53cd3c5c528f99a63f2ce50ecb091d1d52c28bd96bcc9ff627b34d6cfaa1

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