Концепция
Учебный проект, направленный на дообучение Stable Diffusion на конкретный стиль, в моем случае, на работы Анри Руссо. Его творчество мне всегда симпатизировало: манящие джунгли, наивный примитивизм, что-то первозданное, но одновременно с этим монументальное. Поэтому, когда я выбирала художника, я сразу подумала о нём. Кроме того, произведения Руссо в данный момент являются мировым общественным достоянием, а для меня, с этической точки зрения, одним из критериев при выборе автора было важно соблюсти его авторские права. Также я проверила, что Stable Diffusion без дообучения не может воспроизвести стиль Анри Руссо самостоятельно, поэтому был смысл обучить генеративную модель именно на его картинах.


Цветы, созданные Stable Diffusion без дообучения на стиль Анри Руссо promt: Rousseau style flowers
Возник вопрос, насколько хорошо у генеративной модели получится «выцепить» отличительные черты художника и воплотить эти особенности в дальнейших генерациях.


Картины Анри Руссо из базы данных для обучения
При сборе датасета из картин, я выявила следующие отличительные черты стилистики Анри Руссо:
- Зачастую он использует сочные природные цвета, в числе которых присутствует множество оттенков зеленого для написания джунглей и растений.
- Животные — как символ первобытного «я» и силы природы. Часто изображает хищников, нападающих на парнокопытных, но также есть и приматы.
- Преувеличивание и сюрреалистичность. Появляются гигантские цветы и искаженные природные образы. Своеобразное изображение листвы деревьев и травы.
Для обучения использовалась база данных, состоящая из 41 картины художника, каждое из изображений обрезано вручную до размера 512×512px.


Картины Анри Руссо из базы данных для обучения
Процесс обучения

Перед началом необходимо обновить и установить нужные библиотеки для того, чтобы было можно обучить нейросеть, diffusers — для генерации итоговой серии изображений, и скрипт с GitHub, который будет выполнять основную работу по обучению генеративной модели.
После этого необходимо загрузить на платформу изображения из датасета, чтобы было на чем обучать нейросеть. Для этого я переносила фотографии картин с облачного хранилища в локальную директорию «rousseau». Для помощи с загрузкой файлов внутрь рабочей среды я использовала Chat-GPT.
Потом, чтобы проверить, что датасет изображений корректно добавился в директорию и с ним не возникло проблем при переносе, можно вывести несколько картин для просмотра.
Далее нужно создать текстовое описание (промт) к каждому изображению из базы данных с помощью BLIP.
Далее создается файл, в котором будут храниться подписи к картинкам, полученные на прошлом шаге. Кроме того, для того, чтобы при генерации изображений на основе этого датасета, нейросеть могла понять, что нужно генерировать картинки именно в стиле Анри Руссо, необходимо назначить идентификатор (токен), с помощью которого она и будет это понимать — этот префикс добавится в начало строчки с описанием изображения.
Проверяем, как записался файл, в котором находятся текстовые промты к картинам.
Далее необходимо сконфигурировать проходящие процессы с помощью команды accelerate, которая проанализирует и запишет их в один файл. После этого же, я захожу в свой аккаунт на Hugging Face, где получаю токен и загружаю его в свой код, чтобы в дальнейшем можно было выгрузить обученную модель на сайт.
В итоге, можно приступить к обучению. Для этого устанавливается библиотека, которая позволит использовать сгенерированные в предыдущих шагах описания, а далее с помощью accelerate запускаем обучение.
После того, как модель обучилась, ее можно выгрузить на Hugging Face. Для этого она получает свой собственный id.
После того как модель обучилась и была загружена на Hugging Face, можно самостоятельно с помощью нее генерировать изображения в стиле Анри Руссо. Для этого мы загружаем стандартную модель Stable Diffusion, а потом добавляем к ней нашу обученную модель LoRA.




