Разработчики из Google научили смартфон распознавать постукивание по разным частям корпуса

Программисты из компании Google разработали алгоритм для смартфонов, распознающий прикосновения к корпусу. Он определяет сторону смартфона, к которой прикоснулся пользователь, конкретную область касания и его тип: прикосновение пальцем или ногтем. Этот алгоритм можно использовать для расширения способов взаимодействия пользователя со смартфоном, рассказывают авторы статьи, опубликованной на arXiv.org. Она также будет представлена на конференции CHI 2021.

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

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

Благодаря развитию алгоритмов машинного обучения и особенно их адаптации для смартфонов, в прошлом году в iOS 14 и предварительной версии Android 11 появился новый способ взаимодействия с устройством, не требующих новых датчиков: постукивание пальцем по задней крышке, распознаваемое при помощи нейросети и акселерометра. В финальной версии Android эта функция так и не появилась, но теперь разработчики из Google усовершенствовали алгоритм и научили его распознавать касания к разным частям устройства.

Алгоритм построен по архитектуре MIMO (multiple-input, multiple-output), то есть принимает на вход несколько фрагментов данных и выдает несколько параметров прикосновения к смартфону. На вход он получает шесть сигналов от гироскопа и акселерометра (по три для каждой оси), которые соединяются в один вектор, и вектор с характеристиками устройства. В нем кодируются данные о размере смартфона и расположении инерциального блока по отношению к корпусу. Чтобы алгоритм не расходовал много энергии в фоновом режиме, все данные сначала проходят через простой фильтрующий алгоритм, который ищет пиковое пороговое значение по оси z, возникающее при постукивании по корпусу пальцем. Если сигнал проходит через этот фильтр, данные подаются на нейросеть.

В алгоритме используется сверточная нейросеть, выполняющая пять задач по распознаванию, то есть выдающая пять параметров прикосновения: сам факт прикосновения, часть пальца (подушечка или ноготь), грань устройства, область на грани (в сетке 5 на 7) и точка на ней (в соотношении с длиной и шириной грани).

Разработчики решили проверить гипотезу, согласно которой при качественном составлении датасета, покрывающем реальное использование устройства, данных от одного человека будет достаточно для точной работы алгоритма с другими людьми. Один из авторов статьи на протяжении 69 дней примерно по полчаса в день запускал на двух смартфонах программу для сбора данных и выполнял ее указания, постукивая смартфон и выполняя с ним другие действия. В результате он собрал 135 тысяч образцов действий, из которых 109 тысяч были прикосновениями пальцев, а еще 26 тысяч — сжатие смартфона в руке, постукивание по поверхности, на которой лежало устройство и другие.

Эти данные использовались для обучения модели. Авторы также собрали еще 38 с половиной тысяч образцов от 31 добровольца, чтобы проверить насколько генерализованы навыки нейросети или же они работают только для одного человека.

Результаты показали, что по всем задачам кроме обнаружения прикосновения новый алгоритм работает лучше, чем аналогичные методы или он же, но без использования архитектуры MIMO. В частности, точность определения грани по метрике F1 составляет 85 процентов.

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

Смартфоны могут распознавать по стуку не только прикосновения к корпусу, но и предметы. В 2018 году такой алгоритм представили корейские инженеры. Они предложили использовать его для запуска приложений. Например, стукнув смартфоном о велосипед пользователь сразу же получает на экране запущенное приложение для фитнеса.

Григорий Копиев

Нашли опечатку? Выделите фрагмент и нажмите Ctrl+Enter.
Профессии будущего

Кем вы можете стать, когда вырастете