Если бы я был такой художник, как Оскар Рабин, если бы я мог писать маслом…
— Ян (Яков) Сатуновский
Концепция проекта
Мир творчества Оскара Рабина одновременно манит и пугает. В его работах реальность обретает причудливые очертания и кажется бесконечным, безумным сном. Феномен Оскара Рабина поистине уникален. С поражающей убедительностью и беспощадной критикой окружающей действительности он воплощает в своих работах совершенно особое видение реальности.
Оскар Рабин реализует свои идеи с помощью искусно разработанного эстетического стиля, символьно-образного и графического языков. Для того чтобы «оживить» окружающий мир, он обращается к визуальным и эстетическим решениям стиля поп-арт. Некоторым национальным пафосом обладают «помойки» художника, где реальные предметы «вживляются» в красочную канву — живописный рельеф полотна.
Однако причислить Оскара Рабина к тому или иному стилю по-прежнему трудно, потому что художник не вписывается в существующие границы эстетических и творческих программ. Оскар Рабин самобытен и решительно не поддается культурному фреймингу!
Критики отмечают в его стиле черты экспрессионизма, мизерабилизма и поп-арта, но его метод сложно отнести к одному направлению — это делает Оскара Рабина идеальным кандидатом для обучения нейросети под уникальный стиль.
По ходу работы мне важно узнать и определить, может ли до-обученная нейросеть воспроизвести узнаваемую эстетику (мрачные тона, искаженную перспективу)? Получится ли создавать новые символы в духе Оскара Рабина (например, сочетая его типичные объекты в необычных композициях)?
[Фрагменты] 1. Запад-Восток-30м (Ouest-Est-30m) // 2. Хлеб на кладбище. 1964 // 3. Русский поп-арт № 3. 1964 // 4. Луна и город. 1962 // 5. Луна и череп. 1973
Перед тем как обучить нейросетевую модель стилю Оскара Рабина, я собрала датасет из 100 работ художника и кадрировала изображения до квадратного формата (1024×1024).
Несмотря на хронологический разброс выбранных картин, творчество Оскара Рабина обладает устойчивой иконографией, и похожие символы и образы «кочуют» из работы в работу. Часто на полотнах автора встречаются бараки, бутылки, рыбы, религиозные образы (иконы), монеты, газеты и т. д.
[Фрагменты] 1. Строение № 150. 1963 // 2. Крыши в Прилуках. 1967
[Фрагменты] 1. Натюрморт с краской и Парижской водкой. 1997 // 2. Транспортировка шампанского по Сене. 2014
Обучение
В качестве платформы для до-обучения нейросетевой модели Stable Diffusion я выбрала Kaggle Kernels — облачную среду разработки на сайте Kaggle. Это решение было обусловлено тем, что объем и размер изображений в датасете требовали более значительных ресурсов графического процессора (GPU), чем это мог бы предложить, например, Google Colab.
Убедившись, что датасет успешно загружен в локальную директорию, я приступила к автоматическому созданию описаний к изображениям с помощью модели BLIP.
Так, каждое изображение сопровождалось подписью со специальным префиксом (caption_prefix
): «a painting in RABIN style, ». Каждая запись сохранилась в файле metadata.jsonl (каждая строка — отдельный JSON).
import json
caption_prefix = 'a painting in RABIN style, ' #@param
with open(f'{local_dir}metadata.jsonl', 'w') as outfile:
for img in imgs_and_paths:
caption = caption_prefix + caption_images(img[1]).split('\n')[0]
entry = {'file_name':img[0].split('/')[-1], 'prompt': caption}
json.dump(entry, outfile)
outfile.write('\n')
Модель BLIP успешно справилась с распознаванием простых объектов и сцен на картинах. Она правильно определила следующие объекты и сюжеты: «a skull and a full moon», «a city with lots of buildings», «a bottle of wine and a plate of food», «a building with a sign on it», «a street scene with flowers and paintings».
Однако, поскольку некоторые картины Оскара Рабина сочетают в себе коллажирование — использование настоящих предметов (монет, карт, газет) и фотографий, нейросеть зачастую неправильно интерпретировала происходящее на изображениях. Особенно это затронуло работы, в которых художник использовал фотографии людей или изображал иконы. Кроме того, некоторым полотнам были даны неправильные описания по причине их излишней абстрактности или из-за того, что цветовые сочетания были слишком тёмными, а контрастность — низкой.
Тем не менее, бо́льшую часть изображений нейросетевая модель BLIP описала верно.
После завершения аутентификации в Hugging Face Hub и передачи токена с правами на запись (write), я поставила такие настройки для обучения модели:
--dataset_name='oscar_rabin' \
--output_dir='oscar_rabin_style_LoRA' \
--instance_prompt='a painting in RABIN style' \
--resolution=1024 \
--train_batch_size=1 \
--gradient_accumulation_steps=3 \
--max_train_steps=1200 \
--checkpointing_steps=500 \
На обучение LoRA-модели ушло почти 6 часов.
После обучения я сохранила модель на Hugging Face в формате репозитория со всеми чекпоинтами.
from huggingface_hub import whoami
from pathlib import Path
output_dir = 'oscar_rabin_style_LoRA' #@param
username = whoami(token=Path('/root/.cache/huggingface/'))['name']
repo_id = f'{username}/{output_dir}'
...
from IPython.display import display, Markdown
link_to_model = f'https://huggingface.co/{repo_id}'
display(Markdown('### Your model has finished training.\nAccess it here: {}'.format(link_to_model)))
Первые генерации* смутили меня своим качеством и цветовым решением (преобладанием розовых оттенков), которое значительно отличалось от общей палитры картин в датасете. Плохое качество, вероятно, связано с тем, что некоторые изображения в собранной базе данных изначально имели меньшее разрешение. После того как их привели к единому размеру (1024×1024), они, возможно, потеряли в чёткости и резкости.
Я решила немного «откатиться» и посмотреть, как модель генерирует изображения на checkpoint-500. Результат мне понравился больше — были заметны характерные черты художественного метода Оскара Рабина (даже появилась сигнатурная подпись автора), однако цветовая гамма показалась мне слишком насыщенной и не отражала ценностей художника.
*Для лонгрида я улучшила качество этих изображений в Topaz Gigapixel AI, однако в своем первоначальном виде сгенерированные примеры получились очень пиксельными и «заблюренными».
[prompt = 'a painting in RABIN style, oil painting, still life of a fish and a bottle of vodka'] 1. Доученная LoRA-модель // 2. checkpoint-500
После первых результатов я добавила негативный промпт (negative_prompt
) — «blurry, out of focus, soft, low detail, bokeh», чтобы исключить вероятность генерации изображений плохого качества.
Качество стало лучше, как и цветовая палитра, однако количество артефактов и неточностей увеличилось:
[+ negative_prompt] prompt = 'a painting in RABIN style, oil painting, fish, crumpled newspaper, and vodka bottles'
Методом проб и ошибок я вывела настройки генерации, при которых получаемые изображения сохраняли консистентность стиля автора, не были плохого качества и обладали меньшим количеством артефактов, чем при предыдущих попытках.
pipe.load_lora_weights('jqpgnl/oscar_rabin_style_LoRA')
pipe.fuse_lora(lora_scale=0.8)
pipe.to('cuda')
prompt = 'a painting in RABIN style, oil painting, a city with a moon in the sky'
negative_prompt = 'blurry, out of focus, soft, low detail, bokeh'
image = pipe(
prompt=prompt,
num_inference_steps=40,
negative_prompt=negative_prompt,
).images[0]
image
prompt = 'a painting in RABIN style, oil painting, still life of a fish and a bottle of vodka'; lora_scale = 0.8
prompt = 'a painting in RABIN style, oil painting, a city with a moon in the sky'; lora_scale = 0.8
prompt = 'a painting in RABIN style, oil painting, fish, crumpled newspaper, and vodka bottles, with buildings in the background'; lora_scale=0.8
В первых генерациях я стремилась передать основные мотивы и символы, которые можно найти в творчестве Оскара Рабина. Это были экспрессивные композиции с рыбами, бутылками алкоголя и пугающими крышами бараков.
Обученная LoRA-модель смогла запечатлеть исключительные черты графического языка художника — контуры (клуазонне), приглушенные, мутные цвета, анаморфозу (намеренное искажение форм, воссоздающее предмет в особом, причудливом ракурсе). Однако хуже нейросеть справляется с передачей плановости, с сохранением понятной перспективы. Оскар Рабин нередко использует в своих работах обратную перспективу, но в сложных композициях обученная нейросеть не всегда может воссоздать этот прием.
Кроме того, на сгенерированных изображениях расположение и размер предметов часто кажутся лишенными логики. Вероятно, это связано с тем, что Оскар Рабин имплицитно использует в своих картинах коллажирование. И если у автора эти коллажные вставки выглядят убедительно, органично вписываются в композицию холста и дополняют сюжет картин, то в изображениях, сгенерированных нейросетью, ощущается беспорядочность и неаккуратность таких «вставок».
Сравнение сгенерированных и оригинальных работ
Перед генерацией результирующей серии работ я решила сравнить, как обученная модель изображает другие мотивы, характерные творчеству Оскара Рабина. Я подобрала шесть ярких картин художника (которых не было в датасете) и попробовала их повторить с помощью обученной модели.
Мне было важно проверить, сможет ли модель воссоздать картины, на которых не была обучена.
1. Оскар Рабин. Абсолют и две большие селедки. 2006 // 2. Изображение, сгенерированное нейросетью
1. Оскар Рабин. Матрешка и скорая помощь. 2008 // 2. Изображение, сгенерированное нейросетью
1. Оскар Рабин. Рубль. 1966 // 2. Изображение, сгенерированное нейросетью
1. Оскар Рабин. Облака, колбаса и православие. 2012 // 2. Изображение, сгенерированное нейросетью
1. Оскар Рабин. Скрипка и скорая помощь. 1974 // 2. Изображение, сгенерированное нейросетью
1. Оскар Рабин. С вербами и чашкой с ромашками. 2017 // 2. Изображение, сгенерированное нейросетью
Несмотря на очевидные несоответствия, некоторые из этих генераций очень близки по настроению и композиции к оригиналам. Однако цветовая палитра у сгенерированных образцов преимущественно остается яркой и не такой темной, как у изначальных картин.
Кроме того, нейросеть явно не способна воспроизвести пастозную технику живописи Оскара Рабина. На сгенерированных изображениях видны отдельные мазки, однако их наложение и расположение не сравнится с интенсивностью и хаотичностью живописи в оригинальных композициях художника.
Результирующая серия изображений
Для итоговой серии изображений я попросила DeepSeek сгенерировать промпты* с сюжетами к череде картин в стиле Оскара Рабина. Чтобы автоматизировать процесс генерации серии, промпты обрабатывались через цикл.
Представленный ниже код перебирает элементы списка rabin_prompts_final
. Для каждого элемента addition
создаётся full_prompt
— комбинация базового описания и конкретной детализации. Также для результирующей серии работ я решила попробовать другое соотношение сторон — (1024×1536).
*prompt: come up with descriptions for a series of images in the style of the Soviet nonconformist artist Oscar Rabin.
base_prompt = 'a painting in RABIN style, oil painting'
negative_prompt = 'blurry, out of focus, soft, low detail, bokeh'
for i, addition in enumerate(rabin_prompts_final):
full_prompt = f'{base_prompt}, {addition}'
image = pipe(
prompt=full_prompt,
negative_prompt=negative_prompt,
num_inference_steps=50,
height=1024,
width=1536,
).images[0]
display(image)
image.save(f'rabin_series_{i}.png')
prompt = 'a painting in RABIN style, worn-out boots in dried mud, empty can of condensed milk with a jagged lid, a single dried fish head on a chipped plate, dim light from a kerosene lamp'
prompt = 'a painting in RABIN style, oil painting, broken balalaika leaning against a cold radiator, dented tin cup with traces of cheap wine, yellowed newspaper…'
prompt = 'a painting in RABIN style, oil painting, frayed rope hanging from a rusty nail, empty matchbox with a faded ship illustration, half-burnt candle in a pool of wax…'
prompt = 'a painting in RABIN style, oil painting, crushed cigarette pack (Belomorkanal) on a splintered wooden table, half-empty glass of murky tea, torn train ticket to an unreadable destination…'
prompt = 'a painting in RABIN style, oil painting, shattered mirror reflecting a cracked ceiling, half-unraveled woolen scarf draped over a chair…'
prompt = 'a painting in RABIN style, oil painting, warped Soviet-era passport lying in a puddle, bent fork stuck in a moldy crust of bread, cracked window with frost creeping along the edges…'
prompt = 'a painting in RABIN style, bucket filled with rainwater and floating cigarette butts, chipped enamel bowl with cold borscht stains, crumpled propaganda poster ('Glory to Labor! ')…'
Генерации квадратного формата на те же промпты:
Хотя меня и устраивает результат финальных генераций, они показались мне хуже, чем самые первые попытки, потому что лишь отдалённо напоминают стиль Оскара Рабина. Так я выяснила, что обученная модель плохо воспринимает длинные, подробные промпты.
Поэтому я решила сгенерировать вторую серию работ с более простыми, примитивными сюжетами (которые, тем не менее, отражают ценности художника и созвучны основным мотивам его творчества).
prompt: «a painting in RABIN style, a bent spoon on a dirty plate».
prompt = 'a painting in RABIN style, the last train against an empty sky'
1. prompt = 'a painting in RABIN style, shattered vodka bottle in the snow' // 2. prompt = 'a painting in RABIN style, cigarette butts in a tin can'
1. prompt = 'a painting in RABIN style, rotten fish on a newspaper' // 2. prompt = 'a painting in RABIN style, shattered vodka in the snow' // 3. prompt = 'a painting in RABIN style, lightbulb'
prompt = 'a painting in RABIN style, worn-out passport in a puddle'
1. prompt = 'a painting in RABIN style, bootprints in the mud' // 2. prompt = 'a painting in RABIN style, dusty suitcase…' // 3. prompt = 'a painting in RABIN style, black bread on the newspaper'
prompt = 'a painting in RABIN style, faded Soviet-era wallpaper'
Серия № 2. Подборка генераций № 1
Серия № 2. Все генерации
Таким образом, данный проект по обучению нейросетевой модели стилю Оскара Рабина показал как потенциал, так и ограничения современных генеративных технологий. Несмотря на сложность задачи — самобытность и многогранность художественного языка Рабина, — обученная LoRA-модель смогла частично воспроизвести его ключевые эстетические черты: мрачную цветовую палитру, искажённую перспективу, характерные символы (бараки, бутылки, рыбы) и графическую манеру (контуры клуазонне, анаморфозу).
Однако нейросеть столкнулась с рядом трудностей. Пастозность, коллажирование и сложная текстура мазков Рабина остались за пределами возможностей модели. В сгенерированных работах часто отсутствовала осмысленная плановость, а предметы располагались хаотично, что резко контрастирует с продуманным абсурдом оригиналов. Несмотря на использование негативных промптов, модель склонялась к излишне ярким оттенкам, не соответствующим приглушённой палитре художника. Более того, модель не справилась с интерпретацией сложных сюжетов — подробные промпты ухудшали результат, в то время как лаконичные описания давали более стилистически точные, хотя и упрощённые генерации.
Обученная модель способна уловить и тиражировать отдельные элементы стиля Оскара Рабина, но не его глубину и игру смыслов оригинальных работ. И это лишь подчёркивает ценность человеческого художественного гения.
[Фрагмент] Оскар Рабин. УРА! 1965
Описание применения генеративной модели
Stable Diffusion XL — генерация изображений на основе текстовых описаний. В проекте также используется как базовая модель для последующей настройки под конкретные задачи — под до-обучение DreamBooth — персонализация генеративной модели под стиль Оскара Рабина BLIP — генерация описаний для изображений в датасете Hugging Face — сохранение обученной LoRA-модели и обращение к ней в последующих генерациях DeepSeek — обращения с целью генерации промптов для серии изображений (см. экраны 41-57) Adobe Color — генерация цветовой палитры для текстовых блоков проекта на основе загруженного изображения Topaz Gigapixel AI — увеличение всех представленных изображений: картин Оскара Рабина и генераций
Ссылка на блокнот и датасет изображений