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


Герой имеет свой оригинальный скин, который невозможно корректно описать для нейросети в простом промте. И тогда я решила попробовать обучить нейросеть генерировать этого героя, а также посмотреть, как будут выглядеть различные стилизации.
Обучение нейросети
Для начала я отобрала архив из изображений DrowRanger, куда входили различные виды скинов. Для меня было важно посмотреть, как нейросеть передает общий вид героя, какие элементы она запоминает и отображает лучше всего, а также на что стоит обратить внимание при дальнейшем обучении уже на других героях.
После этого происходило создание краткого описания для каждой из картинок-референсов. Этот шаг также предполагал создание уникального тега, по которому нейросеть будет понимать, какой конкретный стиль ожидается для использования. Я создала такой параметр:
«a picture of DRAWRANGER woman»
Далее шел финальный этап — обучение. Однако перед этим было важно задать верные директории, размер и параметр.
Всего я вязал 1000 шагов обучения, где промежуточный результат сохранялся на 500-м шаге. Я не стала уменьшать размер изображения, чтобы получить результат, который далее было бы можно улучить до наиболее рабочего состояния.
Сам процесс обучения нейросети занял около пяти часов.
Результат обучения
Для начала я решила посмотреть, как нейросеть будет справляться с генерацией персонажа по простому промту. Я не меняла влияние модели и не добавляла уточняющих подсказок.
Также я улучшила размер для изображений через AI Upscaler, чтобы получить более широкоформатные изображения. Это позволило избежать более длительного процесса обучения модели и получить хороший результат.


Как видно на получившихся изображениях, нейросеть хорошо уловила особенности героя — цвет кожи, цвет глаз и прически, а также общие тона и материал брони.
Для меня была важна вариативность в итоговых изображениях, так как я хотела научить нейросеть генерировать не один определенный скин, а общее представление о герое, что и получилось в результате смешения картинок из разных 3D моделей DrowRanger.
Также видно, что модель запомнила более тонкие отличительные особенности героя: рисунки на коже, прическа, окантовка на броне и черты лица. На первом изображении сохранилась форма повязки с прически, что невозможно было бы передать без обучения.
Далее я решила улучшить исходную генерацию. Я добавочный промт к указанному тегу, чтобы нейросеть лучше поняла, какой именно формат мне требуется. Также я уменьшила влияние модели до 70 процентов, чтобы нейросеть могла выдать более реалистичный результат.
Также для повышения привлекательности и детализации я улучшила качество через AI Upscaler.
Как видно на изображении, нейросеть отлично запомнила детали капюшона, ремней и общие формы брони, которые стали смесью между скином-арканой и простым улучшением героя.
Однако из-за уменьшения влияния модели герой потерял внешние особенности — пропал цвет волос и необходимый оттенок кожи.
Но несмотря на это, результат подтолкнул меня на идею о промте с «очеловечиванием героя». Мне стало интересно, как нейросеть сможет перенести черты героя на более человеческий облик девушки.
Для этого я вдвое уменьшила влияние модели и написала следующий промт:


Реалистичность заметно ухудшила узнаваемость героя. Сохранились элементы фэнтези, цвет волос, общее выражение лица героя и прическа с одного из скинов, но целостного представления о персонаже это, к сожалению, не дает.
Однако, это все равно довольно интересный результат и возможность по-другому посмотреть на дизайн героя.
Далее мне захотелось посмотреть, как нейросеть сможет изменить эмоцию персонажа. В игре и в 3D моделях DrowRanger представлена как серьезная героиня и не часто ассоциировалась с чем-то милым. Поэтому я попросила нейросеть сделать более женственные и милые версии с сохранением элементов от изначального персонажа.


Данная версия генерации сохранила в себе шрамы на лице героини, а также общую форму прически и амулеты. Также данные изображения были сгенерированы с фиолетовым цветом глаз (наиболее частым среди референсов), а черты лица напоминают черты с 3D модели.
Итог
При отсутствии дополнительных параметров нейросеть хорошо запоминает и передает элементы персонажа — рисунок брони, прическа, узоры на коже и прочие вариации в дизайне. Однако для более качественного результата необходимо расширить базу для обучения, чтобы обучить модель создавать изображения, почти неотличимые от оригинального облика героя.
Ссылка на Kaggle с исходным кодом: https://www.kaggle.com/code/evgexa/drowranger
Ссылка на код в GoogleCollab: https://drive.google.com/file/d/1EN5HXW79ICdWJKkypoZYlLE9BXueh1Uc/view?usp=sharing
Ссылка на диск с блокнотом: https://drive.google.com/drive/folders/19mP2tWi4ic1DKYbGmRQkc3tDgJsiVdq9?usp=sharing
Ссылка на ИИ по улучшению качества: https://imgupscaler.com/