Использование оценки позы и условных состязательных сетей для создания и визуализации новых танцев Fortnite.

Если вы знаете об игре Fortnite, то наверняка знаете и о ажиотаже вокруг внутриигровых праздников/эмоций/танцев. Геймеры потратили миллионы долларов, покупая танцевальные движения с покупками в приложении, делая что-то настолько простое и глупое, как это, большим источником дохода для разработчика игр. Это навело меня на мысль, что если разработчик разрешит пользователям создавать эти танцы в игре и взимать за это дополнительную плату, они, вероятно, смогут заработать больше денег. Что касается пользователей, было бы очень здорово, если бы мы могли записывать себя на веб-камеру и создавать свой собственный праздничный танец в игре.

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

Переход от веб-камеры к Fortnite

Чтобы попробовать это, я использовал две техники глубокого обучения в этом проекте. Во-первых, мы будем использовать алгоритм оценки позы, чтобы извлечь фигурное представление (позу) из нашей записи с веб-камеры. Для разработчика игр этого представления позы достаточно, чтобы анимировать персонажа в игре, но, поскольку я не разработчик, мне нужно будет просто визуализировать, как будет выглядеть танец Fortnite, созданный с использованием этой позы. Для этой цели я использовал условные состязательные сети под названием pix2pix, чтобы сгенерировать персонажа в заданной позе.

Оценка позы с веб-камеры

Для оценки позы входного изображения я использовал алгоритм из статьи Оценка позы нескольких человек в режиме 2D с использованием полей схожести частей, автор Cao et al. [CVPR 17]. Алгоритм использует сверточные нейронные сети в нескольких масштабах для идентификации различных частей тела, таких как левая рука, правая рука, туловище и т. д. Эти обнаруженные части представляют собой единый узел.

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

Синтез изображений из позы

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

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

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

Результаты

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

Больше таких результатов можно найти на моем YouTube канале и во встроенном видео ниже. Если вам понравилось, не стесняйтесь подписаться на мой канал, чтобы следить за моими работами.

Код, используемый для оценки позы, можно найти здесь, а код, используемый для синтеза изображения, можно найти здесь.

Спасибо за чтение! Если вам понравилась эта статья, подписывайтесь на меня в Medium, GitHub или на мой YouTube-канал.

Примечание.Это репост статьи, первоначально опубликованной в направлении datascience в 2018 году.