AzoftR&DПрименение LSTM сети для обработки сигналов акселерометра

Применение LSTM сети для обработки сигналов акселерометра

Иван Ожиганов Апрель 13, 2017

применение LSTM сети для обработки сигналов акселерометра

Наверняка вы не понаслышке знакомы с автоповоротом экрана смартфонов. А любители мобильных игр часто управляют движениями в игре с помощью поворотов телефона. Такую возможность обеспечивает специальное устройство – акселерометр. Он определяет ускорение объекта, в который он встроен. Благодаря акселерометру современные исследователи собирают данные о характере перемещения мобильного устройства, чтобы узнать, как движется его владелец. Эта информация может пригодиться для разработки ПО в различных областях – от обеспечения безопасности до геолокационных сервисов.

Но как автоматизировать и систематизировать обработку данных, полученных с акселерометра смартфона?

Чтобы ответить на этот вопрос, мы решили на практике испытать различные модели LSTM сети для обработки сигналов, полученных с акселерометра смартфона.

Цель исследования: проверить возможность применения LSTM сети для обработки сигналов, полученных с акселерометра смартфона, и определения типа движения мобильного объекта.

Обзор исследования:

  • Постановка основной гипотезы исследования
  • Визуальный анализ собранных данных
  • Обучение нейронной сети LSTM
  • Описание результатов тестирования LSTM сети на тестовом мобильном приложении

Постановка основной гипотезы исследования

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

модель простого акселерометра

Рис. 1. Модель простого акселерометра

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

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

Когда придаёшь смартфону ускорение – например, поднимаешь его со стола или водишь в воздухе – пружины в акселерометре растягиваются и сжимаются определённым образом. Учитывая особенности движения смартфона, мы сформулировали главную гипотезу исследования.

Основная гипотеза: если смартфон находится в кармане у движущегося человека, при движении смартфону передаются повторяющиеся колебания, и это отражается на показаниях акселерометра.

Визуальный анализ собранных данных

Опираясь на основную гипотезу, мы провели визуальный анализ полученных данных.

данные с акселерометра по трем осям - Прогулка 1

Рис. 2. Данные с акселерометра по трём осям (Прогулка 1)

данные с акселерометра по трем осям - Прогулка 2

Рис. 3. Данные с акселерометра по трём осям (Прогулка 2)

данные с акселерометра по трем осям - Прогулка 3

Рис. 4. Данные с акселерометра по трём осям (Прогулка 3)

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

  • Прогулка 1. В диапазоне от ~600 до 1300
  • Прогулка 2. В диапазоне от ~ 500 до 1300
  • Прогулка 3. В диапазоне от ~ 300 до 1500

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

На графике показаний акселерометра по оси Y видно, что телефон в разных экспериментах был расположен по-разному. Поэтому требовалось найти характеристику, которая не зависит от положения самого смартфона и при этом демонстрирует определенный паттерн при различных типах движения человека. В качестве такой характеристики была выбрана длина вектора, проведенного из начала координат к точке с координатами X, Y, Z, полученных с акселерометра.

Прогулка 1: данные с акселерометра по трём осям и график колебаний длины амплитуды вектора

Рис. 5. Прогулка 1: данные с акселерометра по трём осям и график колебаний длины амплитуды вектора

Прогулка 2: данные с акселерометра по трём осям и график колебаний длины амплитуды вектора

Рис. 6. Прогулка 2: данные с акселерометра по трём осям и график колебаний длины амплитуды вектора

Прогулка 3: данные с акселерометра по трём осям и график колебаний длины амплитуды вектора

Рис. 7. Прогулка 3: данные с акселерометра по трём осям и график колебаний длины амплитуды вектора

На графике видно, что длина вектора не зависит от положения смартфона.

Обучение нейронной сети LSTM

Для решения задачи был сформирован датасет, разделенный на обучающую и тестовую выборки. Далее мы приступили к обучению искусственной нейронной сети LSTM.

Структура слоёв сети у всех моделей общая: вектор входных данных поступает на LSTM слой, после которого сигнал переходит уже на полносвязный слой, где и формируется ответ. Более подробную информацию об описании LSTM слоя можно найти, например, на сайте фреймворка Lasagne.

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

Все модели реализованы на языке Python с использованием фреймворков Theano и Lasagne. Также был использован решатель Adam. Отличия моделей друг от друга – в размере входного вектора данных и количестве LSTM элементов в сети.

Полученные модели были протестированы с помощью тестового Android приложения.

Для запуска решения под Android были выбраны следующие библиотеки:

  • JBLAS – библиотека линейной алгебры, основанной на BLAS (Basic Linear Algebra Subprograms)
  • JAMA (Java Matrix Package)

Библиотека JBLAS выдала ошибку при запуске программы на архитектуре arm64. В итоге решение было реализовано при помощи библиотеки JAMA.

Результаты тестирования LSTM сети на тестовом мобильном приложении

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

результаты тестирования моделей

Рис. 8. Результаты тестирования моделей (см. Таблица)

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

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

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

Рис. 9. Результаты тестирования моделей по данным акселерометра, собранным на пешей прогулке и во время поездки на автобусе

Как правило, человек в транспорте не двигается, а, следовательно, большая часть пути будет отражаться состоянием покоя. Однако если человек находится в транспорте, который трясет, то вибрация может передаваться на смартфон, в результате чего сеть будет определять тип движения как “транспорт”. В случае автомобиля телефон может быть закреплен на панели управления и можно предположить, что паттерн “транспорт” будет лучше различим.

Комментарии

комментарии