projekt kompetencyjny

Transkrypt

projekt kompetencyjny
Politechnika Łódzka
Wydział Elektrotechniki, Elektroniki, Automatyki i Informatyki
Katedra Informatyki Stosowanej
PROJEKT KOMPETENCYJNY
Tomography Tracking
Analiza i przetwarzanie obrazów w celu detekcji i śledzenia ruchu cząstek znacznikowych na
dwuwymiarowych sekwencjach obrazów tomograficznych
Autorzy:
Jakub Stefański
152484
Krzysztof Łachacz
152453
Krzysztof Staciwa
152483
Opiekun pracy:
dr Krzysztof Grudzień
Łódź, luty 2011
1 Wprowadzenie
Jednym z obszarów działalności badawczej Katedry Informatyki Stosowanej jest bezinwazyjne
badanie zjawisk fizyko – chemicznych występujących w przepływach wielofazowych. W tym celu
wykorzystuje się metodę diagnostyczną jaką jest tomografia. Nasz projekt dotyczy przetwarzania i
rozpoznawania obrazów otrzymanych poprzez tomografię rentgenowską. Sekwencje obrazów,
wykorzystywanych w programie, zostały wykonane podczas opróżniania silosa zawierającego
materiał sypki wraz z tzw. „cząstkami znacznikowymi”, których odnajdywanie i śledzenie było
głównym założeniem projektu.
2 Istota trudności
Otrzymane sekwencje obrazów z tomografu są bardzo mocno zaszumione. Cząstki znacznikowe są
słabo widoczne. Ponadto jest to obraz spłaszczony, pewne cząstki pojawiają się, inne zaś znikają co
stwarza duże problemy przy obrazowaniu ich ruchu.
Zasadniczym celem programu jest odnajdywanie w/w cząstek oraz śledzenie ich ruchu. Do
przetworzenia obrazu użyliśmy filtru medianowego i operacji odjęcia obrazu, zaś do rozpoznawania
cząstek użyliśmy sieci neuronowej, trójwarstwowej płaskiej, ucząc ją algorytmem wstecznej
propagacji. Wykrycie cząstek za pomocą segmentacji i intensywnego przetwarzania obrazów nie
przyniosły zadowalających skutków, stąd decyzja o użyciu sieci neuronowej.
3 Opis funkcjonalności
Nasz produkt posiada następujące funkcjonalności:
• pozwala na wczytanie, wstępne przetworzenie i przeglądanie obrazów z tomografu w
formacie .tiff (16-bit, gray-scale, big-endian),
• pozwala na wczytanie i przeglądanie próbek treningowych służących do nauki sieci
neuronowej,
• umożliwia wydobywanie i zapisywanie poszczególnych próbek do nauki sieci neuronowej
wraz z klasyfikacją próbki,
• umożliwia ustawienie marginesów i stopnia pewności dla wyszukiwania cząstek
znacznikowych,
• umożliwia podgląd wyników wyszukiwania przy aktualnych ustawieniach dla pojedynczego
obrazu (dowolnej jednej klatki w sekwencji).
• wyszukuje znaczniki na danej sekwencji plików przy wcześniej wprowadzonych
ustawieniach tj. marginesy obrazu oraz współczynnik pewności dla sieci neuronowej,
• zapisuje współrzędne znalezionych obiektów do pliku w formacie XML,
• pokazuje ścieżki ruchu znaczników na podstawie danych wczytanych z pliku XML na dwa
sposoby – punktowo, gdzie kolory oznaczają upływ czasu, jak również krzywymi,
• aplikacja poprzez wielowątkowość w pełni wykorzystuje możliwości wielordzeniowych
procesorów,
4 Architektura
Architektura aplikacji oparta jest o wzorzec MVP (Model View Presenter) z widokiem pasywnym.
W skład solucji wchodzi 8 projektów:
•
TomographyTrackingGUI – moduł będący warstwą VIEW w modelu MVP,
•
TTPresentationLayer – biblioteka DLL odpowiadająca za warstwę prezentacji w modelu
MVP, przygotowuje dane do wyświetlenia korzystając z klas warstwy Model,
•
TTModelLayer – biblioteka DLL odpowiadająca za warstwę MODEL w modelu MVP, zawiera
podstawowe abstrakcje i klasy związane z przechowywaniem i obróbką danych w
programie,
•
verAI – biblioteka DLL zaprojektowana do wielokrotnego użytku, implementująca sieć
neuronową, umożliwiająca rozbudowę o nowe typy sieci neuronowych,
•
NeuralNetworkTrainer – interfejs konsolowy do trenowania sieci neuronowej,
umożliwiający ustawienie wszystkich parametrów sieci oraz kontynuowanie przerwanej
nauki,
•
MedianFilterPlugin – biblioteka DLL stanowiąca zarządzaną nakładkę na niezarządzany
plugin CTMF_unmanaged. Korzysta z Managed Extensibility Framework (MEF).
Implementuje interfejs IFilterMethod.
•
CTMF_unmanaged – niezarządzana biblioteka DLL napisana w C z użyciem instrukcji SSE2,
zawiera wydajną implementację filtru medianowego.
•
TomographyTracking – moduł odpowiedzialny za przygotowanie pliku instalacyjnego dla
solucji.
Diagram klas dla biblioteki verAI:
Diagram klas dla biblioteki TTModelLayer:
Stworzone formaty plików:
Format NND (*.nnd) – NeuralNetworkData.
Służy do przechowywania informacji o pojedynczej próbce dla sieci neuronowej, zawiera tablicę
wartości w przedziale <0;1> (skalowane z przedziału <0;255> reprezentującą obraz (kolejne
elementy idą wierszami). Po tym następuje tablica oczekiwanych wartości pobudzenia neuronów
wejściowych.
Format NN (*.nn) – NeuralNetwork
Służy do przechowywania informacji o sieci neuronowej (jej konfiguracja oraz wagi). Obsługiwany
jest przez metodę statyczną: FlatThreeLayer.Load(string path) oraz operację interfejsu
ISaveable.Save(string path) implementowaną przez FlatThreeLayer.
Format XML do zapisu wyników przetwarzania sekwencji obrazów
Plik XML zawiera rozdzielczość obrazu i nazwy kolejnych obrazów w sekwencji wraz ze znalezionymi
na nich współrzędnymi cząstek znacznikowych. Taki format zapisu umożliwia łatwe interpretowanie
wyników w zewnętrznych programach.
Przykładowy plik wygląda w ten sposób:
<?xml version="1.0" encoding="utf-8"?>
<ImageSeries width="960" height="768">
<Image name="part6_radio0001.tif">
<Point>
<X>418</X>
<Y>12</Y>
</Point>
<Point>
...
Ramka przeszukiwania obrazu (nie jest zapisywana do pliku):
Poniższa ramka jest przesuwana sukcesywnie po obrazie i sprawdzana siecią neuronową czy w jej
obrębie znajduje się cząstka znacznikowa. Ramka reprezentuje również część informacji zawartej w
próbce do nauki sieci neuronowej. Przeszukiwanie obrazu jest wykonane wielowątkowo –
wykorzystując wszystkie dostępne procesory i rdzenie aktualnej konfiguracji komputera.
Interfejs uczenia sieci neuronowej:
Umożliwia pełną kontrolę nad parametrami sieci neuronowej i jej nauki. Ustala się warunki
końcowe nauki. Można również przerwać naukę w dowolnym momencie (klawisz ESC) i powrócić
do niej później. W katalogu docelowym znajdują się dwa przykładowe skrypty pokazujące jak
uruchomić nowy trening sieci neuronowej, jak również kontynuować przerwany.
5 Opis działania programu od strony technicznej
•
Ładowanie obrazu:
Obraz jest ładowany z użyciem biblioteki LibTiff.Net. Przekształcany jest do formatu RAW, 8bitów na piksel (następuje konwersja 16->8 bitów). Następnie z użyciem biblioteki CTMF
wykonywany jest na kopii obrazu filtr medianowy o średnicy 20 px. Stwarza to rozmyty
obraz z zachowaniem krawędzi. Otrzymany obraz jest odejmowany od oryginalnego obrazu,
a wynik jest rozjaśniany. Dopiero w ten sposób przygotowany obraz jest wyświetlony.
Obliczenia przebiegają < 1 sekundy stąd też są wykonywane przy każdym załadowaniu
obrazu (wynik przetworzenia nie jest zapisywany). Dla porównania, te same operacje przy
użyciu programu ImageJ zajmują > 6 sekund.
•
Wydobywanie próbek:
Po przejściu do trybu przeglądania próbek możliwe jest klikanie na obrazie. Po kliknięciu
rysowana jest ramka, można teraz zapisać próbkę kwalifikując ją jako
negatywna/pozytywna lub kliknąć gdzie indziej na obrazie w celu anulowania. Próbki
automatycznie zapisywane są do folderu roboczego do odpowiednich podfolderów.
•
Przeszukiwanie obrazu (podgląd pojedynczego obrazu):
Obraz jest przeszukiwany od górnego lewego rogu poziomo w prawo i następnie w dół.
Przeszukiwanie jest opisane przy opisie ramki przeszukiwania na poprzedniej stronie.
Przesuwanie ramki następuje równolegle z użyciem wszystkich dostępnych wątków
procesorów. Jeżeli sieć neuronowa zwróci wartość powyżej ustalonego poziomu z
przedziału (0;1) to współrzędna wraz z tą wartością jest zapamiętywana. Następnie
usuwane są ramki które są zbyt blisko siebie – pozostaje ta której wartość była największa.
•
Przetwarzanie całej sekwencji obrazów:
Przetwarzanie całej sekwencji obrazów przebiega analogicznie jak przeszukiwanie
pojedynczego obrazu. Wszystkie obrazy w sekwencji są przeszukiwane równolegle i
synchronizowane podczas wrzucania do wspólnej kolekcji. Na koniec kolekcja ta jest
sortowana po nazwie pliku (żeby zachować kolejność klatek) i zapisywana do pliku XML o
strukturze opisanej powyżej.
•
Wyświetlanie analizy metodą punktową:
Metoda ta polega na przedstawieniu punktów z kolejnych klatek w coraz bardziej
czerwonym kolorze. W ten sposób punkty z początkowych klatek są zielone, a końcowe –
czerwone. Zapamiętywane są wszystkie punkty ze wszystkich klatek wraz z
odpowiadającymi im kolorami, a następnie usuwane punkty które są odizolowane (nie mają
bliskich sąsiadów). Po czym są one rysowane.
•
Wyświetlanie analizy metodą krzywych:
Pierwsze 10 klatek służy do określenia punktów startowych. Odrzucane są punkty które
występują zbyt rzadko. Pierwsze 10 klatek musi być nieruchome. Pozostałe punkty (te które
często się powtórzyły) służą jako początki „ścieżek”. Następnie badane są kolejne klatki w
celu dopasowania kolejnych punktów do ścieżek aż do końca sekwencji.
6 Wykorzystane narzędzia i technologie
•
Język C#, .NET Framework 4.0,
•
GUI: Windows Forms 4.0,
•
IDE: Visual Studio 2010 Ultimate na licencji MSDN AA,
•
Odczyt plików TIFF: LibTiff.Net,
•
Klient SVN: AnkhSVN,
•
Biblioteka CTMF do obliczeń filtru medianowego,
7 Harmonogram prac
Przedział czasowy
Autorzy
Zakres prac
25.10.10 – 08.11.10
Jakub Stefański,
Krzysztof Łachacz,
Krzysztof Staciwa
Przygotowanie teoretyczne
08.11.10 – 27.11.10
Jakub Stefański,
Krzysztof Łachacz,
Krzysztof Staciwa
Wstępne przetwarzanie
obrazów
08.11.10 – 27.11.10
Jakub Stefański
Implementacja sieci
neuronowej
27.11.10 – 27.12.10
Krzysztof Staciwa,
Krzysztof Łachacz
Przygotowanie zestawu prawie
5000 próbek do nauki SSN
27.12.10 – 31.12.10
Jakub Stefański
Trenowanie sieci neuronowej
31.12.10 – 24.01.11
Jakub Stefański
Wyznaczanie trasy próbek
znacznikowych
24.01.11 – 31.01.11
Jakub Stefański,
Krzysztof Łachacz,
Krzysztof Staciwa
Przygotowanie sprawozdania,
dokumentacji
8 Przykładowe wyniki (metoda punktów i krzywych)
9 Dalszy rozwój
•
Udoskonalenie algorytmu wyznaczania trasy cząstek znacznikowych,
•
Rozbudowa bazy uczącej dla sieci neuronowej,
•
Stworzenie formatek umożliwiających zmianę niektórych parametrów, które aktualnie
zostały zaszyte w kodzie, ze względu na brak potrzeby ich modyfikowania dla znanych nam
sekwencji obrazów,
•
Zaimplementowanie sieci neuronowej w kodzie niezarządzanym (C, C++) w celu polepszenia
wydajności,

Podobne dokumenty