Hanakotoba / (花言葉)
— японская форма языка цветов
Концепция
Я давно рисую карандашные портреты девушек. Со временем у меня сформировался свой способ работы с формой и штрихом. В какой-то момент я заметила, что похожие принципы можно увидеть и в изображениях цветов. Не по смыслу, а по тому, как строится форма. Мне стало интересно, можно ли это проверить через нейросеть. Я обучила модель на своих портретах, чтобы она выучила мой стиль, а затем начала задавать ей цветы.

Лучше всего модель работала с орхидеями. Их форма оказалась ближе всего к структуре лица, на которой она обучалась, поэтому перенос стиля получался наиболее точным. Цветы оказались построены теми же средствами, что и лица. Для нейросети лицо и цветок устроены одинаково. Этот проект про это смещение. Про то, что изображение можно рассматривать через его устройство. И про то, что один и тот же визуальный язык может одинаково описывать и лицо, и цветок.
Исходники
[Мой стиль рисования]


Для обучения я использовала 11 собственных карандашных портретов. Все изображения обрезаны до формата 1:1, размер 512×512 пикселей.
Я намеренно выбирала рисунки с разными образами: разные прически, выражения, ракурсы, чтобы модель не заучила один конкретный портрет, а уловила именно почерк и способ штриховать.
Процесс обучения
Первым делом проверяю что GPU вообще доступна и в каком она состоянии: модель, загрузка, свободная память. Потом устанавливаю нужные библиотеки: bitsandbytes, transformers, accelerate, peft. Они отвечают за оптимизацию памяти и работу с LoRA. Отдельно ставлю свежую версию diffusers прямо с GitHub, она нужна для работы со Stable Diffusion и DreamBooth.
Подключаю Google Drive чтобы брать изображения из облака. Пишу функцию которая собирает несколько картинок в одну сетку, чтобы удобно смотреть датасет. Нахожу все файлы в папке и проверяю что они загрузились нормально.
Загружаю модель BLIP, она умеет смотреть на картинку и придумывать к ней текстовое описание. Прогоняю через нее весь датасет: каждое изображение получает подпись с префиксом «Draw with a pencil». Все пары картинка + описание сохраняются в metadata.json — это и есть размеченный датасет для обучения.
После разметки удаляю BLIP и очищаю кэш GPU, она больше не нужна, а память надо освободить. Настраиваю кодировку UTF-8 чтобы текст читался корректно, конфигурирую Accelerate для запуска обучения на GPU и авторизуюсь в Hugging Face.
Запускаю обучение. Основные параметры: базовая модель SDXL 1.0, 500 шагов, learning rate 1e-4, batch size 2. Прогресс виден в реальном времени, loss постепенно снижается, модель учится.
Обучение завершено, модель готова. Получаю ссылку на нее в Hugging Face Hub.
Оформляю карточку модели и публикую на Hugging Face. И все готово.
Результаты генераций
Сначала я просто проверяла, работает ли модель, и просила ее рисовать портреты. Они получались, но довольно ожидаемо и даже немного скучно. Тогда я решила попробовать что-то другое и начала задавать ей цветы.
В этой серии я смотрю на то, как нейросеть переняла мой способ рисования и перенесла его на другой объект. Я обучала модель на портретах, но в генерации просила ее рисовать цветы. В результате получилось странное ощущение: цветы выглядят так, как будто они всегда были частью этого же визуального языка.
Особенно хорошо видно, как сохраняется штрих. Линии не становятся более реалистичными, они остаются такими же мягкими, немного размытыми. Тень тоже ведет себя так же, как в портретах.
[prompt] Draw with a pencil phalaenopsis orchid macro, ink stippling technique, intricate petal texture, dotwork pattern, japanese botanical archive, fine art print
[prompt]
Draw with a pencil single orchid branch, ink line drawing, sumi-e style, white background, minimal detail, gestural brushstroke, no shading, fine art print
Лучше всего модель справлялась с орхидеями. Именно на них сильнее всего проявлялось сходство со стилем портретов. Я пробовала разные ракурсы и композиции, но именно форма орхидеи как будто лучше «совпадала» с тем, как устроены лица в моих рисунках. В этих генерациях результат выглядел наиболее цельным.
[prompt] Draw with a pencil magnolia branch two buds one bloom, ink thin outline, cream background, east asian botanical study, silent composition
Отдельно интересно наблюдать за переходом между цветком и лицом в смешанных изображениях. Там это сходство становится буквальным. Лепестки как будто продолжают линии лица, или наоборот. Граница между ними перестает быть очевидной.
Потом захотелось попробовать соединить цветы и лицо вместе специально. Первые варианты были аккуратными: орхидеи как корона, магнолия рядом. Потом вспомнила про «Silent Hill f», там ветки и корни прорастают сквозь всё. Захотела сделать что-то похожее, попросила модель вплести ветки прямо в лицо.
[prompt]
Draw with a pencil pencil portrait young woman, dark branches and flowers growing through her body, graphite drawing, horror botanical, japanese 1960s aesthetic, unsettling beauty
Трещины-ветки появились именно тогда. Это был самый точный результат, лицо и природа буквально из одного материала.
Комментарий результатов
В итоге проект оказался не столько про цветы или портреты, сколько про
сам принцип построения изображения.
Нейросеть не различает объекты так, как это делаем мы, она опирается на структуру, линии и распределение формы. Поэтому лицо и цветок для нее оказываются устроены одинаково. Это позволило увидеть собственный стиль со стороны. То, что казалось разными вещами, на уровне построения оказалось очень близким.Список инструментов:
Stable Diffusion XL 1.0 — основная модель, на базе которой обучалась LoRA и генерировались все итоговые изображения; Google Colab — для выполнения кода и создания генераций; Claude — использовался для формулировки и уточнения промптов для генерации изображений; Figma — для создания коллажей в лонгриде
