Продолжаю знакомить вас с функционалом системы Yes Ai Bot и сегодня расскажу о том, как писать промпты для нейросети Stable Diffusion.
Напомню, что так называют текстовые описания того, что вы хотели бы изобразить в формате картинок. Например, «рыцарь в доспехах» или «зеленая чашка на столе». Так выглядят простые промпты, но есть еще и профессиональные.
В этой статье я подробно расскажу о принципах работы с ботом для создания картинок с помощью как простых, так и сложных промптов.
Все примеры мы будем разбирать на русском языке, но не забывайте о том, что Stable Diffusion в @yes_ai_bot поддерживает ввод текста на всех языках мира.
Типы запросов
Итак, существует два типа запросов:
- Простой – это когда мы просто перечисляем через запятую какие-то объекты и окружение, которые хотим видеть на конечном изображении.
- Профессиональный – когда используются различные весовые коэффициенты и функции.
В первую очередь стоит поговорить о пунктуации. Есть несколько правил написания промптов:
- В самом начале запроса нужно прописать основной объект, который должен быть на изображении. Например, «кошка», «зонт» и т. п.
- Далее через запятую перечисляются детали – это может быть фон, окружение, одежда, дополнительные персонажи и т. д. Например, «разноцветный зонт, его держит в руках девушка, на фоне голубого неба летают птицы».
- Если конечная картинка не отобразила какой-то из объектов, описанных в промпте, то нужно в своей фразе добавить этому объекту вес. Это делается с помощью круглых скобок – (). Например, так – «(разноцветный) зонт, на фоне неба летают (птицы)». Как видите, слова «разноцветный» и «птицы» заключены в круглые скобки – это дает нейросети понять, что вес этих объектов нужно увеличить на 10 % по отношению к остальным словам и фразам в промпте.
- Можно повысить вес еще больше. Для этого нужно добавить скобок или указать цифрами вот так: «(((разноцветный))) зонт», на фоне неба летают (птицы:1.2)». Таким образом, мы увеличили вес первого слова на 30 %, а второго – на 20 %. Каждая пара скобок – это + 10 %. Т.е. две скобки повышают вес на 20 %, три скобки на 30 % и т.д. Коды от «1.1» до «1.7» повышают вес от 10 % до 70 %. Это значение лучше не превышать, иначе нейросеть может вместо описанной картинки выдать шум – например, просто черный квадрат или еще что-то такое, что никак не будет соотноситься с ожидаемым результатом.
Важно помнить о том, что в качестве разделителей лучше использовать именно запятые. Никакие точки, точки с запятой, многоточия или переносы строки не подойдут.
Кроме того, не рекомендуется писать слишком объемные промпты. Это может исказить конечный результат.
Давайте потренируемся на практике. Пропишем такой достаточно несложный промпт:
«сидит кот, на фоне лес, ночь, светит большая луна»
Читайте также:
В начале у нас основной объект – кот. Затем идут перечисления дополнений – лес, ночь, луна. Каждое последующее слово в промпте влияет на все предыдущие.
Если в конце приписать, например, «рисунок в стиле художника Ван Гога», то оно применится ко всему изображению.
Если выведенный на экран результат показал нам все, кроме, например, стиля Ван Гога, то это значит, что нам нужно увеличить вес этой фразы.
Как мы уже с вами выяснили, сделать это можно двумя способами – путем круглых скобок и цифрового соотношения, прописанного после двоеточия.
То есть либо так:
«сидит кот, на фоне лес, ночь, светит луна, (((в стиле художника Ван Гога)))»
Либо вот так:
«сидит кот, на фоне лес, ночь, светит луна, (в стиле художника Ван Гога:1.3)»
И тот, и другой варианты сработают одинаково и увеличат вес на 30 %.
Есть еще одна фишка – это английские промпты-дополнения, которые имеют свои эффекты.
Так, например, если добавить в конце нашей фразы-описания «.bw», то изображение будет черно-белым («black and white» с английского переводится как «черно-белое»).
Можно добавить другое дополнение – «3d». В этом случае картинка получится более объемной.
О таких английских дополнениях я буду писать в следующих своих обзорных статьях, а пока пойдем дальше и поговорим о квадратных скобках.
Есть несколько случаев, когда можно применить квадратные скобки. Рассмотрим такую функцию как скрещивание (или смешивание).
Например, прописываем такой простой промпт: «девушка». Нейросеть выдает изображение рандомной девушки, внешность которой будет зависеть от выбранных параметров – чекпоинта, стиля и Lora.
Чтобы избежать такого рандома, можно применить квадратные скобки и сделать образ девушки похожим на какую-нибудь поп-звезду или актрису.
Делаем это так:
«девушка, [анджелина джоли:0.9]»
Что означают эти 0.9? Это значит, что нейросеть будет рисовать девушку в течение 90 % шагов сэмплинга (итераций прорисовки) и только оставшиеся 10 % шагов она будет прорисовывать черты Анджелины Джоли.
Чем меньший коэффициент мы указываем, тем больше картинка будет похожа на прописанного нами персонажа. Например, если взять коэффициент 0.1 или 0.3, девушка на изображении будет очень похожа на выбранную нами актрису.
Соответственно, при коэффициенте 0.7 или 0.8 она будет похожа на Джоли уже намного меньше.
Эту функцию можно использовать и по-другому – для мутации объектов. Например, можно прописать такой промпт: «[кот:пес:0.5]». Первые 50 % нейросеть будет рисовать кота, а потом в течение оставшихся 50 % будет пробовать преобразовать его в собаку.
При этом чем меньше коэффициент, тем меньше итоговый объект на картинке будет похож на первого персонажа, прописанного в промпте. Например, если поставить коэффициент 0.3, то животное на картинке будет уже больше похоже на собаку, чем на кота.
Все эти правила можно совмещать в одном промпте. Например, так:
«[кот:пес:0.5], на фоне хвойного леса, (((в стиле леонардо давинчи)))»
Таким образом, мы получаем котопса, который изображен на фоне леса с какими-нибудь елками и все это будет представлено в стиле картин Леонардо да Винчи. Последнее условие мы заключили в тройные круглые скобки для того чтобы повысить вес этого условия, тем самым увеличив вероятность того, что оно будет выполнено так как нам нужно.
Можно вносить любые коррективы. Например, снизить вес стиля да Винчи, если вдруг нейросеть будет искажать остальные элементы с более низким весом. Либо указать в конце «3d», чтобы картинка вышла объемной:
«[кот:пес:0.5], на фоне хвойного леса, в стиле леонардо давинчи, 3d»
А можно перенести «3d» в другое место, чтобы это условие было применено не ко всему изображению, а только к конкретному элементу:
«[кот:3d:0.5], на фоне хвойного леса, в стиле леонардо давинчи»
Теперь объемным будет только кот, ведь, как мы помним, все последующие условия влияют только на предыдущие.
Идем дальше. Расскажу еще об одной интересной функции – это исключение каких-либо нежелательных объектов на рисунке.
Например, если нам нужна картинка с девушкой, идущей по парку, но мы не хотим видеть на этом рисунке других людей или птиц. В этом случае мы пишем так:
«девушка, идет по парку /np люди, толпа людей, птицы»
/np – это «negative prompt», или «отрицательный сигнал».
Здесь важно отметить, что помимо negative prompt, который можно прописать самостоятельно, в настройках нейросети по умолчанию установлен свой negative prompt, который исключает множество нежелательных побочек во всех изображениях, например – дополнительных пальцев, деформированных или отсутствующих конечностей, чего-то безобразного, отвратительного, размытого, неправильной анатомии и т.д.
И что еще важнее запомнить – если вы в тексте промпта прописываете условие /np , то основной negative prompt будет автоматически отключен. Т.е. в вашем изображении могут возникнуть искажения вроде шестых пальце на руке и т.д.
Поэтому использовать /np желательно только в качестве тестирования и экспериментов с возможностями нейросети Stable Diffusion.
На сегодня это все. Обязательно подписывайтесь на обновления, впереди вас ждет еще целая серия образовательных статей, где я буду рассказывать о других функциях Yes Ai Bot. А если у вас остались вопросы – задавайте их в комментариях.
До встречи!