Это кросспост из моего блога. Вы можете найти исходный пост здесь.

Как я уже упоминал в предыдущем посте, мне было очень приятно увидеть, что в проект ESP-Sensors был включен код для работы со схемой на основе Touché.

Раньше я сталкивался с другими реализациями Touché для Arduino, но, в отличие от проекта ESP, ни одна из них не использовала машинное обучение для классификации типов жестов.

Touché - это проект, разработанный Disney Research, который использует емкостное зондирование с качающейся частотой, чтобы … не только обнаруживать событие прикосновения, но и одновременно распознавать сложные конфигурации рук и тела человека во время сенсорного взаимодействия.

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

Традиционные емкостные датчики работают, генерируя электрический сигнал на одной частоте. Этот сигнал подается на проводящую поверхность, например, на металлическую пластину. Когда рука приближается к поверхности или касается ее, значение емкости изменяется - это означает, что произошло событие касания или что рука находится близко к поверхности датчика. Библиотека CapSense позволяет реализовать традиционное емкостное зондирование на Arduino.

Емкостное зондирование с качающейся частотой использует несколько частот. В своей статье CHI 2012 разработчики Touché заявляют, что причина использования нескольких частот: Объекты, возбуждаемые электрическим сигналом, по-разному реагируют на разных частотах, поэтому изменения в обратном сигнале также будут зависеть от частоты. Вместо того, чтобы использовать одну точку данных, генерируемую электрическим сигналом на одной частоте, как в традиционном емкостном измерении, Touché использует несколько точек данных из нескольких сгенерированных частот.

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

Посмотрите видео, прилагаемое к статье Touché CHI 2012:

Было несколько других реализаций сенсорного ввода с открытым исходным кодом на основе Touché, с которыми я сталкивался раньше, но тот, который предоставлен в проекте ESP, казался самым простым в настройке и наиболее удобным для работы. с участием.

Авторы продолжили свою работу, показав, как Touché можно использовать для взаимодействия с растениями в Botanicus Interacticus project, который был представлен на выставке на SIGGRAPH 2012:

У меня на столе два растения: папоротник и воздушный. Мне очень нравится, как они добавляют красок в мою рабочую область, и я благодарен за их присутствие.

Я хотел посмотреть, смогут ли они со мной поговорить.

ФЕРН

Я впервые экспериментировал с папоротником. Как было предложено в статье Botanicus Interacticus, я вставил простой провод в почву растения. Это позволило бы системе ESP измерять токопроводящий профиль растения, когда я к нему прикасаюсь.

Проведя несколько экспериментов, я смог легко обучить систему ESP распознавать, касаюсь ли я одного листа.

или слегка ласкал ли я верхнюю часть листьев ладонью.

Вот как это выглядело в действии:

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

ВОЗДУШНЫЙ ЗАВОД

Затем я экспериментировал с воздушной установкой и успешно обучил систему ESP, чтобы она могла различать, покоилась ли моя рука на вершине установки:

и не «щекочет» ли верхушка растения

Вот как система выглядела при использовании:

Что мне не удалось, так это научить ESP различать прикосновение к листу и трение пальцем о лист, как показано ниже:

Я попытался переместить зажим из аллигатора с одного из листьев к корню - моя теория заключалась в том, что, возможно, емкость не распределялась равномерно по растению.

Однако это, похоже, не повлияло.

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

ДАЛЬНЕЙШИЕ ЦЕЛИ ОБУЧЕНИЯ:

ИСПОЛЬЗОВАНИЕ РЕГРЕССИИ

В видео Bottanicus Interactus (время ниже) авторы показывают, что они могут определить, где касаются длинного стебля растения, и взаимодействовать с ним, как при непрерывном перемещении ползунка между двумя точками.

Система Touché использует алгоритм машинного обучения опорных векторов, который поддерживает как классификацию, так и регрессию; два типа задач машинного обучения. При классификации система машинного обучения определяет, какого типа произошли события - в данном случае типа касания, которое произошло. В задачах регрессии система машинного обучения отображает расстояние между двумя точками для управления параметром - так, например, вы можете сопоставить расстояние, пройденное рукой между двумя точками на стебле растения, со значением ползунка объема.

в системе ESP на данный момент поддерживается классификация; регресса нет. Чтобы использовать Touché для управления непрерывным потоком ценностей между одной точкой и другой, необходимо изменить систему ESP для поддержки регрессии.

(Для получения дополнительной информации о принципах классификации и регрессии ознакомьтесь с курсом Каденце Ребекки Фибринк Машинное обучение для музыкантов и художников).

БОЛЬШЕ ДИСКРИМИНАЦИИ

Определите, возможно ли обнаруживать прикосновения отдельных листьев, в отличие от обнаружения прикосновения к «листу». Возможно, это возможно, но зависит от типа растения - растение с более толстыми, более «твердыми» листьями может давать проводящий узор, который лучше распознает прикосновения отдельных листьев, чем тонкие свободные листья папоротника. .

ВРЕМЯ ЖЕСТОВ

Если вы посмотрите видео о системе Touché в действии выше, вы, возможно, заметили, что иногда были случаи, когда во время перехода между одним классом жестов и другим происходили короткие «подпрыгивания». В примере с Air Plant, когда рука движется из положения «отдыхающая рука» в положение «без руки», система ESP ошибочно распознает жест «щекотка».

Потенциальное решение этой ситуации - добавить Фильтр меток класса в конвейер распознавания жестов ESP. Этот класс позволит системе избавиться от ошибочно распознанного класса жестов. Добавление этого фильтра в конвейер ESP - это то, что я планирую изучить в будущих экспериментах.

КОД

Эскизы обработки, показанные в видеороликах, и данные сеанса ESP можно найти здесь. Вам необходимо убедиться, что в вашей системе установлена ​​Обработка, чтобы запускать скетчи, и следовать руководству по установке для настройки ESP, если вы хотите запускать включенные сеансы.