Как мне нормализовать данные датчика акселерометра?

9

Я работаю с большим набором данных акселерометра, собранных несколькими датчиками, которые носят многие люди. К сожалению, здесь никто не знает технических характеристик устройств, и я не думаю, что они когда-либо были откалиброваны. У меня нет много информации об устройствах. Я работаю над магистерской диссертацией, акселерометры были заимствованы из другого университета, и в целом ситуация была немного прозрачной. Итак, предварительная обработка на борту устройства? Понятия не имею.

Что я знаю, так это то, что это трехосные акселерометры с частотой дискретизации 20 Гц; цифровой и предположительно MEMS. Меня интересует невербальное поведение и жесты, которые, по моим источникам, должны в основном производить активность в диапазоне 0,3-3,5 Гц.

Нормализация данных кажется совершенно необходимой, но я не уверен, что использовать. Очень большая часть данных близка к остальным значениям (необработанные значения ~ 1000 от силы тяжести), но есть некоторые крайности, например, до 8000 в некоторых журналах или даже 29000 в других. Смотрите изображение ниже . Я думаю, что это делает плохой идеей деление на max или stdev для нормализации.

Какой обычный подход в таком случае? Разделить на медиану? Процентиль значение? Что-то другое?

Как побочный вопрос, я также не уверен, должен ли я обрезать крайние значения ..

Спасибо за любой совет!

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

введите описание изображения здесь

Junuxx
источник
1
Можете ли вы предоставить немного больше информации о ваших настройках измерения? Вопросы, которые приходят на ум: ( 1 ) Это одноосные акселерометры или многоосные? ( 2 ) Они фильтруются верхними частотами или нет, и если да, то как? (По вашему описанию это не так.) ( 3 ) Что именно вы измеряете и в каком диапазоне частот интересующего вас сигнала? ( 4 ) Каков чувствительный механизм (т. Е. MEMS, пьезоэлектрический, емкостный и т. Д.) Или даже номер детали (!) Используемых вами акселерометров? ...
кардинал
... (продолжение) ( 5 ) Они полностью цифровые или у вас есть собственный АЦП (возможно, 16-разрядный по описанию, которое вы даете)?
кардинал
@cardinal: я отредактировал ответы на ваши вопросы, спасибо за вопрос. Не уверен, что такое АЦП. Я участвовал в эксперименте, но не в извлечении данных из памяти устройства, есть разрыв между сбором данных и тем, где я получил кучу двоичных журналов.
Junuxx
Привет, Junuxx. Извините за необъяснимую аббревиатуру (АЦП = "аналого-цифровой преобразователь"); Я безоговорочно предполагал, что вы узнаете это по вашему вопросу.
кардинал
1
Что вы пытаетесь выяснить из этих данных? Возможно, вы пытаетесь обнаружить определенные виды событий, оценить частоту событий, оценить среднее ускорение, найти корреляции между различными акселерометрами, ...? Дело в том, что если вам нужен хороший, актуальный совет, не спрашивайте о технических процедурах с данными (которые могут быть неуместны или даже бесполезны, в зависимости от приложения): сначала скажите нам, какую проблему вы пытаетесь решить.
whuber

Ответы:

14

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

  1. Фильтр - например, фильтр 4-го порядка, НЧ-фильтр нулевой фазы или полосовой фильтр
  2. Отклонение артефакта - на основе порога
  3. Калибровка - метод Ferraris et al. ( Процедура простой калибровки трехосевых гироскопов и акселерометров в полевых условиях, F Ferraris, U Grimaldi, M Parvis - Sensors and Actuators, 1995 ) хорошо подходит для этого.

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

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

Простой порог может хорошо работать для начальной процедуры отклонения артефакта, то есть удалить (или заменить NaN) все образцы выше определенного эмпирического порога. Более сложные методы будут адаптивно рассчитывать этот порог, используя среднее значение или скользящее окно.

В зависимости от местоположения датчика вы также можете скорректировать влияние силы тяжести на сигналы ускорения, хотя детальное понимание осей и позиционирования датчика здесь имеет решающее значение. Метод Мо-Нильсона ( Р. Мо-Нильсен, Новый метод оценки двигательного контроля в походке в реальных условиях окружающей среды. Часть 1. Инструмент, Клиническая биомеханика, том 13, выпуски 4–5, июнь – июль 1998 г., Стр. 320-327 ) является наиболее часто используемым и хорошо работает для инерционных датчиков, установленных на нижней части спины.

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

Надеюсь это поможет.

BGreene
источник
Это потрясающий ответ @BGreene, большое спасибо! Ссылки тоже очень полезны. Я хотел бы задать этот вопрос несколько месяцев назад. Датчики были надеты на шею вокруг шеи (не моя идея), поэтому определенно много движений относительно тела. Я думаю, что некоторые из ваших предложений могут быть более подходящими для дальнейших исследований, но, по крайней мере, они будут полезны для моего раздела «Будущая работа». И, к счастью, проблема распознавания не является проблемой, у меня достаточно солидный опыт в машинном обучении, но спасибо за предложения по этому вопросу.
Junuxx
Нет проблем. В этом случае я думаю, что вы будете ограничены рассмотрением грубых движений, так как шнур означает, что вы не можете точно сказать, как двигалось тело, только датчик. Вы могли бы сделать вывод, что большие значения выходного сигнала датчика приравниваются к большим грубым движениям, но вы сильно теряете четкость правильно прикрепленного датчика.
BGreene
(+1 вчера) Пара вещей может быть учтена в (1.) выше. Поскольку нижняя граница интересующего частотного диапазона довольно мала, можно рассмотреть одну альтернативу - просто применить фильтр нижних частот и вычесть среднее значение. Во-вторых, вместо БИХ-фильтра в этом случае можно рассмотреть линейно-фазовый фильтр с конечной импульсной характеристикой. Я говорю это потому, что подозреваю, что для прогнозирования жестов с помощью сигнала многоосевого акселерометра нужно синхронизировать движение независимо от частоты. (продолжение)
кардинал
(...) Нелинейный фазовый отклик БИХ-фильтра будет смещать различные компоненты на разные величины, и этот эффект имеет тенденцию к ухудшению вблизи частот среза. Поскольку все является цифровым, имеет смысл использовать линейно-фазовый FIR-фильтр. Часто также лучше контролировать переходную реакцию. :-)
кардинал
@ Cardinal, это все правда - отредактировал мой ответ выше. только что проверил мой код - мой последний алгоритм акселерометра использует нулевой фазовый фильтр Баттерворта IIR. Хотя я предпочитаю избегать вычитания среднего значения для коротких сегментов данных
BGreene