Jak powinienem znormalizować dane z czujnika przyspieszenia?

9

Pracuję z dużym zestawem danych akcelerometru zebranych z wieloma czujnikami noszonymi przez wielu badanych. Niestety, wydaje się, że nikt tutaj nie zna specyfikacji technicznych urządzeń i nie sądzę, aby kiedykolwiek zostały one ponownie skalibrowane. Nie mam wielu informacji o urządzeniach. Pracuję nad pracą magisterską, akcelerometry zostały zapożyczone z innej uczelni i sytuacja była nieco nieprzejrzysta. Czy przetwarzanie wstępne na urządzeniu? Nie wiem.

Wiem tylko, że są to trójosiowe akcelerometry o częstotliwości próbkowania 20 Hz; cyfrowe i prawdopodobnie MEMS. Interesuje mnie niewerbalne zachowanie i gestykulacja, które według moich źródeł powinny generować aktywność w zakresie 0,3–3,5 Hz.

Normalizacja danych wydaje się dość konieczna, ale nie jestem pewien, czego użyć. Bardzo duża część danych jest zbliżona do pozostałych wartości (wartości surowe ~ 1000, z grawitacji), ale istnieją pewne skrajności, takie jak do 8000 w niektórych logach, a nawet 29000 w innych. Zobacz zdjęcie poniżej . Myślę, że to sprawia, że ​​złym pomysłem jest dzielenie przez max lub stdev w celu normalizacji.

Jakie jest typowe podejście w takim przypadku? Czy podzielić przez medianę? Wartość percentyla? Coś innego?

Jako kwestię poboczną nie jestem również pewien, czy powinienem wyciąć ekstremalne wartości.

Dziękuję za wszelkie porady!

Edycja : Oto wykres około 16 minut danych (20000 próbek), aby dać wyobrażenie o tym, jak dane są zwykle dystrybuowane.

wprowadź opis zdjęcia tutaj

Junuxx
źródło
1
Czy możesz podać trochę więcej informacji na temat konfiguracji pomiaru? Pytania, które przychodzą na myśl: ( 1 ) Czy są to akcelerometry jednoosiowe czy wieloosiowe? ( 2 ) Czy są filtrowane górnoprzepustowo, czy nie, a jeśli tak, to w jaki sposób? (Wygląda na to, że tak nie jest, na podstawie twojego opisu.) ( 3 ) Co dokładnie mierzysz i jaki jest zakres częstotliwości sygnału zainteresowania? ( 4 ) Jaki jest mechanizm wykrywania (tj. MEMS, piezoelektryczny, pojemnościowy itp.) Lub nawet numer części (!) Używanych akcelerometrów? ...
kardynał
... (ciąg dalszy) ( 5 ) Czy są one w pełni cyfrowe, czy masz własny ADC (może 16-bitowy, według podanego opisu)?
kardynał
@cardinal: Zredagowałem w odpowiedziach na twoje pytania, dziękuję za pytanie. Nie jestem pewien, co to jest ADC. Byłem zaangażowany w eksperyment, ale nie w ekstrakcję danych z pamięci urządzenia, istnieje luka między gromadzeniem danych a miejscem, w którym otrzymałem kilka dzienników binarnych.
Junuxx,
Cześć, Junuxx. Przepraszamy za niewyjaśniony akronim (ADC = „przetwornik analogowo-cyfrowy”); Domyślnie założyłem, że rozpoznasz to na podstawie twojego pytania.
kardynał
1
Czego próbujesz dowiedzieć się na podstawie tych danych? Być może próbujesz wykryć pewne rodzaje zdarzeń, oszacować częstotliwość zdarzeń, oszacować średnie przyspieszenia, znaleźć korelacje między różnymi akcelerometrami ...? Chodzi o to, że jeśli potrzebujesz dobrej, odpowiedniej porady, nie pytaj o procedury techniczne z danymi (które mogą być nieistotne lub nawet bezużyteczne, w zależności od aplikacji): najpierw powiedz nam, jaki problem próbujesz rozwiązać.
whuber

Odpowiedzi:

14

Surowe sygnały pokazane powyżej wydają się być niefiltrowane i nieskalibrowane. Odpowiednie filtrowanie i kalibracja , z pewnym odrzuceniem artefaktów , w efekcie znormalizują dane. Standardowe podejście z danymi z akcelerometru jest następujące:

  1. Filtr - np. Filtr dolnoprzepustowy IIR rzędu zerowego lub filtr pasmowy
  2. Odrzucanie artefaktów - oparte na progach
  3. Metoda Calibrate - Ferraris i in. ( Procedura bezproblemowej kalibracji w terenie żyroskopów i akcelerometrów o prędkości trójosiowej, metoda F Ferraris, U Grimaldi, M Parvis - Sensors and Actuators, 1995 ) sprawdza się w tym przypadku.

Wskazane jest wykonanie odrzucenia artefaktu na danych czujnika bezwładnościowego. Byłbym zaniepokojony tym, że nie znasz pochodzenia danych, a zatem nie możesz zagwarantować, że czujniki zostały poprawnie i konsekwentnie umieszczone (pod względem orientacji i położenia fizycznego) u wszystkich osób. Jeśli czujniki nie zostały poprawnie zamocowane, w sygnałach może znajdować się wiele artefaktów, ponieważ czujnik może poruszać się względem segmentu ciała. Podobnie, jeśli czujniki byłyby zorientowane w różny sposób (w sposób ich umiejscowienia) na różnych obiektach, dane będą trudne do porównania dla różnych podmiotów.

Biorąc pod uwagę wielkość wartości odstających, które zgłaszasz, prawdopodobnie są to artefakty. Takie artefakty niemal pewne zniekształcałyby obliczenia kalibracyjne (chociaż ich działanie zostanie osłabione przez odpowiednie filtrowanie), dlatego kalibrację należy wykonać po odrzuceniu artefaktu.

Prosty próg może dobrze działać w przypadku procedury początkowego odrzucania artefaktów, tj. Usunąć (lub zastąpić NaN) wszystkimi próbkami powyżej pewnego progu empirycznego. Bardziej wyrafinowane techniki będą adaptacyjnie obliczać ten próg przy użyciu średniej ruchomej lub ruchomego okna.

W zależności od umiejscowienia czujnika możesz również skorygować wpływ grawitacji na sygnały przyspieszenia, chociaż tutaj kluczowe znaczenie ma szczegółowe zrozumienie osi czujnika i jego położenia. Metoda Moe-Nillsona ( R. Moe-Nilssen, Nowa metoda oceny kontroli motorycznej podczas chodu w rzeczywistych warunkach środowiskowych. Część 1: Instrument, Clinical Biomechanics, tom 13, wydania 4–5, czerwiec – lipiec 1998 r., Strony 320-327 ) jest najczęściej używany i działa dobrze w przypadku czujników bezwładnościowych montowanych z tyłu.

Dobrym miejscem do rozpoczęcia analizy danych w celu rozpoznania gestów byłoby rozbicie przefiltrowanych, skalibrowanych danych na epoki (np. 10s) i obliczenie liczby funkcji dla każdej epoki i odniesienie ich do etykiet, które masz dla danych, mogę „ • oferują bardziej szczegółowe porady, nie wiedząc więcej o zestawie danych i powiązanych etykietach.

Mam nadzieję że to pomoże.

BGreene
źródło
To niesamowita odpowiedź @BGreene, dziękuję bardzo! Referencje są również bardzo przydatne. Chciałbym zadać to pytanie kilka miesięcy temu. Czujniki były noszone na sznurku na szyi (nie mój pomysł), więc ruch jest zdecydowanie większy w stosunku do ciała. Myślę, że niektóre z twoich sugestii mogą być bardziej przydatne do dalszych badań, ale przynajmniej będą pomocne w mojej sekcji dotyczącej przyszłych prac. I na szczęście część dotycząca rozpoznawania nie stanowi problemu, mam dość solidne doświadczenie w uczeniu maszynowym, ale dziękuję za sugestie w tej sprawie.
Junuxx,
Nie ma problemu. W takim przypadku uważam, że ograniczysz się do zbadania dużych ruchów jako sznurka, co oznacza, że ​​nie możesz wiarygodnie powiedzieć, jak poruszało się ciało, tylko czujnik. Być może mógłbyś wywnioskować, że duże wartości wyjściowe czujnika są równe dużym ruchom brutto, ale tracisz dużo kruchości prawidłowo zamocowanego czujnika.
BGreene
(+1 wczoraj) Kilka rzeczy można wziąć pod uwagę w (1.) powyżej. Ponieważ dolna granica interesującego zakresu częstotliwości jest dość mała, jedną z alternatyw, które należy rozważyć, jest po prostu zastosowanie filtra dolnoprzepustowego i odjęcie średniej. Po drugie, zamiast filtra IIR, w tym przypadku można rozważyć filtr skończonej odpowiedzi impulsowej w fazie liniowej. Mówię to, ponieważ podejrzewam, że aby przewidzieć gesty za pomocą wieloosiowego sygnału akcelerometru, trzeba będzie synchronizować ruch niezależnie od częstotliwości. (cd.)
kardynał
(...) Nieliniowa odpowiedź fazowa filtra IIR przesunie różne składniki o różne wielkości, a efekt ten jest gorszy w pobliżu częstotliwości odcięcia. Ponieważ wszystko jest cyfrowe, sensowne jest zastosowanie filtra FIR z fazą liniową. Często można również lepiej kontrolować reakcję przejściową. :-)
kardynał
@ cardinal to wszystko prawda - zredagowałem moją odpowiedź powyżej. właśnie sprawdziłem mój kod - mój najnowszy algorytm akcelerometru wykorzystuje zerowy filtr Butterworth IIR. Chociaż wolę unikać odejmowania średniej dla krótkich segmentów danych
BGreene,