Исследователи из Института интеллектуальных систем Макса Планка и ETH Zurich предложили очень элегантный способ создания правдоподобных людей на заданной трехмерной сцене. Давайте обсудим, почему это актуально, и углубимся в детали.

Текущая конъюнктура

Промышленность и научные круги способствуют цифровизации реальной среды. В то время как Apple (и другие производители смартфонов / планшетов) представляют новые устройства с датчиками глубины и LiDAR (см. Демо здесь), исследователи со всего мира изо всех сил пытаются найти новые способы использования нового типа данных. Эти данные в основном состоят из 3D-сканирований общедоступных жилых и ванных комнат, офисов и столовых с довольно хорошим уровнем детализации. Есть множество треков задач, которые работают с такими данными, например семантическая и инстанционная сегментация мебели, как это было сделано в бумаге OccuSeg, или частичное завершение мебели, как это было сделано в бумаге моей научной группы Частичное понимание RGB-D сканирований.
Эти (и многие другие) задачи имеют решающее значение для создания интеллектуальных помощников, которые могут помочь людям с деменцией, пожилым людям или инвалидам жить полноценно в своих собственных домах.
Мы знаем, что в реальных помещениях могут быть люди, но в большинстве существующих наборов данных их нет. Авторы статьи PLACE (PLACE: Proximity Learning of Articulation and Contact in 3D) обращаются к этому значительному ограничению существующих трехмерных сред виртуальной реальности, таких как Habitat. Они предлагают метод, который генерирует человеческие сетки в трехмерных средах.

Архитектура

Давайте подробнее рассмотрим компоненты метода.

Набор базовых точек

PLACE поддерживает идею базисных точек, предложенную в этой статье ICCV 2019.

Они кодируют необработанные облака точек тела с расстояниями до фиксированных базовых точек, установленных в пространстве, затем используют кодирование для вывода сетки всего тела с высоким разрешением из SMPL-X с использованием простого MLP. Фиксированные базовые точки означают, что для каждого разного облака точек входного тела мы будем вычислять расстояния до одинаковых точек в пространстве. В исходной статье количество фиксированных точек было 1024, а в статье PLACE это число увеличивается до 10k. Как видно из слайда, такую ​​кодировку можно создать, не зная, в какой сцене находится человек.
Но авторы идут дальше и дают нам метод создания представления взаимодействия человека и сцены.

Имея сетку сцены (трехмерную среду) и сетку человеческого тела, можно иметь базовые точки на вершинах сцены. Отсюда выводятся два определения: сцена BPS - фиксированные базовые точки, установленные на сцене, и функции BPS - расстояния от базовых точек до вершин сетки человеческого тела. . На этом видео вы можете увидеть, что фиксированный набор точек в окружающей среде и разные тела на самом деле имеют разный набор расстояний, из-за того, что разные позы имеют разные особенности BPS.

Генератор человеческой сетки на основе расстояния

Чтобы создать генератор, который будет производить правдоподобные человеческие тела, авторы предлагают следующий конвейер. Учитывая сцену и человеческие сетки, они вычисляют характеристики (расстояния) BPS и обучают вариационный автоэнкодер (VAE) для восстановления таких расстояний. С этого момента реконструированные элементы тела поступают в MLP для регрессии в вершины всего тела. MLP выводит две вещи: глобальное трехмерное преобразование для всех вершин тела и промежуточных реконструированных вершин, их сумма дает реконструированные вершины тела. И исходным источником данных, используемым для всех тренингов в этой статье, является набор данных PROX.

Во время теста можно выбрать случайные векторы из распределения Гаусса и передать их в декодер VAE. Это дает нам конвейер генерации человеческих сеток.

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

Краткое введение в вариационные автоэнкодеры

В этой работе VAE используются для реконструкции человеческих сетей и, как мы увидим позже, для представления окружающей среды. Чтобы быть на одной странице, давайте быстро обсудим, как работает VAE.

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

Можно использовать автокодеры в качестве генератора новых выборок данных, аналогичных обучающим данным. Но декодеры обычных автоэнкодеров производят достоверные данные только из скрытых векторов, которые присутствовали во время обучения. Чтобы преодолеть такие ограничения, мы можем использовать вариационные автокодировщики или VAE.

Взгляните на картинку из этого поста. В середине сети мы видим μ, σ и Образец. Основное различие между двумя моделями состоит в том, что в то время как ванильный AE для каждого входа производит одно скрытое представление длиной 30 например, VAE создает два вектора параметров нормального распределения (mu и sigma). Точное скрытое представление части ввода будет реализацией 30 случайных величин, полученных на слое Sample.

Это делает наше отклонение кодирования устойчивым, потому что в этом случае декодер обучается предсказывать один и тот же результат не только для одного вектора, но и для набора близких точек (распределенных вокруг μ с отклонением σ ) в скрытом пространстве. Все это тренируется с двумя потерями: реконструкция и расхождение KL. Последний в этом случае используется, чтобы заставить все параметры μ, σ меньше отклоняться от стандартного нормального отклонения (имеется в виду с параметрами 0, I). Вы можете узнать больше о том, как эти убытки взвешиваются вместе здесь.

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

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

Базовые точки закрепляются на стенах и потолке кубической клетки в 3D пространстве. Тот же набор базовых точек используется для любого кадра входной сцены из набора данных PROX. Этот подход помогает изучить как контекст вокруг человеческой сетки, так и особенности самого тела. Человеческий автоэнкодер становится условным VAE, потому что он обусловлен скрытым вектором сцены. На практике это кондиционирование может быть достигнуто путем конкатенации скрытых векторов из двух сетей перед их передачей в декодер человеческого генератора.

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

Исследователи предлагают кодировать сцену не только расстояниями, но и абсолютными (x, y, z) координатами поверхности сетки. Другой VAE, ответственный за такое кодирование, и его скрытый вектор передаются в регрессионный MLP в конце конвейера.

Оптимизация на основе взаимодействия

Последний шаг всего метода PLACE - это оптимизация на основе взаимодействия.

Они вносят комплексные потери в параметр тета формы тела. Эта потеря помогает преодолеть, с одной стороны, взаимопроникновения (как в третьем столбце справа), с другой стороны, вынуждает сеть создавать более естественные позы тела (см. Первый столбец).

Оценка результатов

Для оценки качества результатов авторы привлекают оценщиков. Они написали инструмент, с помощью которого пользователь может сравнить две разные человеческие сетки и решить, какая из моделей «лучше».

Это приводит к следующим результатам

На этапе оценки около 70% пользователей сочли предложенную модель лучше предыдущей, чем модель PSI (от тех же авторов) на двух наборах данных. И очень обнадеживает и интересно то, что 48,5% пользователей считают созданных людей более правдоподобными, чем сама истина. Также можно заметить, что результаты доступны только для PROX, а модель обучалась на PROX.

Покажи мне код!

Эта статья демонстрирует нам прекрасные результаты в области создания формы человеческого тела в 3D. Результаты могут быть полезны для исследователей и разработчиков, которые работают с 3D-моделями в помещении. Может быть, в ближайшем будущем мы увидим аналогичные подходы, используемые в технологиях виртуальной помощи или компьютерных играх, кто знает. Но вы можете воспроизвести результаты сегодня, потому что кодовую базу своих экспериментов авторы предоставили на github.

использованная литература

[1] МЕСТО: Близкое обучение артикуляции и контакту в трехмерной среде https://arxiv.org/abs/2012.12877

[2] Интуитивное понимание вариационных автоэнкодеров https://medium.com/r?url=https%3A%2F%2Ftowardsdatascience.com%2Fintuitively-understanding-variational-autoencoders-1bfe67eb5daf