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.
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.
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.
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ść:
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%.
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.
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.
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.
Rys.2. Galaktyka spiralna.
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.
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.
Rys.5. Obraz zbinaryzowany galaktyki.
Rys.6. Kontur galaktyki.
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.
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.
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 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.
Rys.7. Poprawnie sklasyfikowana galaktyka eliptyczna.
Rys.8. Poprawnie sklasyfikowana galaktyka eliptyczna.
Rys.9. Poprawnie sklasyfikowana galaktyka eliptyczna.
Rys.10. Poprawnie sklasyfikowana galaktyka spiralna.
Rys.11. Poprawnie sklasyfikowana galaktyka spiralna.
Rys.12. Poprawnie sklasyfikowana galaktyka spiralna.
Rys.13. Poprawnie sklasyfikowana galaktyka spiralna ze specjalnie wprowadzonymi zakłóceniami.
Rys.14. Błędnie sklasyfikowana galaktyka eliptyczna.
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.