
Сны чернильного зверя — проект, посвящённый дообучению нейросети Stable Diffusion на работах художника Tyrus Wong для создания лиричной визуальной истории в его стилистике.
Концепция
Работы Tyrus Wong очаровывают своей поэтичной простотой, тонкой композицией и умением передавать глубину мира через едва намеченные формы и мягкий свет. Его вклад в визуальный стиль мультфильма Bambi стал знаковым примером того, как пейзаж может стать живым участником повествования — не фоном, а дыханием сцены.

Вдохновившись этим подходом, я решила обучить генеративную нейросеть Stable Diffusion создавать изображения в стилистике Tyrus Wong и ему близких художников. Но в отличие от буквального воспроизведения его работ, я выстроила собственную концепцию — лирический визуальный рассказ от лица вымышленного персонажа, Чернильного Зверя.
Через генерацию изображений я хотела не просто воспроизвести эстетику Вонга, но и использовать её как язык — язык медленных образов, мистической природы и почти статичного времени. Проект строится на наблюдении за деталями и созерцании.


Цель проекта — передать дух работ Tyrus Wong, его мягкость, приглушённую палитру, размытые границы форм и ощущение сказочной ночи.
Итоговая серия изображений
Этот проект — визуальный дневник снов. Его герой — Чернильный Зверь, сущность, растворённая в тумане и ночи, наблюдающая за миром без слов. Он не путешественник и не герой — он свидетель.
Сны Зверя складываются в медленное, почти статичное движение через пейзажи: поле, реку, лес и рассвет у воды. Мгновение, застывшее между дыханием и светом.
Нейросеть, обученная на работах Tyrus Wong и близких по духу художников, смогла уловить особую эстетику — мягкость, дымчатость, поэзию образов. Результатом стала серия изображений, каждое из которых — часть одного сна, одного ощущения.
{ Звёздное поле }
Мир начинается в тишине. Перед нами — поле под тёмным небом, где трава колышется без ветра, а звёзды еле дышат сквозь фиолетовый туман.


Тень волка проходит меж травинок — не животное, но присутствие. След, оставленный в сырой земле, заполняется тьмой.
Где-то вдалеке — фигура оленя, растворяющаяся в дымке. Всё это написано мягкой кистью, в ночных серо-синих оттенках.
{ Река, несущая свет }
Вода — как граница между снами. В ней отражаются не только деревья, но и птицы, что взлетают как чёрные сны.
Сквозь прозрачную воду проглядывают камни, и каждый из них — как звезды, упавшие в реку. Всё замерло в беззвучной тишине.
{ Лес света и теней }
Лес принимает Зверя как родного. Светлячки освещают путь, но не ведут.
Сквозь кроны виднеется белка замершая на ветке. Здесь не нужно бежать — можно просто быть.
Кора, листья, дыхание зверя — всё становится частью одной медленной симфонии.


{ Рассвет на берегу }
Он не просыпается — он просто исчезает.
Следы на влажном камне бледнеют с каждой волной.


Мир светлеет, но не становится ярким. Волк стоит на утёсе, смотрит в сторону ещё невидимого солнца.


Капля росы, дрожащая на листке, падает, а зверь лениво открывает сонные глаза. Это не финал — это тишина, завершающая круг.
Обучение генеративной модели
Для обучения использовалась модель Stable Diffusion XL, дообученная с помощью DreamBooth и LoRA. Основой стал датасет из 45 квадратных изображений в духе Tyrus Wong — преимущественно его собственные работы, а также несколько визуально и стилистически близких. Изображения были приведены к формату 1024×1024 и очищены от лишних элементов.
Первым этапом стала проверка доступности GPU и установка всех необходимых зависимостей в виртуальной среде через pip. Работа велась локально в VS Code на Windows, с использованием видеокарты RTX 4070.
Была создана локальная директория для хранения датасета, подготовлены изображения и скрипты. Вместо загрузки на платформу Colab использовалась настройка окружения вручную — это позволило лучше контролировать процесс обучения и устранить ограничения по времени сессии.
BLIP использовался для генерации автоматических описаний. К каждому изображению был добавлен префикс «a painting in TYRUS-WONG-ZVER style», отражающий заданное стилистическое направление.
Обучение проходило локально на GPU, с настройкой ускорения через accelerate, использованием градиентного чекпоинтинга, 8-битного Adam и смешанной точности (fp16). Модель обучалась в течение 500 шагов.
Проект реализован в одном Jupyter Notebook-файле, в котором последовательно выполнялись все этапы: подготовка датасета, генерация подписей с помощью BLIP, обучение модели Stable Diffusion XL с использованием LoRA и генерация финальной серии изображений. Файл загружен на Яндекс Диск.
Для тренировки использовался скрипт train_dreambooth_lora_sdxl.py из официального репозитория diffusers. После завершения модель была загружена на Hugging Face Hub и подключена для генерации серии изображений локально.
По результатам генерации наилучшие результаты показали пейзажи и фрагменты, содержащие один-два объекта. Нейросеть хорошо усвоила атмосферу — туман, тени, световые переливы, — хотя в ряде случаев сталкивалась с трудностями в деталях вроде количества ног животных или ближних планов.
Несмотря на это, итоговая серия получилась визуально цельной: кадры объединяет техника мягкого туше, спокойные темные палитры и характерное ощущение недосказанности — как будто каждый фрагмент действительно пришёл из сна.
Исходный код
Проект реализован в одном Jupyter Notebook-файле, в котором последовательно выполнялись все этапы: подготовка датасета, генерация подписей с помощью BLIP, обучение модели Stable Diffusion XL с использованием LoRA и генерация финальной серии изображений. Файл загружен на Яндекс Диск.
Применение генеративных нейросетей
Для обучения использовалась модель Stable Diffusion XL с LoRA. Промпты, структура проекта и уточнения по коду частично разрабатывались при помощи ChatGPT (GPT-4). Генерация и дообучение проведены с использованием библиотек Diffusers и платформы Hugging Face.