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. И все готово.
Результаты генераций




