Инженеры Google создали систему для распознавания жестов для мобильных устройств
Отслеживание движения и формы рук в режиме реального времени является основной составляющей для систем управления при помощи жестов и программ-переводчиков с языка жестов на понятную нам речь, не говоря уже об активном использовании данной технологии в сфере дополненной и виртуальной реальности. Такое количество проблем и задач в данной области побудило ученых из Google попытаться разработать новый подход в сфере компьютерного зрения для восприятия человеческих рук, который смог бы максимально использовать современные технологии машинного обучения. В итоге исследователям удалось в эксперименте при помощи мобильного телефона распознать 21 точку зафиксированную на руке комбинацию (или нескольких руках одновременно) в рамках одного кадра и затем динамически отслеживать их изменения, считывая заранее определенные жесты в произвольной последовательности.
Google представила новую технологию на конференции по компьютерному зрению и распознаванию образов, проходившей в этом году в июне в Лонг-Бич, Калифорнии, и недавно внедрила ее в MediaPipe, кросс-платформенной фреймворк для машинного обучения с моделями для распознавания лиц, рук, волос и различных объектов окружающего мира, при этом исходный код и инструкции по использованию доступны для всех желающих на GitHub.
"Способность воспринимать форму и движение рук может стать жизненно важным компонентом для улучшения взаимодействия с пользователем в различных технологических областях и платформах", - пишут инженеры-исследователи Валентин Базаревский (Valentin Bazarevsky) и Фан Чжан (Fan Zhang) в своем блоге. "Мы надеемся, что предоставленная нами сообществу исследователей и разработчиков технология для восприятия рук приведет к появлению различных творческих вариантов ее использования, а также к стимулированию появления новых приложений и направлений исследований в данной области".
Новая технология Google включает в себя три модели искусственного интеллекта, работающих во взаимосвязи: детектор ладони, который команда назвала BlazePalm, чья задачи анализировать кадр и возвращать ограничивающий прямоугольник, в котором находится ладонь человека; модель для разметки ладони, которая анализирует область изображения, полученного от BlazePalm, и возвращает набор трехмерных точек, образующих скелет руки; непосредственно моде, распознающая жесты, которая классифицирует ранее полученную конфигурацию из точек и сопоставляет их с тем или иным жестом.
Распознать на изображении руки - это непростая задача. BlazePalm вынужден решать ее в условиях отсутствия функции, позволяющей отличать открытые и закрытые положения рук. Чтобы решить эту задачу, команда обучила детектор обнаруживать ладони, а не сами руки, поскольку отличить небольшой ограниченный объект, такой как кулак, обычно легче, чем обнаружить руки или пальцы. В качестве дополнительного преимущества BlazePalm также хорошо работает в граничных случаях, например, распознавая ладони при рукопожатии и генерируя ограничивающие рамки для дальнейшей работы алгоритма.
После обнаружения области, где находится ладонь человека, в дело вступает модель разметки, которая локализует 21 трехмерную точку, позволяющих с высокой точностью определить положение каждого пальца руки. Для обучения данной модели потребовалось 30 000 изображений ладони с помеченными вручную точками, а также создание синтетической модели руки, которую размещали на различном фоне.
Последний шаг в работе алгоритма - это система распознавания жестов, которая определяет состояние каждого пальца по углам, образованных суставами, и сопоставляет положение пальцев рук с предварительно определенными вариантами жестов.
Отдельные задачи, такие как обрезка кадра и рендеринг, выполняют исключительно на графических картах, а детектор ладони работает только по мере необходимости, так как большую часть времени местоположение руки в последующих кадрах определяется исходя из вычисленных ранее ключевых точек руки. Только когда достоверность считывания жестов опускается ниже определенного порога, модель обнаружения ладони повторно применяется ко всему кадру. Все это позволяет оптимизировать производительность работы алгоритма. В будущем Базаревский, Чжан и их коллеги планируют развивать данную технологию и сделать отслеживание еще более надежным и стабильным, а также увеличить количество поддерживаемых жестов.