30 maja 2006 |
||||||||||||||||||||||||||||||
Identyfikacja sygnałów EMGProjekt wykonany na przedmiot: Metody sztucznej inteligencji. Wykonał: Paweł Prociów [128226] WprowadzenieSygnał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. Zakres projektuCelem 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 eksperymentuDo 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 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ę 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 KohonenaZe 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. Podczas uczenia na wejście sieci podawane są cyklicznie kolejne przykłady
uczące. 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ściowegoPojedynczy 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. 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ń 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 ImplementacjaDo 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. WynikiBadania 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:
Wyniki podano w [%] Wnioski i analizaPo 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" Grafika przedstawiająca sieć neuronową zaczerpnięta z pracy mag. Sebastiana Busza |