
Идея проекта
В качестве изображений для обучения нейросети я решила взять свои иллюстрации, над которыми работала в этом модуле. В рамках кураторской дисциплины «Специальное проектирование» мы разрабатывали три концепции календаря.
Одной из моих концепций был календарь со злыми духами из мифологий разных культур — от всем известного славянского Чёрта, до далекого Токолоша из африканских легенд. Мне удалось нащупать специфический стиль рисования, на основе которого я захотела обучить нейросеть Stable Diffusion.
иллюстрации на носителях
Исходные изображения персонажей
Когда я работала над визуалом иллюстраций, я в первую очередь опиралась на традиционные техники рисования (хоть и рисовала в диджитале).
Мне было важно передать текстуры карандаша и угля, а также рисование «от пятна», чтобы создать загадочные силуэты мифических персонажей.
иллюстрации для датасета
Описание процесса обучения
Сперва подготовила всё необходимое:
1. Проверила параметры и состояние GPU, предоставленной Colab, чтобы убедиться, что GPU действительно активна и готова к работе.
2. Загрузила библиотеки bitsandbytes, transformers, accelerate, peft, чтобы обеспечить работу с большими моделями и их оптимизацию. А также установила последнюю версию библиотеки diffusers напрямую из GitHub.
3. Скачала готовый тренировочный скрипт DreamBooth для Stable Diffusion XL с поддержкой LoRA.
фрагменты кода
Далее начала подгружать датасет с картинками
4. Загрузила изображения с компьютера в Colab через окно выбора файлов.
5. Создала папку chert и скопировала туда все загруженные изображения.
6. Через image_grid, вывела все изображения для предпросмотра.
фрагменты кода
7. Загрузила все изображения из папки chert и сохранила их в виде списка с путями и объектами изображений. Далее создала файл metadata.jsonl с подписями для каждого изображения для модели DreamBooth. Проверила, что подписи к изображениям записались корректно.
8. Удалила ненужные объекты, чтобы облегчить работу Google Colab и сэкономить память. А также настроила корректное кодирование UTF-8 и выполнила базовую конфигурацию утилиты accelerate.
9. Авторизовалась в Hugging Face напрямую из Google Colab
фрагменты кода
10. Установила библиотеку datasets, для работы с датасетами в формате Hugging Face и наконец-то запустила обучение DreamBooth LoRA на основе Stable Diffusion XL
фрагмент кода
11. Получила имя пользователя Hugging Face и адрес, куда будет загружена модель.
12. Загрузила веса на Hugging Face Hub и создала карточку модели.
фрагменты кода
13. Загрузила обученную LoRA-модель и получила пайплайн для генерации изображений.
14. Начала генерировать изображения в обученном стиле по разным промптам.
фрагмент кода
Результаты SDXL
prompt: digital drawing with charcoal texture of a horned forest creature crouching under the moonlight among tall trees
prompt: digital drawing with charcoal texture of a genie-like figure with pointed ears holding a curved sword in a desert vi
prompt: digital drawing with charcoal texture of a bat-like humanoid with wings spread wide in front of an ancient pyramid
prompt: digital drawing with charcoal texture of a horned satyr carrying a sack and broom through a snowy village under the moon
prompt: digital drawing with charcoal texture of a mysterious creature peeking from a frozen pond surrounded by pine trees and ice
prompt: digital drawing with charcoal texture of a mischievous forest imp grinning while sitting on a tree stump in a moonlit grove
prompt: digital drawing with charcoal texture of a tiger-headed warrior holding a spear on a tropical island with palm trees and huts
prompt: digital drawing with charcoal texture of a cheerful satyr playing a lyre under the sun near ancient ruins and cypress trees
prompt: digital drawing with charcoal texture of a humanoid creature with a horse’s head standing in a windy desert landscape, holding a long weapon
prompt: digital drawing with charcoal texture of a small goblin-like figure with long ears sitting alone in a dry savanna under the sun
prompt: digital drawing with charcoal texture of a winged human with a sword standing triumphantly on mountain peaks under a bright sun
prompt: digital drawing with charcoal texture of a mischievous goat-headed creature running through a sunny village carrying a bundle of straw
prompt: digital drawing with charcoal texture of a shadowy horned guardian emerging from fog between ancient trees at twilight
prompt: digital drawing with charcoal texture of a sand spirit with glowing eyes rising above deserted ruins under a moon
prompt: digital drawing with charcoal texture of a winged beast perched on a mountain peak, staring at distant lightning in the clouds
prompt: digital drawing with charcoal texture of a frost-covered creature standing silently on a frozen lake beneath dark skies
prompt: digital drawing with charcoal texture of a frost-covered creature standing silently on a frozen lake beneath dark skies
prompt: digital drawing with charcoal texture of a tiger-headed shaman performing a ritual under palm trees at dusk
prompt: digital drawing with charcoal texture of a cheerful imp juggling mushrooms near a forest stream under the morning sun
prompt: digital drawing with charcoal texture of a satyr teaching birds to sing while playing his lyre on a warm meadow
prompt: digital drawing with charcoal texture of a clumsy goat demon slipping on ice in front of laughing villagers
prompt: digital drawing with charcoal texture of a tiny goblin sitting on a mushroom writing spells with a feather pen
prompt: digital drawing with charcoal texture of a smiling winged trickster flying above clouds and scattering flower petals
prompt: digital drawing with charcoal texture of a playful creature with long ears peeking from behind a tree, grinning mischievously
Результаты Stable Diffusion 1.5
Изначально, помимо обучения Stable Diffusion XL, я также пробовала работать c Stable Diffusion 1.5, так как столкнулась с проблемами из-за недостаточного объема памяти. Эту проблему я в последствии решила удалением ненужных объектов.
Так или иначе результат генераций с вышеперечисленными промптами на базе Stable Diffusion 1.5 у меня остался. Картинки получились давольно-таки комичные и более абстрактные и, на удивление, выглядят сносно, потому что такой неряшливый стиль хорошо вписывается в тему нечисти, а также чем-то напоминает аналоговые техники печати, вроде линогравюры или монотипии.
генерации на базе stable diffusion 1.5
Заключение
Подводя итоги выполненной работы, хотелось бы отметить, что обучение моделей в своем стиле — очень эффективный инструмент, но только для генерации идей и поиска композиционных решений.
Несмотря на то, что нейросеть хорошо обучилась текстурам и структуре иллюстрации, и даже дорисовывала какие-то удачные элементы окружения (растения, здания, птиц), анатомия персонажей сильно страдает. На иллюстрациях появляются лишние руки, ноги, пальцы, уши и так далее. Часто можно заметить смазанные черты лица. Однако, при всем этом, общее композиционное решение выглядит интересно и, как мне кажется, его можно брать за основу при самостоятельном создании рисунков и иллюстраций.
Описание применения генеративной модели
В основном, проект выполнен с использованием курса предоставленных лекций, как основного справочного материала. Однако, периодически я обращалась к ChatGPT для определения ошибок, которые иногда появлялись в ходе работы.
По сути, я просто отправляла запрос в формате Код / Ошибка и нейросеть подсказывала мне с чем связана та или иная проблема.
пример общения с chatgpt
Ссылки на материалы