

Поль Синьяк, мастер дивизионизма, строил свои работы на вибрации цвета, световой гармонии и романтике природных сцен. Его мазки — это чистая органика, движение волн, блики солнца. Но что, если перевести эту эстетику в язык промышленности?
В этом проекте, мне захотелось попробовать воссоздать стиль Пола Синьяка и посмотреть, как будет выглядить промышленные модернистские сюжете в его оригинальной эстетике. Мне захотелось противопоставить и рассширить мир живописи хужодника и исследует визуальное противостояние и синтез двух миров
Для этого я собрал датасет из 70 работ Синьяка, чтобы выявить ключевые композиционные и колористические закономерности. Затем, через промт-дизайн и языковые модели (ChatGpt 4o), пофантазировал на промышленную и контрастную привычному Синьяку тему.

Оригинальные картины П. Синьяка



Синьяк воспевал природную красоту, свет и мягкие ритмы воды и неба в стиле пуантилизма, нейросеть видит его стиль следующим образом. Из датасета ей удалось подцепить характерные «точки», но новые изображения предстали в более мрачных и депрессивных оттенках
Во многих сюжетах нейросеть взяла помимо точек пуантилизма еще и характерные природные черты, мягкость света и тени, характерную для художника мягкость и гармонию неба, в более промышленных сюжетах прослеживается более контрастная и утопичная картинка, где пропадает природность и гармония и появляется контрастная светотень
Неудачные генерации, картинка слишком абстрактная
Однако, во многих изображениях нейроесть выкручивала показатели «точек» и плохо справлялась с абстрактными промтами и изображениями и в целом слабо попала в цветовую палитру
Неудачная генерация, картинка не в стиле или слишком размытая и нечеткая
Первым делом я убедился, что GPU доступен и правильно работает командой (скр 1.)
Для запуска обучения и генерации изображений я установил несколько библиотек необходимых для создания генераций (скр.2): bitsandbytes, transformers, accelerate, peft и diffusers
Загрузил изображения из Kaggle и перенёс их в рабочую директорию:
Написал функцию image_grid, которая позволяет удобно просматривать сразу несколько изображений в одном окне:
Собрал пути ко всем изображениям в папке, открыл их и вывел первые пять:
Загрузил модель BLIP и создал функцию caption_images, которая получает на вход изображение и возвращает сгенерированное текстовое описание:
На этом этапе я создал аннотации к изображениям — это нужно, чтобы модель могла понимать, что именно изображено на картинках. Я проходился по всем изображениям, применял к каждому функцию caption_images () (на основе BLIP), и формировал структуру с названием файла и описанием.
Перед запуском обучения я задал ключевые параметры: путь до предобученной модели, директорию с обучающими данными, а также технические настройки — разрешение, размер батча, количество шагов, скорость обучения и т. д.
Когда обучение завершилось, я загрузил базовую модель Stable Diffusion XL и применил к ней веса, полученные после LoRA-обучения. Это позволяет использовать новую кастомную модель без необходимости хранить полные веса
НАКОНЕЦ! После загрузки модели я протестировал результат. Задал описательный промпт, после чего сгенерировал изображение и сохранил его.Параметр num_inference_steps влияет на качество изображения — я выбрал 25 шагов, как оптимальный баланс между скоростью и результатом.
В рамках выполнения проекта я использовал: ChatGpt для оптимизации кода и генерации промтов и DeepSeek для поиска и решения ошибок в коде