OpenPose: метод оценки позы человека

Опубликовано: 21 Июля, 2021

OpenPose - это первая многопользовательская система в реальном времени, которая совместно определяет ключевые точки человеческого тела, рук, лица и стопы (всего 135 ключевых точек) на отдельных изображениях. Его предложили исследователи из Университета Карнеги-Меллона. Они выпущены в виде кода Python, реализации C ++ и плагина Unity. Эти ресурсы можно скачать из репозитория OpenPose.

Архитектура:

  • На первом этапе изображение передается через базовую сеть CNN для извлечения карт характеристик входных данных в статье. В данной работе эти авторы использовали первые 10 уровней сети VGG-19.
  • Затем карта характеристик обрабатывается в многоступенчатом конвейере CNN для создания карт достоверности детали и поля соответствия детали.
    • Карты уверенности в деталях:
    • Поле сродства части
  • На последнем этапе сгенерированные выше карты достоверности и поля сродства частей обрабатываются жадным алгоритмом двустороннего сопоставления для получения поз для каждого человека на изображении.

Карты уверенности и поля сродства деталей

  • Карты уверенности: карта уверенности - это двухмерное представление уверенности в том, что определенная часть тела может быть расположена в любом заданном пикселе. Карты уверенности описываются следующим уравнением:

где J - количество мест расположения частей тела.

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

    Многоступенчатый CNN:

    Вышеупомянутая архитектура с несколькими CNN состоит из трех основных этапов:

    • Первый набор этапов предсказал, что поля сродства деталей уточняют L t из карт характеристик базовой сети F.

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

    • Окончательные S (карты достоверности) и L (поле сродства части) затем передаются в жадный алгоритм для дальнейшей обработки.

    Функции потерь:



    Функция L2-потерь используется для вычисления потерь между предсказанными картами достоверности и полями сродства части к наземным картам и полям истинности.


    где L c * - поля сродства наземной части истинности, S j * - карта достоверности наземной части истинности, а W - двоичная маска с W ( p ) = 0, когда аннотация отсутствует в пикселе p. Это сделано для предотвращения дополнительных потерь, которые могут быть вызваны этой маской.


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

    Карты уверенности:

    Карты уверенности для каждого человека k и каждой части тела j определяются:

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

    Поля сродства частей:

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

    • Если p находится на конечности, то L * - единичный вектор, в противном случае он равен 0.

    • Предсказанное поле сродства детали, L c вдоль линейного сегмента, предназначено для измерения достоверности для двух возможных мест расположения деталей dj 1 и dj 2 :

    • Для нескольких человек необходимо максимизировать Total E:

    • Есть несколько подходов к соединению части тела, как показано на изображении ниже:

    • Ассоциация по обнаружению частей тела.
    • Объединение путем рассмотрения всех ребер и генерации k-долевого графа
    • Ассоциация путем создания древовидной структуры.
    • Объединение путем создания различных двудольных графов с использованием жадного алгоритма.

    Отличия от CMUPose:

    CMUPose - это более ранняя версия OpenPose. Это архитектура, победившая в конкурсе COCO 2016 Key Point Detection Challenge 2016.

    • В архитектуре с несколькими CNN для уточнения карт достоверности и Part Affinity свертка ядра 7 заменяется 3 свертками с размером ядра 3, которые в конце объединяются. Это приводит к сокращению количества операций с 97 до 51. Объединение сверток позволяет сетевому полю сохранять функции как верхнего, так и нижнего уровня.
    • Авторы также пришли к выводу, что уточнение Part Affinity Field (PAF) более важно, чем карты достоверности, и приводит к более высокой точности даже без карт достоверности. Поэтому архитектура с несколькими CNN сначала уточняет PAF, а затем карты уверенности.

    Обнаружение стопы:

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

    Обнаружение транспортных средств:

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

    Результаты :

    • В наборе данных MPII Multi-Person OpenPose получил современный mAP f или подмножество 288 изображений, а также полный набор для тестирования.

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

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

    • График ниже показывает, что OpenPose почти не влияет на количество людей, присутствующих на изображении, в отличие от подходов сверху вниз, таких как Mask-RCNN, AlphaPose и т. Д.

    Предостережения:

    • У OpenPose есть проблемы с оценкой позы, когда в исходном примере есть нетипичные позы и перевернутые примеры.
    • В очень загруженных изображениях, где люди пересекаются, подход имеет тенденцию объединять аннотации от разных людей, при этом упуская другие, из-за перекрывающихся PAF, которые приводят к сбою жадного парсинга с участием нескольких лиц.

    Рекомендации:

    • Документ для оценки позы OpenPose
    • Репозиторий OpenPose на Github