
Идея проекта

Мне захотелось обучить генеративную нейросеть Stable Diffusion для генерации персонажей в стиле игры, которую мы разрабатываем в соавторстве с Игнатом Капленко, Натальей Абаджиди и Кириллом Кузовковым. Эта игра называется THE CODFISH, криминальная нарративная 2,5D адвенчура о юной треске-убийце, пытающейся искупить вину, вспомнить прошлое, подчинить своей воле настоящее и взять в плавники будущее.
Главная цель проекта — посмотреть, насколько похоже сумеет нейросеть попасть в мой стиль, специфический для нашего кураторского проекта, а также то, как будут результаты генераций походить на наши ассеты в игре [персонажей].
Была собрана папка из квадратных изображений, которые являются моими собственными артами для нашей игры. Это арты игровых персонажей. Все они выполнены в одной цветовой гамме и одном стиле. Цель этого проекта была именно в том, чтобы нейросеть сумела попасть в мой стиль, соблюсти цветовую гамму и правильно изображала гуманоидных рыб.
Список использованных в проекте инструментов:
— Stable Diffusion — обучение генеративной нейросети под свой стиль; — Google Colab — выполнение кода и генераций; — Hugging Face — получение токена для обучения нейросети, загрузка полученной модели на сайт; — Adobe Photoshop — для коллажирования готовых работ.
Исходные изображения персонажей

Несколько женских персонажек THE CODFISH
Для игры мне пришлось разрабатывать свой визуальный стиль, в том числе и для персонажей. Было решено использовать ограниченную цветовую палитру, а также: - Зеленоватую обводку; - Минималистичный покрас с плоскими тенями; - Гуманоидные тела рыб; - Чёрный плавный лайн; - Единообразные позы персонажей.
Несколько мужских персонажей THE CODFISH
Описание процесса обучения
Сначала потребовалось загрузить все необходимые для работы библиотеки: Diffusers, DreamBooth и так далее.
Далее нужно было загрузить изображения с компьютера в Google Colab. Это сделано это через встроенную в Colab функцию. Затем нужно было посмотреть, что изображения действительно загрузились.
Фрагменты кода
Затем было необходимо создать подписи к каждому изображению. Это всё ещё был процесс подготовки моего датасета к тренировке нейросети.
Когда были готовы подписи, стало видно, что нейросеть дала абсолютно точные подписи к каждому изображению. Это говорит о том, что всё работает корректно, и мои рисунки действительно распознаются нейросетью.
Фрагменты кода
Далее был произведён логин с системой Hugging Face.
Наконец, приступаем к тренировке. Выбрано разрешение 512, выставлен максимальный шаг тренинга на 500, а чекпоинт установлен на 250. Так было сокращено время, затраченное на тренировку нейросети, и мне пришлось ждать всего полчаса.
Фрагмент кода: обучение
Наконец можно было сохранить полученную модель на Hugging Face и приступить к генерации изображений.
Фрагменты кода
Первым промптом, который был попробован, стал промпт: photo collage in THE CODFISH style, cod fish, wearing dress
Поскольку была допущена ошибку и оставлено слово «коллаж», которое использовал преподаватель в лекции, результат вышел близким к моим рисункам по стилю, но абсолютно неудовлетворительным в плане внешнего вида.
Первая генерация vs мой рисунок
Цветовая палитра, анатомия рыбы, стиль, метод рисования одежды — всё это очень похоже на то, что я изображаю в своих рисунках с рыбами. Не обращая внимание на «поломанность» результата, я считаю, что у меня удалось обучить нейросеть моему стилю.
Следующие генерации с таким же промптом оставляли желать лучшего в плане адекватности готовой картинки.
Вторая генерация vs мой рисунок
Было решено убрать из промпта слово collage и поменять его на art, а также добавить конкретики: art in THE CODFISH style, antro cod fish, wearing dress, standing alone, holding a flower in her hand.
Результаты генераций
Генерация рыбы с цветком вышла очень удачной. На картинке наблюдается минимальное количество артефактов, а сама рыба выглядит очень похожей на исходные рисунки. Нейросеть отлично научилась копировать мой стиль покраса.
Промпт: art in THE CODFISH style, antro cod fish, wearing a suit and a tie, standing alone, holding a bottle
Генерация vs мой рисунок
Видно, что нейросеть выучила, что нужно рисовать рыбам зеленоватую обводку, запомнила, как должны выглядеть плоские тени, а также в точности повторяет стиль рисования одежды и лиц рыб. При сравнении цветовой палитры видно, что нейросеть отлично учитывает её.
После того, как были перепробованы промпты, которые повторяли уже существующих моих персонажей, захотелось попробовать сгенерировать такого персонажа, какого в моих рисунках ещё не было. Получилось очень забавно, и я думаю, что использую дизайн этого персонажа для нашей игры, перерисовав его самостоятельно.
Промпты:
Появилась идея сгенерировать рыб старика и старуху.
Результаты генераций старика и старухи
Наконец, захотелось попробовать выставить разрешение 1024, максимальным шагом сделать 1000, а чекпоинт установить на 500 и попробовать запустить обучение по новой. После этого было опробовано несколько промптов по несколько раз, чтобы добиться наиболее качественных результатов.
Промпт: a fish wearing a dress, holding flowers, solid background
Промпт: a fish wearing a dress, holding a book, solid background
Промпт: a fish wearing a tuxedo and a hat, holding a book, solid background
Чему удалось обучить нейросеть?
- Цветовая палитра; - Обводка; - Стиль рисования рыб; - Однотонный фон; - Плавный лайн средней толщины;
Сравнение костюма на генерации и костюмов у персонажей моих работ
Нейросеть хорошо скопировала то, как я рисую костюмы у важных рыб, носящих деловые наряды. Также она поняла, как рисовать платья с пуговичками и рукавами-фонариками.
Сравнение платья рыбы на генерации и на моих работах
Резюмируя весь проект, хотелось бы отметить, как и прежде, что нейросеть не может заменить художника, но может работать, как подручный для концепт-художника, быстро изображая придуманный в голове образ и помогая создать рисунок не за художника, а просто работая «черновиком». К примеру, я точно не буду использовать ни одну из генераций в игре, но могу опираться на них при продумывании новых персонажей.