Buckets:

mishig's picture
|
download
raw
8.6 kB
# Промптинг
Промпты описывают, что должна сгенерировать модель. Хорошие промпты подробные, конкретные и структурированные, и они приводят к получению более качественных изображений и видео.
В этом руководстве показано, как составлять эффективные промпты, и представлены приемы, которые делают их сильнее.
## Составление хороших промптов
Каждый эффективный промпт требует трех ключевых элементов.
1. Тема — то, что вы хотите сгенерировать. Начните свой промпт с этого.
2. Стиль — это средство или эстетика. Как это должно выглядеть?
3. Контекст — детали о действиях, обстановке и настроении.
Используйте эти элементы как основу для структурированного повествования, а не как список ключевых слов. Современные модели лучше понимают язык, чем сопоставление по ключевым словам. Начните с простого, а затем добавляйте детали.
Контекст особенно важен для создания более качественных промптов. Попробуйте добавить освещение, художественные детали и настроение.
милая кошка отдыхает на листе в бассейне в спокойный летний полдень, в стиле lofi, иллюстрация.
Милый котик лежит на плавающем листе в сверкающем пруду в безмятежный летний полдень. Чёткие отражения рябью расходятся по воде, а солнечный свет создаёт мягкие, плавные блики. Иллюстрация детализирована и отполирована, с изящными линиями и гармоничными цветами, вызывая расслабляющее, спокойное и игривое lofi-настроение, вдохновлённое аниме и визуально приятное.
Будьте конкретны и добавляйте контекст. Используйте фотографические термины, такие как тип объектива, фокусное расстояние, ракурсы съёмки и глубина резкости.
> [!TIP]
> Попробуйте [улучшатель промптов](https://huggingface.co/models?sort=downloads&search=prompt+enhancer), чтобы помочь улучшить структуру вашего промпта.
## Руководство и негативные примеры
Большинство пайплайнов Diffusers по-прежнему управляют сэмплированием с помощью classifier-free guidance и необязательного `negative_prompt`.
В пайплайнах семейства Stable Diffusion передавайте `guidance_scale` и `negative_prompt`. Чем выше значение `guidance_scale`, тем точнее изображение соответствует промпту. Слишком высокие значения могут привести к неестественному или перенасыщенному виду.
```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]
```
В более новых чекпоинтах, таких как Qwen-Image и Flux, классический CFG обычно представляет собой `true_cfg_scale` в сочетании с `negative_prompt`. Отрицательные промпты по-прежнему применяются, когда включён true CFG (`true_cfg_scale > 1` и задан `negative_prompt`). Аргумент `guidance_scale` означает дистиллированное или встроенное руководство, если трансформер это поддерживает, что не то же самое. Проверьте API пайплайна для загружаемой вами модели.
Модульные Diffusers могут заменить алгоритм наведения на guider. См. [Guiders](./guiders).
## Взвешивание промптов
Взвешивание промпта делает одни слова более сильными, а другие — более слабыми. Оно масштабирует оценки внимания, позволяя контролировать степень влияния каждой концепции.
Diffusers решает эту задачу с помощью аргументов `prompt_embeds` и `pooled_prompt_embeds`, которые принимают масштабированные векторы текстовых эмбеддингов. Для генерации этих эмбеддингов используйте библиотеку [sd_embed](https://github.com/xhinker/sd_embed). Она также поддерживает более длинные промпты. Для взвешивания в семействах Stable Diffusion с более простым синтаксисом можно также использовать [Compel](https://github.com/damian0815/compel).
> [!NOTE]
> Библиотека sd_embed поддерживает только Stable Diffusion, Stable Diffusion XL, Stable Diffusion 3, Stable Cascade и Flux. Веса промптов не всегда помогают в моделях класса Flux, которые и так точно следуют инструкциям.
```shell
uv pip install git+https://github.com/xhinker/sd_embed.git@main
```
Формат взвешенного текста с числовыми множителями или скобками. Чем больше скобок, тем сильнее взвешивание.
| формат | множитель |
|---|---|
| `(cat)` | увеличение в 1,1 раза |
| `((cat))` | увеличение в 1,21 раза |
| `(cat:1.5)` | увеличение в 1,5 раза |
| `(cat:0.5)` | установите вес в 0,5× |
Создайте взвешенный промпт и передайте его в [get_weighted_text_embeddings_sdxl](https://github.com/xhinker/sd_embed/blob/4a47f71150a22942fa606fb741a1c971d95ba56f/src/sd_embed/embedding_funcs.py#L405) для генерации эмбеддингов.
> [!TIP]
> Вы также можете передать отрицательные промпты в `negative_prompt_embeds` и `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)
```
Передайте эмбеддинги в `prompt_embeds` и `pooled_prompt_embeds`, чтобы сгенерировать изображение.
```py
image = pipeline(prompt_embeds=prompt_embeds, pooled_prompt_embeds=pooled_prompt_embeds).images[0]
```

Xet Storage Details

Size:
8.6 kB
·
Xet hash:
b40dc296d37cacc5d97b88a27d0b90e02850e91591d4aba697969228651d5628

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