Разработчики из AIMatter рассказали, чем занимаются в Google

В августе прошлого года СМИ сообщали: открытый проект Google помогает распознавать язык жестов с помощью смартфона. Сейчас команда готовится представить свой проект на технологической конференции Emerge, которая пройдет 1–3 июня. Накануне выступления разработчики Валентин Базаревский и Иван Грищенко рассказали Dev.by, как далеко зашло распознавание жестов, и может ли их нейросеть отличить жесты человека от жеста робота.

Оставить комментарий

«Мы вовсе не распознаем язык жестов»

Валентин:

— Я и Иван работали в белорусской компании AIMatter, которую в 2017 году приобрела Google. Она занималась научно-прикладными разработками по быстрому запуску нейросетей на мобильных телефонах, и там было две большие технологии.

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

Иван:

То есть, какие-то технологии мы начинали делать еще в AIMatter.

А Google были интересны оба наших направления: и быстрый запуск нейросетей на телефонах, и конкретно те нейросети, которые сделали мы. Придя в Google, мы адаптировали их под нужды идо потребностей его продуктов, и начали внедрять.

А какие-то технологии вроде распознавания рук мы делали уже в Google, но на базе тех технологий, которые наработали с трекингом лиц, с сегментацией. Сейчас наши нейросети есть и в YouTube, и в Pixel-смартфоне — суммарно, мы посчитали, на наших сетках выполняются под полмиллиарда сессий в месяц. Немаленькая цифра.

Валентин:

— Вообще мы не занимаемся разработкой системы именно для сурдоперевода. Мы делаем технологии live perception, которые позволяют переводить неструктурированные данные из видеопотока камеры в трехмерное структурированное представление. Мы работаем в отделе, который называется Google Research. В нашей команде около 40 человек, она делится на несколько групп. Одна занимается нейросетями — здесь работаем и мы с Иваном, а всего человек десять. Есть группа, которая занимается библиотекой быстрого запуска нейросетей — тоже человек десять. Есть команда, которая занимается MediaPipe, open-source, — инфраструктурной частью. И еще одна команда занимается внедрением, когда к нам приходят другие команды и просят: мы хотим, чтобы наша технология работала в том или ином продукте Google. Они помогают продуктовым командам встраивать эту технологию, чтобы она работала максимально хорошо и без багов.

Иван:

— Мы делаем «руки», но мы делаем базовую core-технологию. Это наша цель. Мы хотим позволить другим людям делать что-то поверх этого. И это не единственное наше решение, мы создаем много разных решений: распознавание лица, распознавание 3D-объектов. Мы стараемся это все сделать в виде классной базы для других продуктов. И дальше внедряем либо в продукты Google, либо выкладываем в open-source.

В датасете — 100 тысяч фотографий рук

Валентин:

— Трекинг рук мы начали делать в марте 2019 года, известной эта работа стала в августе: мы выпустили пост, рассказали о ней и выложили в open-source.

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

Если же говорить о распознавании жестов, то стоит разделить его на две части. Первая часть — доменное преобразование из RGB, из картинки, в трехмерное положение руки в пространстве. А дальше мы делаем предположение, что взаимного расположения этих 21 точек достаточно, чтобы достоверно предсказать, что за жест сделан именно этой рукой. И когда мы выпустили систему, то увидели, что есть большой интерес с точки зрения именно языка жестов. Все об этом говорили, что, возможно, и сделало ту статью популярной, потому что не без гордости можно сказать, что это третий по популярности пост в блоге Google Research за 2019 год, его просмотрели где-то 200 тысяч разработчиков.

Мы поняли, что было бы интересно сделать технологию, которая стала бы базовым ядром для распознавания языка жестов. Пообщались с сообществом и заинтересованными лицами. Оказалось, что чтобы сделать хорошую систему, просто изображения руки недостаточно. И дальше мы работали над тем, чтобы сделать точный «перевод», чтобы сама картинка была не нужна, а нужны были только эти 21 точка. Расширяли датасет. Сейчас в нем около 100 тысяч фотографий рук в разных позах и ракурсах. Но тут важно не количество картинок, а разнообразность датасета, чтобы алгоритм максимально точно и хорошо работал вне зависимости от гендера, возраста, цвета кожи, других особенностей, — чтобы он был универсальным. Сам по себе сбор датасета для распознавания жестов — достаточно сложная задача.

flickr

Но для решения задачи сурдоперевода информации о положении рук недостаточно: нужно и лицо, и экспрессия, чтобы понимать язык жестов. А еще и взаимное расположение рук, и расположение рук относительно тела. Если я показываю жест слева направо и наоборот — то это совершенно разные отношения между объектами, которыми я представляю жесты.

Распознает ли система человека без пальца?

Валентин:

— Мы пытаемся работать с одним человеком в кадре. Потому что большинство задач сводятся к одному человеку, который что-то показывает. Если сейчас жестами говорит один человек — в первую очередь надо на него обращать внимание. На других тоже можно обратить внимание, но если в кадре несколько человек — предполагаем, что они молчат. А если они говорят одновременно — то это уже отдельная задача, которая в литературе известна как «проблема коктейльной вечеринки», и тогда ее надо решать своими способами. Поэтому мы решили сконцентрироваться на распознавании одного человека.

Каждый раз, когда мы выпускаем новую модель, мы с ней выпускаем и документ — model card, который описывает назначение и ограничения модели. Такой model card есть и у технологии трекинга рук. Если у человека на хватает фаланги, то система «дорисует» ее. Но это не является гарантированным поведением. Вообще в подобных задачах надо исходить из того, как об этом думает живой человек. Человек может понять жест, даже если у его собеседника нет фаланги. Человек предполагает, где должна быть эта фаланга, — и это будет базисом для распознавания им жеста. Точно так же должен работать трекинг рук. Если понимает человек — то поймет и нейросеть.

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

Иван:

— Все, что семантически похоже на руку человека и имеет какой-то схожий оттенок, должно подходить. Целенаправленно мы это не тестировали, роботов в команду не нанимали. Но надо исходить из цели: для чего это делается? Если будет стоять задача распознавать жесты робота — это решается несложно. Сетка все обобщает, и ей в обучающую выборку надо добавить интересующий домен. Хочешь на роботах — пожалуйста, хочешь на животных — пожалуйста. Адаптировать технологию несложно.

Какие ограничения имеет система

Иван:

— Библиотека, которую делает часть нашей команды, поддерживает различные платформы: iOS, Android, CPU, GPU, можно даже в браузере запустить. Поэтому как таковой привязки к телефону нет, будет лишь разница, как быстро это будет работать. Но мы стараемся ориентироваться на телефоны, которым 3-5 лет, чтобы покрыть достаточно большую долю рынка. Да, некоторые решения у нас могут работать только на совсем новых телефонах, которые вышли лишь год назад, но в конечном итоге, прежде чем выпускать версию, мы ее ускоряем до производительности 3-5 летних телефонов.

Валентин:

— Мы стараемся исходить из того что live perceprion должен работать на 30 кадрах в секунду, как стандартный видеопоток. И поскольку все должно работать на устройстве в реальном времени, то 30 кадров в секунду для распознавания жеста руки — это замечательно; но если параллельно надо распознать вторую руку, лицо, тело, — то получается уже всего 7 кадров в секунду. А ведь есть еще постобработка, поэтому, разрабатывая новый алгоритм, мы стараемся сделать так, чтобы он работал со скоростью 100 кадров в секунду.

Иван:

— Есть размытие кадров. Можно идти по пути того, как думает человек. Человек пытается по временной составляющей угадать, что же там было в промежуточных кадрах с размытием: ты ведь не сильно обращаешь внимание на траекторию руки, — ты смотришь на начальную и конечную точку. Есть другой путь: воспользоваться технологиями. Современный флагманский телефон позволяет записывать видео с частотой чуть не в 1.000 fps, при этом в очень хорошем разрешении. Возможно, стоит подумать в этом направлении: тогда ты получишь более четкие кадры, больше промежуточных кадров, — сможешь превзойти человека с точки зрения восприятия.

Валентин:

— Мы работаем с одной камерой, потому что это самый масштабируемый с точки зрения устройств подход. Но в целом, если пофантазировать, я не вижу проблемы работать с несколькими камерами, если устройство это поддерживает. Скорее, возникнет проблема калибровки, когда у нас будет несколько камер, и понадобится определить, под каким углом они находятся друг к другу. И эти сложные механизмы калибровки для разных устройств — частая проблема.

Иван:

— Скорее всего, как простой разработчик ты не будешь иметь доступа к этим «сырым» фотографиям с разных камер одного телефона, а просто будешь получать одну картинку. Да скорее всего тебе и не надо туда лезть, чтобы сделать свой прототип.

Куда ушли конкуренты

Валентин:

— Очень сложно сравнивать нас и конкурентов, потому что у всех есть свой фокус. Я знаю, что свое решение есть у Facebook, но оно больше заточено под виртуальную реальность. Других open-source решений, которые бы работали в реальном времени на телефоне и решали задачу трекинга рук с такой же точностью, я не знаю.

Иван:

— Пожалуй, ближайший продукт по качеству и по тематике — это Leap Motion, у них есть очки и специальные датчики, направленные вниз, которые считывают конкретно твои руки. Понятно, что у них сделать распознавание жестов получается точнее, потому что они целенаправленно делают аппаратное обеспечение под это. И понятно, что эта технология работает только для них. А мы делаем то, что будет работать для всех.

Где все это можно применить

Иван:

— Язык жестов — большая, сложная, нужная задача, но ее долго делать. А есть гораздо более простые и приземленные применения распознавания рук. Например, примерка украшений или управление чем-нибудь. В фильме с Томом Крузом «Особое мнение» показывали терминал, где он все жестами делал. И технологии уже достаточно близко к этому подошли. Управление голосом у нас уже есть, кое-где даже есть управление взглядом, например, для людей с инвалидностью есть такое управление клавиатурой, чтобы набирать текст. А управление руками пока еще не столь популярно, но это тоже интересное направление.

«Девайсами можно будет управлять с помощью жестов». AR-стартап Banuba — о новых разработках и кейсах с геймдевом и хирургами-косметологами
По теме
«Девайсами можно будет управлять с помощью жестов». AR-стартап Banuba — о новых разработках и кейсах с геймдевом и хирургами-косметологами

Валентин:

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

Мы, конечно, понимаем, что для некоторых случаев это будет неудобно. И пользователи так делать не станут. Если у тебя есть клавиатура, ты ей хорошо владеешь, — то ты будешь пользоваться ей. Но какие-то вещи очень сложно сделать без управления жестами.

Например, у нас есть некое умное зеркало. Если мы станем трогать его руками — мы его испачкаем, это неудобно. Голосом тоже далеко не все можно решить, если нам, скажем, в двухмерном пространстве надо указать на некую точку. А еще голос отвлекает окружающих. Да и вообще, сейчас из-за COVID люди не хотят трогать что-то. Поэтому любой бесконтактный интерфейс может быть полезен.

Иван:

— Например, управлять телевизором. Мне во время просмотра фильма нужны три кнопки: прокрутить вперед, назад и остановить, — и на пульте это делать неудобно. А можно просто задать набор из трех жестов и управлять телевизором.

Мы видели, что люди уже сделали несколько демо-приложений на основе MediaPipe. Скажем, точки на экране, ты можешь их двигать, объединять. https://twitter.com/madelinegannon/status/1254726531760431104 То есть, какой-то интерактив появился. Или какие-то видеоэффекты на основе «рук» сделаны. Чтобы что-то появилось в готовом продукте — еще слишком мало времени прошло. Если кто-то что-то и делает, то это не дошло до продуктовой фазы.

Валентин:

— Задача распознавания языка жестов — это лишь одно из применений, и наши технологии в этом определенно помогут. Мы делаем базовые технологии, и у нашей команды нет задачи сделать из этого конечный продукт. За это уже отвечают другие отделы компании: насколько им интересна та или иная технология и когда именно наработок уже достаточно, чтобы быть внедренными продукты Google. Что касается нашей команды, смежных задач с распознаванием рук еще очень много. Это и предсказание полной геометрии руки в трехмерном пространстве, и автоматическое задание жестов, и объединение всех технологий в большую единую систему, когда все будет работать вместе с лицами, телом, руками, другим предметами в окружающей среде. Просто какие-то технологии на этом большом пути могут уже использоваться в продуктах, при том что весь спектр задач Human Perception еще не реализован.

Иван:

—   Если задаться вопросом, «кому нужно распознавание рук в Google, будет сложно найти всех заинтересованных, Google слишком большой. Поэтому мы делаем классную технологию, демонстрируем возможные применения и рассказываем об этом. Google — это свой мир, в котором нужно пойти и продвинуть, рассказать всем. И когда мы это сделали — появляются люди, которым это интересно. Тут происходит такой стык. Есть продуктовые люди, которые горят какой-то идеей: блин, нам нужна технология, но мы не знаем, где ее взять. И есть мы, которые знают, как сделать эту технологию. Так мы друг друга находим, и так происходит внедрение наших технологий в продукты Google.

Что будет на Emerge

Валентин:

— На Emerge мы будем рассказывать, что сейчас можно сделать с помощью MediaPipe и тех сетей и алгоритмов, которые уже там есть, как это применить. Это будет первая часть, прикладная. Во второй мы расскажем, какие есть подводные камни, если вы хотите разработать свой алгоритм live perception: с чем люди сталкиваются, что надо учитывать, какие-то наши примеры для разработки технологий трекинга лиц, трекинга рук и так далее.

Иван:

— Мы расскажем, как делать легкие сетки, направленные на работу в реальном времени, потому что есть много тяжелых сеток, которые бьют State of the Art, но легкие версии которых достаточно трудно сделать. И больше расскажем об инфраструктуре для запуска. Ведь просто сделать быструю сетку недостаточно. Потом, чтобы это все запустить и чтобы это все заработало с минимальными накладными расходами, нужно знать много нюансов.

Раньше, чтобы поднять мобильное приложение с сервером, тебе нужна была куча знаний и куча времени, а сейчас пара часов и одна кнопка в Google Firebase. Готово — у тебя есть приложение. С machine learning примерно то же самое: несколько лет назад все заинтересовались машинным обучением — и было понятно, что его можно применять в каких-то устоявшихся областях и получать более эффективные решения уже давно существующих задач; но тогда было сложно запустить его с инженерной точки зрения. А сейчас появляются все больше фреймворков в открытом доступе. И собрать приложение уже занимает не месяцы, а, условно, день. MediaPipe ровно это и позволяет сделать. За пару команд ты собираешь демо-приложение тех же «рук» у себя на телефоне, которое работает в реальном времени, причем с запасом.

Порог входа значительно снизился, а число задач, в которых machine learning может принести большую пользу и большое улучшение, все еще достаточно велико. Осталось найти стыковку: есть технология, есть задача — давайте ее решим.


Читать на dev.by