Определение положения человека — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(OpenPose)
м (rollbackEdits.php mass rollback)
 
(не показаны 133 промежуточные версии 5 участников)
Строка 1: Строка 1:
{{В разработке}}
+
'''Определение положения человека''' (англ. ''Human pose estimation'') {{---}} частный случай задачи [[Сегментация изображений | сегментации изображения]] из раздела [[Компьютерное зрение | компьютерного зрения]] о нахождении и локализации частей тела человека на изображениях или видео (рассматривается как последовательность изображений). Чаще всего позицией человека называют набор соединённых ключевых точек (англ. ''Joint''), соответствующих суставам (плечи, локти, кисти, тазобедренные суставы, колени, стопы) и другим ключевым точкам (шея, голова, центр торса). Эту задачу можно рассматривать в двух или трёх измерениях, от чего зависит сложность задачи и практические применения результатов. Также задачу можно разделить на два подтипа: определение положения для одного человека (англ. ''Single Person Pose Estimation''), определение положения для нескольких человек (англ. ''Multi Person Pose Estimation'')
 
 
'''Определение положения человека''' (англ. ''Human pose estimation'') {{---}} частный случай задачи [[Сегментация изображений | сегментации изображения]] из раздела [[Компьютерное зрение | компьютерного зрения]] о нахождении и локализации частей тела человека на изображениях или видео (рассматривается как последовательность изображений). Чаще всего позицией человека называют набор соединённых ключевых точек (англ. ''Joint''), соответствующих суставам (плечи, локти, кисти, тазобедренные суставы, колени, стопы) и другим ключевым точкам (шея, голова, центр торса). Эту задачу можно рассматривать в двух или трёх измерениях, от чего зависит сложность задачи и практические применения результатов. Также задачу можно разделить на два подтипа: определение положения для одного человека (англ. ''Single Person Estimation''), определение положения для нескольких человек (англ. ''Multi Person Estimation'')
 
  
 
== Постановка задачи ==
 
== Постановка задачи ==
=== Определение положения одного человека (англ. ''Single Person Estimation'') ===
+
=== Определение положения одного человека (англ. ''Single Person Pose Estimation'') ===
 
Задача заключается в определении положения одного человека по фото или видео. Важным условием является то, что на изображении должен быть только один человек, иначе гарантировать корректное выполнение невозможно. В качестве результата необходимо получить набор соединённых точек, указывающих на соответствующие части тела. Сложности заключаются в том, чтобы отделить друг от друга разные части тела, корректно определять положение конечностей, скрытых за другими объектами, а также корректно отличать левые части тела от правых, независимо от поворота человека на изображении.
 
Задача заключается в определении положения одного человека по фото или видео. Важным условием является то, что на изображении должен быть только один человек, иначе гарантировать корректное выполнение невозможно. В качестве результата необходимо получить набор соединённых точек, указывающих на соответствующие части тела. Сложности заключаются в том, чтобы отделить друг от друга разные части тела, корректно определять положение конечностей, скрытых за другими объектами, а также корректно отличать левые части тела от правых, независимо от поворота человека на изображении.
 
{|align="left"
 
{|align="left"
 
|-valign="top"
 
|-valign="top"
|[[file:InputSingle.jpg|200px|thumb| [http://sysu-hcp.net/lip/posechallenge.php Рисунок 1 Исходная картинка]]]
+
|[[file:InputSingle.jpg|200px|thumb| Рисунок 1 Исходная картинка. [[http://sysu-hcp.net/lip/posechallenge.php Источник]]]]
|[[file:outputSingle.jpg|200px|thumb| [http://sysu-hcp.net/lip/posechallenge.php Рисунок 2 Результат работы алгоритма для одного человека]]]
+
|[[file:outputSingle.jpg|200px|thumb| Рисунок 2 Результат работы алгоритма для одного человека. [[http://sysu-hcp.net/lip/posechallenge.php Источник]]]]
 
|}
 
|}
 
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
 
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
  
=== Определение положений нескольких людей (англ. ''Multi Person Estimation'') ===
+
=== Определение положений нескольких людей (англ. ''Multi Person Pose Estimation'') ===
Эта задача имеет более высокую сложность, так как необходимо обнаружить множество человек на изображении, а затем определить положение для каждого человека из множества обнаруженных людей. Основная сложность в том, чтобы корректно определить и отличить друг от друга части тела, принадлежащие разным людям, а также решить все сложности связанные с '''Single Person Estimation'''.
+
Эта задача имеет более высокую сложность, так как необходимо обнаружить множество человек на изображении, а затем определить положение для каждого человека из множества обнаруженных людей. Основная сложность в том, чтобы корректно определить и отличить друг от друга части тела, принадлежащие разным людям, а также решить все сложности связанные с '''Single Person Pose Estimation'''.
  
 
{|align="left"
 
{|align="left"
 
|-valign="top"
 
|-valign="top"
|[[file:InputMulti.png|200px|thumb| [https://medium.com/beyondminds/an-overview-of-human-pose-estimation-with-deep-learning-d49eb656739b Рисунок 3 Исходная картинка с несколькими людьми]]]
+
|[[file:InputMulti.png|200px|thumb| Рисунок 3 Исходная картинка с несколькими людьми [[https://medium.com/beyondminds/an-overview-of-human-pose-estimation-with-deep-learning-d49eb656739b Источник]]]]
|[[file:InnerMulti.png|200px|thumb| [https://medium.com/beyondminds/an-overview-of-human-pose-estimation-with-deep-learning-d49eb656739b Рисунок 4 Промежуточный этап разделения людей]]]
+
|[[file:InnerMulti.png|200px|thumb| Рисунок 4 Промежуточный этап разделения людей [[https://medium.com/beyondminds/an-overview-of-human-pose-estimation-with-deep-learning-d49eb656739b Источник]]]]
|[[file:OutputMulti.png|200px|thumb| [https://medium.com/beyondminds/an-overview-of-human-pose-estimation-with-deep-learning-d49eb656739b Рисунок 5 Итоговый результат работы алгоритма]]]
+
|[[file:OutputMulti.png|200px|thumb| Рисунок 5 Итоговый результат работы алгоритма [[https://medium.com/beyondminds/an-overview-of-human-pose-estimation-with-deep-learning-d49eb656739b Источник]]]]
 
|}
 
|}
  
Строка 26: Строка 24:
  
 
== Область применения ==
 
== Область применения ==
# '''Кинематограф и анимация''' {{---}} '''CGI'''<ref name="CGI">[https://ru.wikipedia.org/wiki/CGI_(%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0) CGI]</ref> (англ. ''computer-generated imagery'', буквально «изображения, сгенерированные компьютером») и захват движения<ref name="motion-capture">[https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D1%85%D0%B2%D0%B0%D1%82_%D0%B4%D0%B2%D0%B8%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F Захват движения]</ref> (англ. ''Motion capture''). Несмотря на то, что в настоящий момент чаще используется маркерный способ, при котором человек надевает костюм с датчиками движения, в последние годы большое развитие получил безмаркерный способ, основанный на компьютерном зрении.
+
# '''Кинематограф и анимация''' {{---}} популярные технологии CGI<ref name="CGI">[https://ru.wikipedia.org/wiki/CGI_(%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0) CGI]</ref> (англ. ''computer-generated imagery'', буквально «изображения, сгенерированные компьютером») и захват движения<ref name="motion-capture">[https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D1%85%D0%B2%D0%B0%D1%82_%D0%B4%D0%B2%D0%B8%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F Захват движения]</ref> (англ. ''Motion capture''), позволяют создавать движущиеся изображения и графику, используя для анимации движения специального актера. Несмотря на то, что в настоящий момент чаще используется маркерный способ, при котором актер надевает костюм с датчиками движения, в последние годы большое развитие получил безмаркерный способ, основанный на компьютерном зрении.
 
# '''Видеоигры''' {{---}} широко применяется в дополненной реальности (англ. ''Augmented Reality'', '''AR'''<ref name="AR">[https://ru.wikipedia.org/wiki/%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F_%D1%80%D0%B5%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C Дополненная реальность]</ref>) и виртуальной реальности (англ. ''Virtual Reality'',  '''VR'''<ref name="VR">[https://ru.wikipedia.org/wiki/%D0%92%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%80%D0%B5%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C Виртуальная реальность]</ref>). Также в консольных игровых решениях используется трекинг (англ. ''Motion tracking''), отслеживающий положения игрока в некотором радиусе перед камерой. Помимо этого, определение положения человека необходимо непосредственно в производстве видеоигр, для этого, опять же, используется технология CGI<ref name="CGI"/>.
 
# '''Видеоигры''' {{---}} широко применяется в дополненной реальности (англ. ''Augmented Reality'', '''AR'''<ref name="AR">[https://ru.wikipedia.org/wiki/%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F_%D1%80%D0%B5%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C Дополненная реальность]</ref>) и виртуальной реальности (англ. ''Virtual Reality'',  '''VR'''<ref name="VR">[https://ru.wikipedia.org/wiki/%D0%92%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%80%D0%B5%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C Виртуальная реальность]</ref>). Также в консольных игровых решениях используется трекинг (англ. ''Motion tracking''), отслеживающий положения игрока в некотором радиусе перед камерой. Помимо этого, определение положения человека необходимо непосредственно в производстве видеоигр, для этого, опять же, используется технология CGI<ref name="CGI"/>.
 
# '''Человеко-компьютерное взаимодействие''' (англ. ''Human-computer interaction'') {{---}} здесь определение положения человека используется для взаимодействия с роботами или компьютерами, для отдачи команд компьютерным системам.  Примером такого взаимодействия можно назвать уже упомянутый захват движения при игре на консолях.
 
# '''Человеко-компьютерное взаимодействие''' (англ. ''Human-computer interaction'') {{---}} здесь определение положения человека используется для взаимодействия с роботами или компьютерами, для отдачи команд компьютерным системам.  Примером такого взаимодействия можно назвать уже упомянутый захват движения при игре на консолях.
Строка 32: Строка 30:
  
 
== Методы решения ==
 
== Методы решения ==
===DeepPose===
+
===DeepPose (2014)===
 
{|align="right"
 
{|align="right"
 
|-valign="top"
 
|-valign="top"
|[[file:challenging.png|300px|thumb| [https://arxiv.org/pdf/1312.4659.pdf Рисунок 6 Примеры результатов работы алгоритма]]]
+
|[[file:challenging.png|300px|thumb| Рисунок 6 Примеры результатов работы алгоритма [[https://arxiv.org/pdf/1312.4659.pdf Источник]]]]
 
|}
 
|}
DeepPose<ref name="DeepPose">[https://arxiv.org/pdf/1312.4659.pdf/ DeepPose: Human Pose Estimation via Deep Neural Networks, Alexander Toshev, Christian Szegedy, 2014]</ref> {{---}} первая значимая разработка с использованием [[глубокое обучение|глубокого обучения]] для задачи определения положения человека. Модель продемонстрировала высокую эффективность и превзошла существовавшие на тот момент решения. В этом подходе оценка позы формулируется как задача [[Сверточные нейронные сети|CNN]]-[[линейная регрессия|регрессии]] по суставам (ключевым точкам) тела. Для большей эффективности используется каскад из нескольких [[Сверточные нейронные сети|CNN]]. Важной особенностью является то, что обрабатывается человек целиком, что позволяет корректно определять позу, даже если некоторые суставы скрыты.
+
DeepPose<ref name="DeepPose">[https://arxiv.org/pdf/1312.4659.pdf DeepPose: Human Pose Estimation via Deep Neural Networks, Alexander Toshev, Christian Szegedy, 2014]</ref> {{---}} первая значимая разработка с использованием [[глубокое обучение|глубокого обучения]] для задачи определения положения человека. Модель продемонстрировала высокую эффективность и превзошла существовавшие на тот момент решения.  
 +
 
 +
Оценка позы формулируется как задача совместной [[линейная регрессия|регрессии]] по ключевым точкам (англ. ''Joint'') и решается при помощи [[сверточные нейронные сети|сверточных нейронных сетей]] [[глубокое обучение|глубокого обучения]] (англ. ''convolutional DNN''). Полное изображение и 7-слойная обобщенная глубокая [[сверточные нейронные сети|сверточная нейронная сеть]] используются в качестве входных данных для [[линейная регрессия|регрессии]] по местоположению каждого сустава тела. У этого решения есть два преимущества.
 +
 
 +
Во-первых, глубокая нейронная сеть (англ. DNN) может захватывать полный контекст каждой ключевой точки {{---}} каждый регрессор сустава использует полное изображение
 +
как входной сигнал.
 +
 
 +
Во-вторых, данный подход существенно проще формулируется в сравнении с методами, основанными на графических моделях {{---}} нет необходимости явно проектировать представления элементов и детекторы для отдельных частей тела; нет необходимости явно разрабатывать топологию модели и взаимодействия между суставами. Вместо этого для решения данной задачи можно обучить обобщенную сверточную DNN.
 +
 
 +
Кроме того, авторы используют каскад основанных на DNN предсказателей позы. Такой каскад позволяет повысить точность (англ. precision) совместной локализации ключевых точек. Начиная с начальной оценки позы, на основе полного изображения обучаются регрессоры на основе DNN, который уточняют совместные прогнозы с помощью фрагментов изображений с более высоким разрешением.
 +
 
 +
Важной особенностью является то, что обрабатывается человек целиком, что позволяет корректно определять позу, даже если некоторые суставы скрыты.
  
Если рассматривать архитектуру, модель основана на AlexNet<ref name="alexNet">[https://neurohive.io/ru/vidy-nejrosetej/alexnet-svjortochnaja-nejronnaja-set-dlja-raspoznavanija-izobrazhenij/ Сверточная нейросеть AlexNet, Павел Глек, 2018]</ref> (7 слоёв) и дополнительном финальном слое, выводящем пары координат ключевых точек. Обучение модели производится с использованием [[функция потерь и эмпирический риск|функции потерь]] L2<ref name="regularization">[http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F L2 регуляризация]</ref> для регрессии (англ. ''L2 loss for regression'').
+
С архитектурной точки зрения модель основана на AlexNet<ref name="alexNet">[https://neurohive.io/ru/vidy-nejrosetej/alexnet-svjortochnaja-nejronnaja-set-dlja-raspoznavanija-izobrazhenij/ Сверточная нейросеть AlexNet, Павел Глек, 2018]</ref> (7 слоёв) и дополнительном финальном слое, выводящем пары координат ключевых точек. Обучение модели производится с использованием [[функция потерь и эмпирический риск|функции потерь]] L2<ref name="regularization">[http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F L2 регуляризация]</ref> для регрессии (англ. ''L2 loss for regression'').
 
{|align="left"
 
{|align="left"
 
|-valign="top"
 
|-valign="top"
|[[file:Deepposeschema.PNG|800px|thumb| [https://arxiv.org/pdf/1312.4659.pdf Рисунок 7 Слева: схематичное изображение глубокой нейронной сети для регрессии. Мы визуализируем слои сети с соответствующими размерами, где сверточные слои {{---}} голубые, а полностью связные {{---}} зеленые. Параметр свободных слоёв не показан. <br>Справа: на шаге s, a уточняющий регрессор применяется на фрагменте изображения чтобы улучшить результат предыдущего шага]]]
+
|[[file:Deepposeschema.PNG|800px|thumb| Рисунок 7 Слева: схематичное изображение глубокой нейронной сети для регрессии. Мы визуализируем слои сети с соответствующими размерами, где сверточные слои {{---}} голубые, а полносвязные {{---}} зеленые. Параметр свободных слоёв не показан. <br>Справа: на шаге $s$, a уточняющий регрессор применяется на фрагменте изображения чтобы улучшить результат предыдущего шага  
 +
[[https://arxiv.org/pdf/1312.4659.pdf Источник]]]]
 
|}
 
|}
 
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
 
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
 +
{|align="right"
 +
|-valign="top"
 +
|[[file:Deepposepcp.png|400px|thumb| Рисунок 8 [[https://arxiv.org/pdf/1312.4659.pdf Источник]]]]
 +
|}
 +
Оценка эффективности решения проводилась на нескольких наборах данных, в частности на LSP (Leeds sports dataset)<ref name="LSP">[https://sam.johnson.io/research/lsp.html LSP dataset]</ref> и FLIC (Frames Labeled In Cinema)<ref name="FLIC">[https://bensapp.github.io/flic-dataset.html FLIC dataset]</ref>. На наборе данных LSP оценивался процент корректно определенных частей (англ. ''Percentage of Correct Parts'', '''''PCP'''''). Сводная таблица представлена на рисунке 8. Оценка производилась на первом, втором и третьем слоях, а также на пяти других решениях: Dantone et al.<ref name="Dantone">M. Dantone, J. Gall, C. Leistner, and L. Van Gool. Human pose estimation using body parts dependent joint regressors. In CVPR, 2013</ref>, Tian et al.<ref name="Tian">Y. Tian, C. L. Zitnick, and S. G. Narasimhan. Exploring the spatial hierarchy of mixture models for human pose estimation. In ECCV, 2012</ref>, Johnson et al.<ref name="Johnson">S. Johnson and M. Everingham. Learning effective human pose estimation from inaccurate annotation. In CVPR, 2011</ref>, Wang et al.<ref name="Wang">F. Wang and Y. Li. Beyond physical connections: Tree models in human pose estimation. In CVPR, 2013</ref>, Pishchulin<ref name="Pishchulin">L. Pishchulin, M. Andriluka, P. Gehler, and B. Schiele. Poselet conditioned pictorial structures. In CVPR, 2013</ref>. Наилучший результат в столбце выделен жирным.
 +
<br><br><br><br><br><br><br>
  
===DeepCut===
+
===AlphaPose (2015)===
 
{|align="right"
 
{|align="right"
 
|-valign="top"
 
|-valign="top"
|[[file:Deepcutexamle.png|400px|thumb| [https://arxiv.org/pdf/1511.06645.pdf Рисунок 8]]]
+
|[[file:AlphaPoseResult.png|300px|thumb| Рисунок 9. Результат работы AlphaPose. [[https://arxiv.org/pdf/1612.00137.pdf Источник]]]]
 
|}
 
|}
DeepCut<ref name="DeepCut">[https://arxiv.org/pdf/1511.06645.pdf DeepCut: Joint Subset Partition and Labeling for Multi Person Pose Estimation, Leonid Pishchulin, Eldar Insafutdinov, Siyu Tang, Bjoern Andres, Mykhaylo Andriluka, Peter Gehler, and Bernt Schiele, 2016]</ref> решает задачу определения поз для нескольких людей (англ. ''Multi person estimation''). Данный подход предполагает одновременное решение задач определения частей тела и отделения друг от друга частей тела разных людей: определяется количество людей в сцене, идентифицируются закрытые части тела и устраняется неоднозначность частей тела людей, находящихся в непосредственной близости друг от друга. Это отличает данное решение от многих других, сначала выявляющих людей, а затем оценивающие их положения. Авторы предлагают разделение и разметку набора гипотез о частях тела, созданных с помощью детекторов частей на основе [[сверточные нейронные сети|CNN]]. Неявно выполняется не-максимальное подавление (англ. ''Non-maximum Suppression'', '''NMS'''<ref name="NMS">[https://towardsdatascience.com/non-maximum-suppression-nms-93ce178e177c Non-maximum Suppression, Sambasivarao. K, 2019]</ref>) для набора возможных частей и производится группировка, чтобы сформировать конфигурации частей тела с учетом геометрических ограничений и ограничений внешнего вида.
+
AlphaPose<ref name="AlphaPose">[https://arxiv.org/abs/1612.00137 RMPE: Regional Multi-Person Pose Estimation, Hao-Shu Fang1, Shuqin Xie, Yu-Wing Tai, Cewu Lu1, 2018]</ref> позволяет решать проблему определения положения как одного, так и нескольких человек в режиме реального времени. Данное решение задачи региональной оценки позы для нескольких человек (англ. ''Region Multi Person Estimation'', '''''RMPE''''') призвано облегчить оценку позы при наличии неточных окружающих рамок (англ. ''bounding box'') человека. Решение доступно для общего пользования и опубликовано на [https://github.com/MVIG-SJTU/AlphaPose GitHub].
 +
 
 +
 
 +
Структура решения состоит из трех компонентов: симметричная сеть пространственных преобразователей (англ. ''Symmetric Spatial Transformer Network'', '''''SSTN'''''), параметрическое не-максимальное подавление позы (англ. ''Parametric Pose Non-maximum Suppression'', '''NMS'''<ref name="NMS">[https://towardsdatascience.com/non-maximum-suppression-nms-93ce178e177c Non-maximum Suppression, Sambasivarao. K, 2019]</ref>)) и генератор предложений с указанием позы (англ. ''Pose-Guided Proposals Generator'', '''''PGPG''''').
 +
 
 +
На рисунке 10 показан процесс работы решения. Сеть симметричных пространственных преобразователей состоит из сети пространственных преобразователей (англ. ''Spatial Transformer Network'', '''''STN''''') и сети обратных пространственных преобразований (англ. ''Spatial De-Transformer Network'', '''''SDTN'''''). Модуль '''''STN''''' отдает результаты своей работы на вход определителю поз (англ. ''Single Person Pose Estimator'', '''''SPPE'''''), который, в свою очередь отдает свои результаты модулю '''''SDTN'''''. '''''STN''''' получает предположения относительно людей {{---}} выделенные окружающими рамками потенциальные фигуры, а '''''SDTN''''' генерирует окончательные предположения о позах людей.  Параллельный определитель поз (англ. ''Single Person Pose Estimator'', '''''SPPE''''') действует как дополнительный регуляризатор на этапе обучения. Наконец, выполняется параметрическое не-максимальное подавление позы (англ. ''Parametric Pose Non-maximum Suppression'', '''NMS'''<ref name="NMS">[https://towardsdatascience.com/non-maximum-suppression-nms-93ce178e177c Non-maximum Suppression, Sambasivarao. K, 2019]</ref>) для устранения избыточных оценок позы. В отличие от традиционного обучения, мы обучаем модуль '''''SSTN + SPPE''''' на изображениях, сгенерированных генератором предложений с указанием позы (англ. ''Pose-Guided Proposals Generator'', '''''PGPG''''').
 +
 
 +
Если говорить о внутренних нюансах реализации решения, '''''STN''''' базируется на ResNet18<ref name="ResNet">[https://docs.exponenta.ru/deeplearning/ref/resnet18.html Non-maximum ResNet18]</ref>, детектор людей {{---}} на VGG<ref name="VGG">[https://arxiv.org/abs/1409.1556 Very Deep Convolutional Networks for Large-Scale Image Recognition
 +
Karen Simonyan, Andrew Zisserman, 2014]</ref> SSD-500<ref name="SSD">[https://arxiv.org/abs/1512.02325 SSD: Single Shot MultiBox Detector, Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott Reed, Cheng-Yang Fu, Alexander C. Berg, 2015]</ref>, '''''SPPE''''' представляет собой 8 последовательных сетей вида "песочые часы" (англ. ''8-stack hourglass network''<ref name="hourglassnetwork">[https://arxiv.org/abs/1603.06937 Stacked Hourglass Networks for Human Pose Estimation, Alejandro Newell, Kaiyu Yang, Jia Deng, 2016]</ref>).
  
Пример работы алгоритма, рисунок 8: (a) начальное определение возможных частей и попарных связей между всеми обнаруженными частями, которые (b) кластеризуются по принадлежности одному человеку (один цвет - один человек) и каждая часть помечается меткой соответствующего этой части класса (разные цвета и символы относятся к разным частям тела); (c) демонстрация результата.
+
{|align="left"
<br><br><br><br><br><br><br><br><br><br><br>
+
|-valign="top"
 +
|[[file:AlphaPose.png|800px|thumb| Рисунок 10. Процесс работы решения. [[https://arxiv.org/pdf/1612.00137.pdf Источник]]]]
 +
|}
 +
<br><br><br><br><br><br><br><br><br><br><br><br>
 +
Так как AlphaPose, как и OpenPose, является решением, работающим в реальном времени, то сравнение этих двух решений наиболее интересно. На наборе данных MPII Human Pose<ref name="MPII">[http://human-pose.mpi-inf.mpg.de/ MPII Human Pose]</ref> было выполнено сравнение вероятности корректности определения ключевой точки (англ. ''Probability of Correct Keypoint'', '''''PCK'''''). Результаты представлены в таблице на рисунке 11.
  
===OpenPose===
 
 
{|align="left"
 
{|align="left"
 
|-valign="top"
 
|-valign="top"
|[[file:Openpose.jpg|300px|thumb| [https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/README.md Рисунок 9 Примеры результатов работы алгоритма]]]
+
|[[file:AlphaPoseTestResults.png|800px|thumb| Рисунок 11. Результаты на датасете MPII в сравнении с OpenPose. [[https://arxiv.org/pdf/1612.00137.pdf Источник]]]]
 
|}
 
|}
OpenPose<ref name="OpenPose">[https://arxiv.org/pdf/1812.08008.pdf OpenPose: Realtime Multi-Person 2D Pose
 
Estimation using Part Affinity Fields Zhe Cao, Gines Hidalgo, Tomas Simon, Shih-En Wei, and Yaser Sheikh, 2019]</ref> {{---}} первая система, решающая задачу определения поз для нескольких людей (англ. ''Multi person estimation'') в режиме реального времени. Определяет 135 ключевых точек для каждого человека. Поддерживает определение не только крупных частей, но и отдельных пальцев и их движений. Для обучения использовался CMU Panoptic Studio dataset<ref name="CMU Panoptic Studio dataset">[http://domedb.perception.cs.cmu.edu/ CMU Panoptic Studio dataset]</ref>, состоящий из съемок людей с большого числа ракурсов в специальном куполе, оснащенном 500 камерами<ref name="OpenPose – ИИ для понимания роботами языка тела из CMU">[https://robotics.ua/news/ai/6256-cmu_openpose_ai_dlya_ponimaniya_robotami_yazyka_tela ИИ для понимания роботами языка тела из CMU, 2017]</ref>.
 
 
<br><br><br><br><br><br><br><br>
 
<br><br><br><br><br><br><br><br>
 +
 +
===DeepCut (2016)===
 +
{|align="right"
 +
|-valign="top"
 +
|[[file:Deepcutexamle.png|400px|thumb| Рисунок 12 [[https://arxiv.org/pdf/1511.06645.pdf Источник]]]]
 +
|}
 +
DeepCut<ref name="DeepCut">[https://arxiv.org/pdf/1511.06645.pdf DeepCut: Joint Subset Partition and Labeling for Multi Person Pose Estimation, Leonid Pishchulin, Eldar Insafutdinov, Siyu Tang, Bjoern Andres, Mykhaylo Andriluka, Peter Gehler, and Bernt Schiele, 2016]</ref> решает задачу определения поз для нескольких людей (англ. ''Multi person Pose estimation'') и находится в открытом [https://github.com/eldar/deepcut доступе].
 +
 +
Данный подход предполагает одновременное решение задач определения частей тела и отделения друг от друга частей тела разных людей: определяется количество людей в сцене, идентифицируются закрытые части тела и устраняется неоднозначность частей тела людей, находящихся в непосредственной близости друг от друга. Это отличает данное решение от многих других, сначала выявляющих людей, а затем оценивающие их положения.
 +
 +
Авторы предлагают разделение и разметку набора гипотез о частях тела, созданных с помощью детекторов частей на основе [[сверточные нейронные сети|CNN]]. Неявно выполняется не-максимальное подавление (англ. ''Non-maximum Suppression'', '''NMS'''<ref name="NMS">[https://towardsdatascience.com/non-maximum-suppression-nms-93ce178e177c Non-maximum Suppression, Sambasivarao. K, 2019]</ref>) для набора возможных частей и производится группировка, чтобы сформировать конфигурации частей тела с учетом геометрических ограничений и ограничений внешнего вида.
 +
 +
Пример работы алгоритма представлен на рисунке 12: (a) начальное определение возможных частей и попарных связей между всеми обнаруженными частями, которые (b) кластеризуются по принадлежности одному человеку (один цвет {{---}} один человек) и каждая часть помечается меткой соответствующего этой части класса (разные цвета и символы относятся к разным частям тела); (c) демонстрация результата.
 +
 +
Для оценки эффективности решения проводилось сравнение нескольких вариантов архитектуры, использующих DeepCut друг с другом и с тремя другими решениями. Использовались наборы данных LSP (Leeds Sport Poses)<ref name="LSP">[https://sam.johnson.io/research/lsp.html LSP dataset]</ref>, LSPET (LSP Extended)<ref name="LSPET">[https://dbcollection.readthedocs.io/en/latest/datasets/leeds_sports_pose_extended.html LSPET dataset]</ref> и MPII Human Pose<ref name="MPII">[http://human-pose.mpi-inf.mpg.de/ MPII Human Pose]</ref>. Были рассмотрены два варианта архитектуры, использующие DeepCut SP (Single Person) и DeepCut MP (Multi Person), совмещающие в себе DeepCut и адаптированная быстрая [[сверточные нейронные сети|сверточная нейронная сеть]] на основе регионов (англ. ''Adapted Fast R-CNN''<ref name="FastR-CNN">[https://arxiv.org/abs/1504.08083 Fast R-CNN, Ross Girshick, 2015]</ref>, '''''AFR-CNN''''') в одном случае и DeepCut и плотные [[сверточные нейронные сети]] (англ. ''Dense-CNN'') в другом. Также в сравнении участвовали решения Tompson et al.<ref name="Tompson">[J. J. Tompson, A. Jain, Y. LeCun, and C. Bregler. Joint training of a convolutional network and a graphical model for human pose estimation. In NIPS’14]</ref>, Chen&Yuille<ref name="Chen&Yuille">[X. Chen and A. Yuille. Articulated pose estimation by a graphical model with image dependent pairwise relations. In NIPS’14]</ref>, Fan et al.<ref name="Fan">[X. Fan, K. Zheng, Y. Lin, and S. Wang. Combining local appearance and holistic view: Dual-source deep neural networks for human pose estimation. In CVPR’15]</ref>.
 +
 +
Оценивалась вероятность корректности определения ключевой точки (англ. ''Probability of Correct Keypoint'', '''''PCK'''''). На рисунке 13 представлены графики данной величины от нормализованного расстояния между ключевыми точками (близкорасположенные точки корректно определить сложнее). На рисунке 14 {{---}} таблица, отражающая качество определения тех или иных частей тела, вероятности корректности определения ключевой точки (PCK) и площадь под кривой ошибок (англ. ''area under ROC curve'', '''''AUC''''').
 +
 +
{|align="left"
 +
|-valign="top"
 +
|[[file:Deepcutgraphics.png|400px|thumb| Рисунок 13 [[https://arxiv.org/pdf/1511.06645.pdf Источник]]]]
 +
|[[file:Deepcuttable.png|400px|thumb| Рисунок 14 [[https://arxiv.org/pdf/1511.06645.pdf Источник]]]]
 +
|}
 +
<br><br><br><br><br><br><br><br><br><br><br><br>
 +
 +
===OpenPose (2019)===
 +
{|align="left"
 +
|-valign="top"
 +
|[[file:Openpose.jpg|300px|thumb| Рисунок 15 Примеры результатов работы алгоритма [[https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/README.md Источник]]]]
 +
|}
 +
OpenPose<ref name="OpenPose">[https://arxiv.org/pdf/1812.08008.pdf OpenPose: Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields, Zhe Cao, Gines Hidalgo, Tomas Simon, Shih-En Wei, and Yaser Sheikh, 2019]</ref> {{---}} первая система, решающая задачу определения поз для нескольких людей (англ. ''Multi person Pose estimation'') в режиме реального времени c открытым [https://github.com/CMU-Perceptual-Computing-Lab/openpose исходным кодом].
 +
 +
Определяет 135 ключевых точек для каждого человека. Поддерживает определение не только крупных частей, но и отдельных пальцев и их движений. Для обучения использовался CMU Panoptic Studio dataset<ref name="CMU Panoptic Studio dataset">[http://domedb.perception.cs.cmu.edu/ CMU Panoptic Studio dataset]</ref>, состоящий из съемок людей с большого числа ракурсов в специальном куполе, оснащенном 500 камерами<ref name="OpenPose – ИИ для понимания роботами языка тела из CMU">[https://robotics.ua/news/ai/6256-cmu_openpose_ai_dlya_ponimaniya_robotami_yazyka_tela ИИ для понимания роботами языка тела из CMU, 2017]</ref>.
 +
<br><br><br><br><br><br><br>
 +
{|align="left"
 +
|-valign="top"
 +
|[[file:Openpose example.png|800px|thumb|Рисунок 16 [[https://arxiv.org/pdf/1611.08050.pdf Источник]]]]
 +
|}
 +
<br><br><br><br><br><br><br><br><br><br>
 
{|align="right"
 
{|align="right"
 
|-valign="top"
 
|-valign="top"
|[[file:Openpose vs competition.png|300px|thumb| [https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/README.md Рисунок 10]]]
+
|[[file:Openposeschema.png|500px|thumb|Рисунок 17 [[https://arxiv.org/pdf/1611.08050.pdf Источник]]]]
|}  
+
|}
Важной особенностью является скорость работы данного решения. На рисунке 10 представлено сравнение времени работы трех доступных библиотек, решающих задачу определения положения человека (в одинаковых условиях на одинаковом аппаратном обеспечении): OpenPose, Alpha-Pose (fast Pytorch version), и Mask R-CNN. Время исполнения OpenPose является константным, в то время как у Alpha-Pose и Mask R-CNN линейно растет с числом людей на исходных данных.
+
 
<br><br>
+
Логика архитектуры OpenPose следующая: во-первых, входное RGB-изображение (рисунок 16а) подается как вход в многослойную CNN с двумя ветвями.  
Архитектура решения кратко изображена на рисунке 11: решение является многослойной CNN с двумя ветвями. Каждый слой в первой ветви предсказывает карту уверенности S^t, и каждый слой второй ветви предсказывает сходство фрагментов (англ. ''PAFs'') L^t. После каждого слоя, результаты каждой ветви, вместе с признаками изображения, объединяются для следующего слоя.
+
 
 +
Две ветви означают, что CNN производит два разных вывода. На рисунке 17 верхняя ветвь, показанная бежевым цветом, предсказывает карты достоверности (англ. ''confidence map'') (рисунок 16b) расположения различных частей тела. Нижняя ветвь, показанная синим цветом, предсказывает поля сходства фрагментов (англ. ''affinity field'', '''''PAFs''''') (рисунок 16c), которые представляют степень связи между различными частями тела.
 +
 
 +
Многослойность означает следующее: на первом слое (левая половина рисунка 17) сеть создает начальный набор карт достоверности обнаружения $S$ и набор полей сходства для части $L$. Затем на каждом последующем слое (правая половина рисунка 17) прогнозы из обеих ветвей на предыдущем этапе и характеристики исходного изображения $F$, объединяются (объединение обозначено знаком $+$ на рисунке 17) и используются для получения более точных прогнозов. В реализации OpenPose последним этапом $t$ выбран шестой.
 +
 
 +
На рисунке 18 показаны преимущества многослойной архитектуры. В этом примере мы наблюдаем некоторую начальную путаницу между левой и правой частями тела на первых нескольких этапах. Но по мере того, как слой увеличивается, сеть начинает лучше различать их.
 +
 
 +
В конце карты достоверности и поля сходства обрабатываются методом жадного вывода<ref name="GreedyInference">[https://vtechworks.lib.vt.edu/handle/10919/81860 Greedy Inference Algorithms for Structured and Neural Models, Sun, Qing, 2018]</ref> (рисунок 16d) для вывода двумерных ключевых точек для всех людей на изображении (рисунок 16e).
 
{|align="left"
 
{|align="left"
 
|-valign="top"
 
|-valign="top"
|[[file:Openposeschema.png|500px|thumb| [https://arxiv.org/pdf/1611.08050.pdf Рисунок 11]]]
+
|[[file:Openposestagebystage.png|600px|thumb|Рисунок 18. Результаты на слоях 1, 3 и 6 [[https://arxiv.org/pdf/1611.08050.pdf Источник]]]]
 +
|}
 +
 
 +
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
 +
{|align="right"
 +
|-valign="top"
 +
|[[file:Openpose vs competition.png|300px|thumb| Рисунок 19 [[https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/README.md Источник]]]]
 
|}
 
|}
<br><br><br><br><br><br><br><br><br><br><br><br><br>
+
Важной особенностью является скорость работы данного решения. На рисунке 18 представлено сравнение времени работы трех доступных библиотек, решающих задачу определения положения человека (в одинаковых условиях на одинаковом аппаратном обеспечении): OpenPose, Alpha-Pose<ref name="Alpha-Pose">[https://github.com/MVIG-SJTU/AlphaPose AlphaPose, Hao-Shu Fang, Shuqin Xie, Yu-Wing Tai and Cewu Lu, 2018]</ref> (fast Pytorch version), и Mask R-CNN<ref name="MaskR-CNN">[https://arxiv.org/abs/1703.06870 Mask R-CNN, Kaiming He, Georgia Gkioxari, Piotr Dollár, Ross Girshick, 2018]</ref>. Время исполнения OpenPose является постоянным, в то время как у Alpha-Pose и Mask R-CNN линейно растет с числом людей на исходных данных.
 +
<br><br><br><br><br><br><br><br><br><br>
  
 
== См. также ==
 
== См. также ==
Строка 93: Строка 171:
 
* [https://arxiv.org/abs/1511.06645 DeepCut: Joint Subset Partition and Labeling for Multi Person Pose Estimation, Leonid Pishchulin, Eldar Insafutdinov, Siyu Tang, Bjoern Andres, Mykhaylo Andriluka, Peter Gehler, Bernt Schiele, 2016]
 
* [https://arxiv.org/abs/1511.06645 DeepCut: Joint Subset Partition and Labeling for Multi Person Pose Estimation, Leonid Pishchulin, Eldar Insafutdinov, Siyu Tang, Bjoern Andres, Mykhaylo Andriluka, Peter Gehler, Bernt Schiele, 2016]
 
* [https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/README.md OpenPose github page]
 
* [https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/README.md OpenPose github page]
 +
* [https://medium.com/analytics-vidhya/understanding-openpose-with-code-reference-part-1-b515ba0bbc73 Understanding OpenPose (with code reference)— Part 1]
 +
* [https://arxiv.org/pdf/1612.00137.pdf RMPE: Regional Multi-Person Pose Estimation, Hao-Shu Fang1, Shuqin Xie1, Yu-Wing Tai2, Cewu Lu, 2018]
 +
* [https://www.mvig.org/research/alphapose.html Shanghai Jiao Tong University, Machine Vision and Intelligence Group]
 +
* [https://arxiv.org/abs/1612.00137 RMPE: Regional Multi-Person Pose Estimation, Hao-Shu Fang1, Shuqin Xie, Yu-Wing Tai, Cewu Lu, 2018]
 +
* [https://arxiv.org/pdf/1812.08008.pdf OpenPose: Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields, Zhe Cao, Gines Hidalgo, Tomas Simon, Shih-En Wei, and Yaser Sheikh, 2019]
  
 
[[Категория: Машинное обучение]]
 
[[Категория: Машинное обучение]]
 
[[Категория: Компьютерное зрение]]
 
[[Категория: Компьютерное зрение]]

Текущая версия на 19:27, 4 сентября 2022

Определение положения человека (англ. Human pose estimation) — частный случай задачи сегментации изображения из раздела компьютерного зрения о нахождении и локализации частей тела человека на изображениях или видео (рассматривается как последовательность изображений). Чаще всего позицией человека называют набор соединённых ключевых точек (англ. Joint), соответствующих суставам (плечи, локти, кисти, тазобедренные суставы, колени, стопы) и другим ключевым точкам (шея, голова, центр торса). Эту задачу можно рассматривать в двух или трёх измерениях, от чего зависит сложность задачи и практические применения результатов. Также задачу можно разделить на два подтипа: определение положения для одного человека (англ. Single Person Pose Estimation), определение положения для нескольких человек (англ. Multi Person Pose Estimation)

Постановка задачи

Определение положения одного человека (англ. Single Person Pose Estimation)

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

Рисунок 1 Исходная картинка. [Источник]
Рисунок 2 Результат работы алгоритма для одного человека. [Источник]


















Определение положений нескольких людей (англ. Multi Person Pose Estimation)

Эта задача имеет более высокую сложность, так как необходимо обнаружить множество человек на изображении, а затем определить положение для каждого человека из множества обнаруженных людей. Основная сложность в том, чтобы корректно определить и отличить друг от друга части тела, принадлежащие разным людям, а также решить все сложности связанные с Single Person Pose Estimation.

Рисунок 3 Исходная картинка с несколькими людьми [Источник]
Рисунок 4 Промежуточный этап разделения людей [Источник]
Рисунок 5 Итоговый результат работы алгоритма [Источник]
















Область применения

  1. Кинематограф и анимация — популярные технологии CGI[1] (англ. computer-generated imagery, буквально «изображения, сгенерированные компьютером») и захват движения[2] (англ. Motion capture), позволяют создавать движущиеся изображения и графику, используя для анимации движения специального актера. Несмотря на то, что в настоящий момент чаще используется маркерный способ, при котором актер надевает костюм с датчиками движения, в последние годы большое развитие получил безмаркерный способ, основанный на компьютерном зрении.
  2. Видеоигры — широко применяется в дополненной реальности (англ. Augmented Reality, AR[3]) и виртуальной реальности (англ. Virtual Reality, VR[4]). Также в консольных игровых решениях используется трекинг (англ. Motion tracking), отслеживающий положения игрока в некотором радиусе перед камерой. Помимо этого, определение положения человека необходимо непосредственно в производстве видеоигр, для этого, опять же, используется технология CGI[1].
  3. Человеко-компьютерное взаимодействие (англ. Human-computer interaction) — здесь определение положения человека используется для взаимодействия с роботами или компьютерами, для отдачи команд компьютерным системам. Примером такого взаимодействия можно назвать уже упомянутый захват движения при игре на консолях.
  4. Биомеханика спорта (англ. Sport motion analysis) — анализ движений при тренировке и соревнованиях. Используется для лучшего понимания процессов, происходящих при занятии спортом, для предотвращения травм и растяжений, и для установления новых рекордов. Информация, полученная в ходе анализа, используется также для создания профессионального инвентаря.

Методы решения

DeepPose (2014)

Рисунок 6 Примеры результатов работы алгоритма [Источник]

DeepPose[5] — первая значимая разработка с использованием глубокого обучения для задачи определения положения человека. Модель продемонстрировала высокую эффективность и превзошла существовавшие на тот момент решения.

Оценка позы формулируется как задача совместной регрессии по ключевым точкам (англ. Joint) и решается при помощи сверточных нейронных сетей глубокого обучения (англ. convolutional DNN). Полное изображение и 7-слойная обобщенная глубокая сверточная нейронная сеть используются в качестве входных данных для регрессии по местоположению каждого сустава тела. У этого решения есть два преимущества.

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

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

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

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

С архитектурной точки зрения модель основана на AlexNet[6] (7 слоёв) и дополнительном финальном слое, выводящем пары координат ключевых точек. Обучение модели производится с использованием функции потерь L2[7] для регрессии (англ. L2 loss for regression).

Рисунок 7 Слева: схематичное изображение глубокой нейронной сети для регрессии. Мы визуализируем слои сети с соответствующими размерами, где сверточные слои — голубые, а полносвязные — зеленые. Параметр свободных слоёв не показан.
Справа: на шаге $s$, a уточняющий регрессор применяется на фрагменте изображения чтобы улучшить результат предыдущего шага [Источник]
















Рисунок 8 [Источник]

Оценка эффективности решения проводилась на нескольких наборах данных, в частности на LSP (Leeds sports dataset)[8] и FLIC (Frames Labeled In Cinema)[9]. На наборе данных LSP оценивался процент корректно определенных частей (англ. Percentage of Correct Parts, PCP). Сводная таблица представлена на рисунке 8. Оценка производилась на первом, втором и третьем слоях, а также на пяти других решениях: Dantone et al.[10], Tian et al.[11], Johnson et al.[12], Wang et al.[13], Pishchulin[14]. Наилучший результат в столбце выделен жирным.






AlphaPose (2015)

Рисунок 9. Результат работы AlphaPose. [Источник]

AlphaPose[15] позволяет решать проблему определения положения как одного, так и нескольких человек в режиме реального времени. Данное решение задачи региональной оценки позы для нескольких человек (англ. Region Multi Person Estimation, RMPE) призвано облегчить оценку позы при наличии неточных окружающих рамок (англ. bounding box) человека. Решение доступно для общего пользования и опубликовано на GitHub.


Структура решения состоит из трех компонентов: симметричная сеть пространственных преобразователей (англ. Symmetric Spatial Transformer Network, SSTN), параметрическое не-максимальное подавление позы (англ. Parametric Pose Non-maximum Suppression, NMS[16])) и генератор предложений с указанием позы (англ. Pose-Guided Proposals Generator, PGPG).

На рисунке 10 показан процесс работы решения. Сеть симметричных пространственных преобразователей состоит из сети пространственных преобразователей (англ. Spatial Transformer Network, STN) и сети обратных пространственных преобразований (англ. Spatial De-Transformer Network, SDTN). Модуль STN отдает результаты своей работы на вход определителю поз (англ. Single Person Pose Estimator, SPPE), который, в свою очередь отдает свои результаты модулю SDTN. STN получает предположения относительно людей — выделенные окружающими рамками потенциальные фигуры, а SDTN генерирует окончательные предположения о позах людей. Параллельный определитель поз (англ. Single Person Pose Estimator, SPPE) действует как дополнительный регуляризатор на этапе обучения. Наконец, выполняется параметрическое не-максимальное подавление позы (англ. Parametric Pose Non-maximum Suppression, NMS[16]) для устранения избыточных оценок позы. В отличие от традиционного обучения, мы обучаем модуль SSTN + SPPE на изображениях, сгенерированных генератором предложений с указанием позы (англ. Pose-Guided Proposals Generator, PGPG).

Если говорить о внутренних нюансах реализации решения, STN базируется на ResNet18[17], детектор людей — на VGG[18] SSD-500[19], SPPE представляет собой 8 последовательных сетей вида "песочые часы" (англ. 8-stack hourglass network[20]).

Рисунок 10. Процесс работы решения. [Источник]













Так как AlphaPose, как и OpenPose, является решением, работающим в реальном времени, то сравнение этих двух решений наиболее интересно. На наборе данных MPII Human Pose[21] было выполнено сравнение вероятности корректности определения ключевой точки (англ. Probability of Correct Keypoint, PCK). Результаты представлены в таблице на рисунке 11.

Рисунок 11. Результаты на датасете MPII в сравнении с OpenPose. [Источник]









DeepCut (2016)

Рисунок 12 [Источник]

DeepCut[22] решает задачу определения поз для нескольких людей (англ. Multi person Pose estimation) и находится в открытом доступе.

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

Авторы предлагают разделение и разметку набора гипотез о частях тела, созданных с помощью детекторов частей на основе CNN. Неявно выполняется не-максимальное подавление (англ. Non-maximum Suppression, NMS[16]) для набора возможных частей и производится группировка, чтобы сформировать конфигурации частей тела с учетом геометрических ограничений и ограничений внешнего вида.

Пример работы алгоритма представлен на рисунке 12: (a) начальное определение возможных частей и попарных связей между всеми обнаруженными частями, которые (b) кластеризуются по принадлежности одному человеку (один цвет — один человек) и каждая часть помечается меткой соответствующего этой части класса (разные цвета и символы относятся к разным частям тела); (c) демонстрация результата.

Для оценки эффективности решения проводилось сравнение нескольких вариантов архитектуры, использующих DeepCut друг с другом и с тремя другими решениями. Использовались наборы данных LSP (Leeds Sport Poses)[8], LSPET (LSP Extended)[23] и MPII Human Pose[21]. Были рассмотрены два варианта архитектуры, использующие DeepCut SP (Single Person) и DeepCut MP (Multi Person), совмещающие в себе DeepCut и адаптированная быстрая сверточная нейронная сеть на основе регионов (англ. Adapted Fast R-CNN[24], AFR-CNN) в одном случае и DeepCut и плотные сверточные нейронные сети (англ. Dense-CNN) в другом. Также в сравнении участвовали решения Tompson et al.[25], Chen&Yuille[26], Fan et al.[27].

Оценивалась вероятность корректности определения ключевой точки (англ. Probability of Correct Keypoint, PCK). На рисунке 13 представлены графики данной величины от нормализованного расстояния между ключевыми точками (близкорасположенные точки корректно определить сложнее). На рисунке 14 — таблица, отражающая качество определения тех или иных частей тела, вероятности корректности определения ключевой точки (PCK) и площадь под кривой ошибок (англ. area under ROC curve, AUC).

Рисунок 13 [Источник]
Рисунок 14 [Источник]













OpenPose (2019)

Рисунок 15 Примеры результатов работы алгоритма [Источник]

OpenPose[28] — первая система, решающая задачу определения поз для нескольких людей (англ. Multi person Pose estimation) в режиме реального времени c открытым исходным кодом.

Определяет 135 ключевых точек для каждого человека. Поддерживает определение не только крупных частей, но и отдельных пальцев и их движений. Для обучения использовался CMU Panoptic Studio dataset[29], состоящий из съемок людей с большого числа ракурсов в специальном куполе, оснащенном 500 камерами[30].






Рисунок 16 [Источник]











Рисунок 17 [Источник]

Логика архитектуры OpenPose следующая: во-первых, входное RGB-изображение (рисунок 16а) подается как вход в многослойную CNN с двумя ветвями.

Две ветви означают, что CNN производит два разных вывода. На рисунке 17 верхняя ветвь, показанная бежевым цветом, предсказывает карты достоверности (англ. confidence map) (рисунок 16b) расположения различных частей тела. Нижняя ветвь, показанная синим цветом, предсказывает поля сходства фрагментов (англ. affinity field, PAFs) (рисунок 16c), которые представляют степень связи между различными частями тела.

Многослойность означает следующее: на первом слое (левая половина рисунка 17) сеть создает начальный набор карт достоверности обнаружения $S$ и набор полей сходства для части $L$. Затем на каждом последующем слое (правая половина рисунка 17) прогнозы из обеих ветвей на предыдущем этапе и характеристики исходного изображения $F$, объединяются (объединение обозначено знаком $+$ на рисунке 17) и используются для получения более точных прогнозов. В реализации OpenPose последним этапом $t$ выбран шестой.

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

В конце карты достоверности и поля сходства обрабатываются методом жадного вывода[31] (рисунок 16d) для вывода двумерных ключевых точек для всех людей на изображении (рисунок 16e).

Рисунок 18. Результаты на слоях 1, 3 и 6 [Источник]
















Рисунок 19 [Источник]

Важной особенностью является скорость работы данного решения. На рисунке 18 представлено сравнение времени работы трех доступных библиотек, решающих задачу определения положения человека (в одинаковых условиях на одинаковом аппаратном обеспечении): OpenPose, Alpha-Pose[32] (fast Pytorch version), и Mask R-CNN[33]. Время исполнения OpenPose является постоянным, в то время как у Alpha-Pose и Mask R-CNN линейно растет с числом людей на исходных данных.









См. также

Примечания

  1. 1,0 1,1 CGI
  2. Захват движения
  3. Дополненная реальность
  4. Виртуальная реальность
  5. DeepPose: Human Pose Estimation via Deep Neural Networks, Alexander Toshev, Christian Szegedy, 2014
  6. Сверточная нейросеть AlexNet, Павел Глек, 2018
  7. L2 регуляризация
  8. 8,0 8,1 LSP dataset
  9. FLIC dataset
  10. M. Dantone, J. Gall, C. Leistner, and L. Van Gool. Human pose estimation using body parts dependent joint regressors. In CVPR, 2013
  11. Y. Tian, C. L. Zitnick, and S. G. Narasimhan. Exploring the spatial hierarchy of mixture models for human pose estimation. In ECCV, 2012
  12. S. Johnson and M. Everingham. Learning effective human pose estimation from inaccurate annotation. In CVPR, 2011
  13. F. Wang and Y. Li. Beyond physical connections: Tree models in human pose estimation. In CVPR, 2013
  14. L. Pishchulin, M. Andriluka, P. Gehler, and B. Schiele. Poselet conditioned pictorial structures. In CVPR, 2013
  15. RMPE: Regional Multi-Person Pose Estimation, Hao-Shu Fang1, Shuqin Xie, Yu-Wing Tai, Cewu Lu1, 2018
  16. 16,0 16,1 16,2 Non-maximum Suppression, Sambasivarao. K, 2019
  17. Non-maximum ResNet18
  18. [https://arxiv.org/abs/1409.1556 Very Deep Convolutional Networks for Large-Scale Image Recognition Karen Simonyan, Andrew Zisserman, 2014]
  19. SSD: Single Shot MultiBox Detector, Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott Reed, Cheng-Yang Fu, Alexander C. Berg, 2015
  20. Stacked Hourglass Networks for Human Pose Estimation, Alejandro Newell, Kaiyu Yang, Jia Deng, 2016
  21. 21,0 21,1 MPII Human Pose
  22. DeepCut: Joint Subset Partition and Labeling for Multi Person Pose Estimation, Leonid Pishchulin, Eldar Insafutdinov, Siyu Tang, Bjoern Andres, Mykhaylo Andriluka, Peter Gehler, and Bernt Schiele, 2016
  23. LSPET dataset
  24. Fast R-CNN, Ross Girshick, 2015
  25. [J. J. Tompson, A. Jain, Y. LeCun, and C. Bregler. Joint training of a convolutional network and a graphical model for human pose estimation. In NIPS’14]
  26. [X. Chen and A. Yuille. Articulated pose estimation by a graphical model with image dependent pairwise relations. In NIPS’14]
  27. [X. Fan, K. Zheng, Y. Lin, and S. Wang. Combining local appearance and holistic view: Dual-source deep neural networks for human pose estimation. In CVPR’15]
  28. OpenPose: Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields, Zhe Cao, Gines Hidalgo, Tomas Simon, Shih-En Wei, and Yaser Sheikh, 2019
  29. CMU Panoptic Studio dataset
  30. ИИ для понимания роботами языка тела из CMU, 2017
  31. Greedy Inference Algorithms for Structured and Neural Models, Sun, Qing, 2018
  32. AlphaPose, Hao-Shu Fang, Shuqin Xie, Yu-Wing Tai and Cewu Lu, 2018
  33. Mask R-CNN, Kaiming He, Georgia Gkioxari, Piotr Dollár, Ross Girshick, 2018

Источники информации