Как генерировать иллюстрации в нейросетях — руководство для новичков
Рассказываем, как составлять промпты для популярных нейросетей.
Автор: Mert Genccinar
Написание запросов (промптов) — целое приключение при генерации изображений в нейросетях. Каждая нейросеть обладает своим интерфейсом и своими тонкостями, которые стоит учитывать при написании запросов. Однако есть такие вещи, которые будут одинаковыми для большинства нейросетей.
В статье ниже мы решили собрать небольшую инструкцию для новичков по генерации изображений — разобрали параметры, которые можно применять, а также поделились тонкостями в оформлении текста при написании запроса.
Какие нейросети есть и чем они отличаются друг от друга
Для генерации изображений существует множество нейросетей, и все они представлены в разных видах, — некоторые работают в онлайне, а другие можно и нужно устанавливать на ПК.
Среди нейросетей есть четкие лидеры, которые лучше всего генерируют арт, и при этом их можно обучать. К таким нейросетям относятся:.
Stable Diffusion. Нейросеть представлена в разных версиях и формах — ее используют в онлайне, а также как отдельную программу на ПК. Основное преимущество Stable Diffusion — возможность гибко ее настроить под себя и использовать нейросеть бесплатно.
Пользователь может настроить буквально все — количество шагов для генерации, зерна генерации (seed), модели для улучшения стиля и многое другое. Подробно все возможности Stable Diffusion мы рассматривали в другой нашей статье.
Midjourney. Эта платная нейросеть и работает она исключительно через Discord — нужно подписаться на канал нейросети в мессенджере и оплатить подписку. Midjourney генерирует в основном фотореалистичный арт.
Не так давно для Midjourney появилась внутренняя модель Niji, которая работает как внутри основной нейросети, так и на отдельной платформе. Niji фокусируется на стилизованном арте.
Посмотрите на пример работы Midjourney — она адаптировала мультяшный образ Аватара Аанга из «Аватар: последний маг воздуха» в более фотореалистичной графике:
Dall-e Это также очень способная нейросеть, которая генерирует очень качественный арт в любой стилистике. Dall-e — это платная нейросеть, но работает в браузере, причем по аналогии с Chat GPT — пользователь вводит в текстовое поле запрос и получает результат.
Основное отличие Dall-e от других представителей в том, что запросы под нее можно писать в более свободной форме — языковая модель в ее основе адаптирует запросы пользователя под необходимые команды для нейросети.
Вот пример генерации в Dall-e, которую автор впоследствии дорисовывал вручную:
Как оформлять текст промпта при генерации
Чтобы получить от нейросети желаемое, стоит научиться оформлять корректные текстовые запросы, которые ещё называют промптами. Мы выделили ряд вещей, которые точно стоит «сказать» нейросети, чтобы получить нужный результат.
Объект на картинке
В начале нужно уточнить, что или кого именно вы хотите видеть на вашем изображении. Это может быть предмет или живое лицо. Уточним сразу — все остальное, как и сам объект, оформляем исключительно на английском.
Описания и уточнения
Под описаниями и уточнениями понимаются глаголы для обозначения действия, а также прилагательные, которые помогут передать специфику объекта или предмета. Также можно добавлять дополнительные объекты на фото, однако не переносите их наперед запроса, потому что нейросеть будет генерировать их в первую очередь.
Глаголы. Применять лучше глаголы, которые сообщают о конкретном действии. Абстрактных глаголов лучше избегать или дополнять их пояснениями, чтобы нейросеть могла понять.
Например, не просто «размышляет», а «размышляет, сидя на красном кресле и задумчиво поглаживая бороду».
Прилагательные. Лучше применять прилагательные для всего — пояснения характеристик объекта или предмета, а также обозначения общей атмосферы на рисунке.
Например, «красное платье», «черные волосы» или «мрачно», «готический» и так далее.
Пример промпта, где использовались как глаголы, так и прилагательные, с помощью которых мы объяснили, что делает и как выглядит объект: «1girl, ginger, braids, blue dress, leather boots, walking in the fairy forest, night, ((masterpiece, best quality, highly detailed))».
Характеристики кадра
В запросе пользователи могут сказать, какой кадр они хотят получить. Чаще характеристики такого рода добавляют под конец промпта, когда уже описали все детали.
Например, можно сообщить, чтобы на фото был «вид сверху» или «вид снизу».
Например, пользователь Midjourney вбил следующий запрос: «a 90’s style cartoon of a field full of cassette tapes with arms and legs running around, waving their hands. the anthropomorphic cassette creatures should be different colors and have faces of a 90s style monster faces. A lot of the photo should be showing the sky.» (все последующие примеры генерации в Midjourney взяты с открытой библиотеки нейросети).
В нем автор сразу сказал, что ракурс на фото должен быть такой, чтобы зритель видел небо, и основные действия происходили в небе — вид снизу.
Стилистика изображения
Пользователи также могут указывать, какие будут характеристики у стиля на изображении.
Например, если хочется сделать стилизованный арт, то напишите — «stylized art» в конце промпта. Можно уточнить, что не просто стилизованный, а в стиле аниме или комикса.
Например: «poster for barbie toys with pink background –ar 16:9 –style raw». Пользователь попросил сделать изображение без какой-либо обработки в плане стилистики:
Дополнительные характеристики изображения
В промпт помимо всех этих деталей можно интегрировать специфические фразы, с помощью которых можно обратить внимание нейросети на что-то важное.
Например, для улучшенного качества фотореалистичной картинки, можно добавлять фразы «4K», «high quality» и так далее. Обычно такие фразы ставят в самую последнюю очередь в запросе.
Вот пример: «Close up of man on his knees in the snow celebrating, arms in the air. He’s in a snowy frozen landscape with forest in the background. Photo realistic. 4k wide long view ar 16:9».
Помните, что при составлении текстового запроса стоит вчленять наиболее важные фразы на начало, потому что алгоритм, в первую очередь, обращает внимание на первые фразы, а те, которые идут после, генерируются позже и где-то ближе к краям арта.
Это правило не всегда работает, но чаще всего происходит именно так. Пробуйте разные вариации текстовых промптов и отслеживайте свои результаты.
Что нужно учитывать при написании промпта
При использовании нейросетей желательно писать не только «голый» запрос, но и использовать параметры, которые позволяют сделать генерацию более точечной.
В каждой конкретной нейросети оформление параметров разное — где-то это часть интерфейса, а где-то — непосредственная часть промпта. Мы рассмотрим общие параметры для каждой нейросети, которые можно внедрять в промпт и делать его лучше.
Использование сторонних изображений
В запрос в каждой из перечисленных выше нейросетей можно внедрять изображения — это либо ссылка, либо загруженная картинка. Нейросеть используют арт в качестве референса или как основу для доработки.
Например, нейросеть может взять созданный за пару минут скетч и превратить его в полноценный арт.
Для наглядности возьмем пример генерации в Midjourney. Пользователь использовал такое изображение на входе:
Помимо загруженного арта автор прописал конкретный промпт — «This man. This scene turns into a mess. Filled with dark things. Look from above. –ar 3:4 –s 750 –niji 6».
Впоследствии можно выбрать один из этих четырех артов и начать его «раскручивать» дальше, воплощая всё новые и новые идеи внутри нейросети.
Впрочем, если вы собираетесь использовать созданный арт в своей работе, то вам всё равно придётся серьезно дорабатывать его своими руками. Навыки художника никто не отменял — без них никуда.
Seed
Сид — это «зерно» генерации. Каждое генерируемое изображение имеет свое цифровое обозначение, и это значение можно использовать для последующей генерации.
Например, мы сгенерировали пейзаж осеннего леса, взяли цифровое значение после генерации и включили это значение в запрос, чтобы нейросеть доработала рисунок или сгенерировала на его основе что-то новое.
Это особенно полезно, когда пользователь хочет сгенерировать изображения в разной стилистике на основе одного и того же арта. Это можно сделать, просто вставив в промпт сид предыдущего изображения:
Вес промпта
Это то, сколько внимания нейросеть будет уделять тому или иному слову в вашем промпте. Обычно они оформляются при помощи цифр и стоят рядом с одним из слов в запросе.
Пример — «one (giger:0.5) (girl:1.5)». Проанализировав этот промпт, нейросеть будет в приоритет брать генерацию девушки, а то, что она рыжая — будет учитывать в последнюю очередь, потому что мы проставили больший вес для запроса «girl».
Значения веса могут быть разными, однако не стоит ставить значение выше двух, потому что нейросеть начинает галлюцинировать и создавать артефакты.
Вот пример генерации с разными весами промпта — на первом изображении для слова «dog» снизили важность до 0.5, а во втором оставили на 1, и количество собак на фото сразу увеличилось:
Шаги генерации
Шаги генерации позволяют дать нейросети указание, чтобы она генерировала определенное изображение более длительно.
Проще объяснить на примере — допустим, вы написали запрос и поставили 20 шагов генерации. Нейросеть быстро сгенерировала рисунок и не так уж и точно изобразила предметы на фоне. Если повысить число шагов, можно увеличить детализацию арта за счёт скорости его создания. То есть, если вы готовы ждать, чтобы получить что-то более качественное, то вам стоит увеличить количество шагов генерации.
Но стоит понимать, что при слишком большом значении нейросеть может галлюцинировать — вставлять в новый арт неестественные и кривые сущности. Отдавать нейросети кучу свободного времени, как ни странно, тоже нежелательно, как и давать его слишком мало. Лучше выставлять среднее значение, чтобы немного улучшить детализацию, но при этом не снимать ограничения с нейросети.
Пример применения разного количество шагов:
Соотношение сторон
В каждой нейросети можно определить соотношение сторон для своего изображения. Это можно сделать как перед генерацией, так и уже получив результат — воспользоваться сидами или дать специальную команду боту (в Midjourney) для изменения соотношения сторон.
Для примера взгляните на изображение ниже. Автор генерации использовал следующей промпт:
«Farming on a vast scale in the great outdoors –ar 16:9»
16:9 — это и есть соотношение сторон. Нейросеть учла пожелания человека и сгенерировала арт именно в таком соотношении сторон.
Разрешение изображения
Разрешение изображения — это его размер. В нейросетях также можно выставлять необходимый размер. Например, в Stable Diffusion минимальное разрешение — 512 на 512, но если нужно больше, значение можно увеличить и до 2048 на 2048. Важно знать, что при увеличении размера процесс генерации становится длительнее.
Практика: примеры промптов с применением разных параметров
При написании промптов нужно практиковаться, потому что не всегда одни и те же рекомендации будут работать в конкретном случае. Иногда нужно серьезно адаптировать промпт, чтобы получить желаемое.
Взгляните на примеры ниже. Один из них — работа нашего студента с курса «Нейросети для художника». Сначала студент сгенерировал просто изображения, никак не влияя на общую стилистику.
Промпт: «evil fat man necromancer, magic book, sculls, castle background, night, portrait, mike mignola style, dispiples 2 style –v 6.0» — сначала указали объект и его характеристики, потом дали краткое описание предметам фона и общей атмосфере.
Такая стилистика не подошла — решено было сделать более стилизованный арт. Студент использовал Niji, просто добавив эту фразу в конец запроса. Результат получился совершенно иным:
Промпт: «evil fat man necromancer, mustache, round glasses, magic book, sculls, castle background, night, portrait, mike mignola style –niji» — как видите, промпт практически такой же, за исключением его последней части, но это в корне поменяло арт.
Другой пример — на этот раз использовали Dall-e и хотели сгенерировать девушку с короткими волосами и крупными очками в шляпке ведьмы.
Промпт: «Make big illustration of girl with short pink hair, in big round glasses, wearing cute purple magician dress with golden ornament, in big magician hat, looking at the stars though an old, stacks of old books on foreground, beautiful detailed sky, night, magician atmosphere».
Как видите, промпт практически не содержит команд или параметров — это потому что генерация происходила в Dall-e. Для этой нейросети достаточно составить осмысленный промпт, где надо отметить четкий объект, действие и общие характеристики или атмосферу изображения.
В Dall-e встроена хорошая языковая модель, которая адаптирует ваши промпты для нейросети в понятный вид. В Midjourney также есть подобная модель, но она сравнительно новая (внедрили только в 6-й версии).
И последний пример генерации в Stable Diffusion. Нейросеть довольно гибкая в плане настройки, поэтому помимо запросов, параметров и дополнительных команд можно также использовать различные ControlNet — специальное расширение для Stable Diffusion, которое позволяет генерировать на основе картинки, наброска или позы.
Вот пример генерации в Stable Diffusion от нашей студентки ниже.
Промпт: «1girl, squatting, looking at viewer, sitting in a field, detailed night sky, ((masterpiece, best quality, highly detailed))»
Негативный промпт: «easynegative, (low quality, worst quality:1.4), (holding, multiple limbs, mutated limbs, mutated human, poorly drawn human body:1.5), bad hands, bad artist, bad anatomy»
Шаги: 30
Seed: 2094553916
Size: 768×1024
Студентка с помощью ControlNet считала позу с картинки-референса и в дальнейшем использовала эту схему вместе с промптом и негативным промптом, чтобы сгенерировать другой арт, но с девушкой в указанной позе.
Возможностей у этого инструмента много — например, можно при помощи ControlNet менять внешность людей, сохраняя его тело.
Что стоит запомнить
- Чтобы составить хороший промпт, надо правильно сформулировать текст и внедрить параметры и команды в него. Так вы получите результат, который хотите. Выше мы разобрали основные вещи, однако у каждой нейросети есть свои нюансы — используйте дополнительно техническую документацию, чтобы улучшить свои знания;
- При составлении промптов лучше не использовать частицу «не», потому что нередко нейросети, наоборот, добавляют объект, который вы не хотели добавлять.
- Не переживайте, если сразу не получается достигнуть идеального результата, — здесь важна практика. К тому же большинство нейросетей предлагают переделывать генерации — при помощи сидов, например, или отдельных команд.
Комментарии