Buckets:

mishig's picture
|
download
raw
5.84 kB
# Prompting
Los prompts describen lo que un modelo debe generar. Los buenos prompts son detallados, específicos y estructurados, y generan mejores imágenes y videos.
Esta guía te muestra cómo escribir prompts efectivos y presenta técnicas que los hacen más sólidos.
## Escribir buenos prompts
Todo prompt eficaz necesita tres elementos esenciales.
1. Sujeto: lo que quieres generar. Comienza tu indicación aquí.
2. Estilo: el medio o la estética. ¿Cómo debería verse?
3. Contexto: detalles sobre las acciones, el escenario y el estado de ánimo.
Utiliza estos elementos como una narrativa estructurada, no como una lista de palabras clave. Los modelos modernos comprenden mejor el lenguaje que el simple emparejamiento de palabras clave. Comienza de forma sencilla y luego añade detalles.
El contexto es especialmente importante para crear mejores prompts. Prueba a añadir iluminación, detalles artísticos y ambiente.
gato adorable descansando sobre una hoja en una piscina durante una tranquila tarde de verano, en estilo de arte lofi, ilustración.
Un gato adorable se relaja sobre una hoja flotante en una piscina reluciente durante una tranquila tarde de verano. Reflejos claros ondulan sobre el agua, mientras la luz del sol proyecta destellos suaves y delicados. La ilustración es detallada y pulida, con líneas elegantes y colores armoniosos, evocando un ambiente lofi relajante, sereno y caprichoso, inspirado en el anime y visualmente reconfortante.
Sé específico y añade contexto. Utiliza términos de fotografía como tipo de lente, distancia focal, ángulos de cámara y profundidad de campo.
> [!TIP]
> Prueba un [prompt enhancer](https://huggingface.co/models?sort=downloads&search=prompt+enhancer) para ayudarte a mejorar la estructura de tu prompt.
## Guía y negativos
La mayoría de las pipelines de Diffusers aún dirigen el muestreo con classifier-free guidance y un `negative_prompt` opcional.
En las pipelines de la familia Stable Diffusion, pasa `guidance_scale` y `negative_prompt`. Un `guidance_scale` más alto sigue el prompt con mayor fidelidad. Valores demasiado altos pueden resultar poco naturales o con saturación excesiva.
```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]
```
En puntos de control más recientes, como Qwen-Image y Flux, el CFG clásico suele ser `true_cfg_scale` junto con `negative_prompt`. Los negativos siguen aplicándose cuando el CFG verdadero está habilitado (`true_cfg_scale > 1` y un `negative_prompt`). Su argumento `guidance_scale` es una guía destilada o integrada cuando el transformador lo admite, lo cual no es lo mismo. Consulta la API de la pipeline para el modelo que cargues.
Los Diffusers modulares pueden reemplazar el algoritmo de guía con un guider. Consulte [Guiders](./guiders).
## Pesos de los prompts
El ponderado de prompts hace que algunas palabras sean más fuertes y otras más débiles. Escala las puntuaciones de atención para que controles la influencia que tiene cada concepto.
Diffusers gestiona esto mediante los argumentos `prompt_embeds` y `pooled_prompt_embeds`, que aceptan vectores de incrustación de texto escalados. Utilice la biblioteca [sd_embed](https://github.com/xhinker/sd_embed) para generar estas incrustaciones. También admite prompts más largos. Para el ponderado de la familia Stable Diffusion con una sintaxis más simple, también puede utilizar [Compel](https://github.com/damian0815/compel).
> [!NOTE]
> La biblioteca sd_embed solo es compatible con Stable Diffusion, Stable Diffusion XL, Stable Diffusion 3, Stable Cascade y Flux. La ponderación de prompts no siempre resulta útil en modelos de la clase Flux, que ya siguen las instrucciones de manera muy cercana.
```shell
uv pip install git+https://github.com/xhinker/sd_embed.git@main
```
Formatea texto ponderado con multiplicadores numéricos o paréntesis. Cuantos más paréntesis, mayor es la ponderación.
| format | multiplicador |
|---|---|
| `(cat)` | aumentar 1,1 veces |
| `((cat))` | aumentar 1,21 veces |
| `(cat:1.5)` | aumentar 1,5 veces |
| `(cat:0.5)` | establecer el peso en 0,5× |
Cree un prompt ponderado y páselo a [get_weighted_text_embeddings_sdxl](https://github.com/xhinker/sd_embed/blob/4a47f71150a22942fa606fb741a1c971d95ba56f/src/sd_embed/embedding_funcs.py#L405) para generar embeddings.
> [!TIP]
> También puedes pasar prompts negativos a `negative_prompt_embeds` y `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)
```
Pasa los embeddings a `prompt_embeds` y `pooled_prompt_embeds` para generar tu imagen.
```py
image = pipeline(prompt_embeds=prompt_embeds, pooled_prompt_embeds=pooled_prompt_embeds).images[0]
```

Xet Storage Details

Size:
5.84 kB
·
Xet hash:
9024d030ffa60d85721c9af6a32d7bd4e193c528f553b7e47e85a83c747d2102

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