Как использовать нейросети в работе над UI: опыт художницы из Playkot

Татьяна Миронова, 2D-художница компании Playkot, поделилась опытом использования Midjourney и Stable Diffusion при работе над иконками для проекта Spring Valley.

Spring Valley

Татьяна Миронова

Все началось с вопроса на уровне компании: как тратить меньше времени на текущие задачи и при этом не просесть в качестве. Многие из нас до этого уже исследовали нейросети на чистом энтузиазме, но чтобы понять, можем ли мы встроить AI в процессы, нужен был более системный подход. Сейчас почти все команды в Playkot пробуют использовать нейросети для своих задач, мы делимся друг с другом опытом в тематическом чате в Slack, и когда у кого-то возникают мини-прорывы, подхватываем хорошие решения. Расскажу, что мы попробовали в нашей UI-команде на проекте Spring Valley.

Midjourney: искали золото, а нашли медь

Я начала активно исследовать нейросети в начале этого года. Три-четыре дня ушло просто на изучение инструментов: какие есть технологии и подходы, как разобраться с технической стороной вопроса.

Сначала попробовала Midjourney как самый доступный вариант — у нас уже был корпоративный аккаунт для экспериментов. Довольно быстро я поняла, что сэкономить время на создании иконок она нам не поможет: в четвёртой версии, которую я тогда тестировала, качество картинки оставляло желать лучшего. В свежей пятой версии качество стало намного лучше, но для наших задач результаты все равно требуют серьёзных правок. Самый большой камень преткновения — нейросеть не попадает в нужный стиль. Грубо говоря, в Midjourney загружен весь интернет, поэтому она выдает очень непредсказуемые результаты, а обучить ее под свою стилистику нельзя.

Тем не менее, оказалось, что Midjourney — неплохой вспомогательный инструмент для генерации отдельных элементов или для концептов. Если нужно передать идею, найти для нее какую-то форму — с этим она справляется.

Например, мне нужно было сделать украшение, камею. Я потратила время на генерации и поняла, что ни одна из них мне не подходит — проще построить все в 3D. Но сами портреты на камеях выглядели достойно: особо не выбивались из стилистики, никаких двух носов или кривых ртов, почему бы их не использовать?

В 3D-программах есть возможность использовать инструмент под названием displacement map — он добавляет на объект высоты, где изображение светлое, и впадины — где темное. Я быстро вырезала в Photoshop камею из Midjourney, наложила на нее собственный материал, и мне не пришлось отрисовывать вручную портрет. На иконку было потрачено столько же времени, сколько я и планировала, но в результате изображение камеи получилось интересным, более натуральным.

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

Stable Diffusion: гипотеза, которая подтвердилась

Дальше я начала эксперименты со Stable Diffusion. Она позволяет взять уже созданную модель за основу, добавить свои изображения и обучить на этом массиве данных — он называется датасетом. У нас на проекте к этому времени уже накопилось много хороших иконок в нужном стиле, которые можно было использовать для датасетов.

В Stable Diffusion есть несколько способов обучения: через Dreambooth extension, Hypernetwork, LoRA. Была задумка проверить каждый из них и посмотреть, что из этого будет работать. LoRA мы отмели сразу — он лучше подходит для лиц и портретов. Зато хорошо сработал Dreambooth extension.

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

Однажды, помню, я поставила нейросетку обучаться и легла поспать. Думаю, заведу себе будильник, встану и проверю, что получилось. Просыпаюсь в три часа ночи, а она мне сгенерировала нормальный такой букет тюльпанов. Я такая: «О-о-о! Ну наконец-то, хоть какой-то результат!».

Эти три картинки с тюльпанами доказали, что игра стоит свеч:

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

Параллельно мы перебирали разные лайфхаки от других AI-энтузиастов: пересмотрели огромное количество туториалов, искали другие подходящие модели, но в итоге нашли другое решение: сервис на базе Stable Diffusion, который специализируется на игровых ассетах — Scenario.gg. Сервера с более высокими техническими возможностями решили нашу проблему с мощностями, а еще обнаружился приятный бонус: в Stable Diffusion у неподготовленного пользователя, который раньше не погружался в вопросы машинного обучения, с непривычки глаза на лоб лезут, а на сайте интерфейс интуитивно понятен и уже заточен под наши запросы. Можно выбрать, хочешь ли ты обучить нейросеть концепт-арту, иллюстрации или генерации пропсов.

Что у нас получилось

На чужих серверах процесс пошел быстрее, мы наконец стали получать более стабильные результаты. Лучше всего зашел метод image-to-image, когда ты загружаешь исходную картинку, а нейросеть ее обрабатывает под стилистику, на которой модель обучили. Расскажу на примере конкретных задач, где нейросеть нам помогла.

Как ни странно, самые сложные в производстве иконки — это всякого рода органика: растения, фрукты-овощи, еда, цветы. Казалось бы, ну цветочки и цветочки, что там рисовать? Но на построение органических форм уходит много времени. И как раз здесь нейросеть отлично справилась.

Для одной из моих задач нужно было нарисовать свадебный букет. Я до этого уже собрала датасет из наших иконок с цветами:

С помощью метода image-to-image закинула нейросетке букетик-референс, чтобы она его проанализировала, обработала и совместила с нашим стилем:

Поставила максимальное количество генераций — 16 за один раз. Пока я занималась другой задачей, она сгенерировала мне огромное количество вариантов. Часть из них оказалась неплохой: устраивала и по форме и массам, и по цветам, и по рендеру. Это лучшие результаты, которые я отобрала:

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

Цель выполнена — на этой задаче я сэкономила почти 50% времени. Вручную я бы рисовала такой букет часов восемь-десять, а с нейросетью можно минут за 30-40 нагенерировать иконок, отобрать лучшие, внести минимальные правки и уложиться примерно в четыре часа, если не учитывать еще час на составление датасета.

Или вот цветочная корона, очень срочная задача, с которой я справилась за четыре часа — генерировала варианты в нейронке, пока занималась другой задачей:

Дисклеймер: это не будет так хорошо работать для любых объектов. Во-первых, огромный плюс — что у нас собрался хороший датасет из собственных иконок с цветами, разнообразных, с хорошим рендером и формами, в едином стиле. А во-вторых, в базовую модель Stable Diffusion, скорее всего, уже залито огромное количество цветов. Грубо говоря, в этом букете мы совместили все самое лучшее.

Еда — еще одна удачная тема для Stable Diffusion. Возьмем задачу с иконкой бургера. Сначала я задала параметры промптом, и результаты были максимально странные — посмотрите на тарелки с кукурузой на скриншоте:

Но метод image-to-image сработал хорошо: я нашла подходящую фотографию, быстро обработала ее, и нейросеть совместила референс со стилистикой:

Я отобрала наиболее удачные результаты генерации. Понятное дело, видно, что и котлеты здесь очень странные, и кунжутных зерен слишком много. Да и запрос от гейм-дизайнеров был на вегетарианский бургер — у нас в Spring Valley, такая концепция, что мы не убиваем животных, по-настоящему не ловим рыбу и мяса не едим. Я правила все это и делала иконку менее «шумной» вручную, но часа полтора-два времени все равно сэкономила. В игру пошел такой финальный вариант:

Еще один удачный пример — апельсиновый кекс. Такой датасет я сделала на основе наших иконок с выпечкой:

Такие результаты получила от модели:

Такой кекс после правок пойдёт в игру:

Связка «Stable Diffusion + удобный сервис с мощными серверами + метод image-to-image» сэкономит UI-команде массу времени, если заранее подготовить почву: тщательно собрать датасеты и потратить время на обучение. Представим, например, что мне заказали иконку с гроздью бананов. У нас уже есть приличный датасет — на проекте много фруктовых иконок. По правильному референсу нейросеть выдает мне отличный подмалевок: здесь и по цветам хорошее попадание, есть и текстуры, и неровности, и даже верхушка у банана зеленая… Есть что править, но это займет не так много времени.

Единственная проблема — возникает вопрос авторских прав. Если ты используешь как референс узнаваемую стоковую композицию, нужно очень тщательно перепроверять, позволяет ли лицензия использовать это изображение, искать варианты с бесплатной лицензией Creative Commons.

Эти вишни тоже хорошо попали в нашу стилистику, правки здесь были бы минимальные. Но легко увидеть, что они сделаны из стоковой фотографии — тут почти один в один. Что в этом случае делать художнику? Коллажировать, видоизменять, смотреть, какие элементы можно убрать, перевоплощать это, чтобы получить другой результат, и на это тоже нужно дополнительное время.

Легальная сторона вопроса — это в принципе большой и мало изученный пласт. Например, все работы, которые сгенерированы в нейросетях, особенно в полностью открытой для любого зрителя Midjourney, — все эти вещи не являются объектом авторского права. Грубо говоря, с точки зрения закона я могу сейчас зайти в Midjourney и любую генерацию напечатать на футболках для продажи или засунуть ее в игру. А кто-то поймет, где это сгенерировано, найдет ее по ключевым словам и ту же самую иллюстрацию засунет в свою игру, и кто будет прав? Сложно предсказать, как в этой сфере будут развиваться события, и это еще один потенциальный риск.

Что получается хуже

Чем дальше мы отходим от органических форм, тем хуже результаты. Stable Diffusion сложно научить правильно строить прямые формы и линии, поэтому мне пока не удалось добиться приличных результатов для всех предметов, которые требуют четкого построения.

Каждый из нас тысячу раз видел, как выглядит бутылка, и любое искажение человеческий глаз замечает моментально. Тем более, на иконке, где один объект вписан в квадрат, — если бутылка будет кривой, каждый заметит, что она кривая.

На скриншоте ниже я фиолетовыми галочками отметила то, что могла бы использовать в работе, но это всего три картинки из всей массы генераций. Растут шансы, что потратишь время зря и ничего не получится, потому что все равно результат придется выправлять шейпами в Photoshop. Будет проще нарисовать эту бутылку теми же шейпами или смоделировать в 3D по привычному пайплайну.

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

Еще одна сложность — объяснить нейросети, что именно она видит и как это работает. Существуют разные способы обучения, но наиболее практичный — это когда она анализирует загруженные картинки и создает текстовое описание для каждой. Человек, который ее обучает, может залезть в этот текстовый файл и проверить описание. Иногда она допускает ошибки или совсем не понимает, что видит. Например, написано: “A green bottle with a wooden cork and liquid inside”, а бутылка на самом деле прозрачная. Если такое пропустить, то каждый раз, когда ты будешь просить у нее зеленую бутылку, она тебе будет выдавать прозрачные, хоть ты тресни. Можно проверить каждое описание вручную, но если у тебя сотня таких картинок? Цена тонкой настройки очень высока.

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

Как составить правильный датасет для иконок и начать жить

Делюсь уроками, которые мы выучили в процессе экспериментов:

  1. Не скармливайте нейросетке изображения с полупрозрачностью, иначе она заполнит эти места чудовищными артефактами, а на генерациях полупрозрачного фона все равно не будет.
  2. Обучайте нейросеть на объектах с нейтральным белым фоном — больше шансов, что потом не придется мучительно вырезать объекты в Photoshop и думать, что быстрее было бы накидать все вручную шейпами в векторе.
  3. Найдите баланс между слишком маленьким датасетом и слишком большим. По моему опыту, все, что обучалось на минимальных сетах в 7-8 изображений, выходило плохо. На больших разномастных датасетах результаты тоже становятся ощутимо хуже.
  4. Для генерации иконок лучше разбивать датасеты по сущностям. То есть бутылки отдельно, фрукты отдельно, ключи отдельно.
  5. Когда обучаете нейросеть, по возможности проверяйте текстовые описания — правильно ли она распознала, что изображено в вашем датасете.

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

Мы пока не масштабировали эти подходы на всю команду, это на 100% не вошло в процессы, — есть ощущение, что рано этим заниматься, пока мы не изучили все возможности. Но думаю, что нейросети позволят художникам делать в некотором смысле более комплексные вещи.

Когда я планирую задачу, я прикидываю, что могу сделать за предложенный срок. Тут как в меме с двумя ковбоями, где один из них менеджер, а другой дизайнер. «Сколько вы потратите на эту задачу?» – «А сколько мне надо потратить на эту задачу?». За то же количество времени мы сможем делать более сложные вещи. И это большой плюс.

Комментарии
Добавить комментарий
Новости по теме