$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Первым требованием к предлагаемому методу является система точного отслеживания положения 3D-объектов и рук. Конкретная настройка показана на рисунке 1A и использует аппаратное и программное обеспечение, разработанное компанией Qualisys, занимающейся захватом движения. Мы располагаем верстак в объеме слежения (100 см x 100 см x 100 см), который снимается с разных ракурсов восемью камерами слежения и шестью видеокамерами, расположенными на кубической рамке, окружающей рабочее пространство. Камеры слежения отслеживают 3D-положение светоотражающих маркеров в объеме слежения со скоростью 180 кадров в секунду и с субмиллиметровым 3D-пространственным разрешением. Мы используем светоотражающие маркеры толщиной 4 мм, которые прикрепляются к предметам и рукам с помощью удобной для кожи двусторонней клейкой ленты. Положение 3D-маркеров обрабатывается программным обеспечением для захвата движения. В дискуссионном разделе также рассматриваются альтернативные системы захвата движения, которые могут быть использованы с предлагаемым методом.
Чтобы получить точные 3D-реконструкции реальных объектов, которые захватываются и манипулируются, мы предлагаем два варианта. Первый, который принят здесь, заключается в том, чтобы начать с виртуальной 3D-объектной модели в виде полигональной сетки. Такие 3D-модели могут быть построены с использованием соответствующего программного обеспечения (например, Blender 3D44), а затем напечатаны на 3D-принтере (рис. 1B). Второй вариант заключается в том, чтобы взять существующий, реальный 3D-объект и использовать технологию 3D-сканирования для создания реплики сетчатой модели объекта. Какой бы ни была стратегия, конечная цель состоит в том, чтобы получить как реальный 3D-объект, так и соответствующую виртуальную модель сетки 3D-объекта. Следует отметить, что описанный здесь подход работает только с жесткими (т.е. недеформируемыми) объектами.
После того, как 3D-поверхность объекта доступна в виде сетчатой модели, ее положение должно быть отслежено и совместно зарегистрировано (рис. 1C). Для этого к поверхности реального объекта прикрепляются четыре неплоских светоотражающих маркера, и объект помещается в объем слежения. Затем кратко фиксируются 3D-положения маркеров объектов. Этот захват используется для установления соответствия между четырьмя маркерами и четырьмя вершинами модели сетки объекта. Это делается с помощью простого специального программного маршрута, написанного в API Python Blender. В Blender's Viewport программа представляет виртуальный объект вместе с позициями маркеров, которые представлены в виде единого сетчатого объекта, состоящего из одной сферы для каждого маркера. Затем пользователь может поворачивать и переводить объект и/или маркеры, чтобы выровнять их таким образом, чтобы они совпали с реальными маркерами, размещенными на реальном объекте. Программа зарегистрирует вращения и перемещение, которые применяются для вычисления одного ротационного перемещения, которое, наконец, применяется к исходной сетке объекта, обеспечивая сетку объекта, которая регистрируется совместно с определением твердого тела в QTM.
Установив соответствие, всякий раз, когда реальный объект перемещается в пределах отслеживаемого объема, виртуальный объект может быть помещен в новое положение, вычислив ротационное перемещение между отслеживаемыми маркерами и четырьмя соответствующими вершинами сетки. Вместо этого для записи динамики захвата в общей сложности 24 сферических светоотражающих маркера прикреплены к различным ориентирам руки с помощью двустороннего скотча (рис. 1D и рис. 2).
В начале испытания (рис. 1E) участник кладет руку на верстак ладонью вниз и закрывает глаза. Экспериментатор помещает целевой объект на верстак перед участником. Затем звуковой сигнал сигнализирует участнику, чтобы он открыл глаза и выполнил захват. В наших демонстрациях задача состоит в том, чтобы дотянуться и схватить целевой объект, поднять его вертикально примерно на 10 см, опустить и вернуть руку в исходное положение. Эксперимент управляется сценарием, написанным на Python 3.7. В каждом испытании сценарий выбирает и сообщает экспериментатору текущие настройки условий (например, идентификацию и позиционирование объекта). Сценарий также управляет временем пробного периода, включая слуховые сигналы, а также начало и остановку записи захвата движения.
Конечности характеризуются не только их положением в 3D-пространстве, но и их позой. Таким образом, чтобы получить полную 3D-реконструкцию человеческой руки, выполняющей реальный захват, нам требуются не только положения каждого сустава в 3D-пространстве, но и относительное положение (перемещение и вращение) каждого сустава по отношению к его родительскому суставу (рис. 1F). Положение и ориентация скелетных суставов могут быть выведены из положения маркеров с использованием обратной кинематики. Для этого здесь мы используем решатель скелетов, предоставляемый программным обеспечением QTM. Чтобы решатель работал, мы должны сначала предоставить определение скелета, которое связывает положение и ориентацию каждого сустава с несколькими позициями маркеров. Таким образом, строится определение скелета, и скелетная установка связывается с данными маркера с помощью плагина QTM Connect для Maya. Мы создаем персонализированные определения скелета для каждого участника, чтобы максимально точно скелет соответствовал данным маркера. Для каждого участника мы вручную подгоняем скелет руки к одному кадру данных захвата движения. Получив определение скелета для конкретного участника, мы затем запускаем решатель скелета, чтобы оценить позы скелетных суставов для каждого кадра каждого испытания в эксперименте.
Для каждого кадра каждого испытания в эксперименте мы генерируем ручную сетку, которая реконструирует текущую позу руки с помощью предварительно обученного инструмента генерации ручной сетки с открытым исходным кодом DeepHandMesh28 (рис. 1G). DeepHandMesh — это глубокая сеть кодировщиков-декодеров, которая генерирует персонализированные ручные сетки из изображений. Во-первых, кодировщик оценивает положение руки на изображении (т. е. суставные углы Эйлера). Затем предполагаемая поза руки и персонализированный вектор идентификатора вводятся в декодер, который оценивает набор из трех аддитивных корректирующих элементов для сфальсифицированной сетки шаблона. Наконец, сетка шаблона деформируется в соответствии с предполагаемой позой руки и корректирующими факторами с использованием линейного смешивания кожи. Первая коррекция представляет собой ID-зависимую коррекцию скелета, с помощью которой скелетная установка настраивается для включения специфических для человека положений суставов. Два других корректирующих элемента представляют собой сетчатые коррективы, с помощью которых вершины сетки корректируются, чтобы лучше представлять поверхность руки участника. Одним из корректирующих факторов сетки является коррекция сетки, зависящая от идентификатора, которая учитывает структуру поверхности руки отдельного участника. Окончательная коррекция сетки вместо этого представляет собой коррекцию вершины, зависящую от позы, которая учитывает деформации поверхности руки из-за текущей позы руки.
DeepHandMesh обучается с использованием слабого надзора с 2D-совместными ключевыми точками и картами глубины сцены. Здесь мы используем только предварительно обученный декодер DeepHandMesh для создания реконструкций ручной сетки, модифицированных следующими способами (рис. 3). Во-первых, поскольку сеть не обучается на конкретных участниках, используется универсальная коррекция сетки, зависящая от идентификатора, поставляемая с предварительно обученной моделью (рис. 3A). Кроме того, ID-зависимая коррекция скелета выводится с использованием скелетного решателя QTM, как описано выше (рис. 3B). Предполагается пропорциональное масштабирование руки с длиной скелета, а толщина сетки равномерно масштабируется с помощью коэффициента, полученного из относительного масштабирования скелета, так что сетка лучше приближается к размеру руки участника (рис. 3C). Эта модифицированная сетка вводится в декодер вместе с текущим положением руки (полученным из данных маркера), а также 3D-положением и ориентацией запястья. Таким образом, декодер вычисляет текущую коррекцию, зависящую от позы, применяет все коррекции и ротационные перемещения и выводит 3D-реконструкцию ручной сетки текущей позы руки в той же системе координат, что и сетка 3D-отслеживаемого объекта (рис. 3D).

Рисунок 3: Модификации предварительно обученного декодера DeepHandMesh . (A) Исправлена, универсальная коррекция сетки, зависящая от идентификатора. (B) ID-зависимая коррекция скелета, полученная с помощью обратной кинематики на шаге 10. (C) Размер кистевой сетки определяется по тому же коэффициенту, что и скелетные суставы. (D) Окончательная 3D-реконструкция текущей позы рук. Пожалуйста, нажмите здесь, чтобы просмотреть увеличенную версию этого рисунка.
Реконструировав 3D-модели сетки как для руки участника, так и для захваченного объекта, области контакта руки с объектом можно оценить, вычислив пересечение между сетками руки и объекта (рис. 1H). Предположение, стоящее за этим, заключается в том, что настоящая рука деформируется при контакте с поверхностью, а это означает, что скелет может подойти ближе к поверхности, чем это было бы возможно, если бы рука была жесткой, что позволяет частям ручной сетки проходить через сетку объекта. В результате области контакта могут быть аппроксимированы как области перекрытия между двумя сетками.
В частности, чтобы вычислить эти области перекрытия, мы определяем вершины сетки объектов, которые содержатся в 3D-объеме ручной сетки, как находящиеся в контакте с рукой. Эти вершины идентифицируются с использованием стандартного подходатрассировки лучей 45. Для каждой вершины сетки объектов луч отбрасывается от этой вершины к произвольной 3D-точке за пределами ручной сетки. Затем мы оцениваем количество пересечений, которые происходят между литым лучом и треугольниками, составляющими поверхность руки. Если число пересечений нечетное, то вершина объекта содержится внутри ручной сетки. Если число пересечений четное, то вершина объекта находится за пределами ручной сетки. Таким образом, контактные области на поверхности объекта могут быть аппроксимированы как набор граней треугольника, вершины которых содержатся в ручной сетке. Мы можем применить то же самое обоснование к вершинам ручной сетки, содержащимся в 3D-объеме сетки объекта, для оценки областей контакта на поверхности руки. Примечательно, что можно было бы использовать и более продвинутые подходы к логическим сетчатым операциям31.
На видео 1 показано видео, на котором рука, отслеживаемые точки и совместно зарегистрированная сетка движутся бок о бок во время одного захвата фигурки кошки, напечатанной на 3D-принтере. Вместо этого на рисунке 4A показан один кадр в момент контакта руки с объектом от захвата до круассана, напечатанного на 3D-принтере, вместе с реконструкциями сетки рука и объект (рис. 4B) и предполагаемыми областями контакта на поверхности круассана (рис. 4C).

Рисунок 4: Предполагаемые области контакта рук с предметом. (A) Отслеживаемая рука и объект, просматриваемые с одной из камер слежения во время захвата. (B) Реконструированная сетка рук и сетка отслеживаемого объекта, визуализированная с той же точки обзора, что и камера слежения. (C) Контактные области на поверхности объекта, видимые с нескольких точек зрения. Пожалуйста, нажмите здесь, чтобы просмотреть увеличенную версию этого рисунка.
Видео 1: Сетчатые реконструкции руки и предмета. Gif-анимация руки, отслеживаемых маркеров и реконструкции сетки рук и объектов во время одного захвата, просматриваемого с одной и той же точки зрения камеры. Пожалуйста, нажмите здесь, чтобы загрузить это видео.