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

Дарья Казовская

Дарья Казовская

IT-копирайтер

#Передовые технологии

13 Апр 2017

Время чтения: 6 минут

13 Апр 2017

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

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

Чтобы ответить на этот вопрос, мы решили на практике испытать различные модели 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, полученных с акселерометра.

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

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

Рис. 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. Результаты тестирования моделей по данным акселерометра, собранным на пешей прогулке и во время поездки на автобусе

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

Фильтр

Закрыть

Технологии

Индустрии