Цель проекта
Визуально исследовать границы восприятия реальности, показав, как привычные категории мира могут быть трансформированы и утратить устойчивость. Через серию генераций проект демонстрирует, что такие базовые элементы, как время, пространство и материя, не являются фиксированными, а могут восприниматься как пластичные и изменяемые.
Дополнительно проект ставит задачу переосмыслить художественный язык сюрреализма в контексте генеративных технологий. Используя нейросети как инструмент, работа не копирует стиль, а расширяет его, создавая новые образы и визуальные сценарии, в которых реальность подчиняется логике воображения.
Серия строится как эксперимент: каждая генерация исследует одну базовую категорию реальности и показывает, что происходит, если она перестаёт подчиняться привычным законам. Все сцены сохраняют узнаваемые объекты, но меняют их поведение, создавая ощущение «ломающегося мира».
⏳ Время Время теряет линейность и становится физической субстанцией. Оно растягивается, течёт, замедляется или застывает, превращаясь в часть окружающей среды. 🏛 Пространство Пространство перестаёт быть стабильным: перспектива и геометрия искажаются, расстояния становятся нелогичными, а архитектура теряет структуру. 🧍 Тело Человеческое тело утрачивает чёткую форму. Оно становится текучим, распадается или трансформируется, отражая нестабильность идентичности. 🪨 Гравитация Законы тяжести нарушаются: тяжёлые объекты становятся невесомыми, а лёгкие — наоборот, притягиваются вниз. Мир перестаёт подчиняться физике. 🪞 Отражение Отражение больше не повторяет реальность. Оно показывает другую версию мира или искажённую истину, создавая разрыв между видимым и настоящим. 🫠 Материя Материя теряет границы и стабильность: твёрдые объекты становятся мягкими, растворяются или переходят в абстрактные формы, постепенно исчезая.
Датасет
В качестве датасета использовала работы Сальвадора Дали. Изображения отличаются по сюжету и визуальному стилю, но объединены авторской оптикой и пластикой формы, что даёт модели достаточно разнообразия для генерации новых интерпретаций внутри заданного художественного языка.

Результат
Я заметила, что нейросеть сохраняет общую сюрреалистическую логику исходного датасета, но сильно упрощает визуальный язык. В генерациях пропадает сложная многослойность композиций: вместо насыщённых, перегруженных деталями сцен появляются более «вычищенные» пространства с одним-двумя доминирующими объектами.
Характерные для оригиналов нюансы живописи и фактуры превращаются в более гладкие поверхности, а мотивы (часы, вытянутые тела, странные фигуры, архитектурные фрагменты) начинают комбинироваться по-новому, создавая ощущение сборной, усреднённой версии стиля, а не конкретного авторского жеста.
Примеры промптов
a classical clock structure slowly melting and stretching across a desert, time flowing like liquid, long unnatural shadows, dalix surrealist oil painting, visible brushstrokes, canvas texture, dreamlike composition
a familiar architectural space distorted into impossible geometry, walls bending and stretching, collapsing perspective, empty surreal atmosphere, dalix surrealist oil painting, visible brushstrokes, canvas texture
a human figure partially dissolving into soft abstract forms, anatomy becoming fluid, identity blurred, empty desert background, dalix surrealist oil painting, visible brushstrokes, canvas texture
Обучение
На первом этапе я установила все необходимые библиотеки и загрузил скрипт для обучения LoRA.
! pip install -q diffusers transformers accelerate peft huggingface_hub bitsandbytes ! pip install -q git+https://github.com/huggingface/diffusers.git ! wget -q https://raw.githubusercontent.com/huggingface/diffusers/main/examples/dreambooth/train_dreambooth_lora_sdxl.py
После этого я авторизовалась в Hugging Face, чтобы получить доступ к моделям:
from huggingface_hub import notebook_login notebook_login ()
Далее я подключила датасет с изображениями. Код автоматически находит папку с изображениями и использует её для обучения.
dataset_dir = «/kaggle/input/datasets/hannash/Salvador_Dali»
for dirname, _, filenames in os.walk ('/kaggle/input'): if filenames: print (f"Найдены файлы в: {dirname}») dataset_dir = dirname break
Далее — ключевой этап — обучение LoRA-адаптера.
В качестве базовой модели используется Stable Diffusion XL, которая дообучается на моём датасете.
! accelerate launch --num_processes 1 --mixed_precision fp16 train_dreambooth_lora_sdxl.py
--pretrained_model_name_or_path="stabilityai/stable-diffusion-xl-base-1.0»
--instance_data_dir="$dataset_dir»
--output_dir="/kaggle/working/salvador-dali»
--instance_prompt="dalix surreal painting, dreamlike landscape, melting objects, distorted perspective»
--resolution=768
--train_batch_size=1
--gradient_accumulation_steps=4
--learning_rate=1e-4
--lr_scheduler="constant»
--lr_warmup_steps=0
--max_train_steps=1000
--mixed_precision="fp16»
--use_8bit_adam
--gradient_checkpointing
--seed=0
--snr_gamma=5.0
Важный момент — я использовала специальное ключевое слово dalix в instance_prompt. Это позволяет модели «привязать» стиль именно к этому токену и затем вызывать его при генерации.
После завершения обучения я загрузила базовую модель и подключил к ней LoRA-веса.
from diffusers import DiffusionPipeline import torch import gc
torch.cuda.empty_cache () gc.collect ()
pipe = DiffusionPipeline.from_pretrained ( «stabilityai/stable-diffusion-xl-base-1.0», torch_dtype=torch.float16, variant="fp16», use_safetensors=True )
pipe.load_lora_weights («/kaggle/working/salvador-dali») pipe.to («cuda»)
На этапе генерации я настраивала параметры: — количество шагов — CFG (насколько модель следует промпту) — negative prompt для удаления лишнего реализма
num_steps = 35 cfg_scale = 7.5
neg_prompt = «photorealistic, realistic, ultra realistic, photo, photography, sharp focus, cinematic lighting, 3d render»
Далее я использовала серию промптов, в которых комбинировал описание сцены с ключевым словом dalix, чтобы вызывать обученный стиль.
«text»: «a classical clock structure slowly melting and stretching across a desert, time flowing like liquid, long unnatural shadows, dalix surrealist oil painting, visible brushstrokes, canvas texture»
В целом процесс выглядел так:
Подготовка среды Подключение датасета Обучение LoRA Подключение весов Генерация изображений
Использование ИИ
В процессе работы над проектом я дополнительно обращалась к ChatGPT. Он помогал разбираться с техническими ошибками в коде, лучше понимать этапы обучения модели и принципы настройки параметров.
Помимо этого, я использовала его для проработки концепции и текстового описания проекта, чтобы точнее сформулировать идею и зафиксировать результаты работы.
