Rozpoznawanie ruchów dłoni na podstawie sygnałów EMG

Paweł Szuman, Jan Matus
Wrocław, 14.06.2010

Niniejsze sprawozdanie zostało wykonane w ramach zaliczenia projektu z przedmiotu Metody i algorytmy sztucznej inteligencji.



EMG-based hand gesture recognition

Paweł Szuman, Jan Matus
Wroclaw, 14.06.2010

The project described in this report has been completed to fulfill the requirements for the course: Methods and algorithms of artificial intelligence.


Summary

EMG signals are result of muscle vibration occurring while performing movements. These vibrations (mio-potentials) are measured by electrodes placed of forearm of the subject. Further, signals are transmitted in a form of currents of various frequencies to the device that acquires them.

The purpose of this project is to recognize movements of object’s (patient’s) forearm, based on EMG signals. Extraction of specific set (vector) of features from the signal is done by using autoregression method. Nearest-Neighbor algorithm was used to categorize EMG-signal’s characteristics to specific class of movement. Throughout analysis and classification we used MATLAB environment.

In the final phase of our project we carried out experiments to check whether classification of measured EMG-signal was correct, and whether the patient did perform identified, or similar, movement in reality. Results show that we achieved correct classification in 85% of cases while using 4 different classes of movements, and 68% for 5 classes.


1. Opis zadania

Sygnały EMG powstają w wyniku zmierzenia aktywności mięśni, które drgają podczas wykonywania czynności. Drgania te (miopotencjały) mierzone są za pomocą elektrod. Następnie przekazywane są w postaci napięć o różnej częstotliwości do urządzenia zczytującego pomiary.

Celem projektu jest rozpoznanie ruchu dłoni na podstawie sygnałów EMG rejestrowanych na przedramieniu pacjenta. Ekstrakcja wektora cech z sygnału została wykonana metodą autoregresji. Do klasyfikacji sygnału do konkretnego ruchu ręki użyliśmy algorytmu najbliższego sąsiada (NN - Nearest Neighbour). Do analizy i klasyfikacji sygnałów wykorzystaliśmy środowisko Matlab.

Końcowym etapem projektu było przeprowadzenie eksperymentu polegającego na klasyfikacji zmierzonego sygnału do pewnej klasy ruchu ręki za pomocą wykorzystanej przez nas metody i sprawdzenie, czy w rzeczywistości pacjent wykonywał podobny ruch.


2. Zastosowane metody

2.1 Przygotowanie danych

Baza analizowanych sygnałów pochodzi z gotowych pomiarów ruchów dłoni opracowanych przez inne grupy przy pomocy stanowiska dostępnego w laboratorium 06. Pomiary obejmują 5 różnych ruchów dłoni:

  1. Chwytanie kartki papieru
  2. Prostowanie jednocześnie wszystkich palców dłoni
  3. Obsługa myszki komputerowej
  4. Obejmowanie całą dłonią butelki
  5. Pisanie długopisem po kartce

Pomiary zostały wykonane z częstotliwością 1kHz, czyli 1000 próbek/sek. Jeden ruch trwał średnio 1,5 sek i był powtarzany 10-15 razy. Dysponowaliśmy pomiarami z 8 kanałów, przy czym analizie poddaliśmy 5 najbardziej reprezentatywnych kanałów.

2.2 Wykrycie ruchu

W pierwszym etapie wyodrębnialiśmy z sygnału tylko te fragmenty, w których pacjent rzeczywiście wykonywał ruch. Zmierzone sygnały EMG były obarczone zakłóceniami wynikającymi m.in. z niedokładności użytego sprzętu pomiarowego (elektrod) oraz potencjału elektrycznego znajdującego się na skórze pacjenta. W celu eliminacji dużej wariancji pomiarów zastosowaliśmy filtrację sygnału średnią ruchomą rzędu 10 (rys 1.)

Wygładzanie sygnału
Rys.1 Sygnał EMG – kolor czerwony. Na niebiesko sygnał po wygładzeniu średnią ruchomą rzędu 10.

Następnie wyrównaliśmy pozostałe małe wahania sygnału poprzez zastąpienie ich średnią wartością z każdej paczki danych o liczności 500 próbek (co odpowiada 0.5 sek ruchu).

Sygnał po eliminacji zakłóceń
Rys.2 Na czerwono – sygnał po eliminacji zakłóceń.

Mając tak przygotowane dane, obliczyliśmy średnią energię sygnału, sumując energie paczek danych po 500 próbek i dzieląc przez ilość paczek. Energia jednej paczki danych definiowana jest poniższym wzorem, gdzie N oznacza liczność paczki:
Energia paczki

Uznawaliśmy, że w danej paczce został wykryty ruch, jeśli energia tej paczki była większa bądź równa średniej energii całego sygnału. Następnie porównywaliśmy, w których paczkach został wykryty ruch dla wszystkich pięciu kanałów danego sygnału. Ostatecznie akceptowaliśmy tylko te paczki, dla których ruch był wykryty dla co najmniej mniej 3 kanałów.

Paczka z wykrytym ruchem
Rys. 3 Sygnał składający się z 5 paczek (2500 próbek). Na czerwono – paczka, dla której został wykryty ruch.

2.3 Ekstrakcja cech sygnału

Ekstrakcja cech sygnału polega na wyodrębnieniu z sygnału wektora cech, na podstawie którego będziemy mogli zaklasyfikować sygnał do jednego z 5 rodzajów ruchu ręki opisanych w punkcie 2.1. Do ekstrakcji cech wykorzystaliśmy metodę autoregresji używaną do analizy szeregów czasowych.

Metoda autoregresji

W modelach autoregresyjnych wartość obecna Yt zmiennej prognozowanej określana jest funkcją od wartości tej samej zmiennej z okresów poprzednich oraz czynnika losowego:
prognoza

Model autoregresji AR(p) to liniowy model autoregresji rzędu p:
Wzor na model AR

Zakładamy, że εt ma rozkład N(0,σ).

Pojawiające się we wzorze współczynniki α są szukanymi przez nas cechami sygnału. Do ich wyznaczenia zastosowaliśmy metodę najmniejszych kwadratów dla modeli liniowych. Metoda ta minimalizuje kwadratowy wskaźnik niedopasowania danych do modelu, tzn. wyznacza α* = arg min Q(α), gdzie
Wzor na Q
ŷ - prawdziwy sygnał
y - model sygnału y otrzymany metodą autoregresji

Szczegóły wyznaczania współczynników a metodą najmniejszych kwadratów opisano w pracy [6].

2.4 Klasyfikacja sygnału

Dysponujemy wektorami cech sygnału o liczności p, uzyskanymi metodą autoregresji AR(p). Wektor cech obliczony został dla każdego z pięciu kanałów, co daje p*5 cech określających sygnał. Dodatkowo z etapu wykrywania ruchu (pkt. 2.2) mamy 8-14 fragmentów każdego z 5 sygnałów reprezentujących różne ruchy ręki. Za pomocą metody najbliższych sąsiadów dokonamy klasyfikacji nieznanego sygnału jako jednego z 5 ruchów dłoni.

Nearest Neighbor (NN)

Algorytm ten zalicza klasyfikowany obiekt x do zbioru, do którego odległość obiektu od jednego z elementów zbioru uczącego SN jest najmniejsza.

Wzór algorytmu nn


3. Implementacja programowa

W celu przeprowadzenia eksperymentu napisaliśmy program w środowisku Matlab. Na etapie 2.2 – wykrycie ruchu – samodzielnie napisaliśmy obliczanie średniej z sygnału i energii sygnału, a do wygładzenia sygnału metodą średniej ruchomej posłużyła nam dostępna w Matlabie funkcja smooth(). Na etapie ekstrakcji cech skorzystaliśmy z gotowej implementacji funkcji autoregresji dostępnej w Matlabie. Algorytm najbliższych sąsiadów zaprogramowaliśmy na bazie własnego kodu realizowanego prędzej w ramach kursu Rozpoznawanie obrazów.


4. Przykład działania programu

Przykłady analizy sygnału EMG na różnych etapach działania programu przedstawiają zamieszczone prędzej rysunki 1-3. Dodatkowo poniżej zamieszczamy przykładowe macierze z etapu klasyfikacji metodą NN:

T_klasy =
2 1 1 4 1 1
1 5 1 2 3 1
3 3 2 4 2 2
1 5 2 2 2 2
1 2 2 2 2 2

Macierz T_klasy zawiera w kolumnach 1-5 numer klasy, do której został zaklasyfikowany sygnał dla kanałów 1-5. Kolumna 6 zawiera numer prawdziwej klasy, do której sygnał należy. Wiersze to kolejne obiekty testowe. Macierz została pomniejszona do pięciu pierwszych obiektów testowych.

Klasy_procent =
60 20 00 20 00
40 20 20 00 20
00 40 40 20 00
20 60 00 00 20
20 80 00 00 00

Macierz Klasy_procent pokazuje w ilu procentach klasyfikator przypisuje obiekt testowy do poszczególnych klas.

T_przydzial =
1 1 0
1 1 0
2 2 3
2 2 0
2 2 0

W macierzy T_przydział kolumna 1 oznacza nr prawdziwej klasy obiektu, kolumna 2 nr klasy zwróconej przez klasyfikator. W kolumnie 3 pojawia się wartość, jeżeli klasyfikator przypisał obiektowi dwie klasy w równym procencie (czyli nie jest pewien klasy). W takim wypadku, jeśli jedna z tych klas jest równa prawdziwej klasie obiektu, uznajemy częściowy błąd przydziału do klasy (w liczeniu błędu zostanie uwzględniona wartość 0.5).


5. Wyniki

Dla pięciu klas (5 różnych ruchów), ciąg uczący zawierał 33 sygnały, a ciąg testujący 14, natomiast dla 4 klas ciąg uczący zawierał 23 sygnały, a testujący 10. Procent poprawnie sklasyfikowanych ruchów przedstawia tabela 1.

Rząd autoregresji4 klasy ruchu5 klas ruchu
26550
38568
46050
65540

Gorszy wynik został uzyskany dla większej ilości klas ruchów. Stało się tak, ponieważ niektóre cechy klasy 5 były podobne do cech z poprzednich klas, co wpłynęło na błędną klasyfikację.

Najlepsze wyniki klasyfikacji uzyskaliśmy dla autoregresji rzędu 3. Mniejszy rząd uzyskał gorsze wyniki, ponieważ dostarczał zbyt mało informacji o sygnale. W przypadku rzędu wyższego od 3, mamy do czynienia z sytuacją, w której zmienna prognozowana określana jest na podstawie zbyt wielu okresów poprzednich. Prognoza zawiera w tym przypadku nieaktualne informacje o zmiennej, przez co jej oszacowanie pogarsza się, co skutkuje zwiększeniem błędu klasyfikacji.


6. Wnioski

Największą trudność w projekcie sprawiło nam rozpoznanie w sygnale EMG fragmentów, w których odbywał się ruch. Trudność spowodowana była zakłóceniami, jakimi obarczone są pomiary.

Najlepsze wyniki klasyfikacji uzyskaliśmy dla autoregresji rzędu 3. Dla tego przypadku wyniki przy czterech klasach ruchu są zadowalające (85% poprawności rozpoznawania ruchu). Natomiast błąd rzędu 30% dla 5 klas nie jest zbyt dobrym rezultatem. Przyczynę błędu należy upatrywać w użytym klasyfikatorze NN (jego prostocie). Dodatkowo klasyfikator najbliższych sąsiadów wykazuje silną zależność poprawności klasyfikacji od ilości elementów ciągu uczącego, których w naszym przypadku nie było zbyt wiele. Prawdopodobnie lepsze wyniki zwróciłyby w tym przypadku bardziej skomplikowane klasyfikatory, jak np. klasyfikatory oparte o sieci neuronowe. Wykorzystanie sprzętu o większej czułości pomiarowej i odporności na zakłócenia również polepszyłoby jakość klasyfikacji..


7. Bibliografia

  1. WOŁCZOWSKI A., KURZYŃSKI M., "Sterowanie bioprotezą poprzez rozpoznawanie sygnałów bioelektrycznych" Postępy Robotyki, red. K. Tchoń, WKiŁ, Warszawa 2006
  2. KURZYŃSKI M., „Rozpoznawanie obiektów. Metody statystyczne”, Oficyna wydawnicza Politechniki Wrocławskiej, Wrocław 1997.
  3. G. BOX, J. JENKINS, „Analiza szeregów czasowych. Prognozowanie i sterowanie.” PWN, Warszawa 1986.
  4. MROZEK B., MROZEK Z., „MATLAB i Symulink. Poradnik użytkownika”, wyd. Helion, Gliwice, 2004
  5. Sygnały EMG: http://delsys.com/KnowledgeCenter/Tutorials_Technical%20Notes.html
  6. GRAD LESZEK „Obrazowa reprezentacja sygnału mowy”, Biuletyn Instytutu Automatyki i Robotyki WAT nr 8, 1997, Warszawa.
    http://www.ita.wat.edu.pl/~lgrad/sieci%20neuronowe/ekstrakcja_cech_mowy.pdf

Valid XHTML 1.0 Transitional Powered by MS Notepad Powered by MS Windows