Введение в методы, используемые в оценке позы человека на основе глубокого обучения.

Написано Бхаратх Раджем с учетом отзывов от Йони Осин.

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

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

Естественно, эти методы не особенно полезны во многих реальных сценариях, когда изображения содержат несколько людей.

Оценка позы для нескольких человек

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

  • Простой подход состоит в том, чтобы сначала включить детектор людей, затем оценить детали и затем вычислить позу для каждого человека. Этот метод известен как подход сверху вниз.
  • Другой подход заключается в обнаружении всех частей изображения (то есть частей каждого человека) с последующим объединением / группировкой частей, принадлежащих разным людям. Этот метод известен как подход снизу вверх.

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

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

Методы глубокого обучения

1. OpenPose

OpenPose - один из самых популярных восходящих подходов для оценки позы нескольких человек, отчасти из-за их хорошо документированной реализации GitHub.

Как и во многих восходящих подходах, OpenPose сначала обнаруживает части (ключевые точки), принадлежащие каждому человеку на изображении, а затем назначает части отдельным людям. Ниже показана архитектура модели OpenPose.

Сеть OpenPose сначала извлекает элементы из изображения, используя несколько первых слоев (VGG-19 на приведенной выше блок-схеме). Затем признаки передаются в две параллельные ветви сверточных слоев. Первая ветвь предсказывает набор из 18 карт достоверности, каждая из которых представляет определенную часть скелета позы человека. Вторая ветвь предсказывает набор из 38 полей сродства частей (PAF), которые представляют степень связи между частями.

Последовательные этапы используются для уточнения прогнозов, сделанных каждой ветвью. Используя карты достоверности деталей, между парами деталей формируются двудольные графы (как показано на изображении выше). Используя значения PAF, отсекаются более слабые связи в двудольных графах. С помощью описанных выше шагов можно оценить человеческие скелеты позы и назначить их каждому человеку на изображении. Для более подробного объяснения алгоритма вы можете обратиться к их статье и к этому сообщению в блоге.

2. DeepCut

DeepCut - это восходящий подход для оценки позы нескольких человек. Авторы подошли к задаче, обозначив следующие задачи:

  1. Создайте набор кандидатов D частей тела. Этот набор представляет все возможные местоположения частей тела для каждого человека на изображении. Выберите подмножество частей тела из приведенного выше набора кандидатов частей тела.
  2. Обозначьте каждую выбранную часть тела одним из C классов частей тела. Классы частей тела представляют такие типы частей, как «рука», «нога», «торс» и т. Д.
  3. Разделение частей тела, принадлежащих одному человеку.

Вышеупомянутые проблемы были совместно решены путем моделирования в задаче Целочисленное линейное программирование (ILP). Он моделируется путем рассмотрения троек (x, y, z) двоичных случайных величин с доменами, как указано на изображениях ниже.

Рассмотрим двух кандидатов частей тела d и d' из набора кандидатов частей тела D и классов c и c' из набора классов C. Кандидаты в части тела были получены через Faster RCNN или Dense CNN. Теперь мы можем разработать следующий набор утверждений.

  • Если x(d,c) = 1, то это означает, что кандидат в части тела d принадлежит классу c.
  • Кроме того, y(d,d') = 1 указывает, что кандидаты в части тела d и d' принадлежат одному и тому же человеку.
  • Они также определяют z(d,d’,c,c’) = x(d,c) * x(d’,c’) * y(d,d’). Если указанное выше значение равно 1, то это означает, что кандидат части тела d принадлежит классу c, кандидат части тела d' принадлежит классу c' и, наконец, кандидаты части тела d,d’ принадлежат одному и тому же человеку.

Последнее утверждение можно использовать для разделения позы, принадлежащих разным людям. Ясно, что приведенные выше утверждения могут быть сформулированы в терминах линейных уравнений как функций (x,y,z). Таким образом настраивается целочисленная линейная программа (ILP), и можно оценить позу нескольких человек. Для получения точной системы уравнений и более подробного анализа вы можете ознакомиться с их статьей здесь.

3. RMPE (AlphaPose)

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

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

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

4. Маска RCNN

Mask RCNN - популярная архитектура для семантической и инстанционной сегментации. Модель параллельно прогнозирует как положения ограничивающей рамки различных объектов на изображении, так и маску, которая семантически сегментирует объект. Базовая архитектура может быть легко расширена для оценки позы человека.

Базовая архитектура сначала извлекает карты характеристик из изображения с помощью CNN. Эти карты функций используются сетью предложений региона (RPN) для получения кандидатов в ограничивающую рамку на предмет наличия объектов. Кандидаты в ограничивающую рамку выбирают область (регион) на карте признаков, извлеченной CNN. Поскольку кандидаты в ограничивающую рамку могут быть разных размеров, слой под названием RoIAlign используется для уменьшения размера извлеченного объекта, чтобы все они имели одинаковый размер. Теперь этот извлеченный признак передается в параллельные ветви CNN для окончательного предсказания ограничивающих рамок и масок сегментации.

Сфокусируемся на ветви, выполняющей сегментацию. Предположим, что объект на нашем изображении может принадлежать одному из K классов. Ветвь сегментации выводит K двоичные маски размера m x m, где каждая двоичная маска представляет все объекты, принадлежащие только этому классу. Мы можем извлечь ключевые точки, принадлежащие каждому человеку на изображении, моделируя каждый тип ключевой точки как отдельный класс и рассматривая это как проблему сегментации.

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

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

5. Другие методы

Оценка позы человека с участием нескольких человек - это обширная область с множеством подходов к решению этой проблемы. Для краткости здесь описаны только несколько избранных подходов. Более полный список подходов можно найти по следующим ссылкам:

Приложения

Оценка позы имеет приложения во множестве областей, некоторые из которых перечислены ниже.

1. Распознавание деятельности

Отслеживание изменений позы человека в течение определенного периода времени также может использоваться для распознавания активности, жестов и походки. Для одного и того же есть несколько вариантов использования, в том числе:

  • Приложения для определения того, упал ли человек или заболел.
  • Приложения, которые могут автономно обучать правильным режимам тренировок, спортивным приемам и танцевальным упражнениям.
  • Приложения, которые понимают язык жестов всего тела. (Пример: сигналы взлетно-посадочной полосы аэропорта, сигналы дорожной полиции и т. Д.).
  • Приложения, которые могут повысить безопасность и наблюдение.

2. Захват движения и дополненная реальность

Интересное приложение оценки позы человека - это приложения CGI. Графика, стили, необычные улучшения, оборудование и иллюстрации могут быть наложены на человека, если можно оценить его человеческую позу. Отслеживая вариации этой человеческой позы, визуализированная графика может «естественно соответствовать» движению человека.

Хороший наглядный пример того, что возможно, можно увидеть в Animoji. Несмотря на то, что вышеизложенное отслеживает только структуру лица, идея может быть экстраполирована на ключевые точки человека. Те же концепции можно использовать для визуализации элементов дополненной реальности (AR), которые могут имитировать движения человека.

3. Тренировочные роботы

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

4. Отслеживание движения для консолей

Интересным применением оценки позы является отслеживание движения людей в интерактивных играх. Обычно Kinect использовал 3D-оценку позы (с использованием данных ИК-датчика) для отслеживания движений игроков-людей и использования ее для визуализации действий виртуальных персонажей.

Заключение

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