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

cyclegan

Перед вами перевод статьи о применении 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. Но как только мы научимся генерировать изображения с более высоким разрешением в реальном времени, используя эти сети, станет возможным создавать движки графических стилей игр без необходимости полагаться на разработчиков игр. Мы могли бы выбирать визуальный стиль игры по своему вкусу и использовать его в любой другой игре!

Обучение Inception-v3 распознаванию собственных изображений

В моем предыдущем посте мы увидели, как выполнять распознавание изображений с помощью TensorFlow с использованием API Python на CPU без какого-либо обучения. Мы использовали предобученную модель Inception-v3, которую Google уже обучил на тысяче классов, но что, если мы хотим сделать то же самое, но…
туториал распознавание изображений tensorflow

Распознавание изображений предобученной моделью Inception-v3 c Python API на CPU

Это самый быстрый и простой способ реализовать распознавание изображений на ноутбуке или стационарном ПК без какого-либо графического процессора, потому что это можно сделать лишь с помощью API, и ваш компьютер отлично справится с этой задачей. Перед вами перевод статьи TensorFlow Image Recognition Python API Tutorial,…
выбор признаков нейронной сети питон

Open source инструмент на Python для выбора признаков нейронной сети

Поиск и выбор наиболее полезных признаков в датасете — одна из наиболее важных частей машинного обучения. Ненужные признаки уменьшают скорость обучения, ухудшают возможности интерпретации результатов и, что самое важное, уменьшают производительность работы.  Перевод статьи «A Feature Selection Tool for Machine Learning in Python» by William…
u-net

U-Net: нейросеть для сегментации изображений

U-Net считается одной из стандартных архитектур CNN для задач сегментации изображений, когда нужно не только определить класс изображения целиком, но и сегментировать его области по классу, т. е. создать маску, которая будет разделять изображение на несколько классов. Архитектура состоит из стягивающего пути для захвата…
kaggle competition

Как попасть в топ 2% соревнования Kaggle

Статья основана на реальном опыте участия в соревнованиях на Kaggle, автор — Abhay Pawar. Ссылка на оригинал в подвале статьи.  Участвовать в соревнованиях Kaggle весело и захватывающе! За последние пару лет я разработал несколько простых способов создания более совершенных моделей машинного обучения. Эти простые, но…
transfer-learning-keras

Реализация Transfer learning с библиотекой Keras

Для большинства задач компьютерного зрения не существует больших датасетов (около 50 000 изображений). Даже при экстремальных стратегиях аугментации данных трудно добиться высокой точности. Обучение таких сетей с миллионами параметров обычно имеет тенденцию перегружать модель. В этом случае Transfer learning готов прийти на помощь. Что…

Датасеты для отслеживания объектов на видео

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

Новые датасеты для оценки позы в 3D

Оценка позы в 3D — фундаментальная задача компьютерного зрения. Способность компьютера распознавать людей на изображениях и видео применяется в беспилотном вождении, распознавании действий, взаимодействии человека с компьютером, дополненной реальности и робототехнике. В последние годы ученые добились прогресса в оценке позы в 2D. Важный фактор успеха —…

Новый метод переноса движений из видео на виртуального персонажа

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

Новые датасеты для распознавания объектов в 3D

Робототехника, дополненная реальность, беспилотное вождение — все эти области основаны на распознавании 3D-свойств объектов по 2D-изображениям. Как следствие, трехмерное распознавание объектов стало одной из центральных задач компьютерного зрения. Заметный прогресс в этой области был достигнут после создания нескольких датасетов с 3D-метками к двумерным объектам…

AlexNet — свёрточная нейронная сеть для классификации изображений

AlexNet — сверточная нейронная сеть, которая оказала большое влияние на развитие машинного обучения, в особенности — на алгоритмы компьютерного зрения. Сеть с большим отрывом выиграла конкурс по распознаванию изображений ImageNet LSVRC-2012 в 2012 году (с количеством ошибок 15,3% против 26,2% у второго места). Архитектура AlexNet…

The Sound Of Pixels: новый метод локализации и разделения звуков на видео

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

BrainNet — интерфейс «мозг-мозг» для прямого взаимодействия людей

Большинство исследований, связанных с коммуникационными интерфейсами мозга, сосредоточены на интерфейсах «мозг-компьютер». Меньше результатов получено в области соединения двух или нескольких мозгов. Недавно ученые представили новый метод, который позволяет трем людям сотрудничать для решения задачи, используя прямую связь «мозг-мозг». Взаимодействие «мозг-мозг» Несколько лет назад было проведено исследование…
action recognition datasets

Новые датасеты для задачи распознавания действий на видео

Распознавание действий крайне важно для задач видеонаблюдения, здравоохранения и взаимодействия человека с компьютером. Но как классифицировать видео по действиям, выполняемым на них? Классифицировать видео, на которых выполняется только одно действие, не так сложно. Задача схожа с проблемой классификации изображений. Но в данном случае она распространяется…
Selfie Matching DocFace+ DWI

Selfie ID: подтверждение личности с помощью глубокого обучения

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

Датасеты для распознавания лиц в сложных условиях — в масках, очках, с макияжем

Распознавание лиц — рядовая задача глубокого обучения, и сверточные нейронные сети справляются с ней довольно хорошо. Facebook обычно правильно распознает вас и ваших друзей на фотографиях. Но является ли данная задача решенной? Что делать, если изображение сбивает с толку? Что, если человек выдает себя…
keras нейронаня сеть на python

Туториал: создание нейросети для анализа настроений в комментариях c Keras

Keras — популярная библиотека глубокого обучения, которая внесла большой вклад в коммерциализацию глубокого обучения. Библиотека Keras проста в использовании и позволяет создавать нейронные сети с помощью лишь нескольких строк кода Python. Из статьи вы узнаете, как с помощью Keras создать нейронную сеть, предсказывающую оценку…
как создать чат бота на python

Как создать чат-бота с нуля на Python: подробная инструкция

Аналитики Gartner утверждают, что к 2020 году 85% взаимодействий клиентов с сервисами сведется к общению с чат-ботами. В 2018 году они уже обрабатывают около 30% операций. В этой статье мы расскажем, как создать своего чат-бота на Python. Возможно, вы слышали о Duolingo: популярном приложении для изучения иностранных языков, в…
глубокое обучение

Глубокое обучение (Deep Learning): краткий туториал

Первым шагом к пониманию того, как работает глубокое обучение, является понимание различий между несколькими важными терминами. Нейронная сеть (искусственная нейронная сеть) — это попытка воспроизведения работы человеческого мозга на компьютере при помощи слоев нейронов. Искусственный интеллект — способность машины или программы находить решения при помощи…
Глубокое обучение с Tensorflow

TensorFlow туториал. Часть 4: глубокое обучение

Теперь, когда вы изучили и подготовили свои данные, пришло время создать архитектуру нейронной сети с помощью пакета TensorFlow! Предыдущие статьи: TensorFlow туториал. Часть 1: тензоры и векторы TensorFlow туториал. Часть 2: установка и начальная настройка TensorFlow туториал. Часть 3: работа с данными Моделирование нейронной…