Обычно эту задачу решают при помощи глубокого обучения.

Это одна из самых интересных областей исследований, получившая популярность благодаря своей полезности и универсальности — она находит применение в широком спектре сфер, в том числе в гейминге, здравоохранении, AR и спорте.

В этой статье приведён исчерпывающий обзор определения положения тела человека (Human Pose Estimation, HPE) и того, как оно работает. Также в ней рассматриваются различные подходы к решению задачи HPE — классические методы и методы на основе глубокого обучения, метрики и способы оценки, а также многое другое.

Мы расскажем о следующем:
  1. Что такое определение положения тела человека?
  2. Классические методики и методики на основе глубокого обучения
  3. Определение положения тела человека на основе глубоких нейронных сетей
  4. Метрики оценки для модели определения положения тела человека
  5. Десять лучших исследовательских статей по определению положения тела человека
  6. Шесть примеров использования определения положения тела человека

А если вы хотите получить реальный опыт аннотирования данных для своих проектов по определению положения тела человека, то посмотрите представленное ниже видео.


Что такое Human Pose Estimation?


Human Pose Estimation (HPE) — это способ идентификации и классификации узлов человеческого тела.

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

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

Однако существует три вида методик моделирования человеческого тела:
  1. Модель на основе скелета.
  2. Модель на основе контура.
  3. Модель на основе объёма.


Классические методики и методики на основе глубокого обучения


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

В этом разделе мы изучим две методики HPE: классическую и методику на основе глубокого обучения. Также мы объясним, почему классическим методикам не удаётся определять геометрическую и двигательную информацию человеческого тела, и расскажем, почему с этим превосходно справляются алгоритмы глубокого обучения, например, CNN.

Классические методики двухмерного определения положения тела человека


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

Например, в одной из ранних работ по определению положения тела человека использовалась реализация random forest в «pictorial structure framework». Она применялась для прогнозирования узлов человеческого тела.

Pictorial structure framework (PSF) — это название одной из традиционных методик определения положения тела человека. PSF состоит из двух компонентов:

  1. Discriminator: он моделирует вероятность того, что определённая часть тела находится в определённом месте. Иными словами, он идентифицирует части тела.
  2. Prior: он занимается моделированием распределения вероятностей положения тела при помощи данных из discriminator; смоделированная поза должна быть реалистичной.

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


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

Чтобы обойти эти проблемы, использовались методики создания признаков наподобие histogram oriented gaussian (HOG), контуров, гистограмм и так далее. Вне зависимости от использования этих методов, классической модели не хватало точности, функций корреляции и обобщения, поэтому подбор более подходящей методики был всего лишь делом времени.

Методики двухмерного определения положения тела человека на основе глубокого обучения


Методики на основе глубокого обучения способны обобщать любую функцию (если в скрытом слое присутствует достаточное количество узлов).

В задачах компьютерного зрения все другие алгоритмы превосходят глубокие свёрточные нейронные сети (CNN); это справедливо и для HPE.

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

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

В 2014 году Тошев с соавторами впервые использовали CNN для определения положения тела человека, перейдя от классической методики к методике на основе глубокого обучения. Они назвали свою методику DeepPose: Human Pose Estimation via Deep Neural Networks.

В опубликованной ими статье всю задачу они определили как задачу регрессии на основе CNN для узлов тела.

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

Благодаря многообещающим результатам, показанным DeepPose, исследования в области HPE естественным образом сместились в сторону методик на основе глубокого обучения.

Определение положения тела человека при помощи глубоких нейронных сетей


С началом исследований и разработок в сфере HPE начали ставиться и более сложные задачи.

Одна из них — определение положений тел нескольких людей.

Глубокие нейросети очень успешно определяют положение тела одного человека, но когда нужно определить положения тел нескольких людей, они сталкиваются с трудностями:

  1. Изображение может содержат несколько людей в разных положениях.
  2. С увеличением количества людей степень взаимодействия между ними растёт, что приводит к сложности вычислений.
  3. Повышение сложности вычислений часто приводит к увеличению времени обработки в реальном времени.

Чтобы решить эти проблемы, исследователи предложили два подхода:

  1. Сверху вниз: локализация людей на изображении, определение частей их тел и вычисление положений.
  2. Снизу вверх: определение частей тел людей на изображении с последующим вычислением положений.

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

OpenPose


OpenPose была представлена Чже Цао и соавторами в 2019 году.

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

OpenPose также использует в своей основной архитектуре свёрточную нейронную сеть. Она состоит из свёрточной сети VGG-19, используемой для извлечения паттернов и описаний из входящих данных. Результат работы VGG-19 передаётся в две ветви свёрточных сетей.

Первая сеть прогнозирует множество карты достоверности для каждой части тела, а вторая ветвь прогнозирует Part Affinity Fields (PAF), создающие степень связи между частями. Также в двудольных графах полезно усекать слабые связи.


На рисунке выше показана архитектура многоэтапной свёрточной сети OpenPose.

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


На изображении выше показан конвейер OpenPose.

AlphaPose (RMPE)


Regional Multi-person Pose Estimation (RMPE), или AlphaPose реализует методику HPE «сверху вниз».

Реализация HPE «сверху вниз» вызывает множество ошибок в локализации и неточностей в прогнозах, а потому достаточно сложна.


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

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

Авторы AlphaPose подошли к решению проблемы несовершенного распознавания людей при помощи двухэтапного фреймворка. В этом фреймворке они добавили две сети:

  1. Symmetric Spatial Transformer Network (SSTN): она позволяет вырезать соответствующую область на входящих данных, что упрощает задачу классификации, приводя к повышению точности.
  2. Single Person Pose Estimator (SPPE): она используется для извлечения и определения положения тела.

Задача AlphaPose заключается в извлечении высококачественной области местоположения одного человека из неточного ограничивающего прямоугольника путём применения SSTN к SPPE. Эта методика повышает точность классификации, решая проблему инвариантности и обеспечивая при этом стабильный фреймворк для определения положения тела.


DeepCut


DeepCut была предложена Леонидом Пищулиным и соавторами в 2016 году. Её задача заключается в одновременном решении задач распознавания и определения положения тела.

Это методика определения положения тела «снизу вверх».

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


Сеть использует моделирование Integral Linear Programming (ILP) для косвенного группирования всех распознанных ключевых точек на изображении таким образом, чтобы получившийся результат напоминал скелетное описание человека.

Mask R-CNN


Mask R-CNN — очень популярный алгоритм для сегментации экземпляров.

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


Базовую архитектуру легко расширить на задачи определения положения тела человека.

Fast R-CNN использует свёрточную нейронную сеть для извлечения признаков и описания из входящих данных.

Затем извлечённые признаки используются для прогнозирования того, где может находиться объект, при помощи Region Proposal Network (RPN).

Так как ограничивающий прямоугольник может иметь разные размеры (как на изображении выше), слой под названием RoIAlign нормализует извлечённые признаки, чтобы все они имели единые размеры.

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


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

Этот метод напоминает методику «сверху вниз», при которой этап распознавания человека выполняется параллельно с этапом распознавания частей тела.

Иными словами, этап распознавания ключевых точек и этап распознавания людей не зависят друг от друга.

Шесть примеров использования определения положения тела человека


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

Личные тренеры на основе искусственного интеллекта


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

Неудивительно, что рынок насыщен приложениями, использующими мощь ИИ для оптимизации тренировок пользователей.


Например, Zenia — это приложение для занятий йогой на основе искусственного интеллекта, использующее HPE. Оно помогает принимать правильные позы при занятиях йогой. Приложение использует камеру для распознавания позы и оценивает её точность — если она правильна, то спрогнозированная поза будет показана зелёным, как на изображении выше. Если поза неправильна, зелёный цвет сменится красным.

Наряду с йогой, HPE нашло применение и в других видах упражнений.

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

Робототехника


Робототехника является одной из самых стремительно растущих областей разработки.

Программирование робота на выполнение определённой процедуры может быть монотонным и долгим процессом, поэтому на помощь могут прийти методики глубокого обучения.

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

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


Ещё одной интересной областью применения HPE может быть компьютерная графика.

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

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

HPE способно автоматически определять ключевые точки из 2D-изображений и создавать 3D-рендеры тех же положений, которые затем можно использовать для добавления эффектов, анимаций и так далее.

Распознавание поз спортсменов


В наши дни почти во всех видах спорта активно используется анализ данных.

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


Отслеживание движения для игр


Ещё одним интересным примером использования определения положения тела являются игры, где игроки могут применять функции захвата движений HPE для переноса поз в игровое окружение. Цель этого процесса заключается в создании интерактивного игрового процесса.

Например, Microsoft Kinect использует трёхмерное определение положения тела (при помощи данных с инфракрасных датчиков) для отслеживания движений игроков и использования их при рендеринге виртуальных движений персонажей в игровой среде.

Анализ движений младенцев


HPE также можно использовать для анализа движения младенцев. Это очень полезно для анализа поведения ребёнка в процессе его роста, особенно для оценки его физического развития.

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

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

Метрики оценок модели определения положения тела человека


Для правильного выявления распределения во время обучения и для достижения высокой точности в работе алгоритмам глубокого обучения нужны метрики оценок. Метрики оценок зависят от конкретной задачи.

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

Percentage of Correct Parts (PCP)


PCP используется для измерения правильного распознавания частей тела. Если расстояние между двумя прогнозируемыми и истинными местоположениями частей тела меньше половины длины части тела, то эта часть считается распознанной. Однако модель отбраковывает короткие части тела, например, предплечье.

Percentage of Detected Joints (PDJ)


Чтобы устранить проблему, возникшую у PCP, была предложена новая метрика. Она измеряет расстояние между прогнозируемой и истинной частью тела в диапазоне части диаметра туловища; эта метрика называется percentage of detected joints (PDJ).

PDJ помогает достигать точность локализации, что устраняет недостаток PCP, поскольку критерии распознавания для всех частей тела основаны на одинаковом пороговом значении расстояния.

Percentage of Correct Key-points (PCK)


PCK используется как метрика точности, измеряющая то, что прогнозируемая ключевая точка и истинная часть тела находятся в пределах определённого порогового расстояния. PCK обычно задаётся с учётом масштаба объекта, заключённого в ограничивающий прямоугольник.

Пороговое значение может быть одним из следующих:

  • PCKh@0.5 — когда пороговое значение = 50% от связи костей головы.
  • PCK@0.2 = расстояние между спрогнозированной и истинной частью тела < 0,2 * диаметр туловища.
  • Иногда в качестве порогового значения берут 150 мм.
  • Это позволяет снизить проблемы с короткими частями тела, поскольку при коротких частях тела меньше туловища и связи костей головы.
  • PCK используется для 2D и 3D (PCK3D)

mAP на основе Object Keypoint Similarity (OKS)


OKS обычно используется в качестве метрики оценки соревнований по определению ключевых точек COCO. Она определяется следующим образом:


Где

  • di — евклидово расстояние между эталонными данными и прогнозируемой ключевой точкой;
  • s — квадратный корень из площади сегмента объекта;
  • k — константа ключевой точки, контролирующая снижение;
  • vi — это флаг видимости, принимающий следующие значения: 0 — не размечено, 1 — размечено, но невидимо, 2 — размечено и видимо.

Так как OKS используется для вычисления расстояния (0-1), эта метрика показывает, насколько прогнозируемая ключевая точка близка к истинной.

Десять лучших исследовательских статей про определение положения тела человека


Ниже приведён список наиболее выдающихся исследовательских статей о различных методиках реализации HPE.

  1. DeepPose: Human Pose Estimation via Deep Neural Networks
  2. Convolutional Pose Machines
  3. RMPE: Regional Multi-Person Pose Estimation
  4. Efficient Object Localization Using Convolutional Networks
  5. DeepCut: Joint Subset Partition and Labeling for Multi-Person Pose Estimation
  6. Simple Baselines for Human Pose Estimation and Tracking
  7. OpenPose: Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields
  8. Human Pose Estimation for Real-World Crowded Scenarios
  9. DensePose: Dense Human Pose Estimation In The Wild
  10. PersonLab: Person Pose Estimation and Instance Segmentation with a Bottom-Up, Part-Based, Geometric Embedding Model

Комментарии (6)


  1. Vasyutka
    14.09.2022 22:11
    +1

    Так, перевод очень хорошей статьи (хотя кончилась неожиданно, но это не к переводчику вопрос). Вообще не понимаю кто минусовал :). Хороший обзор на хабре.


  1. ThePaleEmperor
    14.09.2022 23:11
    +1

    А для чего это нужно?


    1. vassabi
      15.09.2022 00:18
      +1

      то есть раздел

      Шесть примеров использования определения положения тела человека

      вы пропустили ?


      1. danilovmy
        15.09.2022 00:46
        -1

        Это вы, вассаби, попали в ловушку для любителей скроллить. Тут поможет только вдумчивое прочтение статьи, или поиск на странице по словам "Шесть примеров использования определения положения тела человека"


        1. vassabi
          15.09.2022 09:12
          +1

          ну, возможно было бы лучше, чтобы в преамбуле статьи, после со слов

          Мы расскажем о следующем:

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

          во-вторых, в фразе "для чего это нужно?" - нет уточнения слову "это". Может быть, что автор вопроса имел ввиду что-то другое.

          Придется подождать его\ее ответного комментария :)


          1. danilovmy
            15.09.2022 10:30
            +1

            Ого как мобильник искажает коментарии. Вопрос оказывается от ThePaleEmperor. Минус мне принимется, наезд на vassabi необоснован.