Original size 719x900

Диалог эпох

PROTECT STATUS: not protected
3

Идея проекта — создать «диалог эпох» через генеративное искусство: обучить Stable Diffusion на стилях двух контрастных художников, чтобы сгенерировать серию изображений, иллюстрирующих эволюцию искусства от классического реализма к модернистскому кубизму.

Из всего датасета я отобрала изображения работ только двух художников:

Уинслоу Гомер (Winslow Homer): 14 изображений. Американский художник-реалист XIX века, известный морскими пейзажами, сценами повседневной жизни и изображениями природы. Его стиль характеризуется реалистичным изображением света, цвета и динамики (например, волны, ветер, люди в естественной среде).

Пабло Пикассо (Pablo Picasso): 17 изображений. Испанский художник XX века, один из основоположников кубизма, с абстрактными формами, геометрическими фигурами и экспериментами с перспективой

Для обучения моделей Stable Diffusion я использовала данные из National Gallery of Art Open Data Program — открытого репозитория, предоставляемого Национальной галереей искусства США (National Gallery of Art, NGA). Этот датасет содержит метаданные о более чем 130,000 произведениях искусства из коллекции галереи, включая информацию об авторах, названиях работ, датах создания, материалах и ссылках на изображения. Данные доступны в формате CSV и обновляются ежедневно.

Репозиторий: github.com/NationalGalleryOfArt/opendata

Страница с политикой открытого доступа к изображениям: nga.gov/artworks/free-images-and-open-access

Данные и изображения из этого источника выпущены под лицензией Creative Commons Zero (CC0 1.0), что означает полное отречение от авторских прав и смежных прав. Это позволяет свободно использовать, модифицировать, распространять и применять данные в любых целях, включая коммерческие, без необходимости указания авторства или получения разрешения.

Также я использовала grok4 для генерации идей

Пайплайн обучения

Что такое LoRA? LoRA (Low-Rank Adaptation) — это умный способ обучить огромную нейросеть, не трогая большую часть её весов. Вместо того чтобы менять все 865 миллионов параметров Stable Diffusion, я добавляю к ней маленькие «адаптеры» и обучаю только их. В результате обучаются всего 0,6% параметров, что сильно экономит память и время.

Картины авторов для обучения

0

Результирующая серия изображений

0

На мой взгляд, финальная серия изображений вышла очень удачная. Так как изначальной задумкой было с помощью SD сгенерировать серию изображений, сочетающих реалистичный стиль Уинслоу Гомера (морские пейзажи, динамика природы) с кубизмом Пабло Пикассо (геометрические формы, абстракция). это и вышло по итогу. Действительно, в результате, картинки выходили со смешением абстрактного и классического стиля

Анализ работ

В данной картине нейросеть в лице будто показала более классические черты, а все остальное оставила в кубизме, что как раз соответствует запросу. Возможно здесь преобладает кубизм, однако все равно видно, что здесь не только след от Пикассо.

Original size 512x512

На данной сгенерированной картине тоже хорошо виден результат работы. Если рассмотреть внимательно, становится видно, что лицо человека выглядит достаточно реалистично и точно не является чистым кубизмом. Скорее это отсылка к Уинслоу Гомеру. Однако костюм мужчины явно в более кубических формах, что отсылает уже к кубизму.

Original size 512x512

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

Original size 512x512

Доп описание процесса обучения со скриншотами

Перед началом я скачала датасет с изображениями картин Гомера и Пикассо, затем разархивировала zip-архив и переименовала папки для удобства. (будет отражено в коде)

Затем установила необходимые библиотеки для обучения с LoRA (будет отражено в коде)

Шаг второй: загружаю и анализирую датасет с картинами Гомера и Пикассо

Original size 822x307

Всего изображений: 31

Распределение по художникам: artist Picasso, Pablo 17 Homer, Winslow 14 Name: count, dtype: int64

Original size 910x237

1. Разделяю датасет: фильтрую строки по имени художника 2. Создаю отдельные папки для каждого художника (хотя далее буду обучать на смешанном датасете) 3.Копирую файлы изображений Гомера в отдельную папку 4.Копирую файлы изображений Пикассо в отдельную папку

Original size 1055x452

1. Создаю папку для сохранения визуализаций 2. Создаю сетку 2×4 для визуализации примеров из датасета 3. Верхний ряд: 4 примера работ Уинслоу Гомера (реализм, морские пейзажи) 4. Нижний ряд: 4 примера работ Пабло Пикассо (кубизм, абстракция)

Original size 1067x547
Original size 1223x561

Подготовка модели и обучение с LoRA

Для обучения я использовала технику LoRA (Low-Rank Adaptation) для экономии ресурсов и предотвращения переобучения на небольшом датасете. Без него постоянно было CUDA out of memory

Создаю класс датасета и настраиваю LoRA для обучения

Original size 873x632

1. Импортирую библиотеки для работы с LoRA 2. Запускаю сборщик мусора Python

Original size 864x761

1* UNet: главная нейросеть, которая убирает шум из изображения Именно её я буду дообучать с помощью LoRA на картинах 2* VAE (Variational AutoEncoder): сжимает изображения в компактное представление (latents) и обратно декодирует latents в полноразмерные изображения 3* Noise Scheduler: управляет процессом добавления/удаления шума на разных этапах

Original size 685x811
Original size 986x565

1* Gradient checkpointing: не храню все промежуточные вычисления, а пересчитываю при необходимости (Замедляет обучение примерно на ~20%, но экономит много памяти) 2* xFormers: оптимизированная реализация механизма внимания в трансформерах (attention) Ускоряет работу и уменьшает потребление памяти 3* CPU offload: часть модели хранится в оперативной памяти, а не видеопамяти 4. Замораживаю веса компонентов, которые не нужно обучать Это экономит память и ускоряет обучение

Original size 759x767

1. Применяю LoRA к этим типам слоёв нейросети 2. Создаю конфигурацию LoRA

Original size 474x728

1. Применяю LoRA к UNet 2. Показываю, сколько параметров на самом деле обучаются 3. Создание pipeline

Original size 1071x585

1. Включаю оптимизации в финальном pipeline 2. Сохранение 3. Для LoRA сохраняю только адаптеры, а не всю модель

  • Оптимизатор — только для обучаемых параметров LoRA
Original size 761x762

Планировщик обучения

Original size 679x199

Основная функция обучения

Процесс обучения: 1. Загружаю картины из датасета 2. Загружаю предобученную Stable Diffusion 3. Добавляю к ней LoRA адаптеры 4. Обучаю только адаптеры на наших картинах 5. Сохраняю обученные адаптеры

Original size 807x662
Original size 641x653
Original size 665x707
Original size 994x658
Original size 940x531
Original size 541x401

memory limit — подбирает оптимальные параметры обучения в зависимости от объёма видеопамяти.

Если памяти мало — уменьшаем разрешение, batch size и ранг LoRA.
Если памяти достаточно — используем более качественные настройки.
Original size 926x808

1. Запускаю обучение модели 2. Получаю рекомендуемые параметры в зависимости от объёма GPU памяти 3. Запускаю обучение модели с LoRA на смешанном датасете (Гомер + Пикассо) Модель научится генерировать изображения, сочетающие оба стиля 4. Очищаю память GPU после обучения

Original size 1023x600

Генерация изображений с обученными LoRA моделями

Original size 847x717
Original size 644x788
Original size 707x683
Original size 822x235
Original size 1050x474
We use cookies to improve the operation of the website and to enhance its usability. More detailed information on the use of cookies can be fo...
Show more