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

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

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

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

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

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

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

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

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

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

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

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

Полученные результаты

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

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

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

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