Rozpoznawanie choroby Parkinsona na podstawie głosu przy wykorzystaniu sztucznych sieci neuronowych



Pobieranie 332.6 Kb.
Strona4/5
Data27.04.2016
Rozmiar332.6 Kb.
1   2   3   4   5

4Analiza projektu


Rozdział zawiera analizę projektową. W części pierwszej zostaną omówione cele projektu. Nastąpi wydzielenie założeń podstawowych oraz dodatkowych. W drugiej sekcji rozdziału przedstawione będą możliwe rozwiązania funkcjonalne oraz porównania wad i zalet poszczególnych pomysłów. W ostatniej części rozdziału nastąpi przegląd dostępnych obecnie na świecie aplikacji do rozpoznawania chorób.

.4.1Cele projektu


Głównym celem projektu było utworzenie programu umożliwiającego dokonywanie automatycznej analizy akustycznej głosu oraz na jej podstawie ustalanie czy dana osoba jest chora na Parkinsona. Rozpoznawanie choroby odbywa się z wykorzystaniem SSN. Stanowi ono jeden z najważniejszych problemów związanych z aplikacją, ponieważ jest to uzależnione od posiadania odpowiednich danych do nauki SSN. W programie wykorzystany został zbiór danych udostępniony na licencji open source. Jest to zdecydowanie największa słabość programu, ponieważ dane nie są dobrze udokumentowane i nie można mieć pewności co do ich jakości. Nie jest również całkowicie znany proces rozkładu dźwięku na odpowiednie parametry akustyczne uzyskane w zbiorze danych. Dlatego celem projektu było uzyskanie predykcji tylko na poziomie co najmniej 70 procent.

.4.2Możłiwe rozwiązania


Kierując się burzliwym rozwojem telemedycyny1 w ostatnich czasach, jako rozwiązanie rozważane było głównie umożliwienie wykonywania badań diagnostycznych na odległość. Dlatego zdecydowano się na utworzenie aplikacji internetowej, która będzie umożliwiała wykonywanie specjalistycznego badania bez fizycznego kontaktu z praktyką lekarską. Badanie nie jest inwyzajne i niebezpieczne dla pacjentów, dlatego każdy będzie mógł je wykonywać.

Biorąc pod uwagę architekturę aplikacji, rozwiązanie to również jest optymalne. Program dostępny jest w jednym miejscu i mogą korzystać z niego wszyscy, którzy są w tej samej sieci, co komputer, na którym jest wdrożona. Nie wymaga to instalowania dodatkowych aplikacji klienckich (wymogiem jest jedynie przeglądarka internetowa). Jedyny minus stanowi tutaj fakt, że jeżeli miałaby zostać zainstalowana na środowisku produkcyjnym, to potrzebowałaby bardzo wydajnego sprzętu (obsłużenie wielu analiz w zbliżonym czasie).

Wykonanie aplikacji w języku java pozwala na wdrażanie jej na różnych typach systemów operacyjnych. Jako język implementacji rozważany był również C#, jednakże aplikacja nie byłaby wtedy wieloplatformowa.

Korzystanie z zewnętrznego oprogramowania do analizy dźwięku może również wpływać na gorszą jakość wytworzonego w ramach projektu produktu. Nie wiadomo czy w zewnętrznej aplikacji nie występują błędy implementacji, ponieważ wykorzystywany jest na zasadzie czarnej skrzynki2. Ze względu na złożoność algorytmów związanych z analizą głosu zdecydowano się na wykorzystanie owej aplikacji. W implementacji programu uwzględniono zastąpienie własnym kodem danej aplikacji zewnętrznej w przyszłości.


.4.3Przegląd podobnych aplikacji


W trakcie pisania pracy nie słyszano o występowaniu podobnych aplikacji diagnostycznych na rynku. Prowadzone są jednak badania nad możliwościami rozpoznawania choroby Parkinsona na podstawie głosu przy wykorzystaniu technik sztucznej inteligencji (np. sieci neuronowych) lub metod eksploracji danych. Naukowcy z uniwersytetu Oxford (twórcy wykorzystywanego w aplikacji zbioru danych) w swoich artykułach podkreślają, że udało im się uzyskać poziom predykcji choroby Parkinsona na podstawie głosu na poziomie zbliżonym do 90%. [LmaxSNPark]

Istnieją również prowadzone działania w celu zbadania, jak metody sztucznej inteligencji lub eksploracji danych mogą pomóc w śledzeniu przebiegu postępowania choroby.


5Projekt aplikacji do detekcji choroby Parkinsona


W rozdziale tym zostanie przedstawiony projekt aplikacji do detekcji choroby Parkinsona. W pierwszej części nastąpi opis funkcjonalny aplikacji. Zostanie opisany jej sposób działania oraz to jak użytkownik powinien z niej korzystać. W drugiej sekcji zostanie opisana struktura programu. Nastąpi wyszczególnienie technologii wykorzystanych do utworzenia aplikacji, omówienie implementacji oraz struktury bazy danych.

.5.1Opis funkcjonalny


Interfejs programu oparty jest na przeglądarce. Korzystanie z programu polega na wypełnieniu przez użytkownika formularza (rys.).

Rys. Formularz detekcji choroby Parkinsona.

Na jego podstawie są następnie generowane wyniki świadczące o tym, czy badany jest chory na Parkinsona. Na poniższym rysunku (rys. ) przedstawiony został schemat ideologiczny przeprowadzanego w programie badania.

Rys. Diagram aktywności opisujący sprawdzenie czy użytkownik jest chory na Parkinsona.


.5.2Opis strukturalny


Struktura programu jest stosunkowo złożona. Możemy mówić tu niejako nawet o systemie informatycznym rozpoznawania choroby Parkinsona na podstawie głosu.

Program możemy podzielić na kilka komponentów:

- aplikacja internetowa,

- analizator akustyczny głosu,

- detektora choroby Parkinsona,

- baza danych.

Wszystkie moduły odpowiednio komunikują się ze sobą (rys. ).

Rys. Diagram komunikacji pomiędzy komponentami w programie


.5.2.1.1Aplikacja internetowa

Aplikacja internetowa stanowi istotny komponent programu. Za jej pomocą użytkownik udostępnia dane wejściowe oraz uruchamiany jest cały proces detekcji choroby Parkinsona. Została utworzona z wykorzystaniem JSP w wersji 2.2 oraz serwletów w wersji 3.0 (patrz rozdział 5.2.2.2). Pełni rolę pewnego rodzaju menadżera modułów.

Aplikacja internetowa zapisuje dane z przeprowadzonego badania do bazy danych. Wykorzystuje do tego sterowniki jdbc oraz wzorzec strukturalny DAO (Data Access Object). Wzorzec DAO umożliwia oddzielenie logiki biznesowej od dostępu do danych. Zaletą tego rozwiązania jest fakt, że zmiana bazy danych nie powoduje wielkich zmian w kodzie logiki biznesowej. [AnDAO]


.5.2.1.2Analizator akustyczny głosu

Moduł odpowiedzialny jest za analizę otrzymanego pliku z dźwiękiem, dokonanie jego rozkładu na odpowiednie parametry akustyczne oraz zapisanie tych danych do pliku. Podstawowym elementem strukturalnym tego modułu jest oprogramowanie Praat.
.5.2.1.3Detektor choroby Parkinsona

Zadaniem modułu jest dokonanie oceny na podstawie otrzymanych parametrów wejściowych czy badany podmiot jest chory na Parkinsona. Najważaniejszym elementem strukturalnym modułu jest nauczona SSN. To ona na podstawie otrzymanych danych wejściowych zwraca prawdopodobieństwo występowania chorobyParkinsona u badanej osoby.
.5.2.1.4Baza danych

Komponent odpowiadający za utrwalanie danych powstałych w wyniku przeprowadzonego badania. Poniżej została przedstawiona struktura przechowywania informacji o wynikach badań dla poszczególnych osób.

Rys. Schemat bazy danych

Na powyższym schemacie występują dwie tabele połączone kluczem obcym w postaci kolumny pesel.

.5.2.2Wykorzystane technologie


Ze względu na to, że zbudowany w ramach pracy program jest aplikacją sieciową niezbędne było zastosowanie odpowiednich w tym celu technologii. Wykorzystane zostały takie języki programowania jak: java, C oraz język skryptowy Praat.
.5.2.2.1Oprogramowanie Praat

Oprogramowanie Praat zostało wykorzystane do przetwarzania próbki głosowej podawanej w formularzu i dokonywania rozkładu na odpowiednie parametry częstotliwościowe.

Praat został utworzony przez holenderskiego wykładowcę (Paul Boersma) z uniwersytetu w Amsterdamie. Jest powszechnie używany w wielu badaniach związanych z głosem. Program udostępniany jest na licencji open source na stronie projektu http://www.praat.org.


.5.2.2.2JSP

Technologia tworzenia dynamicznych stron internetowych opierająca swoje działanie na wykorzystaniu wplecionego w html języka Java. W programie została wykorzystana najnowsza wersja jsp – 2.2. Zastosowano również serwlety w wersji 3.0. Z zalet nowszych wersji jsp i serwletów w aplikacji wykorzystywana jest m.in. konfiguracja serwletów przy wykorzystaniu adnotacji. Poniżej przedstawienie przykładowej konfiguracji serwletu zastosowanej w programie:

@WebServlet(name="PDDetectorFormServlet", urlPatterns="/pDDetectorFormServlet", asyncSupported=true)

@MultipartConfig(location = "C:\\pd_analyzer\\uploaded_voices", fileSizeThreshold=1024*1024*2, maxFileSize=1024*1024*5, maxRequestSize=1024*1024*5*5)

public class PDDetectorFormServlet extends HttpServlet {



...

}

.5.2.2.3Baza DB2


Baza danych utworzona przez firmę IBM. W programie wykorzystuje się ją do przechowywania takich danych jak: płeć, wiek i numer pesel badanego oraz parametry wyjściowe uzyskane w badaniach nad próbką głosową użytkownika: jitter, shimmer i HNR, NHR.
.5.2.2.4IBM WebSphere Application Server

Serwer aplikacyjny, na którym została zainstalowana aplikacja utworzona w ramach projektu. Zawiera kontener serwletów, który obsługuje zapytania klientów oraz generuje odpowiedzi. W projekcie został wykorzystany IBM Websphere Application Server w wersji 8, obsługującej Java EE6.
.5.2.2.5Statistica

Program Statistica stanowi uniwersalny system, służący do statystycznej analizy danych. Oferuje szereg narzędzi analitycznych. W projekcie została wykorzystana wersja „Neural Networks” obsługująca SSN.

.5.3Testowanie działania programu


Testowanie poprawności działania programu odbywało się na podstawie dostarczanych mu danych w postaci próbek głosowych. Ludzie, którzy wzięli udział w testach programu, nie uczestniczyli w procesie uczenia sieci. Z wyjątkiem jednej osoby nikt nie wykazywał wyraźnych cech dysfonii, ani nie miał stwierdzonych chorób, które mogłyby wpływać na stan ich głosu. W tab. 7 zostały zamieszczone dane ludzi, którzy wzięli udział w teście funkcjonalnym aplikacji.

Id badanego

Wiek (lata)

Płeć

Problemy z głosem

Ilość próbek

ap

24

M

brak oznak

3

la

25

M

brak oznak

6

mb

22

M

brak oznak

3

mr

22

M

brak oznak

3

oz

22

K

brak oznak

3

rw

68

K

Głos niestabilny, zjawisko chrypki

1

ma

82

K

Głos niestabilny

1

mw

70

M

Zjawisko chrypki

1

Tab. 7 Zestawienie osób, biorących udział w badaniu testowym

.5.3.1Poprawność detekcji


Przy użyciu programu wykonano szereg testów (tab. 8). Program rozpoznawał poprawnie próbki ze skutecznością blisko 78,3%. Próbki użytkownika o id „mr” nie były zbyt wysokiej jakości. Zawierały sporo szumów zewnętrznych. Istnieje duże prawdopodobieństwo, że mogło spowodować to również niepoprawny wynik otrzymany przez program. Próbka oz_3 to głos nieczysty, zawierający drobną chrypkę. Możliwe, że powstała na skutek braku odpoczynku po wykonaniu wcześniejszych próbek. Próbki oz_1 i la_4 powinny być rozpoznane ze statusem wskazującym na brak choroby. Nie są zaszumione czynnikami zewnętrznymi, a głos wydaje się być stosunkowo stabilny.

Próbka

Wynik

Chory

Status badania

ap_1

0.189671

0

0

ap_2

0.000012

0

0

ap_3

0.000004

0

0

la_1

0

0

0

la_2

0

0

0

la_3

0

0

0

la_4

0.919342

0

1

la_5

0.000001

0

0

la_6

0.000000

0

0

mb_1

0

0

0

mb_2

0

0

0

mb_3

0

0

0

mr_1

0.000283

0

0

mr_2

1.0

0

1

mr_3

0.999154

0

1

mr_4

0.444163

0

0

oz_1

1.0

0

1

oz_2

0.018383

0

0

oz_3

0.929874

0

1

rw_1

1

1

1

ma_1

1

1

1

mw_1

1

1

1

Tab. 8 Wyniki testów przeprowadzonych za pomocą programu

.5.3.2Wydajność działania programu


Badanie przy wykorzystaniu utworzonej aplikacji trwa bardzo krótko. Czas analizy nie przekracza dwóch sekund. Najdłużej trwającym procesem jest rozkład głosu na parametry akustyczne. Czas rozpoznawania przez nauczoną SSN choroby Parkinsona można klasyfikować jako bardzo krótki.
1   2   3   4   5


©absta.pl 2016
wyślij wiadomość

    Strona główna