Klasyfikacja galaktyk

Autor: Jacek Stochel
Data: 27 czerwca 2009
Raport przygotowano na potrzeby kursu: Metody i algorytmy sztucznej inteligencji

Streszczenie:

W raporcie omówiono metodę klasyfikacji galaktyk. Jednym z podstawowych zadań było określenie charakterystycznych cech obrazu galaktyki, które pozwoliłyby na rozpoznanie czy dana galaktyka jest spiralna czy eliptyczna. Wektory cech uzyskane ze zdjęć galaktyk pochodzących z serwisu Galaxy Zoo zostały wykorzystane do uczenia sieci neuronowej. Następnie wykorzystano inne zdjęcia do przetestowania użyteczności sieci. Program realizujący to zadanie został przygotowany w środowisku Matlab.

Classification of galaxies

Author: Jacek Stochel
Date: June 27, 2009
This report has been prepared as a requirement for the course: Methods and algorithms of artificial intelligence

Abstract:

This raport decribe method of galaxies classyfication. One of the main tasks was to determine the characteristics of a galaxy image, which would help to identify whether the galaxy is a spiral or elliptical. Vectors derived from images of galaxies from the Galaxy Zoo website were used to train neural network. Then, other images were used to test the usefulness of the network. The program implementing this task has been prepared in the MATLAB environment.


Wstęp

W ramach projektu Galaxy Zoo ochotnicy z całego świata klasyfikują galaktyki na podstawie ich zdjęć udostępnianych przez serwis. Zdjęcia te zostały wykonane automatycznie przez teleskop Sloan Digital Sky Survey znajdujący się w stanie Nowy Meksyk. Analiza zdjęć nieba początkowo wykonywana przez komputery okazała się nie wystarczająca i postanowiono, że każda fotografia powinna zostać dodatkowo zweryfikowana przez człowieka. Dzieje się tak, ponieważ niektóre zdjęcia są bezwartościowe, gdyż np. przedstawiają nie galaktyki lecz gwiazdy lub zostały zakłócone przez czynniki pochodzenia ziemskiego. Podstawowy podział galaktyk rozróżnia dwa ich typy: spiralne i eliptyczne. Szczegóły na temat podtypów galaktyk mozna znaleźć w [4], a w polskiej wesji językowej w [5] oraz [6]. W ramach projektu przygotowanego na potrzeby kursu "Metody i algorytmy sztucznej inteligencji" zdecydowano się sprawdzić w jakim stopniu podstawowa klasyfikacja galaktyk jest możliwa do przeprowadzenia bez udziału człowieka. Do tego celu początkowo planowano wykorzystać naiwny klasyfikator bayesowski, którego implementację udostepniono za darmo w toolboxie "Statistical Pattern Recognition Toolbox", jednak ze względu na jego niedoskonałości postanowiono wykorzystać sieć neuronową. W tym przypadku również zdecydowano się wykorzystać środowisko Matlab i toolbox "Neural Networks" dostępne w pracowniach Politechniki Wrocławskiej.


Metoda - sieć neuronowa

Jako metody inteligentnej, rozpoznającej rodzaj galaktyki użyto sieci neuronowej typu "feedforward backpropagation", czyli ze wsteczną propagacją błędu. Jest to standardowa sieć z matlabowskiego pakietu "Neural Networks". Stworzona sieć miała siedem wejść, jedną warstwę ukrytą oraz jedno wyjście. Do wyznaczenia początkowej liczby neuronów w warstwie ukrytej wykorzystano zależność:

liczna neuronów

Rys.8. Prawidłowa ilość neuronów w warstwie ukrytej sieci.


Zgodnie z tym wzorem ilość neuronów w warstwie ukrytej równa się pierwiastkowi z iloczynu neuronów wejściowych i wyjściowych. Dla sieci z zadania prawidłowa ilość neuronów to 4, jednak zdecydowano się przeprowadzić badania również dla ilości neuronów w zakresie 5 - 500. Wyniki były porównywalne, jednak zdecydowanie większy był czas potrzebny do wytrenowania sieci. Ostatecznie ilość neuronów w warstwie ukrytej ustalono na 10. Do wytrenowania sieci potrzebne są dwa ciągi danych: uczący i weryfikujący. Ciąg uczący to zbiór danych w miarę dokładnie charakteryzujących dany problem. Jednorazową porcję danych nazywamy wektorem uczącym. W jego skład wchodzi wektor danych wejściowy i wektor wyjściowy - dane oczekiwane, jakie sieć powinna wygenerować na swoich wyjściach. Po przetworzeniu danych wejściowych, programowy nauczyciel porównuje wartości otrzymane na wyjściu sieci z wartościami oczekiwanymi i informuje sieć czy odpowiedź jest poprawna. Jeśli wystąpił błąd to jest on propagowany do sieci ale w odwrotnej niż wektor wejściowy kolejności (od warstwy wyjściowej do wejściowej) i na jego podstawie następuje korekcja wag w każdym neuronie tak aby ponowne przetworzenie tych samych danych wejściowych spowodowało zmniejszenie błędu odpowiedzi. Procedurę taką powtarza się do momentu wygenerowania przez sieć błędu mniejszego niż założony. Wtedy na wejście sieci podaje się kolejny wektor wejściowy i powtarza te czynności. Po przetworzeniu wszystkich danych uczących - po jednej epoce, oblicza się błąd epoki i powtarza cały cykl, aż błąd zostanie zminimalizowany do określonej granicy. W projekcie ustalono ilość epok na 50 jednak liczba ta nigdy nie jest osiągana. Co bardzo ważne dla tego zadania, sieć taka wykazuje dużą tolerancję na nieciągłości oraz przypadkowe zaburzenia, czyli np. kiedy na zdjęciu oprócz galaktyki występują także inne obiekty. Po zakończonym treningu sieci należy zweryfikować jej działanie. W tym momencie potrzebny jest ciąg danych weryfikujących (ze znanymi odpowiedziami oczekiwanymi). Sieci trenowane w ramach projektu osiągały przy weryfikacji skuteczność w zakresie 80 - 90%.


Dane uczące dla sieci neuronowej

Zdjęcia galaktyk pobrano z tutoriali Galaxy Zoo przygotowujących użytkowników do klasyfikacji obiektów. Na ich podstawie wyodrębniono dane uczące w postaci wektorów cech charakterystycznych. Wektory danych oczekiwanych określono na podstawie opisów zdjęć zamieszczonych w serwisie. Wykorzystano zdjęcia sześćdziesięciu galaktyk.


Wektor cech charakterystycznych

Do poszukiwania charakterystycznych dla galaktyk spiralnych i eliptycznych cech obrazu posłużono się przygotowaną na potrzeby projektu prostą aplikacją z graficznym interfejsem użytkownika stworzoną za pomocą Matlab Guide i toolboxu "Image Processing". Okno aplikacji przedstawiono poniżej.

GalaxyEditor

Rys.1. Okno programu GalaxyEditor.


Po przeanalizowaniu różnych możliwości zdecydowano się, że wektor cech będzie zawierał 7 pozycji, które można podzielić na trzy grupy: nasycenie barw, stosunki pól obszarów powstałych po pseudoprogowaniu obrazów, stosunek pola powierzchni obrazu zbinaryzowanego do powierzchni jego konturu. Do pierwszej grupy należą cechy: k1, k2 oraz k3. Są to zsumowane jasności składowych odpowiednio: czerwonej, zielonej i niebieskiej, nastepnie podzielone przez liczbę pikseli obrazu. Dzięki temu liczby te są niezależne od rozmiaru obrazu i mają rozsądne (niezbyt duże) wartości. Wybrano takie właśnie cechy gdyż zauważono, że w zależności od tego czy galaktyka jest spiralna czy eliptyczna w większości przypadków można określić barwy dominujące. W przypadku galaktyk spiralnych są to: niebieski i czerwony, eliptycznych: czerwony i zielony. Poniżej przedstawiono przykładowe zdjęcia galaktyk wykorzystanych w projekcie.

galaktyka spiralna

Rys.2. Galaktyka spiralna.


galaktyka eliptyczna

Rys.3. Galaktyka eliptyczna.


Następnie przeprowadzono na obrazie operację pseudoprogowania (progowanie dla każdej składowej RGB indywidualnie) z eksperymentalnie ustalonym progiem. Na tej podstawie wyróżniono trzy obszary: zawierający (po progowaniu) składową {r}, {r, g} i {r, g, b}. Pozostałe składowe (niemieszczące się w ustalonym zakresie) wycięto, dzięki czemu tło zdjęcia pozostaje białe, a interesujące obszary zostają wyróżnione. Przykładowy obraz wynikowy tej operacji przedstawia ilustracja galaktyki eliptycznej.

galaktyka eliptyczna

Rys.4. Obraz powstały po pseudoprogowaniu.


Jeśli obszary (w kolejności "od środka") nazwiemy o3, o2, o1, to cechy obrazu przedstawiają się nastepująco: v1=o3/o2, v2=o3/o1, v3=o2/o1. Kolejną, ostatnią już cechą jest p1=p/k, gdzie p to pole obszaru galaktyki po zbinaryzowaniu obrazu, a k to pole powierzchni zajmowanej przez kontur (liczba pikseli na niego się skladających). Cecha ta pozwala odróżnić galaktyki spiralne o wyraźnie zarysowanych ramionach gdyż ich kontur jest dłuższy niż w przypadku galaktyki owalnej o tej samej powierzchni. Poniżej obraz po zbinaryzowaniu z eksperymentalnie dobranym progiem oraz kontur obrazu.

galaktyka spiralna

Rys.5. Obraz zbinaryzowany galaktyki.


galaktyka eliptyczna

Rys.6. Kontur galaktyki.



Opis implementacji programowej

Program napisano w środowisku Matlab, wykorzystując toolboxy: Image Processing, Neural Networks oraz edytor GUI. Przygotowano szereg skryptów, które generują plik z danymi uczącymi na podstawie zadanych obrazów galaktyk, odpowiadaja za budowę sieci neuronowej, jej szkolenie i weryfikację oraz umożliwiają testowanie pojedynczych zdjęć. Stworzono również program z graficznym interfejsem do badania cech charakterystycznych.


Przykład działania programu

Program do wyznaczania cech galaktyk przedstawiono na Rys.1. Poniżej listing z przykładowej pracy ze skryptem uczącym i weryfikującym sieć oraz testującym pojedyncze zdjęcie.

listing

Macierz cm zawiera w pierwszym wierszu: galaktyki spiralne zaklasyfikowane jako spiralne, spiralne zaklasyfikowane jako eliptyczne, w drugim: galaktyki eliptyczne zaklasyfikowane jako spiralne, eliptyczne jako eliptyczne.


Wyniki badań

Wyniki weryfikacji sieci dla ilości neuronów przekraczającej początkową wartość obliczoną były na tyle zblizone, że za bezcelowe można uznać przedstawianie wyników tych badań w postaci tabelarycznej. Ilość poprawnie zaklasyfikowanych obiektów podczas weryfikacji wahała się w granicach 80 - 90%. W testach pojedynczych zdjęć dobrej jakości skuteczność sięgała 100%. Nawet po celowym zakłóceniu obrazu szumem obiekty były poprawnie klasyfikowane. Poniżej przedstawiono kilka przykładów klasyfikacji. Na szczególną uwagę zasługuje Rys.14. Obraz został błędnie sklasyfikowany, jadnak można to tłumaczyć zakłóceniem w postaci jasnego obiektu dużych rozmiarów znajdującego się tuż przy galaktyce i wprowadzającego sieć w błąd. Obiekt ten to gwiazda lub druga galaktyka. Ponadto galaktyka sklasyfikowana posiada cechy charakterystyczne dla galaktyk spiralnych, np. barwę. Niedoświadczony człowiek z pewnością również miałby problem z prawidłową identyfikacją obiektu.

galaktyka eliptyczna

Rys.7. Poprawnie sklasyfikowana galaktyka eliptyczna.


galaktyka eliptyczna

Rys.8. Poprawnie sklasyfikowana galaktyka eliptyczna.


galaktyka eliptyczna

Rys.9. Poprawnie sklasyfikowana galaktyka eliptyczna.


galaktyka spiralna

Rys.10. Poprawnie sklasyfikowana galaktyka spiralna.


galaktyka spiralna

Rys.11. Poprawnie sklasyfikowana galaktyka spiralna.


galaktyka spiralna

Rys.12. Poprawnie sklasyfikowana galaktyka spiralna.


galaktyka spiralna

Rys.13. Poprawnie sklasyfikowana galaktyka spiralna ze specjalnie wprowadzonymi zakłóceniami.


galaktyka eliptyczna?

Rys.14. Błędnie sklasyfikowana galaktyka eliptyczna.



Wnioski

Do klasyfikacji galaktyk na spiralne lub eliptyczne sieć neuronowa nadaje się bardzo dobrze, pod warunkiem, że zdjęcia są względnie dobrej jakości i nie występują na nich inne obiekty duzych rozmiarów. W praktyce jednak spotykamy się ze zdjęciami, które mogą przysparzać poważnych wątpliwości. Przeważnie wymaga się też podania większej ilości szczegółów, jak np. liczba ramion galaktyki, czy kierunek ich obrotu, co jest niezwykle trudno rozwiązać algorytmicznie. W celu zwiększenia efektywności sieci proponuje się zwiększenie ilości danych uczących oraz przetestowanie innych, byc może lepszych cech charakterystycznych obrazów.


Bibliografia

  1. Zygmunt Wróbel i Robert Koprowski, "Praktyka przetwarzania obrazów w programie Matlab"
  2. Ryszard Tadeusiewicz, "Sieci neuronowe"
  3. MATLAB Help
  4. serwis Galaxy Zoo
  5. Astronomy Program, The University of Alabama
  6. portal astronomia.pl
  7. portal wiw.pl

Valid XHTML 1.0 Transitional