Идея проекта
В этом проекте для обучения нейросети были выбраны куклы-тролли от датской компании Dam Things, характерной особенностью которых были торчащие вверх волосы. У самих игрушек очень узнаваемый стиль, а также выразительные лица, ввиду чего и возник интерес проследить, сможет ли нейросеть в генерациях передать черты лица, пропорции и характерные причёски.
Для обучения и последующей генерации был собран датасет из 18 изображений игрушек-троллей, на каждом из которых видно лицо и причёску игрушки, а также пропорции.


Примеры изображений из датасета
Изображения собраны на диске по ссылке ниже. Также на диске представлен документ, содержащий ссылки на изображения, а также лицензии на каждое использованное изображение.
Результирующая серия изображений

Первая (тестовая) генерация






Комментарий к серии изображений
Итоговая серия вместе с тестовым первым вариантом составляет 8 сгенерированных изображений кукол-троллей. Тестовая генерация использовалась для проверки того, насколько LoRA усвоила и запомнила основные визуальные признаки троллей. И уже на этом этапе было видно, что нейросеть смогла на основе датасета из всего 18 изображений распознать главные особенности (торчащие волосы, маленькое тело и характерное лицо)А уже в следующих изображениях нейросеть показала, что может создавать вариации, добавлять детали по промпту и так далее. При этом характерные особенности троллей остаются узнаваемыми и понятными. Таким образом, благодаря этой серии генераций удалось проверить, насколько нейросеть удерживает главные черты троллей при добавлении разных деталей. Это уже соответствует идее и цели проекта, ведь гипотеза о том, что нейросеть сможет создавать новые вариации, сохраняя узнаваемость кукол, подтвердилась.
Особенно хорошо нейросеть передала лицо и причёску, при этом сохраняя игрушечный и пластиковый характер персонажей. При этом отдельными промптами прописывались детали одежды, аксессуаров и т. д., но сам базовый образ нейросеть смогла сохранить.
Google Colab и описание процесса обучения
Первым делом был подключён Google Диск с изображениями, указан путь и выполнена проверка количества исходных изображений.Для обучения использовался Diffusers и готовый скрипт DreamBooth LoRA для Stable Diffusion XL. Репозиторий с исходным кодом был загружен в Colab, после чего были установлены необходимые для работы зависимости.
В качестве базовой модели в проекте использовалась Stable Diffusion XL Base 1.0, а для обучаемого промпта было задано ключевое слово trlltoy (от Troll Toy) и сам промпт «a photo of trlltoy troll doll». Ключевое слово позволяет после обучения возвращаться к нему уже в новых промптах.Из-за того, что обучение Stable Diffusion требует большого объёма памяти, для работы были установлены дополнительные библиотеки bitsandbytes и xformers.
Во время запуска обучения возникла проблема из-за конфликта версий PEFT и torchao. Для решения этой проблемы необходимо было обновить PEFT и удалить библиотеку torchao.
Далее было запущено обучение модели на датасете изображений. Обучение проводилось в течение 500 шагов, а после завершения полученные веса LoRA, контрольная точка обучения и логи. В дальнейшем эти веса подключались к базовой модели SDXL для генерации.Следующим шагом была заново загружена Stable Diffusion XL Base 1.0, а также обученная LoRA. Во всех промптах использовалось ключевое слово (trlltoy), а также детали каждой генерации.
После проверки тестовой генерации были созданы уже итоговые изображения, из которых уже была собрана итоговая серия.
Использованные нейросети
В проекте была задействована нейросеть ChatGPT для помощи с ошибками и конфликтами библиотек, а также для генерации изображения обложки.




