30 maja 2006

Identyfikacja sygnałów EMG


Projekt wykonany na przedmiot: Metody sztucznej inteligencji.

Wykonał:
Paweł Prociów [128226]

Wprowadzenie

Sygnały EMG są tą niewielkie potencjały (zwane miopotencjałami) pojawiające się na powierzchni skóry człowieka podczas pracy mięśni. Odznaczają się one małą częstotliwością (nie więcej jak 500 Hz) oraz niewielką amplitudą, co znacznie utrudnia ich rejestrowanie. Jednakże mogą one nieść istotne informacje na temat ruchów danej części ciała (np. dłoni) dzięki czemu można dokonać próby korelacji tych pobudzeń z konkretnymi ruchami. Efektem byłaby inteligentna proteza uszkodzonych bądź brakujących części ciała sterowana miopotencjałami, których źródłem byłyby zdrowe mięśnie.
Aby jednak tak się stało potrzebne są wnikliwe badania biosygnałów oraz ich klasyfikacja i identyfikacja.

Zakres projektu

Celem projektu jest stworzenie sieci neuronowej identyfikującej ruchy dłoni na podstawie pomiarów sygnału EMG z określonych części przedramienia. Dane wejściowe są uzyskane z serii badań przeprowadzonych w labolatorium 06 w Instytucie Cybernetyki Technicznej. Po ich przeprowadzeniu nastąpilo dobranie metody identyfikacji zbadanych sygnałów i przeprowadzenie analizy różnych wariantów tej metody. Akwizycja sygnałów dotyczyła tej samej osoby, a elektrody były podłączone do tych samych punktów. Część obliczeniowa projektu została zrealizowana w środowisku MATLAB dostępnym w labolatoriach instytutu.

Opis eksperymentu

Do przedramienia zostały przymocowane trzy elektrody aktywne wzmacniające sygnał EMG. Elektrody zostały umieszczone nad najbardziej aktywnymi mieśniami odpowiadającymi za ruchy nadgarstka oraz niektóre ruchy palców (głównie wskazującego i środkowego). Opróćz tego na przegub została nałożona opaska z elektrodą odniesienia będąca masą dla sygnału z elektrod pomiarowych. Sposób podłączenia elektrod oraz jej wygląd zostały przedstawione na rysunku poniżej

<brak obrazka>

Elektrody podłączono do specjalnego stanowiska pomiarowego wyposażonego w kartę przetwornika Analogowo-Cyfrowego. Nastepnie dokonano serii pomiarów dla 7 podstawowych ruchów dłoni:

1) Wychylenia nadgarstka w górę
2) Wychylenia nadgarstka w dół
3) Obrotu dłoni w prawo
4) Obrotu dłoni w lewo
5) Zaciśnięcia dłoni
6) Chwyt obiektu o dużej średnicy
7) Pozycja neutralna (swobodna)

Jeden pomiar trwał 4 sekundy podczas których rejestrowano sygnał EMG ze wszystkich elektrod z częstotliwością 1000 Hz

Wybór metody identyfikacji - opis sieci Kohonena

Ze względu na największą uniwersalnośc oraz możliwości adaptacji, do identyfikacji modelu wybrano metodę samoorganizujących się sieci neuronowych Kohonena. Zasada ich działania jest odmienna, od sieci wielowarstwowych MLP. Sieci Kohonena składają się zazwyczaj z jednej warstwy zawierającej k neuronów. Każdy z neuronów warstwy jest połączony ze wszystkimi składowymi wektora wejściowego poprzez wagi. We współzawodnictwie wygrywa ten neuron, którego wektor wag jest najbliższy wektorowi wejściowemu w sensie przyjętej metryki. W tym przypadku obrano najprostszą metrykę odległości euklidesowej.

Dodatkowo ustala się topologię sieci, przy czym w tym wypadku nie odzwierciedla ona sposobu połączenia neuronów z wejściem i nie jest związana z wymiarem wektora wejściowego. Topologia określa jedynie sposób i zakres oddziaływania neuronów na siebie podczas uczenia. Najczęściej stosowane topologie, to topologia liniowa oraz planarne: prostokątna i heksagonalna. Wokół zwycięskiego neuronu definiuje się tzw. topologiczne sąsiedztwo o określonym promieniu. Promień sąsiedztwa jest zmniejszany podczas uczenia. Przykład sąsiedztwa w formie łańcuch dla 2 wejść i 6 neuronów został pokazany na rysunku poniżej.

<brak obrazka>

Podczas uczenia na wejście sieci podawane są cyklicznie kolejne przykłady uczące.
W chwili t, neuron wygrywający c oraz neurony należące do jego sąsiedztwa podlegają adaptacji, zmieniając swoje wektory wag w taki sposób, aby były one bliższe prezentowanemu wektorowi uczącemu. Adaptacja wag dla wszystkich neuronów należących do otoczenia wygrywającego neuronu c następuje zgodnie ze wzorem:<brak obrazka>,
dla pozostałych wektor wag pozostaje bez zmian.

Modyfikacją tej metody jest klasyfikacja LVQ polegająca na przyporządkowaniu neuronowi opdpowiadającej mu klasy. Wówczas mozna przeprowadzić uczenie takiej sieci poprzez zadawanie przykładu uczącego. W sytuacji gdy wygrywający neuron nie jest przypisany do klasy z której pochodzi wektor uczący wówczas wagi są oddalane.a w przeciwnym razie są zbliżane do przykładu uczącego. Ta metoda znalazła zastosowanie w omawianym przykładzie, gdyż ilość klas, do których nalezy zaklasyfikowac dany przykład jest z góry określona.

Klasyfikację można przeprowadzac dla różnych ilości neuronów przypadającej na klasę oraz różnych wartości współczynnika uczenia. Takie badania zostały przeprowadzone w ramach projektu.

Ekstrakcja cech - tworzenie wektora wejściowego

Pojedynczy kanał rejestrowano z częstotliwością 1000Hz w czasie 4 s. to daje 4000 próbek na kanał. Łącznie ze wszystkich kanałów zarejestrowano 12000 próbek na jeden pomiar. To zdecydowanie za duża liczba wejść do jakiejkolwiek sieci neuronowej.

1) Pierwszym na drodze do ekstrakcji cech jest przeprowadzenie transformaty Foureiera dla zarejestrowanego sygnału. Dziedzina częstotliwości niesie więcej informacji o rejestrowanym sygnale. Efekt zaprezentowany jest na wykresach po niżej. Po lewej znajduje się sygnał oryginalny a po prawej jego widmo częstotliwościowe.

<brak obrazka>

2) Następnym krokiem jest uśrednienie widma metodą sąsiednich częstotliwości. Używa się określonej ilośći punktów uśredniających. Poniżej pokazano efekt dla 20 punktów. Taką ilość stosowano do późniejszych badań

<brak obrazka>

3) Ostatnim etapem jest tworzenie wektora wejściowego do sieci. Redukuje sie tu wynik poprzedniego kroku tak aby uzyskać wektor wejściowy X o rozmiarze 60. Tak wiec dla każdego kanału wybrano 20 punktów w równomiernych odstępach. W ten sposób uzyskuje się wektor wejściowy złożony z 60 elementów

Procedurę powtórzono dla wszystkich przeprowadzonych pomiarów

Implementacja

Do przeprowadzenia badań oraz obróbki danych uzyskanych z karty pomiarowej labolatorium napisano szereg skryptów w środowisku Matlab. Pierwsza grupa tych skryptów obsługuje kolejne etapy selekcji wektora wejściowego opisane powyżej. Druga zajmuje się implementacją opisanej metody klasyfikacji. Funkcja testująca sprawdza utoworzoną macierz wektorów wejściowych w ustalonej sekwencji w zależności od ilości klas na neuron oraz współczynnika uczenia.

Wyniki

Badania przeprowadzono dla różnej ilości neuronów przypadających na klasę oraz różnych wartości współcznnika uczącego alfa. Wyniki przeprowadzonych eksperymentów przedstawia tabela:

n=1
n=3
n=5
n=8
n=10
alfa=0.5
18.57
15.71
17.14
14.28
14.28
alfa =0.1
21.42
17.14
17.14
14.28
14.28
alfa=0.01
24.28
18.57
17.14
14.28
14.28
alfa =0.01
24.28
18.57
17.14
14.28
14.28

 

Wyniki podano w [%]

Wnioski i analiza

Po przeprowadzeniu symulacji wyniki nie są do końca zadowalające. Uzyskano błąd na poziomie 14% co jest stosunkowo dobrą rozróżnialnością jak na mało zróżnicowany sygnał, jednak należy szukać sposobów na ulepszenie tej statystyki.

1) Z punktu widzenia eksperymentu mozna poprawić rozmieszczenie elektrod. Spróbować znaleźć miejsca, w których sygnał będzie dostatecznie silny i niósł dalszą informację. Mozna także dokonać prób z dołożeniem kolejnego kanału zbierania informacji jak pomiar drgań akustycznych z mięśnia (mechanomiografia).

2) Można ulepszyć sposób przetwarzania i ekstrakcji cech do wejścia sieci neuronowej. Na przykład zastosować transformatę falkową w miejsce transformaty Fouriera.

3) W samej sieci Kohonena można zastosować bardziej zaawansowane algorytmy uczenia jak LVQ2 i LVQ3 a także sprawdzać czy w sieci nie ma zbyt dużo nieużywanych neuronów. Niestety ze względu an czasochłonność badań nie udało sie tego włączyć do zakresu tego projektu.

Literatura

[1] Timothy Masters - "Sieci neuronowe w praktyce"
[2] Jerzy Moczko, Lucyna Kramer - "Cyfrowe metody przetwarzania sygnałów biomedycznych"
[3] praca zbiorowa - "Postępy robotyki - przemysłowe i medyczne systemy robotyczne"
[4] Bogumiła Mrożek, Zbigniew Mrożek "Matlab i Simulink"

Grafika przedstawiająca sieć neuronową zaczerpnięta z pracy mag. Sebastiana Busza