1. ABSTRAKT WSTĘP KONCEPCJA PROPONOWANEGO ROZWIĄZANIA REZULTATY I WNIOSKI PODSUMOWANIE LITERATURA...

Podobne dokumenty
1.ABSTRAKT REZULTATY I WNIOSKI PODSUMOWANIE LITERATURA...5 DODATEK C. OPIS INFORMATYCZNY PROCEDUR... 7

AKADEMIA GÓRNICZO-HUTNICZA im. St. Staszica w Krakowie

Automatyczna klasyfikacja zespołów QRS

NEURAL NETWORK ) FANN jest biblioteką implementującą SSN, którą moŝna wykorzystać. w C, C++, PHP, Pythonie, Delphi a nawet w środowisku. Mathematica.

AKADEMIA GÓRNICZO-HUTNICZA im. St. Staszica w Krakowie

1. ABSTRAKT REZULTATY I WNIOSKI PODSUMOWANIE LITERATURA DODATEK C: OPIS INFORMATYCZNY PROCEDUR...

Sztuczna Inteligencja Tematy projektów Sieci Neuronowe

Detekcja zespołów QRS w sygnale elektrokardiograficznym

Algorytmy sztucznej inteligencji

Detekcja zmienności rytmu serca

Tom 6 Opis oprogramowania

AKADEMIA GÓRNICZO-HUTNICZA im. St. Staszica w Krakowie

Zastosowania sieci neuronowych

AKADEMIA GÓRNICZO-HUTNICZA im. St. Staszica w Krakowie

P R Z E T W A R Z A N I E S Y G N A Ł Ó W B I O M E T R Y C Z N Y C H

Spis treści: 7. DODATEK A: OPIS INFORMATYCZNYCH PROCEDUR DODATEK B: SPIS ZAWARTOŚCI DOŁĄCZONEGO NOŚNIKA Wersja 1.0 Kraków, styczeń 2010.

P R Z E T W A R Z A N I E S Y G N A Ł Ó W B I O M E T R Y C Z N Y C H

Tom 6 Opis oprogramowania Część 8 Narzędzie do kontroli danych elementarnych, danych wynikowych oraz kontroli obmiaru do celów fakturowania

SYSTEM BIOMETRYCZNY IDENTYFIKUJĄCY OSOBY NA PODSTAWIE CECH OSOBNICZYCH TWARZY. Autorzy: M. Lewicka, K. Stańczyk

Adrian Horzyk

EGZAMIN MATURALNY W ROKU SZKOLNYM 2017/2018 INFORMATYKA

Politechnika Świętokrzyska. Laboratorium. Cyfrowe przetwarzanie sygnałów. Ćwiczenie 6. Transformata cosinusowa. Krótkookresowa transformata Fouriera.

SZTUCZNA INTELIGENCJA

Deep Learning na przykładzie Deep Belief Networks

PROGNOZOWANIE OSIADAŃ POWIERZCHNI TERENU PRZY UŻYCIU SIECI NEURONOWYCH**

Analiza zmienności rytmu serca (HRV). Analiza częstotliwościowa sygnałów próbkowanych niejednorodnie

Argumenty wywołania programu, operacje na plikach

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

Metody Sztucznej Inteligencji II

Podstawy Programowania Obiektowego

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Zastosowanie optymalizacji rojem cząstek (PSO) w procesie uczenia wielowarstwowej sieci neuronowej w problemie lokalizacyjnym

SYMULATOR EKG. Bartłomiej Bielecki 1, Marek Zieliński 2, Paweł Mikołajaczak 1,3

Tom 6 Opis oprogramowania

Sieci neuronowe - dokumentacja projektu

Programowanie obiektowe

Przedsionkowe zaburzenia rytmu

Problem eliminacji nieprzystających elementów w zadaniu rozpoznania wzorca Marcin Luckner

1. ABSTRAKT WSTĘP KONCEPCJA PROPONOWANEGO ROZWIĄZANIA REZULTATY I WNIOSKI PODSUMOWANIE LITERATURA...

Zastosowanie sztucznej inteligencji w testowaniu oprogramowania

EKG Zaburzenia rytmu i przewodzenia cz. II

PAKIET IV poz. 1. STYMULATORY SERCA AUTOMATYCZNE PROSTE JEDNOJAMOWE SSIR w komplecie z elektrodą 2014 Parametry wymagane pkt 1-21 i oceniane pkt 19-22

Algorytmy decyzyjne będące alternatywą dla sieci neuronowych

Wstęp do Programowania, laboratorium 02

Spis treści. Rozdział 1. Aplikacje konsoli w stylu ANSI C i podstawowe operacje w Visual C

Oprogramowanie Analizy Elektrokardiogramów dla Nauki i Edukacji

Załącznik Nr 3 do siwz OPIS PRZEDMIOTU ZAMÓWIENIA - PARAMETRY JAKOŚCIOWE. Część 1 - Defibrylator - kardiowerter ICD-VR jednojamowy z elektrodami

Generator przebiegów pomiarowych Ex-GPP2

Data Mining Wykład 9. Analiza skupień (grupowanie) Grupowanie hierarchiczne O-Cluster. Plan wykładu. Sformułowanie problemu

Przetwarzanie sygnałów w systemach diagnostyki medycznej 1. ABSTRAKT SCHEMAT DZIAŁANIA PROGRAMU GŁÓWNEGO REZULTATY I WNIOSKI...

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

System holterowski (należy podać nazwę):

Wykrywanie twarzy na zdjęciach przy pomocy kaskad

Bioinformatyka. Ocena wiarygodności dopasowania sekwencji.

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

PRZEDMIOT ZAMÓWIENIA - PARAMETRY JAKOŚCIOWE

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

RAPORT KOŃCOWY 3. KONCEPCJA PROPONOWANEGO ROZWIĄZANIA DODATEK A: OPIS OPRACOWANYCH NARZĘDZI I METODY POSTĘPOWANIA... 14

Wstęp do sieci neuronowych laboratorium 01 Organizacja zajęć. Perceptron prosty

Szablony klas, zastosowanie szablonów w programach

Wstęp do sieci neuronowych, wykład 02 Perceptrony c.d. Maszyna liniowa.

Analiza i projektowanie aplikacji Java

LABORATORIUM AKUSTYKI MUZYCZNEJ. Ćw. nr 12. Analiza falkowa dźwięków instrumentów muzycznych. 1. PODSTAWY TEORETYCZNE ANALIZY FALKOWEJ.

Wprowadzenie do biblioteki klas C++

Słowem wstępu. Część rodziny języków XSL. Standard: W3C XSLT razem XPath 1.0 XSLT Trwają prace nad XSLT 3.0

Materiał. Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Funkcje Wskaźniki Referencje Tablice dynamiczne Typ string Przeładowania funkcji

Elektrokardiografia dla informatyka-praktyka / Piotr Augustyniak. Kraków, Spis treści Słowo wstępne 5

ZACHODNIOPOMORSKI UNIWERSYTET TECHNOLOGICZNY W SZCZECINIE

PL B1. Sposób i układ pomiaru całkowitego współczynnika odkształcenia THD sygnałów elektrycznych w systemach zasilających

Laboratorium Przetwarzania Sygnałów Biomedycznych

OpenAI Gym. Adam Szczepaniak, Kamil Walkowiak

Scenariusz lekcji. zdefiniować elementy wykresu (zakres danych, serie danych, legenda, zakres wartości, etykiety osi);

Zastosowanie sieci neuronowych w problemie klasyfikacji wielokategorialnej. Adam Żychowski

Podstawy sztucznej inteligencji

Optymalizacja optymalizacji

Podstawy OpenCL część 2

Detekcja punktów zainteresowania

Wstęp do sieci neuronowych, wykład 04. Skierowane sieci neuronowe. Algorytmy konstrukcyjne dla sieci skierowanych

Lab 9 Podstawy Programowania

Języki i metodyka programowania. Wprowadzenie do języka C

Część I. Uwaga: Akceptowane są wszystkie odpowiedzi merytorycznie poprawne i spełniające warunki zadania. Zadanie 1.1. (0 3)

3. KONCEPCJA PROPONOWANEGO ROZWIĄZANIA DODATEK A: OPIS OPRACOWANYCH NARZĘDZI I METODY POSTĘPOWANIA...10

Dokumentacja Końcowa

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Ćwiczenie 1. Wprowadzenie do programu Octave

METODY INŻYNIERII WIEDZY

W poszukiwaniu sensu w świecie widzialnym

Rozpoznawanie obrazów na przykładzie rozpoznawania twarzy

Sieci M. I. Jordana. Sieci rekurencyjne z parametrycznym biasem. Leszek Rybicki. 30 listopada Leszek Rybicki Sieci M. I.

3. FORMAT PLIKU WEJŚCIOWEGO/WYJŚCIOWEGO DODATEK A: OPIS INFORMATYCZNYCH PROCEDUR DODATEK B: SPIS ZAWARTOŚCI DOŁĄCZONEGO NOŚNIKA...

Wstęp do sieci neuronowych, wykład 02 Perceptrony c.d. Maszyna liniowa.

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

PAKIET I-poz.1 Oddział Kardiologii Stymulator jednojamowy SSIR z elektrodami (Podstawowy) Producent: Nazwa/numer katalogowy: Kraj pochodzenia:

METODY INŻYNIERII WIEDZY

AKADEMIA GÓRNICZO HUTNICZA IM. STANISŁAWA STASZICA W KRAKOWIE. Międzywydziałowa Szkoła Inżynierii Biomedycznej. Raport końcowy projektu

Programowanie proceduralne w języku C++ Podstawy

Uwaga! Upadek! Opis zadania konkursowego

Wstęp do sieci neuronowych, wykład 6 Wsteczna propagacja błędu - cz. 3

Transkrypt:

AKADEMIA GÓRNICZO-HUTNICZA im. St. Staszica w Krakowie Wydział EAIiE, Katedra Automatyki Laboratorium Biocybernetyki Przedmiot: Przetwarzanie sygnałów w systemach diagnostyki medycznej. Temat projektu: Detekcja arytmii. ARRH_DET Spis treści: 1. ABSTRAKT... 2 2. WSTĘP... 3 3. KONCEPCJA PROPONOWANEGO ROZWIĄZANIA... 4 4. REZULTATY I WNIOSKI... 6 5. PODSUMOWANIE... 6 6. LITERATURA... 6 7. DODATEK A: OPIS OPRACOWANYCH NARZĘDZI I METODY POSTĘPOWANIA... 8 8. DODATEK B: REALIZACJA PROPONOWANEGO ROZWIĄZANIA... 9 9. DODATEK C. OPIS INFORMATYCZNY PROCEDUR... 10 10. DODATEK D. SPIS ZAWARTOŚCI DOŁĄCZONYCH NOŚNIKÓW (DYSKIETEK, CD ROMU)12 Wykonali: Urszula Ciaputa, Janusz Kamieński V rok Informatyki Stosowane, Wydział EAIiE, AGH-UST Konsultant: prof. dr hab. inż. Piotr Augustryniak Wersja 1.0 Kraków, styczeń 2011. -1-

1. Abstrakt Celem niniejszego projektu było przygotowanie biblioteki oraz programu, który pozwalałby na rozpoznawanie typu arytmii serca z danych przekazywanych z zewnątrz. W ramach pracy przygotowano bibliotekę napisaną w języku ANSI C, która pozwala na wykorzystanie rozpoznawania arytmii serca w osobnym programie, który może realizować więcej zadań. Rozpoznawanie arytmii odbywa się przy zastosowaniu sztucznych sieci neuronowych uczonych przez przykładowe dane z wykorzystaniem biblioteki FANN. Ponadto przygotowano program, który pozwala nauczyć sieć neuronową rozpoznawania arytmii oraz sprawdzenie pracy biblioteki rozpoznającej arytmie serca. Słowa kluczowe: arytmia serca, sztuczne sieci neuronowe, ANN, FANN, ANSI C -2-

2. Wstęp Cele i założenia projektu Celem projektu jest zaimplementowanie algorytmu detekcji podstawowych arytmii na podstawie sekwencji morfologii zespołu QRS. Program ma stanowić część bardziej złożonego systemu, musi więc zachowywać kompatybilną strukturę opisu sygnału EKG i sygnałów sterujących. Jakość detekotora ma zostać przetestowana z użyciem generatora sygnałów wzorcowych EKG oraz bazy danych MIT-BIH. Rodzaje arytmii Według [1] arytmie to sekwencje pobudzeń o ustalonych wzorcach, zdefiniowane przez następstwo zespołów o określonej morfologii, interwał międzyuderzeniowy RR i niekiedy liczbę zespołów w sekwencji. Podstawowo arytmie dzieli się na nadkomorowe i komorowe. Do arytmii nadkomorowych zaliczane są m.in.: pauza - zbyt długa przerwa pomiędzy uderzeniami tachykardia nadkomorowa (częstoskurcz nadkomorowy; ang. Supraventricular Tachykardia, SVT) szybki (powyżej 100 uderzeń na minutę) rytm serca pochodzący z przedsionków lub węzła przedsionkowo-komorowego migotanie przedsionków (ang. Atrial Fbrillation, AF, A-fib) bradykardia nadkomorowa bardzo wolny (poniżej 60 uderzeń na minutę) rytm serca napadowy częstoskurcz nadkomorowy (ang. Paroxysmal Supraventricular Tachykardia, PSVT) Do arytmii komorowych zaliczane są m.in.: tachykardia komorowa (częstoskurcz komorowy; ang. Ventricular Tachykardia, VT) migotanie komór (ang. Ventricular Fibrillation, VF, V-fib) przedwczesny skurcz komorowy serca (ang. Premature Ventricular Contraction, PVC; Ventricular Premature Beat, VPB): bigeminia przedwczesny skurcz występuje po każdym normalnym uderzeniu trigeminia po każdym normalnym uderzeniu występują dwa skurcze Istotne jest zwrócenie uwagi na możliwość występowania konfliktów (wystąpienie jednej z sekwencji arytmii w czasie trwania innej). Rozwiązywane są one dzięki nadaniu priorytetów różnym rodzajom arytmii. W zależności od podejścia (jednoprzebiegowe lub wieloprzebiegowe) uzyskuje się nieco odmienne rezultaty: przy jednokrotnym przeglądzie sekwencji zespołów QRS arytmia o niższym priorytecie ustępuje arytmii o wyższym priorytecie dopóki ta się nie zakończy, natomiast w przypadku trzech -3-

przebiegów najpierw wykrywa się arytmie o najwyższym priorytecie, a następnie (pomijając już zidentyfikowane odcinki) te o niższym. Istniejące rozwiązania W literaturze znaleźć można wiele przykładów algorytmów służących do wykrywania zaburzeń pracy serca. Niektóre z nich służą do wykrywania konkretnego rodzaju (rodzajów) arytmii, podczas gdy inne mają bardziej ogólne zastosowanie. Wiele istniejących, komercyjnych rozwiązań używa parametrów morfologicznych (takich jak dopasowanie szablonów), autokorelacji i różnych parametrów z dziedziny czasu (amplitudy, szerokości, energii itp.) w celu klasyfikowania zespołów QRS jako należących do danego typu arytmii. Wśród propozycji znajdujących się w literaturze można znaleźć przykłady użycia transformaty Karhunena-Loevego (analizy głównych składowych) wraz z analizą sekwencyjną do wykrywania tachykardii komorowych i migotania komór [3], wykorzystania ukrytych modeli Markowa do lepszej detekcji arytmii nadkomorowych [4], zastosowania funkcji probablistycznych w celu poprawienia jakości detekcji arytmii [5,6], próby zastosowania analizy spektralnej do wykrywania bigeminii i trigeminii [7], użycia transformacji falkowej do klasyfikacji bradykardii i tachykardii [8,9] czy wykorzystania fraktali do wyodrębnienia charakterystycznych cech zespołów QRS [10][11]. Oprócz wymienionych wcześniej propozycji znaleźć można jeszcze wiele innych, naszą uwagę przyciągnęły jednak próby wykorzystania sieci neuronowych w detekcji i klasyfikacji arytmii. Sieci neuronowe wykorzystywane są do klasyfikacji zespołów QRS na podstawi wyodrębnionych wcześniej (na różne sposoby) cech. Przykładem może tu być [11], gdzie sieć neuronowa została wykorzystana do klasyfikacji na podstawie cech uzyskanych przy użyciu transformacji fraktalnej. Detekcja arytmii przy użyciu sieci neuronowych i jej rezultaty opisane zostały także w [12]. Ciekawa metoda wykrywania i klasyfikacji arytmii znajduje się w [13]. Wykorzystuje ona przedstawienie sygnału EKG w przestrzeni fazowej, a następnie klasyfikuje tak powstały kształt przy pomocy sieci neuronowej z propagacją wsteczną jako jeden z pięciu możliwych rodzajów: 1. normalne uderzenie (NSR) 2. przedwczesny skurcz komorowy serca (PVC) 3. migotanie przedsionków (AF) 4. tachykardia komorowa (VT) 5. migotanie komór (VF) 3. Koncepcja proponowanego rozwiązania Dane wejściowe i wyjściowe Dostępnymi danymi wejściowymi dla algorytmu będą: -4-

1. sygnał EKG o ustalonej częstotliwości próbkowania 2. wykryte zespoły QRS 2.1. morfologia zespołu QRS a) zespół nadkomorowy SV b) zespół komorowy V c) zespół inny, którego pochodzenia nie da się automatycznie określić d) artefakt, omyłkowo uznany za zespół QRS Na wyjściu algorytm ma zwracać listę wykrytych typów arytmii, wraz z odniesieniami do sygnału wejściowego (początek i koniec wykrytej arytmii). Przekształcenie sygnału EKG do przestrzeni fazowej Załóżmy, że sygnał EKG jest reprezentowany przez współrzędne X(k) w przestrzeni fazowej. W takim wypadku dynamiczne zachowanie sygnału może zostać odtworzone poprzez następstwo punktów X(k) w przestrzeni fazowej. Wektory X(k) w wielowymiarowej przestrzeni fazowej konstruowane są przy użyciu opóźnionych w czasie wartości sygnału, co określa współrzędne wykresu przestrzeni fazowej. X(k) = { x(k), x(k+t),..., x(k+(e-1)t)} k = 1,2,...,M-E Gdzie X(k) to punkt trajektorii w chwili k, x(k + it) to współrzędne w przestrzeni fazowej odpowiadające opóźnionym w czasie wartościom sygnału, t to opóźnienie pomiędzy kolejnymi punktami sygnału, M to ilość próbek użytych do rekonstrukcji, a E to ilość wymiarów. Opóźnienie czasowe powinno wynosić między 7 a 15 ms. W przypadku dwuwymiarowej rekonstrukcji macierz A otrzymuje się używając sygnału x(k) oraz x(k+t). A = [ x(1) x(2)... x(m) x(1+t) x(2+t)... x(m+t) ] Wykres przestrzeni fazowej otrzymuje się robiąc wykres wiersza drugiego w zależności od wiersza pierwszego macierzy A. Wartości powinny być znormalizowane, co osiąga się poprzez dzielenie każdego elementu przez q, gdzie: q = max[x(k)] min[x(k)] 1 <= k <= M Po znormalizowaniu zakresy na obu osiach powinny wynosić -1 do 1. -5-

Stworzenie macierzy gęstości przestrzeni fazowej Aby stworzyć macierz gęstości dzielimy przestrzeń fazową przy pomocy siatki 20x20 i sumujemy ilość elementów w każdym z tak powstałych kwadratów, otrzymując c(i,j). Dzięki zastosowaniu normalizacji ograniczyliśmy możliwe położenia punktów na wykresie. Wartości c(i,j) ze 100 kwadratów położonych w regionie -0.5,0.5 na każdej z osi będą wykorzystywane do dalszej klasyfikacji. Sieć neuronowa Sieć jest trójwarstwowa, posiada 301 wejść i 16 wyjść, odpowiadającym wykrywanym rodzajom arytmii. Uczenie sieci odbywa się za pomocą algorytmu Quickprop. Do zaimplementowania sieci wykorzystana zostanie biblioteka FANN (Fast Artificial Neural Network). Dodatkowe dane Na podstawie dodatkowych danych może nastąpić identyfikacja innych elementów. Interwał RR (między szczytami R zespołów QRS) może zostać wykorzystany do określenia wystąpienia pauzy oraz bradykardii/tachykardii. Informacja o rodzajach występujących po sobie zespołów QRS może posłużyć do identyfikacji bigeminii (NSR po którym występuje jeden PVC) oraz trigeminii (NSR po którym występują dwa PVC). Dodatkowo, posiadając informacje o uprzednio zidentyfikowanych artefaktach można z góry je odrzucić. Wyniki W przypadku zidentyfikowania zespołu innego niż NSR zapamiętywany jest numer tego zespołu, dzięki czemu możliwe jest późniejsze wskazanie miejsca w sygnale w którym wystąpiła arytmia. 4. Rezultaty i wnioski Program charakteryzuje się długim czasem oczekiwania na wyniki (przetwarzany jest bowiem na raz cały sygnał) i niskim poziomem skuteczności (spowodowanym prawdopodobnie przez dominację arytmii typu pojedyncze przedwczesne pobudzenie komorowe VE w bazie testowej oraz ogólną małą ilość przykładów). W skrajnym przypadku wszystkie (nawet prawidłowe) uderzenia są klasyfikowane jako VE, mimo iż błąd średniokwadratowy osiągany przez sieć w trakcie nauki jest bardzo niski (rzędu 0.05). 5. Podsumowanie Zaimplementowana przez nas metoda niestety okazała się nieskuteczna. Dobranie odpowiednich parametrów sieci neuronowej (liczba warstw ukrytych i ilość neuronów, które się w nich znajdują, -6-

próg od którego dane wyjście jest uznawane za wybrane przez sieć) okazało się bardzo trudne, a wręcz niemożliwe. Ponadto baza testowa zawiera głównie jeden typ arytmii (pojedyncze przedwczesne pobudzenie komorowe), co sprawiło, że program nauczył się rozpoznawać tylko jego, resztę rodzajów ignorując do tego stopnia, że nawet prawidłowe uderzenia często były mylone z tymże. Rezultaty te nie są zachęcające, jednakże wynika to prawdopodobnie ze zbyt małej ilości przykładów testowych oraz zbytniej generalizacji oczekiwań w stosunku do możliwości sieci (w artykule [13], na którym oparliśmy swoją pracę, autorzy używali sieci do bardzo ogólnej klasyfikacji arytmii). Lepsze efekty miało by więc prawdopodobnie podejście mieszane, w którym (dobrze nauczona) sieć wykorzystywana jest do ogólnej klasyfikacji, natomiast szczegółowe rodzaje arytmii klasyfikowane są z pomocą innych metod. 6. Literatura [1] Augustyniak, P.; Przetwarzanie Sygnałów Elektrodiagnostycznych, UWND-AGH 2001 [2] http://en.wikipedia.org/wiki/arrhythmia, dostęp: 2.12.2010 [3]Dorsett, T.J.; Guilak, F.; Taylor, L.A.; A real-time ventricular arrhythmia detection system based on the KL transform and sequential-hypothesis testing, Engineering in Medicine and Biology Society, 1995, Volume 2, p. 1007-1008 [4] Coast, D.A.; Stern, R.M.; Cano, G.G.; Briller, S.A. An approach to cardiac arrhythmia analysis using hidden Markov models, IEEE Transactions on Biomedical Engineering, 1990, Volume 37, Issue 9, p. 826-836 [5] Elghazzawi, Z.; Geheb, F.; A knowledge-based system for arrhythmia detection, Computers in Cardiology, 1996, p. 541 544 [6] Owis, M.I.; Abou-Zied, A.H.; Youssef, A.-B.M.; Kadah, Y.M.; Study of features based on nonlinear dynamical modeling in ECG arrhythmia detection and classification, IEEE Transactions on Biomedical Engineering, 2002, Volume 49, Issue 7, p. 733 736 [7] Szilagyi, L.; Application of the Kalman filter in cardiac arrhythmia detection, Engineering in Medicine and Biology Society, 1998, Volume 1, p. 98 100 [8] Daqrouq, K.; Abu-Isbeih, I.N.; Arrhythmia Detection using Wavelet Transform, EUROCON, 2007, p. 122 126 [9] Yang Shan-xiao; Chen Cai-ming; Dai Yu-liang; Yang Guang-ying; The Research of Arrhythmia Algorithm Based on Fuzzy Neural Network, Electronic Commerce and Security (ISECS), 2010, p. 131 133-7-

[10] Raghav, S.; Mishra, A.K.; Fractal feature based ECG arrhythmia classification, TENCON 2008-2008 IEEE Region 10 Conference, p. 1 5 [11] Chia-Hung Lin; Chao-Lin Kuo; Jian-Liung Chen; Wei-Der Chang; Fractal features for cardiac arrhythmias recognition using neural network based classifier, International Conference on Networking, Sensing and Control, 2009, p. 930 935 [12] Jadhav, S.M.; Nalbalwar, S.L.; Ghatol, A.; Artificial Neural Network based cardiac arrhythmia classification using ECG signal data, International Conference On Electronics and Information Engineering (ICEIE), 2010, Volume 1, p. 228 231 [13] Srinivasan, N.; Wong, M.T.; Krishnan, S.M.; A new phase space analysis algorithm for cardiac arrhythmia detection, Engineering in Medicine and Biology Society, 2003. Proceedings of the 25th Annual International Conference of the IEEE, Volume 1, p. 82 85 7. DODATEK A: Opis opracowanych narzędzi i metody postępowania Program należy uruchamiać z poziomu konsoli. Aplikacja może jest zrealizowana tak, by można było z niej korzystać zarówno w systemie GNU/Linux jak i Windows. Aby korzystać z projektu wymagana jest obecność zainstalowanej w systemie biblioteki FANN 2.0. Ponieważ działanie tej biblioteki jest ściśle zależne od systemu operacyjnego należy dokonać indywidualnej jej instalacji bądź kompilacji w systemie operacyjnym. W przypadku systemów GNU/Linux można dokonać instalacji za pomocą pakietów (zależy od dystrybucji). W systemie Windows należy przeprowadzić kompilację biblioteki FANN (szczegóły na stronie twórców biblioteki: http://leenissen.dk/fann/ ). Także z tego powodu uruchomienie programu wymaga jego skompilowania przy skonfigurowanym odpowiednio środowisku IDE (ustawionych poprawnie ścieżkach do biblioteki FANN). Projekt nasz został przygotowany w środowisku Eclipse. Do programu należy przekazać parametry niezbędne do jego pracy: 1. mode tryb pracy programu; do wyboru: learning (tryb nauczania sieci neuronowej) oraz working (tryb pracy sieci, w którym przyjmuje ona wyjście i zwraca wyniki); 2. signal_filename ścieżka do pliku binarnego, który zawierającego sygnał EKG; 3. qrs_filename ścieżka do pliku z danymi wykrytych QRS w sygnale EKG podanym jako parametr 2; 4. output_arrhythmia_filename ścieżka do pliku wyjściowego, w którym mają być zapisane dane o wykrytych arytmiach; -8-

5. nn_configuration_filename plik zawierający strukturę sieci neuronowej. Jeżeli nie istnieje, w trybie learning zostanie utworzony; 6. arrhythmia_comparison_filename [opcjonalny parametr] plik z przykładowymi danymi wyjściowymi, służącymi sieci neuronowej do porównania ze swoim wyjściem w trybie learning. Na podstawie parametrów wejściowych program przeprowadzi nauczanie sieci i wygeneruje plik ze strukturą i wagami sztucznej sieci neuronowej lub przeprowadzi operację obliczeń na danych wejściowych i zapisze do pliku wyjściowego wykryte przez sieć arytmie serca. Przykład polecenia uruchamiającego (znak \ oznacza kontynuację linii poniżej): arrhythmia_detector.exe learning ah_21_1/ah_21_1.dcm ah_21_1/qrs_attr.out \ arrh_detected.out network1.net ah_21_1/arh_attr.out arrhythmia_detector.exe working my_signal_data.dcm my_signal_data_qrs_attr.out \ arrh_detected_live.out network5.net W efekcie działania programu w trybie working zostanie utworzony wyjściowy plik tekstowy z wykrytymi arytmiami serca. 8. DODATEK B: Realizacja proponowanego rozwiązania Projekty wykonany został w systemie GNU/Linux, dystrybucja Fedora 13 w środowisku Eclipse z użyciem kompilatora gcc. Nic nie stoi jednak na przeszkodzie, by przenieść projekt na system Windows. Wymagana jest wtedy obecność skompilowanej biblioteki FANN (informacja w poprzednim rozdziale) oraz poprawne podanie ścieżek do nagłówków i plików bibliotecznych. Program został napisany w języku C, stylu ANSI. Aby móc wykonać projekt w stylu ANSI C konieczna była modyfikacja nagłówkowych plików dostarczonych przez prowadzącego tak, by były one poprawnie przetwarzane przez kompilator. Konieczne było dodanie definicji typów dla struktur: typedef struct QRS_ATTR QRS_ATTR; typedef struct ARH_ATTR_ITEM ARH_ATTR_ITEM; Ponadto konieczna była zmiana typów danych wewnątrz struktur uchar na unsigned char. -9-

9. DODATEK C. Opis informatyczny procedur Program podzielony został na kilka plików, z których każdy posiada osobną funkcjonalność: arrhythmia_detector.c Plik ten jest plikiem głównym programu, który posiada tylko funkcję main. int main(int argc, char** argv) Funkcja ta odpowiada za przetworzenie parametrów z linii poleceń, załadowanie danych z plików wejściowych do struktur oraz uruchomienie algorytmów uczenia (learning mode) lub przetwarzania danych przez sieć (working mode). Na koniec funkcja zapisuje dane wyjściowe do podanego w parametrach uruchomieniowych pliku. nnarrhythmia.c Plik ten zawiera dwie główne funkcje implementujące algorytmy uczenia sieci neuronowych rozpoznawania arytmii serca oraz detekcji tych arytmii w trybie pracy. float arrhythmia_detection_learning(unsigned char** sig,unsigned int sig_size, QRS_ATTR* qrs_data, unsigned int qrs_size, ARH_ATTR_ITEM** comp_results, unsigned int arh_size[], char* nn_configuration_filename) Funkcja ta odpowiada za przeprowadzenie nauczania sieci neuronowej. Argumenty przekazane do funkcji to: sig załadowany sygnał EKG z pliku wejściowego sig_size ilość próbek sygnału wejściowego qrs_data tablica struktur zawierających wykryte zespoły QRS qrs_size rozmiar tablicy qrs_data comp_results tablica dwuwymiarowa: pierwszy wymiar to kolejne numery wykrytych arytmii, drugi wymiar zawiera struktury z danymi wykrytych arytmii serca (dane do porównania dla uczącej się sieci neuronowej) arh_size tablica z wielkością poszczególnych podtablic comp_results nn_configuration_filename ścieżka do pliku ze strukturą sieci neuronowej -10-

ARH_ATTR_ITEM** arrhythmia_detection(unsigned char** sig,unsigned int sig_size, QRS_ATTR* qrs_data, unsigned int qrs_size, char* nn_configuration_filename) Funkcja ta odpowiada za przeprowadzenie symulacji na sieci neuronowej, mającej na celu wykrycie arytmii serca. Argumenty wejściowe są takie same jak w przypadku funkcji arrhythmia_detection_learning, z tą różnicą, że nie podajemy danych do porównania. nnarrhythmia_helpers.c Plik zawierający funkcje pomocnicze dla implementacji z pliku nnarrhythmia.c. unsigned char* signal2phase(unsigned char** sig, unsigned int sig_len, unsigned int det_point, unsigned short channel_no); Funkcja ma za zadanie utworzenie przestrzeni fazowej na bazie wejściowego sygnału EKG. Jako parametry przekazujemy także długość sygnału (ilość jego próbek), punkt wykrycia zespołu QRS oraz numer kanału, dla którego wykonywane są obliczenia. unsigned int* generate_density_matrix(unsigned char* phase_space); Funkcja ma za zadanie utworzenie tablicy gęstości na bazie przestrzeni fazowej. fann_type* create_input_data(unsigned int** density_matrix,qrs_attr qrs_info); Funkcja odpowiada za utworzenie tablicy wejściowych danych do sieci neuronowej na podstawie macierzy gęstości oraz informacji o wykrytych zespołach QRS. ARH_ATTR_ITEM** fann_output2arrh(fann_type** fann_output,unsigned int size,qrs_attr* qrs_data) Funkcja odpowiadająca za przekształcenie wyjść sieci neuronowej w tablicę struktur wynikowych. signal_loader.c Plik zawiera funkcje odpowiedzialne za załadowanie sygnału EKG z pliku. -11-

unsigned int load_signal(char* filename, unsigned char ***sig,unsigned int channels_number,unsigned int *num) Funkcja ma za zadanie otworzenie pliku z sygnałem, sprawdzenie jego rozmiaru i utworzenie tablicy, która będzie przechowywała sygnał w pamięci programu, a następnie załadowanie danych z pliku. unsigned int load_signal_all_data(file* sig_file, unsigned int channels_number, unsigned char *** ppsig, unsigned int *num) Funkcja ładuje dane z otwartego pliku do pamięci. arr_config.h Plik konfiguracyjny biblioteki i programu. Zawiera podstawowe parametry wykorzystywane wewnątrz funkcji: CHANNELS_NUMBER 3 liczba kanałów w sygnale EKG SAMPLING 128 próbkowanie sygnału EKG wyrażone w Hz RESOLUTION 20 rozdzielczość tablicy gęstości INNER_TAB_START 5 indeks początku tablicy zawierającej się wewnątrz tablicy gęstości, która będzie wykorzystana do obliczeń INNER_TAB_END 15 indeks końca tablicy zawierającej się wewnątrz tablicy gęstości PHASE_SPACE_LEN 40 ilość próbek pobieranych od początku zespołu QRS, do stworzenia przestrzeni fazowej; wyrażona w liczbie próbek PHASE_SPACE_OFFSET 2 - przesunięcie sygnału używane do stworzenia przestrzeni fazowej; wyrażone w liczbie próbek, powinno odpowiadać 7-15 ms. 10. DODATEK D. Spis zawartości dołączonych nośników (dyskietek, CD ROMu) BAZA dane testowe, zawierające sygnały i prawidłowe wyniki SRC projekt środowiska programistycznego Eclipse DOC - tekst raportu w postaci elektronicznej (MS WORD oraz PDF) -12-