
Описание идеи проекта и его разработка
Основной целью данного проекта заключается обучение нейросети Stable Diffusion под определенный стиль и создание ей специфического персонажа.
Для основы своей работы я решила выбрать собственные старые рисунки, нарисованные мной еще в школьные годы. Персонаж, которого будет генерировать нейросеть по этим рисункам — Аанг из мультсериала «The Last Airbender» — персонаж, который очень нравился мне в те годы, в которые были нарисованы иллюстрации, но которого я тогда так и не решилась попробовать нарисовать.
Основными чертами моего старого стиля я считаю следующее: диджитал, чёрные плавные линии (иногда толстые, иногда тонкие), плоский цвет — иногда с простыми тенями и «затемнениями» на щеках и под глазами, тени на ушах и шее, большие глаза — или черные, или просто одноцветные, мультяшный милый вид. Для обучения нейросети я опиралась на эти черты, уточнив их в письменном описании подобранных картинок.
Далее приложены несколько примеров референсов, использованных для обучения нейросети (использовалось два подтипа стиля — более простой и милый и более детализированный), а также примеры неудачной генерации и удачной генерации. К каждой картинке прилагается описание и анализ того, чему нейросеть могла обучиться благодаря картинке/где нейросеть справилась с задачей, а где — нет.
Примеры заданных референсов-изображений


Что могла вывести нейросеть: чёрный чистый лайн, округлые формы лица, покраснения на щеках, белый фон, более спокойные цвета, круглые черные глаза


Что могла вывести нейросеть: большие круглые глаза, яркие цвета, форма носа, когда персонаж смотрит вперёд, чёрный чистый лайнарт


Что могла вывести нейросеть: чёрный чистый лайн, изменения веса линий, затемнения на лице, белый фон, яркие цвета, большие однотонные глаза, простые формы
Примеры неудачных генераций

Самая первая генерация. Нейросеть придала рисунку «карандашный» вид, хотя все референсы были сделаны в диджитале. Стиль отличается от заданного, персонаж не похож на Аанга.
Отсутствует стрелка на лбу, стиль кажется более квадратным и грубым, чем мой, снова присутствует эффект карандаша.
Обилие текстур и «карандашный эффект». Нейросеть хорошо передала эффект «покраснения» на щеках, ушах, носу и под глазами, который присутствует на некоторых референсах, но сделала его слишком сильным.
Среди неудачных генераций одни из наиболее часто встречающихся деталей — «карандашный стиль» — фактура, предполагающая, что рисунок сделан на бумаге. Несмотря на то, что в референсах не было ни одного «карандашного» рисунка, эта проблема была относительно легко решена с помощью добавления промпта «a digital illustration».
Подборка финальных генераций и их анализ
Как уже было упомянуто ранее: основные детали моей старой стилистики это плавный черный лайнарт, плоский цвет (при этом не исключено присутствие легкой текстуры/теней на главном персонаже), большие глаза, уши в форме буквы G, общая мультяшность. В финальных генерациях смогла передать эти детали, но у нее были свои затруднения — так, в большей части получившихся рисунков главный герой смотрит только вперёд, на зрителя — в то время как на картинках-референсах персонажи чаще смотрят в сторону. Также у нее были ошибки в виде сбоя передачи цвета и формы стрелки на лбу Аанга и дополнительного промпта, заданного по бэкграунду картинки.
Здесь нейросеть совместила промпт милого простого стиля и взгляд вперёд. Получилось хорошее совмещение, совпадающее с промптом и референсами. Форма стрелки деформировалась, но персонаж узнаваем.
Интересная генерация, передан поворот тела, сохранились главные отличия стилистики — лайн, большие цветные глаза, форма носа и головы, но почему-то уши стали очень большими, а стрелка деформировалась.
Второй вариант более простой стилистики. Персонаж очень похож на заданного по заданию, разве что за исключением цвета стрелки, стиль передан просто, но эффективно.
Одна из лучших генераций, полностью усвоившая основные характеристики стиля. Единственная ошибка заключается в цвете стрелки на лбу, который нейросеть не смогла поменять.
Ноутбук с кодом
Ссылка на Google Collab с кодом:
https://colab.research.google.com/drive/1DXjjKCx7JwDXrXg9Cb9m4JVfWBuHyyfw?usp=drive_link
(На момент выкладывания проекта на моем аккаунте закончился доступ к GPU, но сам код работает)
Для того, чтобы успешно обучить нейросеть, я составила для себя план:
1. Установка библиотек и основных модулей из этих библиотек 2. Подготовка данных — создание датасета (сами картинки, их текстовое описание, размер файлов) 3. Загрузка модулей и Collate Fn 4. Обучение 5. Pipeline + UNet 6. Генерация в соответствии с несколькими промптами
Следуя этому плану, я выполнила задание и смогла создать несколько генераций узнаваемого персонажа (Аватар Аанг) в своем старом стиле.
Описание применения генеративной модели
При работе над проектом я использовала ChatGPT в тех случаях, когда при написании кода Google Collab выдавал ошибку и методы, которые я применяла для ее исправления, не помогали. https://trychatgpt.ru
Также, если совет по исправлению ошибки от ChatGPT не помогал, я использовала встроенный в Google Collab AI Gemini https://gemini.google.com/app