Оценка позы человека / сопоставление на смартфоне

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

Я хочу разработать для смартфона, поэтому в идеале все работает встроенным в сам смартфон. Это означает, что реализация может работать на GPU процессора или смартфона (например, Moto G5 plus, Adreno 506 GPU на плате - поддерживает OpenGL-). Работать со встроенными системами не обязательно, я думаю, что можно также перенести алгоритм оценки / сопоставления на центральный сервер, содержащий приличный графический процессор. Этот конкретный выбор, встроенный или внешний, является проблемой, которая включает в себя множество параметров (производительность / вычислительная мощность, стоимость сервера, точность, использование батареи мобильного устройства, задержка связи с сервером, мультиплатформенность, масштабируемость, использование мобильных данных - без важности -...)

Я знаю, что есть некоторые рамки для оценки позы человека, такие как Openpose и deepercut. Но так как они все используют глубокое обучение, им требуется спуск GPU. Большинство новых смартфонов в настоящее время имеют встроенный графический процессор, но способны ли они работать на этих платформах? Для нюанса этого случая обнаружение ключевой точки (для нескольких человек) не обязательно должно выполняться в режиме реального времени, поскольку имеется только 1 изображение (без видео в реальном времени) и допустимо время задержки от 2 до 5 секунд.

Поскольку я все еще на стадии исследования, я не знаю, в каком направлении мне идти. Можно ли даже портировать эти платформы на платформу смартфона? Например, Openpose, который использует Caffe и OpenCV. Допустим, я хочу портировать Openpose на Android; Я знаю, что есть библиотека CNNdroid, которая способна конвертировать модели CNN, сделанные с помощью Caffe, в формат CNNdroid. В дальнейшем OpenCV также не должен быть большой проблемой, так как доступна версия для Android. Итак, в теории это кажется возможным, но что на практике..

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

ОБНОВЛЕНИЕ: я думаю о возможности портирования Openpose (использует Caffe в качестве основы ML) для TensorFlow. TensorFlow поддерживает как Android, так и iOS

3 ответа

Решение

Возможно, вам будет интересно посмотреть на методы, используемые Krafka et al. для своего проекта Eye Tracking for Everyone, в котором они сжимают большую сеть для оценки координат взгляда в меньшую сеть, которая может работать на смартфоне. Это использует концепцию, разработанную Джеффом Хинтоном, которую он назвал Dark Knowledge. Обнаружение взгляда - это особый случай оценки позы, поэтому в принципе может показаться, что эти методы будут полезны. Однако я не знаю, будут ли они достаточно эффективными для ваших целей (я думаю, что это во многом зависит от ваших ограничений точности).

Openpose слишком тяжел для приложения на смартфоне. Вам необходимо изменить архитектуру программного обеспечения, чтобы она соответствовала телефонной системе. Что касается CNN, который является узким местом в производительности, то использование структуры, подобной мобильной сети, и Dark Knowledge (как упоминал Мозглубов) для обучения более тонкой сети - это два многообещающих подхода. В любом месте впереди много инженерных работ. Удачи!

попробуйте tensowflow lite posenet https://www.tensorflow.org/lite/examples/pose_estimation/overview

или определение позы https://developers.google.com/ml-kit/vision/pose-detection?hl=en

Другие вопросы по тегам