Как создать свой стикер пак с помощью нейросети Stable Diffusion
Вы знали, что не обязательно быть дизайнером, чтобы создать свой красивый пак стикеров?
Сегодня я поведаю историю создания своего стикерпака из 20+ стикеров с моим персонажем по имени Эвелинн с помощью нейросетей. Вам не понадобится мощная видеокарта и даже Photoshop(в большинстве случаев): я покажу, как сделать всё это прямиком в браузере. Это простой, доступный и бесплатный способ создания уникальных стикеров, справится даже чайник, надеюсь, он уже закипел, приступим!
Создание стикеров – дело творческое, и способы, которые я покажу, можно легко комбинировать, чтобы ускорить и упростить процессы.Начну с того, что расскажу про все необходимые инструменты, а затем перейду к процессу создания стикеров, показывая каждый шаг на примерах. Вы увидите, как легко можно воплотить свои идеи в жизнь, используя нейросеть Stable Diffusion и доступные онлайн-сервисы.
Почему не Midjourney? Потому что в Stable Diffusion можно более гибко контролировать конечный результат генерации, на ходу исправлять недочёты, например пальцы или какие-либо детали. Но с недавнего времени можно прямо там же избавляться от фона, не выходя из интерфейса. Если вы боитесь SD, то это напрасно, потому что он вовсе не сложный.
ArtGeneration
Если бы у меня не было видеокарты, и мне нужен был крутой онлайн-сервис для генерации изображений, то это безоговорочно artgeneration.me. Совсем недавно реализовали возможность добавлять LoRA (это небольшие модели для определённых задач) и завезли мою самую любимую XL-модель - animapencil XL.
Сервис бесплатный, но есть дневное ограничение по генерациям. Но я сделал для вас реферальную ссылку, по которой вы получите неделю PRO-аккаунта, хотя и по истечении недели функционала нам достаточно.
Генеративный ИИ в облаке. Сервис платный, от 50 рублей час. Лично я им ещё не успел попользоваться, но внутри есть выбор: Automatic1111 или Fooocus. Если вы не знакомы с интерфейсом Automatic1111 или вообще не сталкивались ранее с генерацией изображений, то рекомендую вам выбирать Fooocus, если остановитесь на этом сервисе. Разницы между ними нет, кроме интерфейса, а у Fooocus он намного более понятный.
Fooocus локально
Если вы счастливый обладатель видеокарты NVIDIA с более чем 8 GB видеопамяти, то поздравляю, вам доступна установка интерфейса Fooocus локально!
Чтобы установить оригинальный Fooocus, переходим по ссылке на GitHub и нажимаем на >>> Click here to download <<<.
Распаковываем архив в любую удобную папку без кириллицы в названии.
Далее видим следующую картину:
Не вдавайтесь в подробности, просто запускайте run.bat. У вас докачаются необходимые файлы и Fooocus будет готов к работе.
Интерфейс Forge
Если вы уже опытный юзер, то можете использовать Forge, тем более что сейчас в нём вообще можно генерировать изображения на прозрачном фоне. Со стикерами я не пробовал, но если вам интересно, советую посмотреть видео по Forge от моего товарища Nerual Dreming. Я же буду рассказывать и показывать всё на интерфейсе Fooocus, а если вы хорошо ориентируетесь в Forge, то сможете легко адаптировать мои советы и для него.
Всё, что я буду рассказывать далее, можно применять на каждом из сервисов.
Подготовка к работе
На этом этапе мы делаем заготовки для будущих стикеров. Я использую модель animagineXL, но позже попробовал на animapencilXL и обе мне очень нравятся. Ну и из LoRA нам понадобится только Stickers Redmond.
Ах да, забыл рассказать, что к чему!
Если вы уже знаете интерфейс Fooocus, то переходите к этапу 1.
Модели или чекпоинты - обученные модели нейронных сетей. Модели обладают пониманием внешнего вида широкого спектра объектов, таких как люди, фауна, здания и многое другое.
Я подразделяю модели на реалистичные, мультяшные, аниме-модели и все остальные.
LoRA - это маленькие модели. Если большие чекпоинты нужны для отрисовки большого спектра объектов, то LoRA нужны для определённых объектов, стилей, персонажей и т.п.
Это если очень кратко. Просто повторяйте за мной и со временем вы поймёте, что за что отвечает.
Выше я перечислил модели, которые мы будем использовать. На CivitAI вы сможете найти всевозможные модели на любой вкус и цвет. Знаю, что вам захочется поэксперементировать и использовать что-то другое, поэтому обращайте внимание на пункт Базовая Модель. Вам нужны модели с архитектурой SDXL 1.0.
Модели и LoRA мы скачиваем и отправляем в корневую папку Fooocus>models>checkpoints или loras.
Всё! Запускаем заново интерфейс через run.bat.
В браузере откроется следующее окно:
Нажимаем Advanced и справа вылезает менюшка. Она нам и нужна.
Слева снизу мы видим окно Prompt и серую кнопочку Generate. В окно мы вписываем запрос, т. е. то, что мы хотим видеть на изображении.
Быстрый экскурс по интерфейсу:
Всё, что нам по началу нужно будет от первой вкладки, это:
- Разрешение - как понятно из названия, разрешение твоего изображения. Рекомендую поставить 1024х1024 и не париться.
- Image Number - количество изображений на выходе. Оптимально 4.
- Negative Prompt - то, чего не должно быть на изображении вписываем в это окно.
Стили. Для стикеров снимаем все галочки, они будут только мешать.
Уже знакомые нам модели и LoRA. Выбираем то, что мы скачали и выставляем, как на скриншоте(можете подвигать и выставить по вкусу, но это лучшие параметры, которые я вывел).
Во вкладке Advanced выставляем такие параметры. Остальное не понадобится.
Бегло пробежались по интерфейсу, но если поставите много плюсов, расскажу про интерфейс подробнее, какой параметр за что отвечает. В рамках данного гайда это всё будет очень долго.
Этап 1. Генерируем стикеры
Для стикеров должен быть простой промпт(текстовый запрос). Но в него вы должны вложить самые важные черты персонажа и его внешности. Вот что использовал я:
sticker, simple background, pretty beautiful 1girl with short white hair, hair buns, white t-shirt, freckles, blue eyes, __Эмоция, поза__
В конце обязательно вставлял описание эмоции или позы, что и есть самое главное в стикере. Ниже я собрал то, что использовал, приходилось перебирать, некоторые позы или эмоции на английском называются не так, как я предполагал:
Эмоции:
light smile / light smirk - улыбающийся / с ухмылкой
Smirk - злобная ухмылка
angry, irritated, - злой, раздражённый
surprised expression, amazed, open mouth - удивлённый
one eye closed, winking, - подмигивающий
serious - серьёзный
crying, sad - грустный, со слезами
embarassed, confused, - смущённый
focused on - сфокусирован на предмете
Жесты:
thumb up - жест "лайк"
showing thumb with his hand - показывает пальцем на смотрящего
waving her/his palm - махает рукой, приветствует
heart shaped hands (понадобится лора AwyHandHeartXL, вес 0.8) - руки сердечком
saluting - отдающий честь
hands on head - держится за голову
shrugging - пожимать плечами
Часто приходилось гуглить сайты с названиями аниме-эмоций:
Суть в том, что не следует всегда доверять переводчику, я чаще дополнительно гуглю перевод того или иного слова или выражения на английский. Ну а использую я DeepL как переводчик.
Давайте начнём.
sticker, simple background, pretty beautiful 1girl with short white hair, hair buns, white t-shirt, freckles, blue eyes, waving her palm
Негативный запрос, который я использовал:
bad quality, bad anatomy, worst quality, poor quality, monochrome, low quality, low resolution, blurry, blur, watermark, lowres ugly, disfigured, duplicate, mutated, bad art, blur, blurry, dof
Разрешение в основном я использовал либо 1024x1024, либо 768x1280.
Вес LoRA - 1.4.
Самая удачная - четвёртая картинка. Её не нужно расширять, фон получился белым, как я и задумывал. Будем использовать четвёртую, иногда фон может не получаться, как на первых вариантах, в таком случае просто повысьте вес white background(выделите white background в промпте и нажмите ctrl + стрелочка вверх).
Далее я улучшаю глаза и лицо, убираю артефакты с помощью инструмента Inpainting.
Перетаскиваю изображение в окно и рисую маску, сначала выделяю глаза.
В Inpainting есть три режима:
Inpaint - стандартный режим. Чаще всего использую, чтобы подправить руки/убрать артефакты и т. п.
Improve - режим для повышения детализации отдельных частей изображения(лицо, глаза, руки, одежда и т.п.)
Modify - используется для добавления объектов, смены фона и т. п.
Это в общих словах, на самом деле в каждом используется разная denoising strenght и inpaint model. Но в этой статье не будем сильно углубляться.
Выделяю глаза. Советую использовать горячие клавиши в окне Inpainting:
Чаще всего использую уже готовые подсказки-шаблоны снизу.
Генерируем.
Слева - глаза после Improve Inpainting - больше деталей и насыщенности.
Теперь уберём всё ненужное и артефакты, переключаемся в классический режим Inpaint.
Вот что получаем в конечном итоге: Upscale я не делаю, по причине того, что в самом Telegram стоит ограничение на загрузку стикеров в 512x512 пикселей. Вместо этого я делаю по очереди Improve Inpaint на глазах, лице и одежде. Далее в статье покажу, как я добавлял принт своего лого на футболку.
Давайте ещё пару примеров и перейдём к следующему шагу.
sticker, simple background, pretty beautiful 1girl with short white hair, saluting, one eye closed, hair buns, white t-shirt, freckles, blue eyes
Первый вариант - самый удачный. Доработаем его.
Для начала используем Outpaint - расширим изображение вправо. Для этого переключаемся в Inpaint и выбираем классический Inpaint or Ouptaint Method. И выбираем расширение влево.
Отлично, теперь левую руку видно полностью. Делаем всё то же самое: чистим артефакты и далее Improve Inpaint.
Лайфхак: если принт с футболки или т. п. ну никак не хочет убираться, то попробуйте оставить поле Prompt пустым, в данном случае это помогло
Вот я попробовал следующий запрос, используя конструкцию "shy fingers":
sticker, white background, pretty beautiful 1girl with short white hair, shy fingers, confused, hair buns, white t-shirt, freckles, blue eyes
Или сделаем грустную эмоцию:
Думаю, подход понятен. Главное - яркая эмоция, которую мы достигаем через запрос.
Переходим к следующему шагу.
Этап 2. Финалим стикер
Сначала необходимо удалить фон. Сделать это можно двумя способами.
Способ 1. Для ленивых.
Просто используем онлайн-сервисы, вот те, которые использовал я:
Сразу скажу, что края получаются не всегда гладкими, а волосы у женских персонажей не всегда правильно вырезаются. Но зачастую всё чётко, и после обводки не особо будет заметно.Но, для таких задротов как я, есть второй способ. И он плавно перетекает в следующий микро-этап.
Загружаем в фотошоп наш будущий стикер. В слоях двойным кликом снимаем замочек.
Далее берём в руки мышку и выбираем инструмент "Перо".
И начинаем по контуру обводить нашу тян. Это "чуть" дольше, чем удалять фон через онлайн-сервис, но это классический и надёжный метод.
Так же в последних версиях Photoshop появилась функция "Удалить фон", заметил я её только сейчас, работает весьма неплохо, остаётся подчистить артефакты:
Но я покажу, что делать, если у вас более старая версия.
После того, как выделили контур, то жмём выделение. Не переживайте, если у вас остались мелкие "белые" области, их можно будет очистить таким же способом.
Я обычно ставлю растушёвку 3-4, но это так же можно поправить на глаз с помощью "Уточнить край".
И справа будет панель. Настраиваем всё по вкусу.
Далее просто возвращаемся к изображению и жмём Ctrl + X, чтобы вырезать тяночку.
В окне "Слои" добавляем новый и переносим на него персонажа. Готово, вы избавились от фона!
Довырезаем кусочки с помощью пера и выделения таким же способом.
Следующий шаг - добавление обводки. Её так же можно сделать онлайн с помощью различных сервисов, но я продолжу работу в Photoshop.
Жмём правой кнопкой мыши по слою с изображением - параметры наложения
Нам нужны обводка и тень.
Делаем снаружи белую обводку, советую делать на всех стикерах одинаковое значение размера обводки, просто запомните число.
Необязательно делать слишком заметную тень, такой вполне достаточно.
Остался текст. Тут по ситуации. Если он нужен в стикере - добавляем. Я использовал вот эту подборку популярных шрифтов из мемов. Вы можете использовать любой по вкусу либо не использовать.
К тексту я так же добавляю небольшую тень и чёрную обводку для читабельности.
Далее нам нужно подогнать разрешение так, чтобы Telegram принял стикер.
Разрешение - 512х512, а максимальный размер - 512 КБ.
В Photoshop жмём Изображение - Размер изображения. Выставляем 512х512. Сохраняем.
Обещал показать, как поместить принт на футболку. К сожалению, на Пикабу есть ограничение количества прикреплённых медиа, поэтому эту часть вы можете прочесть в статье на Хабр.
Далее заливаем в Telegram-бота Stickers. Это официальный бот Telegram.
Выбираем команду /newpack, чтобы создать новый набор стикеров.
Далее вводим название стикерпака и загружаем наш первый стикер
Не забудьте снять галочку со "Сжать изображение"
Далее присылаем от 1 до 3 смайлов, подходящих к стикеру.
Готово. Стикер добавлен! Повторяем процесс, пока не надоест :)
Как видите, совсем не сложно создать свой набор стикеров с нуля, благодаря этой статье, вы теперь знаете, как!
Используйте мой набор стикеров с Эвелинн, подписывайтесь на меня в Telegram и добавляйте папку с нашими каналами по нейросетям, удачных генераций!
Вы знали, что не обязательно быть дизайнером, чтобы создать свой красивый пак стикеров?Нет, не знал, потому что это ложь. Вы пропагандируете чуму нейронного дилетантизма и варварства
Слезы дизайнера
можно согласиться, но тем временем народ радостно наворачивает нейрохрючево
Ну вообще это не совсем так.
Да, я дизайнер, но стикер-пак свой собрал тупо из фоток, благодаря новому функционалу встроенному.
Увидел русский фотошоп, заплакал D:
Вот бы с помощью нейросетей можно было убрать редизайн
Для вырезания фона самый лучший сервис - recraft, там много чего полезного. Я им часто на работе пользуюсь, и он бесплатный