Original size 1140x1600

Билибин «в прайме». Обучение генеративной нейросети

PROTECT STATUS: not protected

Идея проекта

Обучение нейросети определенному стилю — задача, требующая узнаваемого авторского подчерка, полного характерных особенностей, канонов, соблюдение которых (пусть и не в полной мере, что является основной проблемой при обучении генеративной нейросети) позволяет говорить об удачном итоге обучения. Важным условием для выполнения задания было внимательное отношение к авторскому праву — использование собственных работ, уважительное к нему отношение (задокументированное согласие автора) или использование произведений, ставших общественным достоянием.

Мой выбор пал на работы И. Я. Билибина — яркие, узнаваемые (и к тому же являющиеся общественным достоянием), знакомые большинству россиян «с школьной скамьи» и обладающие уникальным, легко воспроизводимым стилем, они стали отличной основой датасета.

Идейно же мне было интересно «поместить художника в современную среду», попросить автора 20-го века, знаменитого благодаря изображению былинной, древнерусской и сказочной действительности, переложить действительность века 21-го на холст с сохранением всех особенностей стиля. В процессе работы я поняла, что хочу не просто повторять сюжеты «городских/уличных сказок» и генерировать стилизованные изображения знакомых всем героев (большого) города, но сделать их «новыми сказками», поместить «прошлое в настоящее».

Так родились несколько архетипов, внешний вид которых изменялся вместе с промптами: скейтер-трикстер, курьер-купец, летописец-граффитист, страж-полицейский уличный (музыкант-) гусляр и знакомый каждому студенту изготовитель «сказочного эликсира» — бариста.

Описание процесса обучения

big
Original size 1920x1080

Процесс обучения нейросети воспроизведению заданного визуального стиля включает несколько этапов: подготовка и систематизация датасета изображений, создание текстовых описаний на его основе, обучение модели с использованием библиотек и генерация визуальных результатов. Каждый этап имеет свои технические сложности, решаемые с помощью специализированных инструментов.

В проекте применялись: Stable Diffusion (обучение генеративной модели), Google Colab (среда выполнения), Hugging Face (токен и размещение модели), ChatGPT (создание и проверка кода), Adobe Illustrator (постобработка элементов кода).

Original size 1920x1080

Создание датасета с (фрагментами) иллюстраций И. Я. Билибина происходило «вручную». Таким же методом был изменен и формат всех изображений — изначальный датасет, составленный не из фрагментов, а из целых иллюстраций, не был достаточно подробным и точным для обучения нейросети, примеры чего я предоставила ниже.

Впрочем, строка, изменяющая размер кадров, осталась — для большей точности и единообразия получаемого датасета.

Original size 1280x256

Изначальный неотредактированный датасет, фрагменты.

Original size 1280x256

Отредактированный датасет, фрагменты.

0

Следующим действием является подключение модели BLIP, создает текстовые описания к каждому изображению автоматически. После к каждому из них добавляется общий стиль. Все результаты сохраняются в файл metadata.jsonl — так каждая картинка получает свой индивидуальный промпт-описание для дальнейшего обучения.

0

Непосредственная генерация изображений (код и результатирующая серия изображений)

0

После генерации подписей BLIP выгружался из GPU-памяти для освобождения VRAM под последующее обучение LoRA. Команда accelerate config default создавала стандартную конфигурацию библиотеки Accelerate, управляющей процессом обучения. Hugging Face использовался для авторизации и обеспечения свободного доступа третьих лиц к модели, а также для её загрузки и публикации в собственном репозитории.

По завершении обучения я проверила сохранность всех LoRA-весов и создала репозиторий на Hugging Face с тем же именем, что и каталог проекта; автоматически добавилась model card с описанием обучения. Все файлы модели (кроме временных чекпоинтов) были загружены, после чего я подключила VAE для корректного декодирования изображений и интегрировала обученную LoRA в пайплайн Stable Diffusion XL, подготовив модель к тестовой генерации.

0

(1) Скейтер-трикстер

Неудачные генерации на основе неотредактированного датасета, в обоих случаях промпт содержал слово «скейтер».

Первые генерации скейтбордиста были основаны на неотредактированном датасете, что дало свои плоды и повлияло на качество итоговой генерации, ухудшив его. Именно после этих результатов датасет был подвергнут «ручной» пересборке.

Все последующие генерации выполнены на основе второго датасета, я постепенно привыкала к написанию промптов, а нейросеть обучалась, создался «тандем», где каждая из нас учила другую.

Более удачные генерации на основе отредактированного датасета. Но промпт был слишком подробным, видно большое количество артефактов и неточностей.

Промпты для генераций скейтбордистов (реальные промпты, представленные в блокноте с кодом, упрощены для большей наглядности запроса):

(1) «MODERN BILIBIN style painting, urban skater,»

(2) «painting in MODERN BILIBIN style, urban skater as a modern folk hero,»

(3) «MODERN BILIBIN style illustration, full-body young male skater, standing sideways on skateboard, feet on board, wearing ancient Russian clothing: long tunic, belt, trousers, boots,»

Стоит отметить, что именно в этот момент я поняла, что при дальнейших генерациях необходимо описывать именно древнерусского героя в современных условиях, «нащупала» идею проекта.

Original size 1024x1024

Финальная генерация скейтера, финальный стиль проекта найден.

(2) Курьер-купец

Промпты для генераций курьера. Я не считаю эти генерации удачными, скорее всего, это связано с тем, что курьер с характерным рюкзаком (который каждый раз был прописан в промпте) — особенность российской действительности, «не знакомая нейросети».

(1) «MODERN BILIBIN style illustration, night urban courier on bicycle,»

(2) «MODERN BILIBIN style illustration, urban courier riding a horse,»

(3) Летописец-граффитист

Генерации граффитиста на основе промпта «современный человек в былинных условиях». Много неточностей и ошибок.

Промпты для генераций граффитиста:

(1) «MODERN BILIBIN style illustration, urban graffiti artist,»

(2) «MODERN BILIBIN style illustration, urban graffiti artist in action, spraying paint on wall,»

(3) «MODERN BILIBIN style illustration, full-body young male graffiti artist, standing side view, right arm extended, holding cylindrical spray paint can with nozzle, wearing ancient Russian clothing: long linen tunic, belt, trousers, boots,»

Original size 1024x1024

Финальная генерация граффитиста. «Человек в былинном костюме в новых условиях».

(4) Страж-полицейский

Промпты для генераций полицейского.

Пожалуй, это стало самым сложным испытанием для генеративной нейросети — найти что-то среднее между богатырем и полицейским было трудно и для меня. Решение поместить нового человека в старые условия не увенчалось успехом полностью, но меня радует то, как верно даже для задачи, не стыкующейся с основной направленностью работ Билибина, было найдено верное композиционное и цветовое решение.

(1) «MODERN BILIBIN style illustration, full-body police officer,»

(2) «MODERN BILIBIN style illustration, full-body modern police officer, wearing dark navy tactical uniform, reflective stripes on jacket and pants,»

(5) Уличный гусляр-музыкант

Более ранние генерации, аналогичны с граффитистом по логике развития.

Промпты для генераций уличного музыканта:

(1 и 2) «MODERN BILIBIN style, full-body street musician, sitting on crate,»

(3) «MODERN BILIBIN style illustration, full-body musician, seated frontal pose,»

Original size 1024x1024

Финальная генерация. К моему сожалению, объяснить нейросети, что такое гусли, я так и не смогла.

(6) Сказочный эликсир: бариста

Промпты для генераций бариста.

Я считаю, что этот персонаж стал наиболее узнаваемым и при этом «историческим, былинным». Отчасти потому, что я поняла технику написания промптов — отчасти потому, что генеративная нейросеть обучилась.

Сравнивая первые и последние генерации, невозможно не отметить большую точность, более точное совпадение с ожиданиями от промпта и «вхарактерность», чем в первых опытах.

(1) «MODERN BILIBIN style illustration, full-body young male barista,»

(2) «MODERN BILIBIN style illustration, full-body young male barista, standing behind coffee cart, holding cup in hand,»

(3) «MODERN BILIBIN style illustration, full-body young male barista, standing behind modern espresso machine and coffee grinder, holding cup,»

Original size 1024x1024

(7) Таксист-перевозчик

Впрочем, последний опыт — не всегда самый удачный. Так, решив, что нейросеть достаточно обучена, я предложила ей смоделировать то, примеры чего отсутствуют в моем датасете — крупную современную технику. К сожалению, машина 21-го века не удалась ей, но более ранние примеры автопрома — более чем, что добавило генерациям больший шарм, хотя и сделало их менее точными.

Промпты для таксиста:

(1) «MODERN BILIBIN style illustration, full-body young male taxi driver, sitting inside modern taxi, hands on steering wheel,»

(2) «MODERN BILIBIN style illustration, full-body young male taxi driver,»

We use cookies to improve the operation of the website and to enhance its usability. More detailed information on the use of cookies can be fo...
Show more