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

  • Обнаружение ключевых точек несколькими людьми в режиме 2D в реальном времени
  • Обнаружение ключевых точек одним человеком в 3D в реальном времени
  • Набор инструментов для калибровки
  • Индивидуальное отслеживание
  • Поддержка только Python API, плагина Unity, Cuda, OpenCL и CPU

Более того, в работах коллектива больше деталей (Гинес Идальго, Чжэ Цао, Томас Симон, Ши-Эн Вэй, Ханбюль Джу, Ясер Шейх и Яадхав Раадж). в Университете Карнеги-Меллона. Приведенная ниже ссылка периодически обновляется в связи с изменениями новых фреймворков. Кроме того, он содержит руководство по установке, устранение неполадок и раздел быстрого запуска. Итак, вперед, посмотрите и поиграйте с этим.



Что 🙋?

Одно из предостережений фреймворка OpenPose состоит в том, чтобы идентифицировать частичный человеческий образ, как это определено моим руководителем, профессором Хагит Хель-Ор. Модель системы была обучена на человеческих фигурах, взятых из нескольких наборов данных (COCO и MPII), в то время как изображения содержат разных людей на разном фоне, большинство из них не включают только часть изображения человека ( например, только плечи).

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

На изображении ниже, взятом из превосходной серии сообщений блога Medium от Ale Solano, показаны скелеты, представленные набором данных COCO (пары и части):

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

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

Почему?

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

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

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

Как 🤓?

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

На следующих изображениях показан алгоритм работы алгоритма на исходном изображении человеческих ног:

  1. Дается частичное изображение (ноги)
  2. Верхнее (фиктивное) изображение сопоставляется с исходной частью тела, и создается объединенное изображение.
  3. Каркас OpenPose создается для комбинированного изображения
  4. Результат скелета уменьшается только до исходного изображения.

Как видно ниже:

Реконструированное изображение создается путем первой идентификации объекта на исходном изображении с использованием обученной модели тензорного потока (DetecorAPI с быстрее_rcnn) на основе набора данных COCO. Модель возвращает ограничивающую рамку обнаруженного объекта. Затем, используя размеры коробки, фиктивное изображение приводится к исходным характеристикам изображения с помощью аффинного преобразования.

В конце концов, два изображения сшиваются вместе, и OpenPose запускается на новом изображении.

Видео ниже демонстрирует результат видео с идущим человеком:

Подводя итог, OpenPose имеет большой потенциал для бесконечных приложений, позволяя обнаруживать движение без специального оборудования, такого как Kinect, 2D-камеры вполне достаточно. Преодоление одного из ограничений фреймворка может продвинуть нас вперед к этой цели, и в этом реальная сила сообщества с открытым исходным кодом.

Надеюсь, вам будет интересно (👏).

Код проекта можно найти здесь: