fbpx
  • CycleGAN: превращение текстур Fortnite в PUBG

    cyclegan
    Fortnite (слева) с ее примитивной анимацией и PUBG (права) с более реалистичными текстурами.

    Перед вами перевод статьи о применении CycleGAN для переноса стиля изображений и дальнейшего применения в компьютерных играх. Автор статьи — Чинтан Триведи, ссылка на оригинал в конце текста.

    Если вы геймер, то наверняка слышали о двух самых популярных играх в жанре Королевская битва (Battle Royale): Fortnite и Player Unknown BattleGround (PUBG). Это две очень похожие игры, вдохновленные фильмом Голодные игры, в которых 100 игроков сражаются на маленьком острове до тех пор, пока не останется один выживший.

    Мне нравится геймплей Fortnite, но я предпочитаю более реалистичные изображения PUBG. Это заставило меня задуматься, можно ли реализовать выбор визуальных эффектов в игре по своему вкусу, не полагаясь на разработчиков игр? Что, если можно было бы играть в Fortnite в оформлении из PUBG? Именно поэтому я решил разобраться, может ли глубокое обучение помочь в этом, и наткнулся на нейронные сети, называемые CycleGAN, которые очень хорошо умеют выполнять перенос стиля изображений. В этой статье я расскажу о том, как работают CycleGAN, а затем обучу их переносу стиля Fortnite в PUBG.

    Что такое CycleGAN?

    CycleGAN — это тип генеративно-состязательной сети, используемой для переноса стиля изображения. Код сети и реализацию на PyTorch смотрите на GitHub. CycleGAN можно обучить конвертировать изображения из одного домена (например, Fortnite) в другой, например, PUBG. Обучение выполняется без учителя, то есть не существует способа однозначного сопоставления изображений из обоих этих доменов.

    Примеры работы CycleGAN
    Примеры работы CycleGAN

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

    Как работает CycleGAN

    Давайте попробуем понять, как работают CycleGAN, используя Fortnite в качестве исходного домена и PUBG в качестве целевого. Используя множество скриншотов из обеих игр, мы будем обучать пару генеративно-состязательных сетей, одна из которых обучается визуальному стилю Fortnite, а другая — PUBG. Эти две сети обучаются одновременно и циклически, так что они учатся формировать соотношения между одними и теми же объектами в обеих играх и совершать соответствующие визуальные преобразования. На следующем рисунке показана общая архитектура циклической схемы обучения этих двух сетей.

    Цикл от «Real Fortnite» через «Fake PUBG» к «Reconstructed Fortnite».
    Цикл от «Real Fortnite» через «Fake PUBG» к «Reconstructed Fortnite»

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

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

    Схема генератора F2P, приведенного на предыдущем рисунке.
    Схема генератора F2P, приведенного на предыдущем рисунке.

    Используемая сеть генератора (F2P) состоит из трех основных сверточных блоков. Первый находит кодировку скриншота Fortnite в скрытом слое меньшей размерности. Эта кодировка преобразуется в другую, которая представляет PUBG в том же скрытом слое. Затем декодер создает выходное изображение из преобразованной кодировки, давая нам изображение Fortnite, которое выглядит как PUBG.

    Одно ограничение, с которым я столкнулся во время обучения, состояло в том, что я мог работать только с изображениями 256×256 из-за ограничений памяти GPU. Это существенно влияет на результаты, но если у вас больше, чем 8 ГБ видеопамяти, вы можете попытаться сгенерировать изображения с разрешением до 512×512. Если у вас получится, пожалуйста, сообщите мне!

    Результаты

    Сгенерированные CycleGAN изображения после 12 часов обучения выглядят крайне многообещающе. Сеть смогла успешно преобразовать цвета неба, деревьев и травы из Fortnite в цвета PUBG. Пересыщенные цвета Fortnite были преобразованы в более реалистичные цвета PUBG.

    cyclegan results

    Небо выглядит менее голубым, а нереалистичная зелень травы и деревьев гораздо ближе к тем, что можно увидеть в PUBG. Сеть даже научилась заменять индикатор здоровья внизу экрана на пистолет и индикатор патронов PUBG! То, что не получилось связать в обоих доменах — это внешний вид плеера, поэтому пиксели вокруг него выглядят размытыми. В целом, сеть проделала достойную работу по выявлению объектов в обоих доменах и преобразованию их внешнего вида.

    Еще больше результатов приведено в видео:

    Если вам понравилось, не забудьте нажать здесь и подписаться на мой канал на YouTube!

    Использование CycleGAN в играх

    Хотя результаты получились очень интересными, понятно, что придется проделать много работы, прежде чем я смогу по-настоящему играть в Fortnite с графикой PUBG. Но как только мы научимся генерировать изображения с более высоким разрешением в реальном времени, используя эти сети, станет возможным создавать движки графических стилей игр без необходимости полагаться на разработчиков игр. Мы могли бы выбирать визуальный стиль игры по своему вкусу и использовать его в любой другой игре!