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

IT-копирайтер
Время чтения: 6 минут
Наверняка вы не понаслышке знакомы с автоповоротом экрана смартфонов. А любители мобильных игр часто управляют движениями в игре с помощью поворотов телефона. Такую возможность обеспечивает специальное устройство – акселерометр. Он определяет ускорение объекта, в который он встроен. Благодаря акселерометру современные исследователи собирают данные о характере перемещения мобильного устройства, чтобы узнать, как движется его владелец. Эта информация может пригодиться для разработки ПО в различных областях – от обеспечения безопасности до геолокационных сервисов.
Но как автоматизировать и систематизировать обработку данных, полученных с акселерометра смартфона?
Чтобы ответить на этот вопрос, мы решили на практике испытать различные модели LSTM сети для обработки сигналов, полученных с акселерометра смартфона.
Цель исследования: проверить возможность применения LSTM сети для обработки сигналов, полученных с акселерометра смартфона, и определения типа движения мобильного объекта.
Обзор исследования:
- Постановка основной гипотезы исследования
- Визуальный анализ собранных данных
- Обучение нейронной сети LSTM
- Описание результатов тестирования LSTM сети на тестовом мобильном приложении
Постановка основной гипотезы исследования
В теории акселерометр – это устройство, измеряющее сумму ускорения объекта и гравитационного ускорения. Простейший акселерометр представляет собой груз, подвешенный на пружине и поддерживаемый с другой стороны для подавления колебаний. В смартфоне он реализован с помощью MEMS микросхем.
Рис. 1. Модель простого акселерометра
Акселерометры бывают однокомпонентные, двухкомпонентные, трёхкомпонентные и могут измерять ускорение вдоль одной, двух и трёх осей соответственно. В смартфон встроен трёхкомпонентный акселерометр.
В рамках текущей задачи мы использовали акселерометр для того, чтобы определить двигается смартфон или нет, а также понять с какой скоростью.
Когда придаёшь смартфону ускорение – например, поднимаешь его со стола или водишь в воздухе – пружины в акселерометре растягиваются и сжимаются определённым образом. Учитывая особенности движения смартфона, мы сформулировали главную гипотезу исследования.
Основная гипотеза: если смартфон находится в кармане у движущегося человека, при движении смартфону передаются повторяющиеся колебания, и это отражается на показаниях акселерометра.
Визуальный анализ собранных данных
Опираясь на основную гипотезу, мы провели визуальный анализ полученных данных.
Рис. 2. Данные с акселерометра по трём осям (Прогулка 1)
Рис. 3. Данные с акселерометра по трём осям (Прогулка 2)
Рис. 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. Результаты тестирования моделей по данным акселерометра, собранным на пешей прогулке и во время поездки на автобусе
Как правило, человек в транспорте не двигается, а, следовательно, большая часть пути будет отражаться состоянием покоя. Однако если человек находится в транспорте, который трясет, то вибрация может передаваться на смартфон, в результате чего сеть будет определять тип движения как “транспорт”. В случае автомобиля телефон может быть закреплен на панели управления и можно предположить, что паттерн “транспорт” будет лучше различим.