Режим бога Promts

101 кожаный, ну что, уже куча людей явно делали подобные гайды и расписывали тонну информации касательно «промтов».
Не поверишь, многие из них я так же читал, пытался понять, вдуматься, сделать выводы и в голове всегда была одна и та же фраза:

Режим бога Promts

В следствии чего, решил таки привести всю эту кашу в единое и понятное целое. Поговорим сегодня о работе промтов касательно Stable Diffusion т. к. именно там я и работаю. Так что присаживайся по удобнее, заваривай чайок, бери что нибудь вкусненькое и погнали.

Начнём из далека, изначально да и сейчас есть пределы и лимиты. это 75 токенов. Как в негативе так и в позитиве.
- что это вообще за токен?
Если опустить всю научную чепуху о том что такое токен, как он работает и т. д. для простых смертных объясню. Это числовой код, который сформирован на основе запроса. Проще сказать 1 слово — 1 токен. Но… есть 1 нюанс (как в анекдоте) символ запятая "," так же является токеном и приравнивается 1 единице.

Да, так что многие «боги промта» завещают нам.
- Составляй запросы разумно! Не разбрасывайся словами на ветер!

В чём то они правы. Давайте я покажу вам как можно себя немного обезопасить во время написания промта и не совершить ошибки (коих я уже наворотил не мало).

Есть два варианта проверки себя:

  1. Во время самой генерации. Рядом с кнопкой генерации в правой верхнем углу позитивного и негативного промта отображается количество текущих токенов.
  2. С помощью расширения Tokenizer (более детальный)

Расмотрим 1 вариант.
Возьмём позитивный промт:

4K, 8K, HD, (ultra realistic photo) , ((best quality)) , ((masterpiece)) , ((realistic)) , (detailed) , wide-angle, landscape, Goddess of Daytime Rome, portrait girl 25 years old, long hair, (white hair:1.22). Very smart face, neat nose, (black eyes:1.11), (detailed eyes:1.12), very thin, (top view:1.22), (freckles:0.7), ((golden olive branch in the hair)) , Perfect ass, attractive, (small breast:1.13), (perfect body) , Dawn hits her face and skin through, (Dressed in a white tunic:1.22), (In the background the castle of the god Zeus, columns, golden throne) , black border, anime character, neko, high detail, high quality, intricate, details, beautiful, (rtx:1.1)

Режим бога Promts

и закинем в WebUi в итоге и увидим 135/150

Режим бога Promts

Да да, у меня там показывает 135 из 150 хотя я выше сказал что "ЛИМИТ 75!" падажжите! Сейчас объясню. У многих моделей, данный порог, увеличен, у базовых моделей изначально был лимит 75. И вот из тех бородатых веков идёт поверье что 75 это максимум. Нет, максимум определяется моделью что вы используете вот и всё, порог своей модели вы можете понять на этапе когда начнутся артефакты и ошибки при генерации. Но, всё равно моя личная рекомендация снижать объем запроса для более качественной обработки, ведь чем больше вводных, тем больше нейросеть пытается учесть и тем больше она делает ошибки. По этому только опытным путём и читая описание к модели вы можете узнать на сколько она капризна к данным показателям.

Но я ведь пишу это всё не просто так) правда. Сейчас будем разбирать наглядный пример, как уменьшить колличество токенов и при этом получить желаемый результат.

Берём второй вариант (более детальный)

Возьмём тот же промт и проверим через расширение (Extensions) Tokenizer.
Что бы у вас оно появилось в WebUI. Необходимо перейти у во вкладку Extensions Available Load from: затем нажать сочетание Ctrl + F и ввести tokenizer (что бы не искать в списке), далее установливаем данное расширение

Режим бога Promts

после установки нужно перезапустить WebUI. Сделать это можно через вкладку Installed в том же окне Extensions и нажать кнопку «Apply and restart UI» после всех манипуляций у вас в общей строке инструментов должен появиться Tokenizer

Режим бога Promts

Проваливаемся туда, и в Text input закидываем наш промт и жмём кнопку Tokenize, получаем под кнопкой тот же текст? о_О Нет, вам не показалось. Да это ваш текст, только уже обработан так как видит его нейросеть.

Режим бога Promts

Если выбрать вкладку Tokens рядом с Text мы увидим замечательные данные что у нас 195 токенов!

Режим бога Promts

Но подожди… там было 135 здесь 195…

Режим бога Promts

Отставить математику! Всё куда проще чем кажется, ибо расширение считает еще и каждую точку и каждую скобку. В последствии это уже дообрабатывается за счёт оптимизации и количество используемых токенов уменьшается, следовательно, ваши запятые нейросеть воспринимает как разделители, а скобки воспринимаются как вес самого токена. Всё понял? Отлично.

Исходя из этого мы возвращаемся во вкладку Text и смотрим наш обработанный промт и видим что каждое слово выделено в разные цвета, что означает разделение на разные токены если навести мышку можно увидеть значение. Таким образом у нас 4k и 8k имеют каждый по 2 токена отдельно "4" и отдельно "к". хотя… это маленькое слово, да и должно быть по идеи 1 токеном… Сложно как то… На самом деле нет. Есть слова которые имеют большее начение, и вот 4k и 8k из этих самых ребят.

Давайте оптимизируем наш промт избавившись от так называемых «паразитов» дабы упростить работу и улучшить результат. Первое что мы сделаем, уберём 4K оставив 8K, они перекрывают друг друга и в связи с этим качество ухудшается. Затем избавимся от таких упоминаний как «very« и т.д. просто приводим промт в чёткие команды без всяких, скажем… дополнительно не нужно описывающих слов. Лучше использовать веса в данном случае. Не пишите "very old", сделайте лучше (old:1.3) так вы получите результат куда лучше да и нейросеть поймёт вас точнее. Но веса это отдельная вообще тема. Если будет интересно затронем и её в следующих постах

И так, оптимизировав наш промт мы получили вот такой результат.

(ultra realistic photo), 8k, ((best quality)), ((masterpiece)), ((realistic)), wide-angle, landscape,
portrait girl 25 years, long hair, (white hair:1.22). smart face, neat nose, (black eyes:1.11), (detailed eyes:1.12), (thin), (freckles:0.7), ((golden olive branch in hair)),
Perfect ass, attractive, (small breast:1.13), (perfect body), Dawn hits her face and skin, (Dressed in white tunic:1.22),
The background, (Rome, castle of the Zeus, columns),
black border, anime character, high detail, high quality, intricate, details, beautiful, (rtx:1.1)

и на выходе всего 162 токена. Изменилось ли качество? Хм… Давайте посмотрим.

Режим бога Promts

По сути мы получили тот же образ, более аккуратные детали, и без лишнего мусора на заднем фоне. Проще говоря. ваш промт должен быть разбит на блоки:

  1. Качество желаемого изображения, правила фокуса и композици, стиль
  2. Объект в кадре, детали, описание, особенности
  3. Описание внешности и особенности тела, какое выполняется действие
  4. Стиль одежды и детали одежды
  5. Описание фона (чем меньше тем лучше, но в случаях когда фон важнее чем персонаж, то описание фона смещается на пункт 2)
  6. Вспомогательные детали такие как high detail, high quality, intricate, details, beautiful

Следуя данным правилам вы избавитесь от частой перегенерации для получения качественного результата т.к. нейросеть будет выполнять вашу задачу корректнее.

Режим бога Promts

Вот и всё кожаные) Писал первый раз, долго думал чем бы с вами поделиться интересным и решил затронуть данную тему. Увидимся в следующих постах!

Еще у меня есть телеграм канал буду рад вас видеть там.

P. s. должен предупредить, канал 18+ детям вход запрещен!

2727
12 комментариев

Комментарий недоступен

2
Ответить

Спасибо за разбор, было очень полезно. Напиши, пожалуйста, ещё про веса.

2
Ответить

Комментарий недоступен

1
Ответить

где castle of the Zeus, Perfect ass, landscape? этого на картинке нет, зачем это в промте?

Ответить

Присмотрись к последнему фото.
Landscape - пейзаж сзади есть
Perfect ass - учавствует в данной модели для прорисовки фигуры
Castle of Zeus - Находится в самом конце, как описание фона, без видимого веса, он является чисто приправой к промту, что бы колонны имели древне римские очертания. Если хочется что бы фон соответсвовал жестко требованиям я писал о том что нужно смещать по промту выше нежели персонаж.

1
Ответить

Картинку в ленту выведи

Ответить

Спасибо за совет ╰(*°▽°*)╯

Ответить