
Концепция и референс
На 1 курсе обучения в университете на дисциплине арт-практика в 3 модуле мы создавали серию иллюстраций. В моем случае она была посвящена моей любимой песне Мерлина Мэнсона — «The nobodies»
мои иллюстрации с 1-го курса
Рассуждая над темой проекта, я решила, что хочу увидеть как эти иллюстрации сможет изобразить искусственный интеллект
Собрав папку моих иллюстраций, которые выполнены в одной стилистике, я начала пробовать обучить нейросеть попасть в мою стилистику, чтобы посмотреть на этот проект с другой стороны
Список использованных в проекте инструментов:
1. Google Colab — основная среда разработки 2. Python — основной язык программирования 3. PyTorch — фреймворк машинного обучения 4. Diffusers (от Hugging Face) — библиотека для диффузионных моделей 5. PEFT (Parameter-Efficient Fine-Tuning) — эффективная настройка 6. Transformers — библиотека для NLP моделей 7. Torchvision — компьютерное зрение 8. Pillow (PIL) — работа с изображениями 9. Google Drive — хранилище данных 10. tqdm — прогресс-бары
Описание процесса обучения
Сначала импортируются библиотеки, необходимые для работы проекта
фрагмент кода
После был создан блок CONFIG который хранит все настройки проекта manson_folder — где лежат иллюстрации out_dir — куда сохранять обученную модель model_name — какая базовая модель используется batch, lr, epochs — параметры обучения
Фрагмент кода
далее идет подключение google drive
Фрагмент кода
После подключения производится настройка устройства, которая определяет на чем запускать код — CPU или GPU
Фрагмент кода
Далее идет фрагмент создания датасета.
Этот фрагмент: Находит все изображения в папке Подготавливает их для нейросети (меняет размер, нормализует) Создает пары «изображение-описание»
Фрагмент кода
После создания датасета начинается основной процесс обучения, который загружает модель и готовит ее к обучению с LoRA
Фрагмент кода
Основной процесс диффузионного обучения — учит модель предсказывать шум:
Фрагмент кода
И под конец кода идет процесс, сохраняющий прогресс обучения каждые 50 шагов:
Фрагмент кода
Таким образом работает программа обучения модели с LoRA. Теперь перейдем к программе, непосредственно генерирующей иллюстрации на основе пройденного обучения
Описание процесса генерации иллюстраций
Сначала у нас идет фрагмент с настройками, который хранит параметры генерации base_model — какая модель использовать как основу lora_folder — где лежит обученный стиль Мэнсона output_folder — куда сохранять результаты n_images — сколько изображений сгенерировать inference_steps — количество шагов дениойзинга (качество) guidance — сила следования промпту (7.5 — нормально) seed_start — начальное значение для случайных чисел
Фрагмент кода
Позже идет загрузка LoRA и создание пайплайна, результатом является то, что модель теперь умеет рисовать в моем стиле, а базовая модель stable diffusion загружена:
Фрагмент кода
Далее в коде у нас идут промпты для генерации изображений:
Фрагмент кода
После чего у нас начинается процесс самой генерации иллюстраций:
Фрагмент кода
Нейросеть превращает текст в картинку за 30 шагов:
Результат
Результатом работы являются данные иллюстрации, сгенерированные моделью
Иллюстрации сгенерированные моделью
Разбор результата
Модель смогла обучиться моему стилю и сгенерировать крайне похожие по исполнению к моим иллюстрации:
Результат более чем удовлетворительный. Было крайне интересно посмотреть на мои работы исполнением нейросети