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

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

С самого начала я знал, что хочу, чтобы мой анализатор позы оценивал мои позы в реальном времени через камеру моего ноутбука. Как оказалось, это серьезно ограничивало мои возможности для моделей оценки позы. Сначала я попробовал широко используемый OpenPose из Университета Карнеги-Меллона. Как и в случае с компьютерным зрением и обнаружением объектов, существует компромисс между точностью и скоростью. Из-за большего размера модели и скудных вычислений на моем личном ноутбуке этот современный инструмент оценки позы не подошел бы моим целям. В конце концов я остановился на MobileNet для общего обнаружения людей и небольшой модели ResNet для обнаружения придатков, которые можно найти в Modelzoo Глюона. Эти небольшие сети позволяют моим ничтожным вычислительным ресурсам оценивать видеокадры с моей веб-камеры в реальном времени (после некоторых изысков). Даже если классифицировать только каждый второй кадр видео, результат получается не таким гладким, как я надеялся.

В этот момент мой компьютер мог отслеживать отростки людей в кадре, но ничего не мог сказать об их форме йоги. Для этого я решил добавить еще одну сеть в конвейер изображений. Вместо очередного громоздкого CNN я подумал, что могу с умом использовать простую ANN, натренированную на углах между придатками рассматриваемого тела. Я надеялся, что если бы я мог рассчитывать / записывать углы между суставами тел на веб-камеру для различных поз йоги, позы были бы линейно разделяемыми (хотя и в более высоких измерениях). Если бы это было правдой, каждый раз, когда компьютер видел тело, делающее определенную комбинацию углов, он знал бы, какую позу йоги они пытались выполнить. Фактически, уверенность в предсказании позы может даже использоваться как индикатор качества формы (если используемые данные для обучения были получены от опытного йога).

Здесь на помощь приходит йога с Ульяной, популярной йогой на Youtube. Из ее видео 30 самых распространенных начинающих поз йоги я выбрал 15 легко различимых поз, пропустил видеоклипы через свой инструмент оценки позы, записал углы каждого сустава для каждый кадр каждого клипа. Теперь у меня был размеченный набор данных с несколькими сотнями примеров для обучения моей ИНС. Я использовал небольшую модель Keras (всего два слоя) и смог правильно предсказать 93% поз в моем наборе для проверки. Самое приятное то, что когда я добавил этот предсказатель в свой уже раздутый конвейер, частота кадров не упала! Идеально!

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

Следующие шаги

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

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

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

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

Приложения

Карантин Covid-19 привел к резкому увеличению использования домашних тренажеров. Одним из таких продуктов является умное зеркало, такое как MIRROR, которое транслирует занятия прямо на ваше зеркало! Это кажется идеальным приложением для моего проекта, особенно если бы я адаптировал его для распознавания других чувствительных к форме упражнений, таких как отжимания или бег.