Изменения

Перейти к: навигация, поиск

Определение положения человека

2711 байт добавлено, 23:14, 22 января 2021
DeepPose (2013)
{{В разработке}}
'''Определение положения человека''' (англ. ''Human pose estimation'') {{---}} частный случай задачи [[Сегментация изображений | сегментации изображения]] из раздела [[Компьютерное зрение | компьютерного зрения]] о нахождении и локализации частей тела человека на изображениях или видео (рассматривается как последовательность изображений). Чаще всего позицией человека называют набор соединённых ключевых точек (англ. ''Joint''), соответствующих суставам (плечи, локти, кисти, тазобедренные суставы, колени, стопы) и другим ключевым точкам (шея, голова, центр торса). Эту задачу можно рассматривать в двух или трёх измерениях, от чего зависит сложность задачи и практические применения результатов. Также задачу можно разделить на два подтипа: определение положения для одного человека (англ. ''Single Person Pose Estimation''), определение положения для нескольких человек (англ. ''Multi Person Pose Estimation'')
== Постановка задачи ==
=== Определение положения одного человека (англ. ''Single Person Pose Estimation'') ===
Задача заключается в определении положения одного человека по фото или видео. Важным условием является то, что на изображении должен быть только один человек, иначе гарантировать корректное выполнение невозможно. В качестве результата необходимо получить набор соединённых точек, указывающих на соответствующие части тела. Сложности заключаются в том, чтобы отделить друг от друга разные части тела, корректно определять положение конечностей, скрытых за другими объектами, а также корректно отличать левые части тела от правых, независимо от поворота человека на изображении.
{|align="left"
|-valign="top"
|[[file:InputSingle.jpg|200px|thumb| Рисунок 1 Исходная картинка. [[http://sysu-hcp.net/lip/posechallenge.php Рисунок 1 Исходная картинкаx]]]]|[[file:outputSingle.jpg|200px|thumb| Рисунок 2 Результат работы алгоритма для одного человека. [[http://sysu-hcp.net/lip/posechallenge.php Рисунок 2 Результат работы алгоритма для одного человекаx]]]]
|}
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
=== Определение положений нескольких людей (англ. ''Multi Person Pose Estimation'') ===Эта задача имеет более высокую сложность, так как необходимо обнаружить множество человек на изображении, а затем определить положение для каждого человека из множества обнаруженных людей. Основная сложность в том, чтобы корректно определить и отличить друг от друга части тела, принадлежащие разным людям, а также решить все сложности связанные с '''Single Person Pose Estimation'''.
{|align="left"
|-valign="top"
|[[file:InputMulti.png|200px|thumb| Рисунок 3 Исходная картинка с несколькими людьми [[https://medium.com/beyondminds/an-overview-of-human-pose-estimation-with-deep-learning-d49eb656739b Рисунок 3 Исходная картинка с несколькими людьмиx]]]]|[[file:InnerMulti.png|200px|thumb| Рисунок 4 Промежуточный этап разделения людей [[https://medium.com/beyondminds/an-overview-of-human-pose-estimation-with-deep-learning-d49eb656739b Рисунок 4 Промежуточный этап разделения людейx]]]]|[[file:OutputMulti.png|200px|thumb| Рисунок 5 Итоговый результат работы алгоритма [[https://medium.com/beyondminds/an-overview-of-human-pose-estimation-with-deep-learning-d49eb656739b Рисунок 5 Итоговый результат работы алгоритмаx]]]]
|}
== Область применения ==
# '''Кинематограф и анимация''' {{---}} '''популярные технологии 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"/>.
# '''Человеко-компьютерное взаимодействие''' (англ. ''Human-computer interaction'') {{---}} здесь определение положения человека используется для взаимодействия с роботами или компьютерами, для отдачи команд компьютерным системам. Примером такого взаимодействия можно назвать уже упомянутый захват движения при игре на консолях.
== Методы решения ==
===DeepPose(2013)===
{|align="right"
|-valign="top"
|[[file:challenging.png|300px|thumb| Рисунок 6 Примеры результатов работы алгоритма [[https://arxiv.org/pdf/1312.4659.pdf Рисунок 6 Примеры результатов работы алгоритмаx]]]]
|}
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'') и решается при помощи [[сверточные нейронные сети|сверточной нейронной сети сверточных нейронных сетей]] [[глубокое обучение|глубокого обучения]] (англ. ''CNNconvolutional DNN''). Полное изображение и 7-слойная обобщенная [[сверточные нейронные сети|сверточная нейронная сеть]] [[глубокое обучение|глубокого обучения]] используются в качестве входных данных для [[линейная регрессия|регрессии]] по суставам местоположению каждого сустава тела. У этого решения есть два преимущества.Во-первых, глубокая нейронная сеть (ключевым точкамангл. DNN) может захватывать полный контекст каждой ключевой точки - каждый регрессор сустава использует полное изображениекак входной сигнал. Во-вторых, данный подход существенно проще формулируется в сравнении с методами, основанными на графических моделях - нет необходимости явно проектировать представления элементов и детекторы для отдельных частей тела; нет необходимости явно разрабатывать топологию модели и взаимодействия между суставами. Вместо этого для данной проблемы можно обучить обобщенную сверточную DNN. Для большей эффективности используется Кроме того, авторы используют каскад из нескольких [[Сверточные нейронные сети|CNN]]основанных на 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'').
{|align="left"
|-valign="top"
|[[file:Deepposeschema.PNG|800px|thumb| [https://arxiv.org/pdf/1312.4659.pdf Рисунок 7 Слева: схематичное изображение глубокой нейронной сети для регрессии. Мы визуализируем слои сети с соответствующими размерами, где сверточные слои {{---}} голубые, а полностью связные {{---}} зеленые. Параметр свободных слоёв не показан. <br>Справа: на шаге s, a уточняющий регрессор применяется на фрагменте изображения чтобы улучшить результат предыдущего шага [[https://arxiv.org/pdf/1312.4659.pdf x]]]]
|}
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
===DeepCut(2015)===
{|align="right"
|-valign="top"
|[[file:Deepcutexamle.png|400px|thumb| Рисунок 8 [[https://arxiv.org/pdf/1511.06645.pdf Рисунок 8x]]]]
|}
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>) для набора возможных частей и производится группировка, чтобы сформировать конфигурации частей тела с учетом геометрических ограничений и ограничений внешнего вида.
Пример работы алгоритма, рисунок 8: (a) начальное определение возможных частей и попарных связей между всеми обнаруженными частями, которые (b) кластеризуются по принадлежности одному человеку (один цвет - один человек) и каждая часть помечается меткой соответствующего этой части класса (разные цвета и символы относятся к разным частям тела); (c) демонстрация результата.
<br><br><br><br><br><br><br><br><br><br><br>
===OpenPose(2018)===
{|align="left"
|-valign="top"
|[[file:Openpose.jpg|300px|thumb| Рисунок 9 Примеры результатов работы алгоритма [[https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/README.md Рисунок 9 Примеры результатов работы алгоритмаx]]]]
|}
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><br>
{|align="right"
|-valign="top"
|[[file:Openpose vs competition.png|300px|thumb| Рисунок 10 [[https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/README.md Рисунок 10x]]]]
|}
Важной особенностью является скорость работы данного решения. На рисунке 10 представлено сравнение времени работы трех доступных библиотек, решающих задачу определения положения человека (в одинаковых условиях на одинаковом аппаратном обеспечении): OpenPose, Alpha-Pose (fast Pytorch version), и Mask R-CNN. Время исполнения OpenPose является константным, в то время как у Alpha-Pose и Mask R-CNN линейно растет с числом людей на исходных данных.
{|align="left"
|-valign="top"
|[[file:Openposeschema.png|500px|thumb| Рисунок 11 [[https://arxiv.org/pdf/1611.08050.pdf Рисунок 11x]]]]
|}
<br><br><br><br><br><br><br><br><br><br><br><br><br>
Анонимный участник

Навигация