Original size 721x1024

Обучение генеративной нейросети под стиль Ивана Билибина

PROTECT STATUS: not protected
25

В рамках этого проекта я обучила генеративную нейросеть Stable Diffusion стилю русского художника Ивана Яковлевича Билибина.

Подготовка и анализ картин

big
Original size 1191x105

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

0

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

big
Original size 656x656

Как можно заметить, у Билибина есть свой определённый стиль рисования: он использует приглушённую палитру, предпочитая природные, тёплые, землистые оттенки; часто его иллюстрации сопровождаются чётким контуром и большим количеством декоративности. Узоры могут как окантовывать картину, так и быть непосредственной её частью. Художник фокусируется на реалистичном изображении людей и животных, усердно прорисовывая каждую деталь.

Работа с нейросетью

В проекте не использованы иные нейросети, работа велась в Google Collab с использованием Stable Diffusion XL, метода DreamBooth и технологии LoRA. Для начала я провела все необходимые подготовительные операции для корректной работы.

Original size 1024x813

Затем я преступила к выгрузке датасета. В качестве архива фотографий я взяла 104 картины художника, кадрированные мной до нужного размера. Как можно заметить, все картинки были выгружены в папку внутри Goggle Collab под названием «/content». На предварительном просмотре все рисунки отобразились корректно и в нужном формате.

0

Затем с помощью модели BLIP были сгенерированы подписи к картинкам. Я использовала префикс «art in BILIBIN style», который позже буду использовать для генерации картинок. Далее был создан файл metadata.jsonl, который содержал картинку и подпись к ней. Как можно заметить, все подписи были достаточно детальны и разнообразны.

0

После я удаляю ненужную и тяжёлую модель и очищаю кэш.

Original size 485x88

После этого я работаю с Hugging Face для дальнейшего использования кода без обучения нейросети с нуля. Затем загружаю библиотеку для работы с metadata.jsonl.

Original size 1415x340

Наконец, начинается процесс обучения. Я поменяла необходимое значение на своё собственное, такое как «art in BILIBIN style», и записала max_train_steps=500 и checkpointing_steps=250 для облегчения и ускорения работы.

Original size 1415x354
Original size 1780x833

Я заканчиваю обучение модели, сохраняя её на Hugging Face.

0

Затем я загружаю модель из Hugging Face. И теперь я могу написать промпт для генерации картинки.

Original size 1773x569

Получившиеся изображения

В рамках генерации я постаралась по-разному поэкспериментировать с промптами и изображениями. Несколько раз я меняла силу воздействия нейросети для того, чтобы посмотреть, сильно ли изменится результат.

Original size 927x123

Для начала я попробовала самые обычные запросы, например, «art in BILIBIN style, a portrait of a man» и «art in BILIBIN style, a portrait of a woman».

0

Как можно заметить, стиль автора сохранился, например, пастельные оттенки и декоративность. Есть небольшие огрехи с анатомией и излишняя узорчатость, однако они не критичны. Сразу бросается в глаза то, что портреты отсылают к Древней Руси, что потом ещё сыграет свою роль.

Original size 1024x1024

Далее я сгенерировала ребёнка («art in BILIBIN style, a portrait of a child in full growth»), чтобы посмотреть, есть ли какие-то проблемы с возрастными ограничениями, но итоговое изображение вышло достаточно презентабельным.

0

Далее я поэкспериментировала с пейзажами, попросила сгенерировать времена года, используя промпт «art in BILIBIN style, a winter landscape» (summer, autumn, spring). Пейзажи получились удачными, выдержанными в акварельной стилистике. На некоторых картинках можно заметить рамку, которая часто присуща Билибину.

0

lora_scale = 0.3/0.5/0.8

Генерация животных, а точнее лисы («art in BILIBIN style, a fox»), сопровождалась изменениями в lora_scale. Обычно я использовала показатель 0.5, однако тут решила попробовать 0.3 и 0.8. Не могу сказать, что видны серьёзные изменения.

Original size 1024x1024

Далее я пробовала более сложных животных, например, коня с всадником: «art in BILIBIN style, a knight». Видны некоторые проблемы с ногами лошади. Также узорчатость старается перекрыть неразбериху на заднем плане, что приводит к общей мешанине предметов и людей, что характерно для нейросетей.

Original size 1024x1024

Та же проблема, но в несколько раз усиленная, появляется для промпта «art in BILIBIN style, a battle field».

0

lora_scale = 0.3/0.5/0.8

Генерация рыб («art in BILIBIN style, a fish»), как и генерация лисы, не показала сильную разницу при изменениях lora_scale.Самым удачным вышло изображение с показателем 0.5, на других картинках заметно смазывание и непонятные части рыбьего тела.

Original size 1024x1024

Генерация Кремля («art in BILIBIN style, Kremlin») удалась, даже появилась небольшая рамка, напоминающая ворота. Люди, однако, превратились в массу из цветных пятен.

0

lora_scale = 0.3/0.5/1

Я поняла, что нейросеть умеет генерировать изображения, основываясь на стиле Древней Руси, поэтому я попросила сгенерировать спортивный автомобиль: «art in BILIBIN style, a sport car». Сразу заметно, что на типичный современный автомобиль это мало похоже. Изменения lora_scale мало помогали. Больше всего на современную машину похоже второе изображение, потому что форме автомобиля присуща аэродинамика. Однако остальные остаются где-то на рассвете автомобильного производства.

0

То же самое происходит и с небоскрёбами («art in BILIBIN style, a skyscraper»). Видна многоуровневость, однако излишняя детализированность не коррелируется с современными постройками. Получившееся здания скорее похожи на средневековые замки или муравейники. На контрасте, избушка («art in BILIBIN style, a hut») выглядит достаточно удачно.

0

lora_scale = 0.2/0.5/1. lora_scale = 0.2/0.8

Далее я сгенерировала яблоки («art in BILIBIN style, an apple») и натюрморт («art in BILIBIN style, a still-life»). Возможно, стоит сделать вывод, что увеличение lora_scale приводит к огромному количеству узоров, что превращает картинку в кашу из деталей.

0

Затем были генерации профессий («art in BILIBIN style, a electric guitar player», «art in BILIBIN style, a waiter in a restaurant», «art in BILIBIN style, a bartender»). Сразу можно заметить, что, как и в случае с автомобилями, некоторые вещи были состарены. Например, гитара стала акустической, ресторан отсылает к Российской империи, а бармен вообще стал похож на травника или лекаря.

0

lora_scale = 0.2/0.5/0.8

Самой интересной стала генерация по промпту «art in BILIBIN style, a computer». Так как в примерах не было нарисовано ничего похожего, нейросеть сделала что-то напоминающее стол с кучей деталей вокруг. Есть моменты, напоминающие экраны и клавиатуры, однако они не спасают положение.

0

Далее пошла генерация нефизических понятий («art in BILIBIN style, love», «art in BILIBIN style, anger», «art in BILIBIN style, fear»). Любовь показывает влюблённую пару, что весьма логично, однако две другие картинки мало чем отличаются. Злость более наполнена тёмными оттенками, преобладает красный цвет, показано поле боя, но страх представляет из себя смесь людей и животных, без конкретной характеристики.

0

lora_scale = 0.2/0.5/0.8

Напоследок были сгенерированы портреты реальных людей. К сожалению, после нескольких попыток, опытным путём было выявлено, что только Райан Гослинг похож на самого себя, все остальные испытывали значительные проблемы в узнавании («art in BILIBIN style, a portrait of Ryan Gosling»).

Вывод

Обученная нейросеть способна весьма хорошо генерировать простые объекты, однако всё будет с отсылкой на Древнюю Русь. Так как в архиве с оригинальными изображениями не было никаких вспомогательных современных вещей, всё, так или иначе, трансформируется под старину. Изменения в lora_scale не всегда успешно работают, так что лучше придерживаться среднего показателя 0.5. Генерация реальных людей выборочна. В общем, обученная нейросеть придерживается основных стилевых особенностей Ивана Билибина, иногда перебарщивая с узорами. Цвета и текстуры сохраняются вне зависимости от качества полученного изображения.

Обучение генеративной нейросети под стиль Ивана Билибина
25
We use cookies to improve the operation of the HSE website and to enhance its usability. More detailed information on the use of cookies can be fou...
Show more