Comment dois-je normaliser mes données de capteur d'accéléromètre?


9

Je travaille avec un grand ensemble de données d'accéléromètre recueillies avec plusieurs capteurs portés par de nombreux sujets. Malheureusement, personne ici ne semble connaître les spécifications techniques des appareils et je ne pense pas qu'ils aient été recalibrés. Je n'ai pas beaucoup d'informations sur les appareils. Je travaille sur ma thèse de maîtrise, les accéléromètres ont été empruntés à une autre université et dans l'ensemble la situation était un peu transparente. Alors, prétraitement à bord de l'appareil? Aucune idée.

Ce que je sais, c'est que ce sont des accéléromètres triaxiaux avec un taux d'échantillonnage de 20 Hz; numérique et probablement MEMS. Je m'intéresse au comportement non verbal et aux gestes qui, selon mes sources, devraient principalement produire une activité dans la plage de 0,3 à 3,5 Hz.

Normaliser les données semble tout à fait nécessaire, mais je ne sais pas quoi utiliser. Une très grande partie des données est proche des valeurs de repos (valeurs brutes de ~ 1000, par gravité), mais il y a des extrêmes comme jusqu'à 8000 dans certains journaux, ou même 29000 dans d'autres. Voir l'image ci-dessous . Je pense que cela en fait une mauvaise idée de diviser par le max ou stdev pour normaliser.

Quelle est l'approche habituelle dans un cas comme celui-ci? Diviser par la médiane? Une valeur centile? Autre chose?

Comme problème secondaire, je ne sais pas non plus si je devrais couper les valeurs extrêmes ..

Merci pour tout conseil!

Edit : Voici un tracé d'environ 16 minutes de données (20000 échantillons), pour vous donner une idée de la façon dont les données sont généralement distribuées.

entrez la description de l'image ici


1
Pouvez-vous fournir un peu plus d'informations sur votre configuration de mesure? Questions qui me viennent à l'esprit: ( 1 ) S'agit-il d'accéléromètres mono-axes ou multi-axes? ( 2 ) Sont-ils filtrés passe-haut ou non et, si oui, comment? (Il semble que ce ne soit pas le cas, d'après votre description.) ( 3 ) Que mesurez-vous exactement et quelle est la plage de fréquences du signal qui vous intéresse? ( 4 ) Quel est le mécanisme de détection (c.-à-d. MEMS, piézoélectrique, capacitif, etc.) ou même le numéro de pièce (!) Des accéléromètres que vous utilisez? ...
cardinal

... (suite) ( 5 ) Sont-ils entièrement numériques ou avez-vous votre propre ADC (16 bits, peut-être, selon la description que vous donnez)?
cardinal

@cardinal: J'ai modifié les réponses à vos questions, merci de les avoir posées. Je ne sais pas ce qu'est un ADC. J'ai participé à l'expérience, mais pas à l'extraction des données de la mémoire de l'appareil, il y a un écart entre la collecte de données et l'endroit où j'ai reçu un tas de journaux binaires.
Junuxx

Salut, Junuxx. Désolé pour l'acronyme inexpliqué (ADC = "convertisseur analogique-numérique"); J'ai implicitement supposé que vous le reconnaîtriez sur la base de votre question.
cardinal

1
Qu'essayez-vous de découvrir à partir de ces données? Essayez-vous peut-être de détecter certains types d'événements, d'estimer la fréquence des événements, d'estimer les accélérations moyennes, de trouver des corrélations entre différents accéléromètres, ...? Le fait est que si vous souhaitez de bons conseils pertinents, ne posez pas de questions sur les procédures techniques avec les données (qui peuvent être non pertinentes ou même inutiles, selon l'application): dites-nous d'abord quel problème vous essayez de résoudre.
whuber

Réponses:


14

Les signaux bruts que vous montrez ci-dessus semblent être non filtrés et non calibrés. Un filtrage et un étalonnage appropriés , avec un certain rejet d'artefact , normaliseront en fait les données. L'approche standard avec les données de l'accéléromètre est la suivante:

  1. Filtre - p. Ex. Filtre passe-bas ou passe-bande IIR de phase 4, ordre zéro
  2. Rejet d'artefact - basé sur un seuil
  3. Calibrer - La méthode Ferraris et al ( Procédure pour un étalonnage sans effort sur le terrain des gyroscopes à trois axes et des accéléromètres, F Ferraris, U Grimaldi, M Parvis - Sensors and Actuators, 1995 ) fonctionne bien pour cela.

Il est conseillé d'effectuer un rejet d'artefact sur les données du capteur inertiel. Je crains que vous ne connaissiez pas la provenance des données et que vous ne puissiez donc pas garantir que les capteurs ont été fixés correctement et de manière cohérente (en termes d'orientation et de placement physique) à tous les sujets. Si les capteurs n'étaient pas fixés correctement, vous pouvez obtenir beaucoup d'artefacts dans les signaux, car le capteur peut se déplacer par rapport au segment corporel. De même, si les capteurs étaient orientés différemment (dans la façon dont ils étaient placés) sur différents sujets, les données seront difficiles à comparer entre les sujets.

Compte tenu de la taille des valeurs aberrantes que vous signalez, elles semblent être probablement des artefacts. Ces artefacts fausseraient presque certainement tout calcul d'étalonnage (bien que leur effet soit atténué par un filtrage approprié) et l'étalonnage devrait donc être effectué après le rejet de l'artefact.

Un seuil simple peut bien fonctionner pour une routine de rejet d'artefact initial, c'est-à-dire retirer (ou remplacer par NaN) tous les échantillons au-dessus d'un certain seuil empirique. Des techniques plus sophistiquées calculeront de manière adaptative ce seuil à l'aide d'une moyenne courante ou d'une fenêtre mobile.

Selon l'emplacement du capteur, vous pouvez également corriger l'influence de la gravité sur les signaux d'accélération, bien qu'une compréhension détaillée des axes et du positionnement du capteur soit ici cruciale. La méthode Moe-Nillson ( R. Moe-Nilssen, A new method for evaluation motor control in gait in real-real environment conditions. Part 1: The instrument, Clinical Biomechanics, Volume 13, Issues 4–5, June – July 1998, Pages 320-327 ) est le plus couramment utilisé et fonctionne bien pour les capteurs inertiels montés dans le bas du dos.

Un bon endroit pour commencer à examiner les données pour la reconnaissance des gestes serait de diviser les données filtrées et calibrées en époques (par exemple 10 s) et de calculer un certain nombre de caractéristiques par époque et de les relier aux étiquettes que vous avez pour les données, je peux '' t proposer des conseils plus spécifiques sans en savoir plus sur l'ensemble de données et les labels associés.

J'espère que cela t'aides.


C'est une réponse incroyable @BGreene, merci beaucoup! Les références sont également très utiles. J'aimerais avoir posé cette question il y a quelques mois. Les capteurs étaient portés sur un cordon autour du cou (pas mon idée), donc il y a certainement beaucoup de mouvement par rapport au corps. Certaines de vos suggestions pourraient être plus appropriées pour de plus amples recherches, je pense, mais au moins elles seront utiles pour ma section Future Work. Et heureusement, la partie reconnaissance n'est pas le problème, j'ai une formation assez solide en apprentissage automatique, mais merci pour les suggestions à ce sujet également.
Junuxx

Aucun problème. Dans ce cas, je pense que vous serez limité à l'examen des mouvements bruts car un cordon signifie que vous ne pouvez pas dire de manière fiable comment le corps se déplaçait, uniquement le capteur. Vous pouvez peut-être déduire que de grandes valeurs de sortie de capteur correspondent à de grands mouvements bruts, mais vous perdez beaucoup la netteté d'un capteur correctement fixé.
BGreene

(+1 hier) Quelques points peuvent être pris en compte dans (1.) ci-dessus. Étant donné que la limite inférieure de la plage de fréquences d'intérêt est assez petite, une alternative à considérer consiste simplement à appliquer un filtre passe-bas et à soustraire la moyenne. Deuxièmement, au lieu d'un filtre IIR, on pourrait envisager un filtre à réponse impulsionnelle finie en phase linéaire dans ce cas. Je dis cela parce que je soupçonne que pour prédire les gestes en utilisant le signal accéléromètre multi-axes, on voudra garder le mouvement synchronisé indépendamment de la fréquence. (suite)
cardinal

(...) La réponse de phase non linéaire d'un filtre IIR décalera différentes composantes de différentes quantités et cet effet a tendance à être pire près des fréquences de coupure. Étant donné que tout est numérique, il est logique d'utiliser un filtre FIR à phase linéaire. Souvent, on a également un meilleur contrôle de la réponse transitoire. :-)
Cardinal

@cardinal c'est tout à fait vrai - j'ai modifié ma réponse ci-dessus. viens de vérifier mon code - mon algorithme d'accéléromètre le plus récent utilise un filtre Butterworth IIR à phase zéro. Bien que je préfère éviter de soustraire la moyenne pour les segments de données courts
BGreene
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.