Исходный размер 1459x2048

Каспар ИИ Фридрих

Проект принимает участие в конкурсе

Концепция

Туман, деревце, закат и максимум два персонажа в углу холста — формула сюжета большинства картин Каспара Давида Фридриха.

Его идеи будут актуальны всегда. Я очень люблю романтизм в целом, а Каспар Давид Фридрих — один из важнейших его представителей. Он был мастером пейзажа, но нельзя обойти стороной его подход к изображению людей и их месту в композиции: во-первых, герои кажутся крошечными по сравнению с окружающими их просторами; во-вторых, они чаще «отворачиваются», вглядываясь в необозримое, и тем притягивая к нему внимание зрителя. Сможет ли нейросеть считать эти приёмы? Это я выясню в результате своего проекта.

А ещё мне интересно попробовать воспроизвести свою любимую картину с помощью нейросети.

Исходные изображения

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

Каспар Давид Фридрих умер в 1840 году, его работы считаются общественным достоянием с 1940. 52 исходных изображения взяты из открытого источника Wikimedia и вручную скадрированы до 1024×1024.

https://commons.wikimedia.org/wiki/Paintings_by_Caspar_David_Friedrich

big
Исходный размер 1280x256

import glob

img_paths = «./CDF/*.jpg» imgs = [Image.open (path) for path in glob.glob (img_paths)]

num_imgs_to_preview = 5 image_grid (imgs[: num_imgs_to_preview], 1, num_imgs_to_preview)

Обучение модели

big
Исходный размер 1280x968

oil painting in FRIEDRICH style, urbanscape

Нейронка сразу, без дополнительных указаний в промптах, уловила любимые приёмы Фридриха: исчезающие в тумане дальние планы и рассеянный, сумеречный свет.

Исходный размер 1280x968

oil painting in FRIEDRICH style, a thick snowy conifer forest in winter

Исходный размер 1280x968

oil painting in FRIEDRICH style, still dark sea on a moonlit night

Отлично получилось уловить положение фигуры на «холсте» и позу героя, молчаливо наблюдающего за пустынной природой вокруг.

Исходный размер 1280x968

oil painting in FRIEDRICH style, person in countryside

Оптимизация работы

Я использовала довольно крупные изображения, поэтому, чтобы моей модели хватало памяти, периодически чистила кэш:

import torch torch.cuda.empty_cache () torch.cuda.reset_max_memory_allocated ()

import gc gc.collect () torch.cuda.empty_cache ()

Усложнение промптов

У Каспара Давида Фридриха бывали и ясные пейзажи, а у меня картинки норовят раствориться в дымке. Ещё и цвета запыляются так, что результат напоминает скорее работы Эндрю Уайета. Откат модели до чекпоинтов приводил к полной потере авторского стиля, поэтому я стала конкретнее прописывать в промптах желаемые цвета и погоду.

Исходный размер 1280x968

oil painting in FRIEDRICH style, a view of a peaceful, pastoral village in a green valley, surrounded by majestic cloudy mountains

Вот это уже другое дело. Усложнением промпта решаю проблему и на картинках с людьми.

Исходный размер 1280x968

oil painting in FRIEDRICH style, two men standing next to each other in the middle of a vast green field, admiring a bright sunrise over a forest far away

Здесь произошла заминка — я обнаружила, что модель попросту не умеет считать до двух. Мне очень хотелось с максимальной точностью воссоздать свою любимую картину: двое братьев любуются последними лучами солнца. К сожалению, в ответ на «2» и «two» модель с каждым разом выдавала всё больше и больше людей. Получается, эта цель проекта достигнута не была.

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

Исходный размер 1280x968

oil painting in FRIEDRICH style, 2 women look at the daytime sky next to a foggy river

Идеально воссоздана манера написания света, растений и скал, правдоподобны очертания вдали — корабли, руины или горы. Костюмы принадлежат нужной эпохе.

Героев на картинке в четыре раза больше, чем позволил бы себе написать Фридрих.

Исходный размер 1280x968

oil painting in FRIEDRICH style, men climbing rocks to see the sunset

Исходный размер 1280x968

oil painting in FRIEDRICH style, a man wearing a hoodie and a backpack sits at night, watching the moon over a dark, busy night-time modern city

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

Мне удалось убедить модель, знакомую только с модой, архитектурой и климатом XVIII века, изобразить персонажа в двух худи сразу и мегаполис в режиме чёрного неба.

На некоторых генерациях можно заметить контрастную полоску наверху — в некоторых исходниках на этом месте оставалась видна тень от рамы или незаписанный фрагмент холста.

Исходный размер 1280x968

oil painting in FRIEDRICH style, a woman with a bonfire in a dark forest at night

Персонажей среднего и крупного размера модель освоила с лёгкостью, их масштаб относительно ландшафта вполне сопоставим с оригинальными картинами.

Исходный размер 1280x968

oil painting in FRIEDRICH style, snowy steppe with a lonesone walker in the distance

Упрощение промптов

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

Исходный размер 1280x968

oil painting in FRIEDRICH style, lake

Приглядитесь к туманному озеру: через него на лодке переправляется путешественник! В промпте персонажа не было, но с некоторой долей вероятности маленькие человечки всё же появляются на генерациях.

Исходный размер 1280x968

oil painting in FRIEDRICH style, a rye field

Приятно удивлена, что по запросу «поле» я получила не только бескрайнюю рожь, но и мельницу в отдалении — по заветам Каспара Давида Фридриха, полуразрушенную. «Человек» тоже вышел характерным — правда, снова с намёком на Уайета.

Исходный размер 1280x968

oil painting in FRIEDRICH style, person

Ещё интересна в этой генерации подпись в левом нижнем углу, нехарактерная для моего художника и отсутствующая в примерах для обучения. Предполагаю, что она возникла из-за словосочетания «oil painting» в промптах и своеобразной его трактовки через установленную библиотеку datasets:

! pip install datasets -q

Моя любимая генерация

У этой картинки достаточно ординарный промпт, она не отличается от других по стилю — что же в ней особенного?

Чтобы понять это, нужно сравнить её с картиной Каспара Давида Фридриха «Меловые скалы на острове Рюген»: герой в той же позе смотрит вдаль и вниз, обрамлённый ветвями деревьев. При этом «Скалы» не вошли в мой датасет для обучения — там нет дымки, характерной для поздних полотен, и я не хотела сбивать с толку модель. Тем не менее композиция этой картины независимо проникла в мой проект. Поэтому можно с уверенностью сказать, что обучение удалось.

Исходный размер 1280x968

oil painting in FRIEDRICH style, a hiker in a forest clearing

Исходный размер 1280x968

Каспар Давид Фридрих, «Меловые скалы на острове Рюген», 1818

Этот результат — ещё и отрезвляющее напоминание: то, что ИИ может «придумать сам», вероятно, уже придумано автором оригинала. Даже если нейросеть об этом не подозревает.

Для создания изображений проекта я обучала генеративную нейросеть Stable Diffusion с DreamBooth и LoRA. Разрешение обложки повышено с помощью сервиса iLoveIMG.

  1. https://huggingface.co/docs/diffusers/main/en/api/pipelines/stable_diffusion/stable_diffusion_xl
  2. https://huggingface.co/docs/diffusers/main/en/training/dreambooth
  3. https://huggingface.co/docs/diffusers/main/en/training/lora
  4. https://www.iloveimg.com/