Описание идеи
Импрессионизм в истории мирового искусства занимает отдельное место. По моему мнению, это течение занимало не такой большой промежуток времени, как хотелось бы. А сейчас и вовсе не выходит каких-то знаменитых произведений в этой стилистике. Именно поэтому мне захотелось создать универсальный инструмент, в котором пользователю можно будет делать картинки в данной стилистике. При этом, ему не обязательно ограничиваться лишь картинами природы и города, как это делал, например, Клод Моне. Любой пользователь может воплотить любые самые смелые свои фантазии.
Обучение модели
Мне хотелось, чтобы это был не просто какой-то абстрактный импрессионизм, в котором «понамешаны» разные стили, а я хотел, чтобы в генерируемых результатах вполне можно было бы узнать приемы и стили знаменитых авторов того времени. Главными картинами для обучения, конечно же, стали картины знаменитого Клода Моне.

Клод Моне, «Дом рыбака в Варенжвиле», 1882 г., Клод Моне, «Прогулка по скале в Пурвиле», 1882 г., Клод Моне, «Цветник в Ветёе», 1881 г., Клод Моне, «Сан-Джорджо Маджоре в сумерках», 1908–1912 гг.
Всего я нашел 22 картинки для обучения. После того, как я привел их к единому формату (1024 на 1024 — один из идеальных форматов для текущей задачи), я загрузил их в радел Datasets на kaggle.com и начал устанавливать все необходимые библиотеки и подготовку окружения.


А вот код, созданный для обучения модели. Ключевые элементы:
- accelerate launch — для запуска обучения в распределенном или оптимизированном режиме
- train_dreambooth_lora_sdxl.py — для тренировки LoRA, чтобы не менять все параметры модели
- --gradient_checkpointing — для снижения потребления видеопамяти
- --mixed_precision="fp16» — для ускорения работы без существенной потери качества
- --gradient_accumulation_steps=4 — чтобы модель обновляла веса после 4-х картинок, а не каждой
- --learning_rate=2e-4 — стандартная скорость для обучения в LoRA
- --max_train_steps=400 — ограничил модель 400 шагов, чтобы не уйти в переобучение и в случае чего не исчерпать запасы бесплатной версии kaggle.com
- --instance_prompt="in the style of impressionism» — когда в промптах будет добавляться эта фраза, будут активироваться выученные веса стиля.
Модель обучалась около 40 минут.
После того, как модель закончила обучаться, был написан финальный код для генерации картинок.
Особенности:
- from diffusers import DiffusionPipeline — импортируется базовый класс для загрузки готовых конвейеров нейросетевых моделей
- DiffusionPipeline.from_pretrained — осуществляется загрузка предобученной модели Stable Diffusion XL с использованием сокращенной точности вычислений (fp16) для оптимизации видеопамяти
- pipe.load_lora_weights — производится подгрузка обученных весов адаптера (LoRA), которые модифицируют работу базовой модели в соответствии с заданным стилем
- pipe.to («cuda») — выполняется перенос модели на видеокарту для ускорения вычислений с помощью технологии CUDA
- pipe (prompt) — запускается процесс итеративного шумоподавления, в ходе которого на основе текстового описания формируется финальное изображение
- num_inference_steps=35 — задается количество шагов генерации, определяющее баланс между качеством детализации и временем обработки
- guidance_scale=7.5 — устанавливается коэффициент соответствия модели текстовому запросу, ограничивающий степень творческой свободы нейросети
- image.save («sohranil_kartinku.png») — выполняется запись полученного результата в файл формата PNG на диск
Получившиеся изображения
Теперь ниже будет показано, какие изображения у меня получились, и, в частности, какие особенности стиля из датасета мне удалось передать.
Импрессионисты первыми заявили: «Важно не то, ЧТО мы рисуем, а то, КАК мы это видим в конкретный момент времени».
Промпт: a medieval room in the style of Impressionism
Импрессионисты отказались от четких контуров, потому что в реальности глаз их не видит.
Промпты: а beautiful dog in the style of Impressionism/ Optimus Prime in the style of Impressionism
Главным героем картины уже ощущается не объект (дерево, лодка), а свет и воздух, которые окружают этот объект.
Промпты:
- A forest where the trees are made of giant glowing fiber-optic cables and the river is made of liquid gold, in the style of digimp, in the style of impressionism
- The character Cuphead in the style of Impressionism
- A T-Rex wearing a tuxedo and top hat, eating a gourmet dinner at a fancy restaurant on the Moon, looking out at the Earth, in the style of digimp, in the style of impressionism
- A massive deep-space battle station shaped like a giant clockwork skull, swirling nebulae in the background, in the style of digimp, in the style of impressionism
Промпт: two Jokers fighting in the style of Impressionism.
Художники не смешивали краски на палитре. Они накладывали на холст маленькие мазки чистых цветов (рядом синий и желтый). При просмотре с расстояния глаз сам «смешивал» их в зеленый — так картинка казалась более яркой и «дрожащей» от света.
Промпт: dwarf star miners leaving asteroid citadel in the style of impressionism
Импрессионисты почти не использовали чистый черный. Тени у них — цветные (синие, фиолетовые, коричневые). Это делает работу «воздушной».
Промпты: dwarf king studying cosmic map in the style of impressionism/dwarves discovering forgotten stellar forge in the style of impressionism/battle with cosmic void creatures in the style of impres
Серийность — Моне мог написать один и тот же стог сена, собор или кувшинки 20–30 раз в разное время суток. Ему было важно показать, как один и тот же объект меняется в зависимости от света.
Промпт: dwarf captain leading starship fleet in the style of impressionism
У Моне (особенно в поздних работах, например, в «Кувшинках») объекты часто почти полностью растворяются в свете. Остаются только пятна цвета, которые создают эмоциональное ощущение воды или сада.
Промпт: final battle above burning nebula in the style of impressionism
Промпты: dwarves rebuilding crystal space citadel in the style of impressionism/peaceful dwarf civilization among nebulae in the style of impressionism/ morning coffee cup in the style of impressionis
Таким образом, в получившихся работах мне удалось передать стилистику и приемы изображений, на которых была обучена нейросеть.
Ссылки и нейросети
- Дополнительные методы улучшения изображений, кроме обрезания и коллажа не использовались
- ноутбук с кодом для обучения (kaggle): https://www.kaggle.com/code/muhavzuha/notebook6a3075022d
- Нейросети:
DiffusionPipeline служит для объединения текстового энкодера, модели диффузии (UNet) и декодера (VAE) в единый рабочий процесс генерации.
CLIPTextModel — модуль перевода данных; служит для преобразования текстового промпта в векторное представление (математические числа), понятное нейросети.
UNet2DConditionModel — основной вычислительный блок; служит для итеративного удаления шума из скрытого представления изображения в соответствии с заданными текстовыми условиями.
AutoencoderKL — модуль сжатия и восстановления; служит для перевода математических тензоров (латентного пространства) в финальные пиксели готового изображения и обратно.
LoRA-адаптер — дополнительный слой параметров; служит для «тонкой настройки» весов внутри блоков UNet, что позволяет внедрить специфические визуальные особенности (стиль) без изменения всей архитектуры модели.




